{"version":3,"file":"static/js/main.df404066.js","mappings":"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","sources":["../node_modules/@sentry/hub/src/session.ts","../node_modules/@sentry/hub/src/hub.ts","../node_modules/@sentry/hub/src/scope.ts","../node_modules/@sentry/hub/node_modules/tslib/tslib.es6.js","../node_modules/@sentry/types/src/transaction.ts","../node_modules/@sentry/tracing/src/errors.ts","../node_modules/@sentry/tracing/src/hubextensions.ts","../node_modules/@sentry/tracing/src/idletransaction.ts","../node_modules/@sentry/tracing/src/integrations/mongo.ts","../node_modules/@sentry/tracing/src/integrations/mysql.ts","../node_modules/@sentry/tracing/src/integrations/postgres.ts","../node_modules/@sentry/tracing/src/span.ts","../node_modules/@sentry/tracing/src/spanstatus.ts","../node_modules/@sentry/tracing/src/transaction.ts","../node_modules/@sentry/tracing/src/utils.ts","../node_modules/@sentry/tracing/node_modules/tslib/tslib.es6.js","../node_modules/@sentry/types/src/session.ts","../node_modules/@sentry/utils/src/browser.ts","../node_modules/@sentry/utils/src/instrument.ts","../node_modules/@sentry/utils/src/is.ts","../node_modules/@sentry/utils/src/logger.ts","../node_modules/@sentry/utils/src/misc.ts","../node_modules/@sentry/utils/src/node.ts","../node_modules/@sentry/utils/src/memo.ts","../node_modules/@sentry/utils/src/object.ts","../node_modules/@sentry/utils/src/stacktrace.ts","../node_modules/@sentry/utils/src/string.ts","../node_modules/@sentry/utils/src/supports.ts","../node_modules/@sentry/utils/src/syncpromise.ts","../node_modules/@sentry/utils/src/time.ts","../node_modules/@sentry/utils/node_modules/tslib/tslib.es6.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/utils.js","../node_modules/decode-uri-component/index.js","../node_modules/fabric/dist/fabric.js","../node_modules/lodash/lodash.js","../node_modules/mixpanel-browser/dist/mixpanel.cjs.js","../node_modules/object-assign/index.js","../node_modules/papaparse/papaparse.min.js","../node_modules/query-string/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/nonce","../node_modules/@sentry/core/node_modules/tslib/tslib.es6.js","../node_modules/@sentry/core/src/integrations/functiontostring.ts","../node_modules/@sentry/core/src/integrations/inboundfilters.ts","../node_modules/@sentry/browser/node_modules/tslib/tslib.es6.js","../node_modules/@sentry/utils/src/polyfill.ts","../node_modules/@sentry/utils/src/error.ts","../node_modules/@sentry/utils/src/dsn.ts","../node_modules/@sentry/core/src/integration.ts","../node_modules/@sentry/core/src/baseclient.ts","../node_modules/@sentry/types/src/status.ts","../node_modules/@sentry/core/src/transports/noop.ts","../node_modules/@sentry/types/src/severity.ts","../node_modules/@sentry/core/src/basebackend.ts","../node_modules/@sentry/browser/src/tracekit.ts","../node_modules/@sentry/browser/src/parsers.ts","../node_modules/@sentry/browser/src/eventbuilder.ts","../node_modules/@sentry/core/src/request.ts","../node_modules/@sentry/core/src/api.ts","../node_modules/@sentry/utils/src/promisebuffer.ts","../node_modules/@sentry/browser/src/transports/base.ts","../node_modules/@sentry/browser/src/transports/fetch.ts","../node_modules/@sentry/browser/src/transports/xhr.ts","../node_modules/@sentry/browser/src/backend.ts","../node_modules/@sentry/minimal/node_modules/tslib/tslib.es6.js","../node_modules/@sentry/minimal/src/index.ts","../node_modules/@sentry/browser/src/helpers.ts","../node_modules/@sentry/browser/src/integrations/breadcrumbs.ts","../node_modules/@sentry/browser/src/version.ts","../node_modules/@sentry/browser/src/client.ts","../node_modules/@sentry/browser/src/integrations/trycatch.ts","../node_modules/@sentry/browser/src/integrations/globalhandlers.ts","../node_modules/@sentry/browser/src/integrations/linkederrors.ts","../node_modules/@sentry/browser/src/integrations/useragent.ts","../node_modules/@sentry/browser/src/sdk.ts","../node_modules/@sentry/tracing/src/browser/backgroundtab.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/getFirstHidden.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/whenInput.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/getTTFB.ts","../node_modules/@sentry/tracing/src/browser/metrics.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry/tracing/src/browser/web-vitals/getFID.ts","../node_modules/@sentry/tracing/src/browser/request.ts","../node_modules/@sentry/tracing/src/browser/router.ts","../node_modules/@sentry/tracing/src/browser/browsertracing.ts","../node_modules/@sentry/tracing/src/integrations/express.ts","../node_modules/@sentry/tracing/src/index.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","data/constants/index.ts","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","data/query-client/index.tsx","data/utils/helpers/index.ts","data/websocket/constants/index.ts","data/websocket/utils/helpers.ts","data/storage/session.ts","data/storage/utils.ts","data/tyto/utils.ts","data/tyto/AccountSession.ts","data/tyto/Configuration.Client.ts","data/tyto/Domain.ts","data/tyto/Domain.Image.ts","data/tyto/DiscProfile.Interactive.ts","data/tyto/DiscProfile.Interactive.Mockup.ts","data/tyto/DiscProfile.Team.ts","data/tyto/DiscProfile.Mini.ts","data/tyto/DiscProfiles.ts","data/tyto/DISC.Vendor.ForSearch.ts","data/tyto/DISC.Vendor.ForTake.ts","data/tyto/DISC247.FindSelfAssessments.ts","data/tyto/DISC247.ImportSelfAssessment.ts","data/tyto/DiscProfiles.EmailViewReady.tsx","data/tyto/DiscProfilesMini.ts","data/tyto/DomainBilling.ts","data/tyto/DomainBillings.ts","data/tyto/DomainInvitationEmail.ts","data/tyto/DomainInvitationEmail.Template.ts","data/tyto/Domain.Message.ts","data/tyto/Domain.Messages.ts","data/tyto/EmailQueueStatus.ts","data/tyto/EmailQueueStatus.User.ts","data/tyto/Lesson.ts","data/tyto/LoginAuthenticate.ts","data/tyto/Login.Authenticate4.tsx","data/tyto/Login.Recover.ts","data/tyto/Login.Recover.TeamTools.ts","data/tyto/Login.ResetPassword.ts","data/tyto/Login.ResetPassword.Validate.ts","data/tyto/Menu.ts","data/tyto/Person.ts","data/tyto/Person.MyPassword.ts","data/tyto/Person.Password.ts","data/tyto/Person.ProfilePhoto.ts","data/tyto/PeopleKeys.Initialize.ts","data/tyto/PeopleKeys.NextPage.ts","data/tyto/PeopleKeys.Pages.ts","data/tyto/PeopleKeysCallback.Report.ts","data/tyto/PeopleKeys.Response.ts","data/tyto/PersonAdvanced.ts","data/tyto/Session.Logout.ts","data/tyto/SaveForLesson.ts","data/tyto/Team.ts","data/tyto/Teamboard.ts","data/tyto/TeamsByFunction.ts","data/tyto/TeamMembership.Person.ts","data/tyto/TeamTools.Config.ts","data/tyto/TeamTools.EmailLogin.ts","data/tyto/TeamToolsInvite.ts","data/tyto/TeamToolsInvite.Email.ts","data/tyto/TeamToolsInvite.tempSession.ts","data/tyto/vendor-247/Assessment.ts","data/tyto/vendor-247/ConvertToResponse.ts","data/tyto/vendor-247/DISCQuestionnaire.ts","data/tyto/vendor-247/Extension.ts","data/tyto/vendor-247/FindUsers.ts","data/tyto/vendor-247/Questionnaire.Validate.ts","data/tyto/vendor-247/Register.ts","data/tyto/vendor-247/ValidateAnswered.ts","data/tyto/index.ts","data/tyto/Upload.ts","data/websocket/utils/index.ts","data/websocket/index.ts","data/logging/index.ts","data/stores/AppStore.tsx","data/stores/GeneralStore.tsx","interfaces/directory/utils/index.ts","interfaces/directory/data/stores/DirectoryStore.tsx","interfaces/admin/data/utils/index.ts","interfaces/admin/data/stores/AdminStore.tsx","components/common/icon/icons/address-book.tsx","components/common/icon/icons/anchor.tsx","components/common/icon/icons/angle-down.tsx","components/common/icon/icons/angle-left.tsx","components/common/icon/icons/angle-right.tsx","components/common/icon/icons/angle-up.tsx","components/common/icon/icons/arrow-from-left.tsx","components/common/icon/icons/arrow-alt-from-top.tsx","components/common/icon/icons/balance-scale.tsx","components/common/icon/icons/ban.tsx","components/common/icon/icons/bell.tsx","components/common/icon/icons/behavioral-style.tsx","components/common/icon/icons/brain.tsx","components/common/icon/icons/check.tsx","components/common/icon/icons/chess-knight.tsx","components/common/icon/icons/chess-rook.tsx","components/common/icon/icons/circle.tsx","components/common/icon/icons/comment-alt-exclamation.tsx","components/common/icon/icons/compass.tsx","components/common/icon/icons/copy.tsx","components/common/icon/icons/clone.tsx","components/common/icon/icons/plus.tsx","components/common/icon/icons/close.tsx","components/common/icon/icons/cog.tsx","components/common/icon/icons/crane-template.tsx","components/common/icon/icons/crown.tsx","components/common/icon/icons/crown-solid.tsx","components/common/icon/icons/download.tsx","components/common/icon/icons/dove.tsx","components/common/icon/icons/drum.tsx","components/common/icon/icons/elipsis-h.tsx","components/common/icon/icons/elipsis-v.tsx","components/common/icon/icons/envelope.tsx","components/common/icon/icons/external-link.tsx","components/common/icon/icons/eye.tsx","components/common/icon/icons/filter.tsx","components/common/icon/icons/glass-cheers.tsx","components/common/icon/icons/glasses.tsx","components/common/icon/icons/globe.tsx","components/common/icon/icons/handshake.tsx","components/common/icon/icons/hat-cowboy-side.tsx","components/common/icon/icons/home-lg-alt-solid.tsx","components/common/icon/icons/home-lg-alt.tsx","components/common/icon/icons/id-card.tsx","components/common/icon/icons/info-circle.tsx","components/common/icon/icons/key-skeleton.tsx","components/common/icon/icons/knight.tsx","components/common/icon/icons/leaf-oak.tsx","components/common/icon/icons/lightbulb-on.tsx","components/common/icon/icons/list-ul.tsx","components/common/icon/icons/lock-alt.tsx","components/common/icon/icons/minus.tsx","components/common/icon/icons/pencil-ruler.tsx","components/common/icon/icons/pennant.tsx","components/common/icon/icons/person-dolly.tsx","components/common/icon/icons/phone.tsx","components/common/icon/icons/project-diagram.tsx","components/common/icon/icons/projector.tsx","components/common/icon/icons/puzzle-piece.tsx","components/common/icon/icons/question-circle.tsx","components/common/icon/icons/rabbit-fast.tsx","components/common/icon/icons/rocket-launch.tsx","components/common/icon/icons/route.tsx","components/common/icon/icons/ruler-triangle.tsx","components/common/icon/icons/search.tsx","components/common/icon/icons/seedling.tsx","components/common/icon/icons/sign-out.tsx","components/common/icon/icons/slash.tsx","components/common/icon/icons/solar-system.tsx","components/common/icon/icons/spinner.tsx","components/common/icon/icons/square.tsx","components/common/icon/icons/sword.tsx","components/common/icon/icons/table.tsx","components/common/icon/icons/trash-alt.tsx","components/common/icon/icons/undo-alt.tsx","components/common/icon/icons/umbrella.tsx","components/common/icon/icons/users-class-solid.tsx","components/common/icon/icons/users-class.tsx","components/common/icon/icons/user-crown-solid.tsx","components/common/icon/icons/user-crown.tsx","components/common/icon/icons/user-alt.tsx","components/common/icon/icons/user-secret.tsx","components/common/icon/icons/user-alt-solid.tsx","components/common/icon/icons/users-solid.tsx","components/common/icon/icons/users.tsx","components/common/icon/icons/wifi.tsx","components/common/icon/icons/wifi-slash.tsx","components/common/icon/icons/window-close.tsx","components/common/icon/index.tsx","components/common/button/index.tsx","components/common/checkbox/index.tsx","../node_modules/@reach/utils/dist/reach-utils.mjs","../node_modules/@reach/portal/dist/reach-portal.mjs","../node_modules/@reach/observe-rect/src/index.ts","../node_modules/@reach/rect/dist/reach-rect.mjs","../node_modules/tabbable/src/index.js","../node_modules/@reach/popover/dist/reach-popover.mjs","../node_modules/@reach/auto-id/dist/reach-auto-id.mjs","../node_modules/@reach/descendants/dist/reach-descendants.mjs","../node_modules/@reach/dropdown/dist/reach-dropdown.mjs","../node_modules/@reach/menu-button/dist/reach-menu-button.mjs","components/common/context-menu/index.tsx","components/common/crane/index.tsx","components/common/currently-online-badge/index.tsx","components/common/disc/index.tsx","components/common/disc-item-badge/index.tsx","components/common/DISCPlotGraph/utils.ts","components/common/DISCPlotGraph/subcomponents/ColumnDistributionGraph.tsx","components/common/DISCPlotGraph/subcomponents/ColumnValueLabel.tsx","components/common/DISCPlotGraph/subcomponents/ColumnSections.tsx","components/common/DISCPlotGraph/subcomponents/ColumnRangeMarkers.tsx","components/common/userthumb/index.tsx","components/common/DISCPlotGraph/subcomponents/PlotPoint.tsx","components/common/DISCPlotGraph/subcomponents/PlotLine.tsx","components/common/DISCPlotGraph/index.tsx","components/common/disc-value-render/index.tsx","components/common/file-input/index.tsx","components/common/message/index.tsx","components/common/text-button/index.tsx","components/common/heat-map/utils.ts","components/common/heat-map/vendor/index.js","components/common/heat-map/index.tsx","components/common/input/index.tsx","components/common/loading/subcomponents/squares.tsx","components/common/loading/index.tsx","components/common/multiple-choice/Option.tsx","components/common/multiple-choice/index.tsx","components/common/placeholder-text/index.tsx","components/common/progress-bar/index.tsx","components/common/select/index.tsx","components/common/textarea/index.tsx","components/common/text-highlighter/index.tsx","components/common/timestamp/utils/index.ts","components/common/timestamp/index.tsx","components/common/toggle-section/index.tsx","components/common/userthumb/Placeholder.tsx","data/utils/index.ts","components/meta/super-side-pane/utils/index.ts","interfaces/profile/tabs-interface/subcomponents/Tabs.tsx","interfaces/antechamber/index.tsx","components/meta/nav/subcomponents/MenuItem.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/focus-lock/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/react-focus-lock/dist/es2015/FocusGuard.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/react-focus-lock/dist/es2015/medium.js","../node_modules/react-focus-lock/dist/es2015/Lock.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/react-clientside-effect/lib/index.es.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/focus-lock/dist/es2015/utils/array.js","../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../node_modules/focus-lock/dist/es2015/focusInside.js","../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../node_modules/focus-lock/dist/es2015/utils/is.js","../node_modules/focus-lock/dist/es2015/solver.js","../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../node_modules/focus-lock/dist/es2015/utils/parenting.js","../node_modules/focus-lock/dist/es2015/focusMerge.js","../node_modules/focus-lock/dist/es2015/setFocus.js","../node_modules/focus-lock/dist/es2015/index.js","../node_modules/react-focus-lock/dist/es2015/util.js","../node_modules/react-focus-lock/dist/es2015/Trap.js","../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../node_modules/focus-lock/dist/es2015/focusables.js","../node_modules/react-focus-lock/dist/es2015/Combination.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-focus-lock/dist/es2015/index.js","../node_modules/react-remove-scroll/node_modules/tslib/tslib.es6.js","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@reach/dialog/dist/reach-dialog.mjs","components/modals/agnostic/index.tsx","components/modals/change-log/ChangeLog.tsx","components/modals/change-log/index.tsx","components/modals/domain-logo/DomainImageUpload.tsx","components/modals/domain-logo/index.tsx","components/modals/domain-message/subcomponents/PlainText.tsx","components/modals/domain-message/subcomponents/HTMLBody.tsx","components/modals/domain-message/DomainMessage.tsx","components/modals/domain-message/index.tsx","components/modals/domain-message-edit/subcomponents/PlainText.tsx","components/modals/domain-message-edit/subcomponents/HTMLBody.tsx","components/modals/domain-message-edit/subcomponents/Preview.tsx","components/modals/domain-message-edit/DomainMessage.tsx","components/modals/domain-message-edit/index.tsx","components/modals/import-users/subcomponents/ActionButtons.tsx","components/modals/import-users/subcomponents/InputCont.tsx","components/modals/import-users/utils/index.ts","components/modals/import-users/subcomponents/SaveUser.tsx","components/modals/import-users/subcomponents/Result.tsx","components/modals/import-users/subcomponents/ColumnLabels.tsx","components/modals/import-users/subcomponents/Results.tsx","components/modals/import-users/ImportUsers.tsx","components/modals/import-users/index.tsx","components/modals/impersonate-search/subcomponents/SearchResultPerson.tsx","components/modals/impersonate-search/PeopleSearch.tsx","components/modals/impersonate-search/index.tsx","components/modals/components/session-list/index.tsx","interfaces/logon/subcomponents/MultipleSessionsMatched.tsx","components/modals/login-modal/index.tsx","components/modals/new-account/subcomponents/NewAccountForm.tsx","components/modals/new-account/index.tsx","components/modals/profile-image/subcomponents/ExistingProfileImage.tsx","components/modals/profile-image/subcomponents/ProfileImage.tsx","components/modals/profile-image/index.tsx","components/modals/set-password/SetPassword.tsx","components/modals/set-password/index.tsx","components/modals/user-recovery/utils.ts","components/modals/user-recovery/subcomponents/EmailForm.tsx","components/modals/user-recovery/UserRecovery.tsx","components/modals/user-recovery/index.tsx","components/modals/welcome/index.tsx","components/meta/nav/subcomponents/NavFooter.tsx","components/meta/nav/subcomponents/NavLoginModal.tsx","components/meta/nav/subcomponents/WSConnectionIdentifier.tsx","components/meta/nav/subcomponents/NavUserInfo.tsx","components/meta/nav/index.tsx","components/meta/mobile-nav/index.tsx","components/meta/nav/NavHOC.tsx","components/meta/side-pane/person/subcomponents/PersonConfigGrid.tsx","components/meta/side-pane/person/subcomponents/PDFDownloadLink.tsx","components/meta/side-pane/person/subcomponents/AdminSection.tsx","components/meta/side-pane/team/subcomponents/TeamTips.tsx","components/meta/side-pane/person/subcomponents/LockedSection.tsx","components/meta/side-pane/person/subcomponents/PersonCompareGraph.tsx","components/meta/side-pane/person/subcomponents/PersonDISCGraph.tsx","components/meta/side-pane/person/subcomponents/PersonHeader.tsx","components/meta/side-pane/person/subcomponents/PersonGrowthTips.tsx","components/meta/side-pane/person/subcomponents/PersonMotivators.tsx","components/meta/side-pane/person/subcomponents/UserTeamMemberships.tsx","components/meta/side-pane/person/PersonFull.tsx","components/meta/side-pane/person/subcomponents/PersonHeadPhotos.tsx","components/meta/side-pane/person/PersonPartial.tsx","components/meta/side-pane/person/index.tsx","components/meta/side-pane/team/subcomponents/TeamMinimizedProfileThumbs.tsx","components/meta/side-pane/team/subcomponents/TeamPeople.tsx","components/meta/side-pane/team/subcomponents/CustomIntensityColors.tsx","components/meta/side-pane/team/subcomponents/TeamGroupStyle.tsx","components/meta/side-pane/team/utils/index.ts","components/meta/side-pane/team/index.tsx","components/meta/side-pane/index.tsx","components/meta/side-pane/SidePaneModal.tsx","components/meta/side-pane/SidePaneHOC.tsx","components/meta/super-side-pane/subcomponents/TeamBreadCrumb.tsx","components/meta/super-side-pane/subcomponents/CreateNewUser.tsx","components/meta/super-side-pane/subcomponents/GenerateLink.tsx","components/meta/super-side-pane/subcomponents/AddToTeam.tsx","components/meta/super-side-pane/subcomponents/AccessLevels.tsx","components/meta/super-side-pane/subcomponents/DomainEmailSettings.tsx","components/meta/super-side-pane/subcomponents/CustomizeWaitingMessage.tsx","components/meta/super-side-pane/subcomponents/CustomizeWelcomeMessage.tsx","components/meta/super-side-pane/subcomponents/TeamMembership.tsx","components/meta/super-side-pane/DomainInfo.tsx","components/meta/super-side-pane/subcomponents/TeamImportUsers.tsx","components/meta/super-side-pane/index.tsx","components/hoc/interface-session-wrapper/index.tsx","interfaces/teams/tabs-interface/utils/index.ts","interfaces/admin/subcomponents/placeholders/Placeholder-TeamTreeItem.tsx","interfaces/admin/subcomponents/placeholders/Placeholder-TeamTree.tsx","interfaces/admin/team-manage/utils/index.ts","interfaces/admin/team-manage/subcomponents/TeamTreeItem.tsx","interfaces/admin/team-manage/subcomponents/TeamTreeTeam.tsx","interfaces/admin/team-manage/subcomponents/TeamTreeInnerList.tsx","interfaces/admin/team-manage/TeamTreeItemAddTeam.tsx","interfaces/admin/team-manage/subcomponents/AddTeam.tsx","interfaces/admin/team-manage/subcomponents/TeamTreeDomain.tsx","interfaces/admin/subcomponents/SearchBar.tsx","interfaces/admin/subcomponents/CurComponentManager.tsx","interfaces/admin/team-manage/subcomponents/CreateNewAccount.tsx","interfaces/admin/team-manage/index.tsx","interfaces/admin/people-manage/TeamMember.tsx","interfaces/admin/people-manage/TeamTreeItem.tsx","interfaces/admin/people-manage/TeamTreeItemWrapper.tsx","interfaces/admin/people-manage/TeamTree.tsx","interfaces/admin/people-manage/Person.tsx","interfaces/admin/people-manage/People.tsx","interfaces/admin/people-manage/index.tsx","interfaces/admin/index.tsx","interfaces/assessment-taker/subcomponents/CannotTakeDISC.tsx","interfaces/assessment-taker/247-taker/ConfirmationPage.tsx","interfaces/assessment-taker/247-taker/LandingPage.tsx","interfaces/assessment-taker/247-taker/RestartPage.tsx","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","data/hooks/Vendor247/DISCQuestionnaire.ts","data/hooks/Vendor/ForTake.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","data/hooks/Vendor247/SubmitAnswers.ts","interfaces/assessment-taker/247-taker/ProgressBar.tsx","interfaces/assessment-taker/247-taker/Question.tsx","interfaces/assessment-taker/247-taker/Taker.tsx","data/hooks/useDISCMini.ts","interfaces/assessment-taker/247-taker/utils.ts","interfaces/assessment-taker/247-taker/AssessmentTaker.tsx","interfaces/assessment-taker/data/utils/index.ts","interfaces/assessment-taker/data/store/index.tsx","interfaces/assessment-taker/index.tsx","interfaces/teams/subcomponents/DummyLoadingPersonListItem.tsx","interfaces/directory/subcomponents/search-bar/index.tsx","interfaces/directory/subcomponents/searchResultPerson.tsx","interfaces/directory/Directory.tsx","interfaces/directory/index.tsx","router/404/index.tsx","interfaces/groups/subcomponents/MemberListItem.tsx","interfaces/groups/subcomponents/MembersList.tsx","interfaces/groups/subcomponents/PlaceholderMemberListItem.tsx","interfaces/groups/subcomponents/PlaceholderLoadingMembersList.tsx","interfaces/groups/Groups.tsx","interfaces/groups/index.tsx","interfaces/teams/data/stores/DirectoryStore.tsx","interfaces/admin/data/utils/helpers.ts","interfaces/teams/subcomponents/DisplayedUsersCount.tsx","interfaces/teams/subcomponents/SearchBar.tsx","interfaces/teams/subcomponents/PeopleListItem.tsx","interfaces/teams/subcomponents/PeopleList.tsx","interfaces/teams/subcomponents/PersonHeader.tsx","interfaces/teams/tabs-interface/subcomponents/Tabs.tsx","interfaces/teams/tabs-interface/subcomponents/profile-full-tabs/AboutPersonality.tsx","interfaces/teams/tabs-interface/subcomponents/profile-full-tabs/GraphAndTip.tsx","interfaces/teams/tabs-interface/subcomponents/profile-full-tabs/PersonCommTips.tsx","interfaces/teams/tabs-interface/subcomponents/profile-full-tabs/YouAndOther.tsx","interfaces/teams/tabs-interface/index.tsx","interfaces/teams/PersonProfile.tsx","data/utils/user-snap/index.ts","interfaces/teams/index.tsx","interfaces/home/index.tsx","interfaces/logon/subcomponents/AccountCreation.tsx","interfaces/logon/subcomponents/PickAccount.tsx","interfaces/logon/subcomponents/Join.tsx","interfaces/logon/subcomponents/ForgotPassword.tsx","interfaces/logon/subcomponents/Login.tsx","interfaces/logon/subcomponents/SessionCreation.tsx","interfaces/assessment-taker/subcomponents/SetPassword.tsx","interfaces/logon/subcomponents/SetPassword.tsx","interfaces/logon/index.tsx","interfaces/partner-dashboard/subcomponents/NewAccount.tsx","interfaces/partner-dashboard/subcomponents/Account.tsx","interfaces/partner-dashboard/subcomponents/Accounts.tsx","interfaces/partner-dashboard/subcomponents/AccountsSummary.tsx","interfaces/partner-dashboard/index.tsx","interfaces/profile/utils/index.ts","interfaces/profile/subcomponents/PersonHeader.tsx","interfaces/profile/tabs-interface/utils/index.ts","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/AboutPersonality.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/AccountItem.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/Account.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/Downloads.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/AdminTab.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/GrowthAreas.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/NoDISC.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/GraphAndTip.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/PersonCommTips.tsx","interfaces/profile/tabs-interface/subcomponents/profile-full-tabs/YouAndOther.tsx","interfaces/profile/tabs-interface/index.tsx","interfaces/profile/subcomponents/placeholders/Placeholder-PersonHeader.tsx","interfaces/profile/subcomponents/placeholders/Placeholder-TabsInterface.tsx","interfaces/profile/subcomponents/placeholders/index.tsx","interfaces/profile/subcomponents/ProfileNotFound.tsx","interfaces/profile/Profile.tsx","interfaces/profile/index.tsx","router/index.tsx","router/wrapper.tsx","App.tsx","serviceWorker.ts","../node_modules/@sentry/core/src/sdk.ts","index.tsx"],"sourcesContent":["import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number = Date.now();\n public started: number = Date.now();\n public duration: number = 0;\n public status: SessionStatus = SessionStatus.Ok;\n public environment?: string;\n public ipAddress?: string;\n\n constructor(context?: Omit) {\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n update(context: SessionContext = {}): void {\n if (context.user) {\n if (context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || Date.now();\n\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n this.duration = this.timestamp - this.started;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n close(status?: Exclude): void {\n if (status) {\n this.update({ status });\n } else if (this.status === SessionStatus.Ok) {\n this.update({ status: SessionStatus.Exited });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: true,\n started: new Date(this.started).toISOString(),\n timestamp: new Date(this.timestamp).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: dropUndefinedKeys({\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n }),\n });\n }\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\n\nimport { Carrier, DomainAsCarrier, Layer } from './interfaces';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 3;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n this.bindClient(client);\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n // End existing session if there's one\n this.endSession();\n\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...context,\n });\n if (scope) {\n scope.setSession(session);\n }\n return session;\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n session.close();\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n scope.setSession();\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n *\n * @returns The domain, or undefined if there is no active domain\n */\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const activeDomain = getActiveDomain();\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) return carrier.__SENTRY__.hub;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifiying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // often, this span will be a transaction, but it's not guaranteed to be\n const span = this.getSpan() as undefined | (Span & { spanRecorder: { spans: Span[] } });\n\n // try it the new way first\n if (span?.transaction) {\n return span?.transaction;\n }\n\n // fallback to the old way (known bug: this only finds transactions with sampled = true)\n if (span?.spanRecorder?.spans[0]) {\n return span.spanRecorder.spans[0] as Transaction;\n }\n\n // neither way found a transaction\n return undefined;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\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 public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relys on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction?.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n (result as PromiseLike)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\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 private _applyFingerprint(event: Event): void {\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\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\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\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n const global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\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","import { ExtractedNodeRequestData, Primitive, WorkerLocation } from './misc';\nimport { Span, SpanContext } from './span';\n\n/**\n * Interface holding Transaction-specific properties\n */\nexport interface TransactionContext extends SpanContext {\n /**\n * Human-readable identifier for the transaction\n */\n name: string;\n\n /**\n * If true, sets the end timestamp of the transaction to the highest timestamp of child spans, trimming\n * the duration of the transaction. This is useful to discard extra time in the transaction that is not\n * accounted for in child spans, like what happens in the idle transaction Tracing integration, where we finish the\n * transaction after a given \"idle time\" and we don't want this \"idle time\" to be part of the transaction.\n */\n trimEnd?: boolean;\n\n /**\n * If this transaction has a parent, the parent's sampling decision\n */\n parentSampled?: boolean;\n}\n\n/**\n * Data pulled from a `sentry-trace` header\n */\nexport type TraceparentData = Pick;\n\n/**\n * Transaction \"Class\", inherits Span only has `setName`\n */\nexport interface Transaction extends TransactionContext, Span {\n /**\n * @inheritDoc\n */\n spanId: string;\n\n /**\n * @inheritDoc\n */\n traceId: string;\n\n /**\n * @inheritDoc\n */\n startTimestamp: number;\n\n /**\n * @inheritDoc\n */\n tags: { [key: string]: Primitive };\n\n /**\n * @inheritDoc\n */\n data: { [key: string]: any };\n\n /**\n * Set the name of the transaction\n */\n setName(name: string): void;\n}\n\n/**\n * Context data passed by the user when starting a transaction, to be used by the tracesSampler method.\n */\nexport interface CustomSamplingContext {\n [key: string]: any;\n}\n\n/**\n * Data passed to the `tracesSampler` function, which forms the basis for whatever decisions it might make.\n *\n * Adds default data to data provided by the user. See {@link Hub.startTransaction}\n */\nexport interface SamplingContext extends CustomSamplingContext {\n /**\n * Context data with which transaction being sampled was created\n */\n transactionContext: TransactionContext;\n\n /**\n * Sampling decision from the parent transaction, if any.\n */\n parentSampled?: boolean;\n\n /**\n * Object representing the URL of the current page or worker script. Passed by default in a browser or service worker\n * context.\n */\n location?: WorkerLocation;\n\n /**\n * Object representing the incoming request to a node server. Passed by default when using the TracingHandler.\n */\n request?: ExtractedNodeRequestData;\n}\n\nexport type Measurements = Record;\n\nexport enum TransactionSamplingMethod {\n Explicit = 'explicitly_set',\n Sampler = 'client_sampler',\n Rate = 'client_rate',\n Inheritance = 'inheritance',\n}\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { SpanStatus } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler({\n callback: errorCallback,\n type: 'error',\n });\n addInstrumentationHandler({\n callback: errorCallback,\n type: 'unhandledrejection',\n });\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n logger.log(`[Tracing] Transaction: ${SpanStatus.InternalError} -> Global error occured`);\n activeTransaction.setStatus(SpanStatus.InternalError);\n }\n}\n","import { getActiveDomain, getMainCarrier, Hub } from '@sentry/hub';\nimport { CustomSamplingContext, SamplingContext, TransactionContext, TransactionSamplingMethod } from '@sentry/types';\nimport {\n dynamicRequire,\n extractNodeRequestData,\n getGlobalObject,\n isInstanceOf,\n isNodeEnv,\n logger,\n} from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param hub: The hub off of which to read config options\n * @param transaction: The transaction needing a sampling decision\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(hub: Hub, transaction: T, samplingContext: SamplingContext): T {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n // nothing to do if there's no client or if tracing is disabled\n if (!client || !hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.tags = { ...transaction.tags, __sentry_samplingMethod: TransactionSamplingMethod.Explicit };\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n // cast the rate to a number first in case it's a boolean\n transaction.tags = {\n ...transaction.tags,\n __sentry_samplingMethod: TransactionSamplingMethod.Sampler,\n // TODO kmclb - once tag types are loosened, don't need to cast to string here\n __sentry_sampleRate: String(Number(sampleRate)),\n };\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.tags = { ...transaction.tags, __sentry_samplingMethod: TransactionSamplingMethod.Inheritance };\n } else {\n sampleRate = options.tracesSampleRate;\n // cast the rate to a number first in case it's a boolean\n transaction.tags = {\n ...transaction.tags,\n __sentry_samplingMethod: TransactionSamplingMethod.Rate,\n // TODO kmclb - once tag types are loosened, don't need to cast to string here\n __sentry_sampleRate: String(Number(sampleRate)),\n };\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n logger.warn(`[Tracing] Discarding transaction because of invalid sample rate.`);\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n // at this point we know we're keeping the transaction, whether because of an inherited decision or because it got\n // lucky with the dice roll\n transaction.initSpanRecorder(options._experiments?.maxSpans as number);\n\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n/**\n * Gets the correct context to pass to the tracesSampler, based on the environment (i.e., which SDK is being used)\n *\n * @returns The default sample context\n */\nfunction getDefaultSamplingContext(transactionContext: TransactionContext): SamplingContext {\n // promote parent sampling decision (if any) for easy access\n const { parentSampled } = transactionContext;\n const defaultSamplingContext: SamplingContext = { transactionContext, parentSampled };\n\n if (isNodeEnv()) {\n const domain = getActiveDomain();\n\n if (domain) {\n // for all node servers that we currently support, we store the incoming request object (which is an instance of\n // http.IncomingMessage) on the domain\n\n // the domain members are stored as an array, so our only way to find the request is to iterate through the array\n // and compare types\n\n const nodeHttpModule = dynamicRequire(module, 'http');\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const requestType = nodeHttpModule.IncomingMessage;\n\n const request = domain.members.find(member => isInstanceOf(member, requestType));\n if (request) {\n defaultSamplingContext.request = extractNodeRequestData(request);\n }\n }\n }\n\n // we must be in browser-js (or some derivative thereof)\n else {\n // we use `getGlobalObject()` rather than `window` since service workers also have a `location` property on `self`\n const globalObject = getGlobalObject();\n\n if ('location' in globalObject) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n defaultSamplingContext.location = { ...(globalObject as any).location };\n }\n }\n\n return defaultSamplingContext;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate as any) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const transaction = new Transaction(transactionContext, this);\n return sample(this, transaction, {\n ...getDefaultSamplingContext(transactionContext),\n ...customSamplingContext,\n });\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout?: number,\n onScope?: boolean,\n): IdleTransaction {\n const transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n return sample(hub, transaction, getDefaultSamplingContext(transactionContext));\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (carrier.__SENTRY__) {\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","import { Hub } from '@sentry/hub';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { Span, SpanRecorder } from './span';\nimport { SpanStatus } from './spanstatus';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string = '',\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Stores reference to the timeout that calls _beat().\n private _heartbeatTimer: number = 0;\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n // If a transaction is created and no activities are added, we want to make sure that\n // it times out properly. This is cleared and not used when activities are added.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _initTimeout: any;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub?: Hub,\n // The time to wait in ms until the idle transaction will be finished. Default: 1000\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n // If an idle transaction should be put itself on and off the scope automatically.\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_idleHub && _onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus(SpanStatus.Cancelled);\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n // this._onScope is true if the transaction was previously on the scope.\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n logger.log('[Tracing] flushing IdleTransaction');\n } else {\n logger.log('[Tracing] No active IdleTransaction');\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n this._initTimeout = setTimeout(() => {\n if (!this._finished) {\n this.finish();\n }\n }, this._idleTimeout);\n\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n if (this._initTimeout) {\n clearTimeout(this._initTimeout);\n this._initTimeout = undefined;\n }\n logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const timeout = this._idleTimeout;\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const end = timestampWithMs() + timeout / 1000;\n\n setTimeout(() => {\n if (!this._finished) {\n this.finish(end);\n }\n }, timeout);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n clearTimeout(this._heartbeatTimer);\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const keys = Object.keys(this.activities);\n const heartbeatString = keys.length ? keys.reduce((prev: string, current: string) => prev + current) : '';\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n logger.log(`[Tracing] Transaction finished because of no change for 3 heart beats`);\n this.setStatus(SpanStatus.DeadlineExceeded);\n this.setTag('heartbeat', 'failed');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n this._heartbeatTimer = (setTimeout(() => {\n this._beat();\n }, 5000) as unknown) as number;\n }\n}\n\n/**\n * Reset active transaction on scope\n */\nfunction clearActiveTransaction(hub?: Hub): void {\n if (hub) {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, SpanContext } from '@sentry/types';\nimport { dynamicRequire, fill, logger } from '@sentry/utils';\n\n// This allows us to use the same array for both defaults options and the type itself.\n// (note `as const` at the end to make it a union of string literal types (i.e. \"a\" | \"b\" | ... )\n// and not just a string[])\ntype Operation = typeof OPERATIONS[number];\nconst OPERATIONS = [\n 'aggregate', // aggregate(pipeline, options, callback)\n 'bulkWrite', // bulkWrite(operations, options, callback)\n 'countDocuments', // countDocuments(query, options, callback)\n 'createIndex', // createIndex(fieldOrSpec, options, callback)\n 'createIndexes', // createIndexes(indexSpecs, options, callback)\n 'deleteMany', // deleteMany(filter, options, callback)\n 'deleteOne', // deleteOne(filter, options, callback)\n 'distinct', // distinct(key, query, options, callback)\n 'drop', // drop(options, callback)\n 'dropIndex', // dropIndex(indexName, options, callback)\n 'dropIndexes', // dropIndexes(options, callback)\n 'estimatedDocumentCount', // estimatedDocumentCount(options, callback)\n 'findOne', // findOne(query, options, callback)\n 'findOneAndDelete', // findOneAndDelete(filter, options, callback)\n 'findOneAndReplace', // findOneAndReplace(filter, replacement, options, callback)\n 'findOneAndUpdate', // findOneAndUpdate(filter, update, options, callback)\n 'indexes', // indexes(options, callback)\n 'indexExists', // indexExists(indexes, options, callback)\n 'indexInformation', // indexInformation(options, callback)\n 'initializeOrderedBulkOp', // initializeOrderedBulkOp(options, callback)\n 'insertMany', // insertMany(docs, options, callback)\n 'insertOne', // insertOne(doc, options, callback)\n 'isCapped', // isCapped(options, callback)\n 'mapReduce', // mapReduce(map, reduce, options, callback)\n 'options', // options(options, callback)\n 'parallelCollectionScan', // parallelCollectionScan(options, callback)\n 'rename', // rename(newName, options, callback)\n 'replaceOne', // replaceOne(filter, doc, options, callback)\n 'stats', // stats(options, callback)\n 'updateMany', // updateMany(filter, update, options, callback)\n 'updateOne', // updateOne(filter, update, options, callback)\n] as const;\n\n// All of the operations above take `options` and `callback` as their final parameters, but some of them\n// take additional parameters as well. For those operations, this is a map of\n// { : [] }, as a way to know what to call the operation's\n// positional arguments when we add them to the span's `data` object later\nconst OPERATION_SIGNATURES: {\n [op in Operation]?: string[];\n} = {\n // aggregate intentionally not included because `pipeline` arguments are too complex to serialize well\n // see https://github.com/getsentry/sentry-javascript/pull/3102\n bulkWrite: ['operations'],\n countDocuments: ['query'],\n createIndex: ['fieldOrSpec'],\n createIndexes: ['indexSpecs'],\n deleteMany: ['filter'],\n deleteOne: ['filter'],\n distinct: ['key', 'query'],\n dropIndex: ['indexName'],\n findOne: ['query'],\n findOneAndDelete: ['filter'],\n findOneAndReplace: ['filter', 'replacement'],\n findOneAndUpdate: ['filter', 'update'],\n indexExists: ['indexes'],\n insertMany: ['docs'],\n insertOne: ['doc'],\n mapReduce: ['map', 'reduce'],\n rename: ['newName'],\n replaceOne: ['filter', 'doc'],\n updateMany: ['filter', 'update'],\n updateOne: ['filter', 'update'],\n};\n\ninterface MongoCollection {\n collectionName: string;\n dbName: string;\n namespace: string;\n prototype: {\n [operation in Operation]: (...args: unknown[]) => unknown;\n };\n}\n\ninterface MongoOptions {\n operations?: Operation[];\n describeOperations?: boolean | Operation[];\n}\n\n/** Tracing integration for mongo package */\nexport class Mongo implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mongo';\n\n /**\n * @inheritDoc\n */\n public name: string = Mongo.id;\n\n private _operations: Operation[];\n private _describeOperations?: boolean | Operation[];\n\n /**\n * @inheritDoc\n */\n public constructor(options: MongoOptions = {}) {\n this._operations = Array.isArray(options.operations)\n ? options.operations\n : ((OPERATIONS as unknown) as Operation[]);\n this._describeOperations = 'describeOperations' in options ? options.describeOperations : true;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n let collection: MongoCollection;\n\n try {\n const mongodbModule = dynamicRequire(module, 'mongodb') as { Collection: MongoCollection };\n collection = mongodbModule.Collection;\n } catch (e) {\n logger.error('Mongo Integration was unable to require `mongodb` package.');\n return;\n }\n\n this._instrumentOperations(collection, this._operations, getCurrentHub);\n }\n\n /**\n * Patches original collection methods\n */\n private _instrumentOperations(collection: MongoCollection, operations: Operation[], getCurrentHub: () => Hub): void {\n operations.forEach((operation: Operation) => this._patchOperation(collection, operation, getCurrentHub));\n }\n\n /**\n * Patches original collection to utilize our tracing functionality\n */\n private _patchOperation(collection: MongoCollection, operation: Operation, getCurrentHub: () => Hub): void {\n if (!(operation in collection.prototype)) return;\n\n const getSpanContext = this._getSpanContextFromOperationArguments.bind(this);\n\n fill(collection.prototype, operation, function(orig: () => void | Promise) {\n return function(this: unknown, ...args: unknown[]) {\n const lastArg = args[args.length - 1];\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n\n // Check if the operation was passed a callback. (mapReduce requires a different check, as\n // its (non-callback) arguments can also be functions.)\n if (typeof lastArg !== 'function' || (operation === 'mapReduce' && args.length === 2)) {\n const span = parentSpan?.startChild(getSpanContext(this, operation, args));\n return (orig.call(this, ...args) as Promise).then((res: unknown) => {\n span?.finish();\n return res;\n });\n }\n\n const span = parentSpan?.startChild(getSpanContext(this, operation, args.slice(0, -1)));\n return orig.call(this, ...args.slice(0, -1), function(err: Error, result: unknown) {\n span?.finish();\n lastArg(err, result);\n });\n };\n });\n }\n\n /**\n * Form a SpanContext based on the user input to a given operation.\n */\n private _getSpanContextFromOperationArguments(\n collection: MongoCollection,\n operation: Operation,\n args: unknown[],\n ): SpanContext {\n const data: { [key: string]: string } = {\n collectionName: collection.collectionName,\n dbName: collection.dbName,\n namespace: collection.namespace,\n };\n const spanContext: SpanContext = {\n op: `db`,\n description: operation,\n data,\n };\n\n // If the operation takes no arguments besides `options` and `callback`, or if argument\n // collection is disabled for this operation, just return early.\n const signature = OPERATION_SIGNATURES[operation];\n const shouldDescribe = Array.isArray(this._describeOperations)\n ? this._describeOperations.includes(operation)\n : this._describeOperations;\n\n if (!signature || !shouldDescribe) {\n return spanContext;\n }\n\n try {\n // Special case for `mapReduce`, as the only one accepting functions as arguments.\n if (operation === 'mapReduce') {\n const [map, reduce] = args as { name?: string }[];\n data[signature[0]] = typeof map === 'string' ? map : map.name || '';\n data[signature[1]] = typeof reduce === 'string' ? reduce : reduce.name || '';\n } else {\n for (let i = 0; i < signature.length; i++) {\n data[signature[i]] = JSON.stringify(args[i]);\n }\n }\n } catch (_oO) {\n // no-empty\n }\n\n return spanContext;\n }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration } from '@sentry/types';\nimport { dynamicRequire, fill, logger } from '@sentry/utils';\n\ninterface MysqlConnection {\n prototype: {\n query: () => void;\n };\n}\n\n/** Tracing integration for node-mysql package */\nexport class Mysql implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Mysql';\n\n /**\n * @inheritDoc\n */\n public name: string = Mysql.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n let connection: MysqlConnection;\n\n try {\n // Unfortunatelly mysql is using some custom loading system and `Connection` is not exported directly.\n connection = dynamicRequire(module, 'mysql/lib/Connection.js');\n } catch (e) {\n logger.error('Mysql Integration was unable to require `mysql` package.');\n return;\n }\n\n // The original function will have one of these signatures:\n // function (callback) => void\n // function (options, callback) => void\n // function (options, values, callback) => void\n fill(connection.prototype, 'query', function(orig: () => void) {\n return function(this: unknown, options: unknown, values: unknown, callback: unknown) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n const span = parentSpan?.startChild({\n description: typeof options === 'string' ? options : (options as { sql: string }).sql,\n op: `db`,\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, options, values, function(err: Error, result: unknown, fields: unknown) {\n span?.finish();\n callback(err, result, fields);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, options, function(err: Error, result: unknown, fields: unknown) {\n span?.finish();\n values(err, result, fields);\n });\n }\n\n return orig.call(this, options, values, callback);\n };\n });\n }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration } from '@sentry/types';\nimport { dynamicRequire, fill, logger } from '@sentry/utils';\n\ninterface PgClient {\n prototype: {\n query: () => void | Promise;\n };\n}\n\n/** Tracing integration for node-postgres package */\nexport class Postgres implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Postgres';\n\n /**\n * @inheritDoc\n */\n public name: string = Postgres.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n let client: PgClient;\n\n try {\n const pgModule = dynamicRequire(module, 'pg') as { Client: PgClient };\n client = pgModule.Client;\n } catch (e) {\n logger.error('Postgres Integration was unable to require `pg` package.');\n return;\n }\n\n /**\n * function (query, callback) => void\n * function (query, params, callback) => void\n * function (query) => Promise\n * function (query, params) => Promise\n */\n fill(client.prototype, 'query', function(orig: () => void | Promise) {\n return function(this: unknown, config: unknown, values: unknown, callback: unknown) {\n const scope = getCurrentHub().getScope();\n const parentSpan = scope?.getSpan();\n const span = parentSpan?.startChild({\n description: typeof config === 'string' ? config : (config as { text: string }).text,\n op: `db`,\n });\n\n if (typeof callback === 'function') {\n return orig.call(this, config, values, function(err: Error, result: unknown) {\n span?.finish();\n callback(err, result);\n });\n }\n\n if (typeof values === 'function') {\n return orig.call(this, config, function(err: Error, result: unknown) {\n span?.finish();\n values(err, result);\n });\n }\n\n return (orig.call(this, config, values) as Promise).then((res: unknown) => {\n span?.finish();\n return res;\n });\n };\n });\n }\n}\n","/* eslint-disable max-lines */\nimport { Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n\nimport { SpanStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatus | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated\n */\n public child(\n spanContext?: Pick>,\n ): Span {\n return this.startChild(spanContext);\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatus): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = SpanStatus.fromHttpCode(httpStatus);\n if (spanStatus !== SpanStatus.UnknownError) {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === SpanStatus.Ok;\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n","/** The status of an Span. */\n// eslint-disable-next-line import/export\nexport enum SpanStatus {\n /** The operation completed successfully. */\n Ok = 'ok',\n /** Deadline expired before operation could complete. */\n DeadlineExceeded = 'deadline_exceeded',\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n Unauthenticated = 'unauthenticated',\n /** 403 Forbidden */\n PermissionDenied = 'permission_denied',\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n NotFound = 'not_found',\n /** 429 Too Many Requests */\n ResourceExhausted = 'resource_exhausted',\n /** Client specified an invalid argument. 4xx. */\n InvalidArgument = 'invalid_argument',\n /** 501 Not Implemented */\n Unimplemented = 'unimplemented',\n /** 503 Service Unavailable */\n Unavailable = 'unavailable',\n /** Other/generic 5xx. */\n InternalError = 'internal_error',\n /** Unknown. Any non-standard HTTP status code. */\n UnknownError = 'unknown_error',\n /** The operation was cancelled (typically by the user). */\n Cancelled = 'cancelled',\n /** Already exists (409) */\n AlreadyExists = 'already_exists',\n /** Operation was rejected because the system is not in a state required for the operation's */\n FailedPrecondition = 'failed_precondition',\n /** The operation was aborted, typically due to a concurrency issue. */\n Aborted = 'aborted',\n /** Operation was attempted past the valid range. */\n OutOfRange = 'out_of_range',\n /** Unrecoverable data loss or corruption */\n DataLoss = 'data_loss',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\nexport namespace SpanStatus {\n /**\n * Converts a HTTP status code into a {@link SpanStatus}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or {@link SpanStatus.UnknownError}.\n */\n export function fromHttpCode(httpStatus: number): SpanStatus {\n if (httpStatus < 400) {\n return SpanStatus.Ok;\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return SpanStatus.Unauthenticated;\n case 403:\n return SpanStatus.PermissionDenied;\n case 404:\n return SpanStatus.NotFound;\n case 409:\n return SpanStatus.AlreadyExists;\n case 413:\n return SpanStatus.FailedPrecondition;\n case 429:\n return SpanStatus.ResourceExhausted;\n default:\n return SpanStatus.InvalidArgument;\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return SpanStatus.Unimplemented;\n case 503:\n return SpanStatus.Unavailable;\n case 504:\n return SpanStatus.DeadlineExceeded;\n default:\n return SpanStatus.InternalError;\n }\n }\n\n return SpanStatus.UnknownError;\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Event, Measurements, Transaction as TransactionInterface, TransactionContext } from '@sentry/types';\nimport { isInstanceOf, logger } from '@sentry/utils';\n\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public name: string;\n private _measurements: Measurements = {};\n\n /**\n * The reference to the current hub.\n */\n private readonly _hub: Hub = (getCurrentHub() as unknown) as Hub;\n\n private readonly _trimEnd?: boolean;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n if (isInstanceOf(hub, Hub)) {\n this._hub = hub as Hub;\n }\n\n this.name = transactionContext.name ? transactionContext.name : '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /**\n * JSDoc\n */\n public setName(name: string): void {\n this.name = name;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Set observed measurements for this transaction.\n * @hidden\n */\n public setMeasurements(measurements: Measurements): void {\n this._measurements = { ...measurements };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const transaction: Event = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n logger.log('[Measurements] Adding measurements to transaction', JSON.stringify(this._measurements, undefined, 2));\n transaction.measurements = this._measurements;\n }\n\n return this._hub.captureEvent(transaction);\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, TraceparentData, Transaction } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(options: Options): boolean {\n return 'tracesSampleRate' in options || 'tracesSampler' in options;\n}\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(hub: Hub = getCurrentHub()): T | undefined {\n return hub?.getScope()?.getTransaction() as T | undefined;\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\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","import { User } from './user';\n\n/**\n * @inheritdoc\n */\nexport interface Session extends SessionContext {\n /** JSDoc */\n update(context?: SessionContext): void;\n\n /** JSDoc */\n close(status?: SessionStatus): void;\n\n /** JSDoc */\n toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n };\n}\n\n/**\n * Session Context\n */\nexport interface SessionContext {\n sid?: string;\n did?: string;\n timestamp?: number;\n started?: number;\n duration?: number;\n status?: SessionStatus;\n release?: string;\n environment?: string;\n userAgent?: string;\n ipAddress?: string;\n errors?: number;\n user?: User | null;\n}\n\n/**\n * Session Status\n */\nexport enum SessionStatus {\n /** JSDoc */\n Ok = 'ok',\n /** JSDoc */\n Exited = 'exited',\n /** JSDoc */\n Crashed = 'crashed',\n /** JSDoc */\n Abnormal = 'abnormal',\n}\n","import { isString } from './is';\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 */\nexport function htmlTreeAsString(elem: unknown): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\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 try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\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\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\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(el: unknown): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\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 const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\n/** Object describing handler that will be triggered for a given `type` of instrumentation */\ninterface InstrumentHandler {\n type: InstrumentHandlerType;\n callback: InstrumentHandlerCallback;\n}\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler: InstrumentHandler): void {\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n (handlers[handler.type] as InstrumentHandlerCallback[]).push(handler.callback);\n instrument(handler.type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(\n handler,\n )}\\nError: ${e}`,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function(level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function(originalConsoleLevel: () => any): Function {\n return function(...args: any[]): void {\n triggerHandlers('console', { args, 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\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function(originalFetch: () => void): () => void {\n return function(...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n // Poor man's implementation of ES6 `Map`, tracking and keeping in sync key and value separately.\n const requestKeys: XMLHttpRequest[] = [];\n const requestValues: Array[] = [];\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function(originalOpen: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function(): void {\n if (xhr.readyState === 4) {\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 } catch (e) {\n /* do nothing */\n }\n\n try {\n const requestPos = requestKeys.indexOf(xhr);\n if (requestPos !== -1) {\n // Make sure to pop both key and value to keep it in sync.\n requestKeys.splice(requestPos);\n const args = requestValues.splice(requestPos)[0];\n if (xhr.__sentry_xhr__ && args[0] !== undefined) {\n xhr.__sentry_xhr__.body = args[0] as XHRSendInput;\n }\n }\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function(original: WrappedFunction): Function {\n return function(...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function(originalSend: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n requestKeys.push(this);\n requestValues.push(args);\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function(this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function(this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\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', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach((target: string) => {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n const proto = (global as any)[target] && (global as any)[target].prototype;\n\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerOrEventListenerObject, capture?: boolean, secure?: boolean) => void {\n if (fn && (fn as EventListenerObject).handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n } else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n\n return original.call(this, eventName, fn, options);\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n try {\n original.call(this, eventName, ((fn as unknown) as WrappedFunction).__sentry_wrapped__, options);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n });\n}\n\nconst debounceDuration: number = 1000;\nlet debounceTimer: number = 0;\nlet keypressTimeout: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name: string, handler: Function, debounce: boolean = false): (event: Event) => void {\n return (event: Event): void => {\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\n lastCapturedEvent = event;\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n if (debounce) {\n debounceTimer = setTimeout(() => {\n handler({ event, name });\n });\n } else {\n handler({ event, name });\n }\n };\n}\n\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler: Function): (event: Event) => void {\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 (event: Event): void => {\n let target;\n\n try {\n target = event.target;\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\n const tagName = target && (target as HTMLElement).tagName;\n\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 as HTMLElement).isContentEditable)) {\n return;\n }\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n\n keypressTimeout = (setTimeout(() => {\n keypressTimeout = undefined;\n }, debounceDuration) as any) as number;\n };\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function(msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function(e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\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: any): boolean {\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 isInstanceOf(wat, Error);\n }\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: any): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: any): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: any): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\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: any): boolean {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\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: any): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n 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 }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\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(\n url: string,\n): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\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: Event): string {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\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\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const originalConsole = (global as any).console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (level in (global as any).console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\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 * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\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}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtractedNodeRequestData } from '@sentry/types';\n\nimport { isString } from './is';\nimport { normalize } from './object';\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(): boolean {\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/** Default request keys that'll be used to extract data from the request */\nconst DEFAULT_REQUEST_KEYS = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\n\n/**\n * Normalizes data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param keys An optional array of keys to include in the normalized data. Defaults to DEFAULT_REQUEST_KEYS if not\n * provided.\n * @returns An object containing normalized request data\n */\nexport function extractNodeRequestData(\n req: { [key: string]: any },\n keys: string[] = DEFAULT_REQUEST_KEYS,\n): ExtractedNodeRequestData {\n // make sure we can safely use dynamicRequire below\n if (!isNodeEnv()) {\n throw new Error(\"Can't get node request data outside of a node environment\");\n }\n\n const requestData: { [key: string]: any } = {};\n\n // headers:\n // node, express: req.headers\n // koa: req.header\n const headers = (req.headers || req.header || {}) as {\n host?: string;\n cookie?: string;\n };\n // method:\n // node, express, koa: req.method\n const method = req.method;\n // host:\n // express: req.hostname in > 4 and req.host in < 4\n // koa: req.host\n // node: req.headers.host\n const host = req.hostname || req.host || headers.host || '';\n // protocol:\n // node: \n // express, koa: req.protocol\n const protocol =\n req.protocol === 'https' || req.secure || ((req.socket || {}) as { encrypted?: boolean }).encrypted\n ? 'https'\n : 'http';\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa: req.url\n const originalUrl = (req.originalUrl || req.url || '') as string;\n // absolute url\n const absoluteUrl = `${protocol}://${host}${originalUrl}`;\n\n keys.forEach(key => {\n switch (key) {\n case 'headers':\n requestData.headers = headers;\n break;\n case 'method':\n requestData.method = method;\n break;\n case 'url':\n requestData.url = absoluteUrl;\n break;\n case 'cookies':\n // cookies:\n // node, express, koa: req.headers.cookie\n // vercel, sails.js, express (w/ cookie middleware): req.cookies\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.cookies = req.cookies || dynamicRequire(module, 'cookie').parse(headers.cookie || '');\n break;\n case 'query_string':\n // query string:\n // node: req.url (raw)\n // express, koa: req.query\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.query_string = dynamicRequire(module, 'url').parse(originalUrl || '', false).query;\n break;\n case 'data':\n if (method === 'GET' || method === 'HEAD') {\n break;\n }\n // body data:\n // node, express, koa: req.body\n if (req.body !== undefined) {\n requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n }\n break;\n default:\n if ({}.hasOwnProperty.call(req, key)) {\n requestData[key] = (req as { [key: string]: any })[key];\n }\n }\n });\n\n return requestData;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let 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}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n\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 replacementFactory A function that should be used to wrap a given method, returning the wrapped method which\n * will be substituted in for `source[name]`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\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 if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\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\n source[name] = wrapped;\n}\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: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n [key: string]: any;\n stack: string | undefined;\n message: string;\n name: string;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '';\n }\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n * type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n * unchanged.\n */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\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\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\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: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n return value;\n}\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 */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\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 const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\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 const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const 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 as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\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 */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input: any, depth?: number): any {\n try {\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const 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\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return (val as any[]).map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n","const defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\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 defaultFunctionName;\n }\n}\n","import { isRegExp, isString } from './is';\n\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 (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\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: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let 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\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\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 */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\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: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\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(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === `function`) {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\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(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\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(): boolean {\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\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\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 const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public static resolve(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all(collection: Array>): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve((val as unknown) as any);\n });\n });\n }\n\n /** JSDoc */\n public toString(): string {\n return '[object SyncPromise]';\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { getGlobalObject } from './misc';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n const { performance } = getGlobalObject();\n if (!performance) {\n return undefined;\n }\n if (performance.timeOrigin) {\n return performance.timeOrigin;\n }\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n return (performance.timing && performance.timing.navigationStart) || Date.now();\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","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '3.6.6' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) {\n fabric.document = document;\n }\n else {\n fabric.document = document.implementation.createHTMLDocument('');\n }\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n var jsdom = require('jsdom');\n var virtualWindow = new jsdom.JSDOM(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n {\n features: {\n FetchExternalResources: ['img']\n },\n resources: 'usable'\n }).window;\n fabric.document = virtualWindow.document;\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = virtualWindow;\n DOMParser = fabric.window.DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n 'display',\n 'transform',\n 'fill', 'fill-opacity', 'fill-rule',\n 'opacity',\n 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n 'stroke-linejoin', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n 'id', 'paint-order', 'vector-effect',\n 'instantiated_by_use', 'clip-path'\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[eE][-+]?\\\\d+)?)';\nfabric.rePathCommand = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:[eE][-+]?\\d+)?)/ig;\nfabric.reNonWord = /[ \\n\\.,;!\\?\\-]/;\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.svgNS = 'http://www.w3.org/2000/svg';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @default\n */\nfabric.disableStyleCopyPaste = false;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\n/**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\nfabric.forceGLPutImageData = false;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @deprecated `observe` deprecated since 0.8.34 (use `on` instead)\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function observe(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead)\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function stopObserving(eventName, handler) {\n if (!this.__eventListeners) {\n return this;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead)\n * @memberOf fabric.Observable\n * @alias trigger\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return this;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return this;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n observe: observe,\n stopObserving: stopObserving,\n fire: fire,\n\n on: observe,\n off: stopObserving,\n trigger: fire\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function(object) {\n return this._objects.indexOf(object) > -1;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initClipping: function(options) {\n if (!options.clipTo || typeof options.clipTo !== 'string') {\n return;\n }\n\n var functionBody = fabric.util.getFunctionBody(options.clipTo);\n if (typeof functionBody !== 'undefined') {\n this.clipTo = new Function('ctx', functionBody);\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n if (typeof value === 'function' && key !== 'clipTo') {\n this._set(key, value(this.get(key)));\n }\n else {\n this._set(key, value);\n }\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n point.subtractEquals(origin);\n var v = fabric.util.rotateVector(point, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points, transform) {\n if (transform) {\n for (var i = 0; i < points.length; i++) {\n points[i] = fabric.util.transformPoint(points[i], transform);\n }\n }\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n if (url.indexOf('data') !== 0 && crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects.filter(function(obj) {\n // filter out undefined objects (objects that gave error)\n return obj;\n }));\n }\n }\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements && elements.length === 1) {\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Draws a dashed line between two points\n *\n * This method is used to draw dashed line around selection area.\n * See dotted stroke in canvas\n *\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x start x coordinate\n * @param {Number} y start y coordinate\n * @param {Number} x2 end x coordinate\n * @param {Number} y2 end y coordinate\n * @param {Array} da dash array pattern\n */\n drawDashedLine: function(ctx, x, y, x2, y2, da) {\n var dx = x2 - x,\n dy = y2 - y,\n len = sqrt(dx * dx + dy * dy),\n rot = atan2(dy, dx),\n dc = da.length,\n di = 0,\n draw = true;\n\n ctx.save();\n ctx.translate(x, y);\n ctx.moveTo(0, 0);\n ctx.rotate(rot);\n\n x = 0;\n while (len > x) {\n x += da[di++ % dc];\n if (x > len) {\n x = len;\n }\n ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n draw = !draw;\n }\n\n ctx.restore();\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n copyCanvasElement: function(canvas) {\n var newCanvas = fabric.util.createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n return newCanvas;\n },\n\n /**\n * since 2.6.0 moved from canvas instance to utility.\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {Number} quality <= 1 and > 0\n * @static\n * @memberOf fabric.util\n * @return {String} data url\n */\n toDataURL: function(canvasEl, format, quality) {\n return canvasEl.toDataURL('image/' + format, quality);\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @deprecated since 2.0.0\n * @param {fabric.Object} receiver Object implementing `clipTo` method\n * @param {CanvasRenderingContext2D} ctx Context to clip\n */\n clipContext: function(receiver, ctx) {\n ctx.save();\n ctx.beginPath();\n receiver.clipTo(ctx);\n ctx.clip();\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x3 matrix into transform components\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle] angle in degrees\n * @return {Number[]} transform matrix\n */\n calcRotateMatrix: function(options) {\n if (!options.angle) {\n return fabric.iMatrix.concat();\n }\n var theta = fabric.util.degreesToRadians(options.angle),\n cos = fabric.util.cos(theta),\n sin = fabric.util.sin(theta);\n return [cos, sin, -sin, cos, 0, 0];\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet.\n * is called DimensionsTransformMatrix because those properties are the one that influence\n * the size of the resulting box of the object.\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewX]\n * @return {Number[]} transform matrix\n */\n calcDimensionsMatrix: function(options) {\n var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX,\n scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY,\n scaleMatrix = [\n options.flipX ? -scaleX : scaleX,\n 0,\n 0,\n options.flipY ? -scaleY : scaleY,\n 0,\n 0],\n multiply = fabric.util.multiplyTransformMatrices,\n degreesToRadians = fabric.util.degreesToRadians;\n if (options.skewX) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, 0, Math.tan(degreesToRadians(options.skewX)), 1],\n true);\n }\n if (options.skewY) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, Math.tan(degreesToRadians(options.skewY)), 0, 1],\n true);\n }\n return scaleMatrix;\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle]\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewX]\n * @param {Number} [options.translateX]\n * @param {Number} [options.translateY]\n * @return {Number[]} transform matrix\n */\n composeMatrix: function(options) {\n var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0],\n multiply = fabric.util.multiplyTransformMatrices;\n if (options.angle) {\n matrix = multiply(matrix, fabric.util.calcRotateMatrix(options));\n }\n if (options.scaleX || options.scaleY || options.skewX || options.skewY || options.flipX || options.flipY) {\n matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options));\n }\n return matrix;\n },\n\n /**\n * Returns a transform matrix that has the same effect of scaleX, scaleY and skewX.\n * Is deprecated for composeMatrix. Please do not use it.\n * @static\n * @deprecated since 3.4.0\n * @memberOf fabric.util\n * @param {Number} scaleX\n * @param {Number} scaleY\n * @param {Number} skewX\n * @return {Number[]} transform matrix\n */\n customTransformMatrix: function(scaleX, scaleY, skewX) {\n return fabric.util.composeMatrix({ scaleX: scaleX, scaleY: scaleY, skewX: skewX });\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns string representation of function body\n * @param {Function} fn Function to get body of\n * @return {String} Function body\n */\n getFunctionBody: function(fn) {\n return (String(fn).match(/function[^{]*\\{([\\s\\S]*)\\}/) || {})[1];\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Finds the scale for the object source to fit inside the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to fit into destination\n */\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * Finds the scale for the object source to cover entirely the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to cover destination\n */\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * given an array of 6 number returns something like `\"matrix(...numbers)\"`\n * @memberOf fabric.util\n * @param {Array} trasnform an array with 6 numbers\n * @return {String} transform matrix for svg\n * @return {Object.y} Limited dimensions by Y\n */\n matrixToSVG: function(transform) {\n return 'matrix(' + transform.map(function(value) {\n return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n }).join(' ') + ')';\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var _join = Array.prototype.join;\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var argsString = _join.call(arguments);\n if (fabric.arcToSegmentsCache[argsString]) {\n return fabric.arcToSegmentsCache[argsString];\n }\n\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][4];\n fromY = result[i][5];\n mTheta = th3;\n th3 += mDelta;\n }\n fabric.arcToSegmentsCache[argsString] = result;\n return result;\n }\n\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return [\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Draws arc\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} fx\n * @param {Number} fy\n * @param {Array} coords\n */\n fabric.util.drawArc = function(ctx, fx, fy, coords) {\n var rx = coords[0],\n ry = coords[1],\n rot = coords[2],\n large = coords[3],\n sweep = coords[4],\n tx = coords[5],\n ty = coords[6],\n segs = [[], [], [], []],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segs[i][0] = segsNorm[i][0] + fx;\n segs[i][1] = segsNorm[i][1] + fy;\n segs[i][2] = segsNorm[i][2] + fx;\n segs[i][3] = segsNorm[i][3] + fy;\n segs[i][4] = segsNorm[i][4] + fx;\n segs[i][5] = segsNorm[i][5] + fy;\n ctx.bezierCurveTo.apply(ctx, segs[i]);\n }\n };\n\n /**\n * Calculate bounding box of a elliptic-arc\n * @param {Number} fx start point of arc\n * @param {Number} fy\n * @param {Number} rx horizontal radius\n * @param {Number} ry vertical radius\n * @param {Number} rot angle of horizontal axe\n * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n * @param {Number} tx end point of arc\n * @param {Number} ty\n */\n fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n var fromX = 0, fromY = 0, bound, bounds = [],\n segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segs.length; i < len; i++) {\n bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]);\n bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n fromX = segs[i][4];\n fromY = segs[i][5];\n }\n return bounds;\n };\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of beizer\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * this does not and cannot compete with generic utils.\n * Does not clone or extend fabric.Object subclasses.\n * This is mostly for internal use and has extra handling for fabricJS objects\n * it skips the canvas property in deep cloning.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (property === 'canvas') {\n destination[property] = extend({ }, source[property]);\n }\n else if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * @memberOf fabric.util.object\n * TODO: this function return an empty object if you try to clone null\n * @param {Object} object Object to clone\n * @return {Object}\n */\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n // since ie10 or ie9 can use addEventListener but they do not support options, i need to check\n var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent;\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = function(element, eventName, handler, options) {\n element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = function(element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n function getTouchInfo(event) {\n var touchProp = event.changedTouches;\n if (touchProp && touchProp[0]) {\n return touchProp[0];\n }\n return event;\n }\n\n fabric.util.getPointer = function(event) {\n var element = event.target,\n scroll = fabric.util.getScrollLeftTop(element),\n _evt = getTouchInfo(event);\n return {\n x: _evt.clientX + scroll.left,\n y: _evt.clientY + scroll.top\n };\n };\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle[normalizedProperty] = styles[property];\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n (function() {\n\n /**\n * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading\n * @memberOf fabric.util\n * @param {String} url URL of a script to load\n * @param {Function} callback Callback to execute when script is finished loading\n */\n function getScript(url, callback) {\n var headEl = fabric.document.getElementsByTagName('head')[0],\n scriptEl = fabric.document.createElement('script'),\n loading = true;\n\n /** @ignore */\n scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) {\n if (loading) {\n if (typeof this.readyState === 'string' &&\n this.readyState !== 'loaded' &&\n this.readyState !== 'complete') {\n return;\n }\n loading = false;\n callback(e || fabric.window.event);\n scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null;\n }\n };\n scriptEl.src = url;\n headEl.appendChild(scriptEl);\n // causes issue in Opera\n // headEl.removeChild(scriptEl);\n }\n\n fabric.util.getScript = getScript;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.makeElement = makeElement;\n fabric.util.addClass = addClass;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getElementStyle = getElementStyle;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = new fabric.window.XMLHttpRequest(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = console.log;\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = console.warn;\n\n\n(function() {\n\n function noop() {\n return false;\n }\n\n function defaultEasing(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Number} [options.startValue=0] Starting value\n * @param {Number} [options.endValue=100] Ending value\n * @param {Number} [options.byValue=100] Value to modify the property by\n * @param {Function} [options.easing] Easing function\n * @param {Number} [options.duration=500] Duration of change (in ms)\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animate(options) {\n\n requestAnimFrame(function(timestamp) {\n options || (options = { });\n\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || defaultEasing,\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || endValue - startValue;\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n // TODO: move abort call after calculation\n // and pass (current,valuePerc, timePerc) as arguments\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = easing(currentTime, startValue, byValue, duration),\n valuePerc = Math.abs((current - startValue) / byValue);\n if (abort()) {\n onComplete(endValue, 1, 1);\n return;\n }\n if (time > finish) {\n onChange(endValue, 1, 1);\n onComplete(endValue, 1, 1);\n return;\n }\n else {\n onChange(current, valuePerc, timePerc);\n requestAnimFrame(tick);\n }\n })(start);\n });\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource();\n\n options = options || {};\n\n fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform'\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n },\n\n fSize = 'font-size', cPath = 'clip-path';\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n fabric.clipPaths = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Object.prototype.toString.call(value) === '[object Array]',\n parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'vector-effect') {\n value = value === 'non-scaling-stroke';\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else if (attr === 'href' || attr === 'xlink:href') {\n return value;\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = fabric.iMatrix,\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)',\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode, oldLength = nodelist.length, attr, j, attrs, len, namespace = fabric.svgNS;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElementNS(namespace, 'g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName)\n || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n return parsedDim;\n }\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n\n if (x || y) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(fabric.svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n var clipPaths = { };\n descendants.filter(function(el) {\n return el.nodeName.replace('svg:', '') === 'clipPath';\n }).forEach(function(el) {\n var id = el.getAttribute('id');\n clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n });\n });\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n fabric.clipPaths[svgUid] = clipPaths;\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n delete fabric.gradientDefs[svgUid];\n delete fabric.cssRules[svgUid];\n delete fabric.clipPaths[svgUid];\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n function recursivelyParseGradientsXlink(doc, gradient) {\n var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n xlinkAttr = 'xlink:href',\n xLink = gradient.getAttribute(xlinkAttr).substr(1),\n referencedGradient = elementById(doc, xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient);\n }\n gradientsAttrs.forEach(function(attr) {\n if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) {\n gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n }\n });\n if (!gradient.children.length) {\n var referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n gradient.removeAttribute(xlinkAttr);\n }\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, gradientDefs = { };\n j = elList.length;\n while (j--) {\n el = elList[j];\n if (el.getAttribute('xlink:href')) {\n recursivelyParseGradientsXlink(doc, el);\n }\n gradientDefs[el.getAttribute('id')] = el;\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize, parentFontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n var cssAttrs = extend(\n getGlobalStylesForElement(element, svgUid),\n fabric.parseStyleAttribute(element)\n );\n ownAttributes = extend(\n ownAttributes,\n cssAttrs\n );\n if (cssAttrs[cPath]) {\n element.setAttribute(cPath, cssAttrs[cPath]);\n }\n fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n if (ownAttributes[fSize]) {\n // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize);\n }\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n // \\n'\n ].join('');\n }\n\n return markup;\n },\n\n /**\n * @private\n */\n _setSVGObjects: function(markup, reviver) {\n var instance, i, len, objects = this._objects;\n for (i = 0, len = objects.length; i < len; i++) {\n instance = objects[i];\n if (instance.excludeFromExport) {\n continue;\n }\n this._setSVGObject(markup, instance, reviver);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n markup.push(instance.toSVG(reviver));\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayImage: function(markup, property, reviver) {\n if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n markup.push(this[property].toSVG(reviver));\n }\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayColor: function(markup, property) {\n var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width,\n finalHeight = this.height;\n if (!filler) {\n return;\n }\n if (filler.toLive) {\n var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'],\n additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : '';\n markup.push(\n '\\n'\n );\n }\n else {\n markup.push(\n '\\n'\n );\n }\n },\n /* _TO_SVG_END_ */\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the bottom of the stack of drawn objects\n * @param {fabric.Object} object Object to send to back\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendToBack: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.unshift(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.unshift(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the top of the stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringToFront: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.push(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.push(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or a selection down in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in behind\n * the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendBackwards: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx > 0 + objsMoved) {\n newIdx = idx - 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== 0) {\n // if object is not on the bottom of stack\n newIdx = this._findNewLowerIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewLowerIndex: function(object, idx, intersecting) {\n var newIdx, i;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse down the stack looking for the nearest intersecting object\n for (i = idx - 1; i >= 0; --i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx - 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object or a selection up in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in front\n * of the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringForward: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx < this._objects.length - 1 - objsMoved) {\n newIdx = idx + 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== this._objects.length - 1) {\n // if object is not on top of stack (last item in an array)\n newIdx = this._findNewUpperIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewUpperIndex: function(object, idx, intersecting) {\n var newIdx, i, len;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse up the stack looking for the nearest intersecting object\n for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx + 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @param {Number} index Position to move to\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n moveTo: function (object, index) {\n removeFromArray(this._objects, object);\n this._objects.splice(index, 0, object);\n return this.renderOnAddRemove && this.requestRenderAll();\n },\n\n /**\n * Clears a canvas element and dispose objects\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n // cancel eventually ongoing renders\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n this.forEachObject(function(object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n if (this.backgroundImage && this.backgroundImage.dispose) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = null;\n if (this.overlayImage && this.overlayImage.dispose) {\n this.overlayImage.dispose();\n }\n this.overlayImage = null;\n this._iTextInstances = null;\n this.contextContainer = null;\n fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n this.lowerCanvasEl = undefined;\n return this;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function () {\n return '#';\n }\n });\n\n extend(fabric.StaticCanvas.prototype, fabric.Observable);\n extend(fabric.StaticCanvas.prototype, fabric.Collection);\n extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n /**\n * @static\n * @type String\n * @default\n */\n EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n /**\n * Provides a way to check support of some of the canvas methods\n * (either those of HTMLCanvasElement itself, or rendering context)\n *\n * @param {String} methodName Method to check support for;\n * Could be one of \"setLineDash\"\n * @return {Boolean | null} `true` if method is supported (or at least exists),\n * `null` if canvas element or context can not be initialized\n */\n supports: function (methodName) {\n var el = createCanvasElement();\n\n if (!el || !el.getContext) {\n return null;\n }\n\n var ctx = el.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n switch (methodName) {\n\n case 'setLineDash':\n return typeof ctx.setLineDash !== 'undefined';\n\n default:\n return null;\n }\n }\n });\n\n /**\n * Returns JSON representation of canvas\n * @function\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} JSON string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example JSON without additional properties\n * var json = canvas.toJSON();\n * @example JSON with additional properties included\n * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']);\n * @example JSON without default values\n * canvas.includeDefaultValues = false;\n * var json = canvas.toJSON();\n */\n fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n if (fabric.isLikelyNode) {\n fabric.StaticCanvas.prototype.createPNGStream = function() {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createPNGStream();\n };\n fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createJPEGStream(opts);\n };\n }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n /**\n * Color of a brush\n * @type String\n * @default\n */\n color: 'rgb(0, 0, 0)',\n\n /**\n * Width of a brush, has to be a Number, no string literals\n * @type Number\n * @default\n */\n width: 1,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'round',\n\n /**\n * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'round',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n * @type Number\n * @default\n */\n strokeMiterLimit: 10,\n\n /**\n * Stroke Dash Array.\n * @type Array\n * @default\n */\n strokeDashArray: null,\n\n /**\n * Sets shadow of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setShadow: function(options) {\n this.shadow = new fabric.Shadow(options);\n return this;\n },\n\n /**\n * Sets brush styles\n * @private\n */\n _setBrushStyles: function() {\n var ctx = this.canvas.contextTop;\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.width;\n ctx.lineCap = this.strokeLineCap;\n ctx.miterLimit = this.strokeMiterLimit;\n ctx.lineJoin = this.strokeLineJoin;\n if (fabric.StaticCanvas.supports('setLineDash')) {\n ctx.setLineDash(this.strokeDashArray || []);\n }\n },\n\n /**\n * Sets the transformation on given context\n * @param {RenderingContext2d} ctx context to render on\n * @private\n */\n _saveAndTransform: function(ctx) {\n var v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n },\n\n /**\n * Sets brush shadow styles\n * @private\n */\n _setShadow: function() {\n if (!this.shadow) {\n return;\n }\n\n var canvas = this.canvas,\n shadow = this.shadow,\n ctx = canvas.contextTop,\n zoom = canvas.getZoom();\n if (canvas && canvas._isRetinaScaling()) {\n zoom *= fabric.devicePixelRatio;\n }\n\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * zoom;\n ctx.shadowOffsetX = shadow.offsetX * zoom;\n ctx.shadowOffsetY = shadow.offsetY * zoom;\n },\n\n needsFullRender: function() {\n var color = new fabric.Color(this.color);\n return color.getAlpha() < 1 || !!this.shadow;\n },\n\n /**\n * Removes brush shadow styles\n * @private\n */\n _resetShadow: function() {\n var ctx = this.canvas.contextTop;\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n }\n});\n\n\n(function() {\n /**\n * PencilBrush class\n * @class fabric.PencilBrush\n * @extends fabric.BaseBrush\n */\n fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n /**\n * Discard points that are less than `decimate` pixel distant from each other\n * @type Number\n * @default 0.4\n */\n decimate: 0.4,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.PencilBrush} Instance of a pencil brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this._points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n _drawSegment: function (ctx, p1, p2) {\n var midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n },\n\n /**\n * Inovoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n this._render();\n },\n\n /**\n * Inovoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n if (this.needsFullRender()) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n }\n else {\n var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n ctx.stroke();\n ctx.restore();\n }\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function(options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return true;\n }\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n return false;\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing: function(pointer) {\n\n var p = new fabric.Point(pointer.x, pointer.y);\n\n this._reset();\n this._addPoint(p);\n this.canvas.contextTop.moveTo(p.x, p.y);\n },\n\n /**\n * @private\n * @param {fabric.Point} point Point to be added to points array\n */\n _addPoint: function(point) {\n if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n return false;\n }\n this._points.push(point);\n return true;\n },\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset: function() {\n this._points = [];\n this._setBrushStyles();\n this._setShadow();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _captureDrawingPath: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n return this._addPoint(pointerPoint);\n },\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n p1 = this._points[0],\n p2 = this._points[1];\n\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n var width = this.width / 1000;\n p1 = new fabric.Point(p1.x, p1.y);\n p2 = new fabric.Point(p2.x, p2.y);\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (i = 1, len = this._points.length; i < len; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n this._drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * Converts points to SVG path\n * @param {Array} points Array of points\n * @return {String} SVG path\n */\n convertPointsToSVGPath: function(points) {\n var path = [], i, width = this.width / 1000,\n p1 = new fabric.Point(points[0].x, points[0].y),\n p2 = new fabric.Point(points[1].x, points[1].y),\n len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' ');\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n var midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');\n }\n p1 = points[i];\n if ((i + 1) < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width);\n return path;\n },\n\n /**\n * Creates fabric.Path object to add on canvas\n * @param {String} pathData Path data\n * @return {fabric.Path} Path to add on canvas\n */\n createPath: function(pathData) {\n var path = new fabric.Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.setShadow(this.shadow);\n }\n\n return path;\n },\n\n /**\n * Decimate poins array with the decimate value\n */\n decimatePoints: function(points, distance) {\n if (points.length <= 2) {\n return points;\n }\n var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2),\n i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint],\n cDistance;\n for (i = 1; i < l; i++) {\n cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2);\n if (cDistance >= adjustedDistance) {\n lastPoint = points[i];\n newPoints.push(lastPoint);\n }\n }\n if (newPoints.length === 1) {\n newPoints.push(new fabric.Point(newPoints[0].x, newPoints[0].y));\n }\n return newPoints;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to the fabric canvas.\n */\n _finalizeAndAddPath: function() {\n var ctx = this.canvas.contextTop;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n var pathData = this.convertPointsToSVGPath(this._points).join('');\n if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.add(path);\n this.canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.CircleBrush} Instance of a circle brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n drawDot: function(pointer) {\n var point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n },\n\n dot: function(ctx, point) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n },\n\n /**\n * Invoked on mouse down\n */\n onMouseDown: function(pointer) {\n this.points.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n },\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n points = this.points;\n this._saveAndTransform(ctx);\n for (i = 0, len = points.length; i < len; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n }\n else {\n this.drawDot(pointer);\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n this.canvas.renderOnAddRemove = false;\n\n var circles = [];\n\n for (i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n circle = new fabric.Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: point.fill\n });\n\n this.shadow && circle.setShadow(this.shadow);\n\n circles.push(circle);\n }\n var group = new fabric.Group(circles);\n group.canvas = this.canvas;\n\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @param {Object} pointer\n * @return {fabric.Point} Just added pointer point\n */\n addPoint: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n circleRadius = fabric.util.getRandomInt(\n Math.max(0, this.width - 20), this.width + 20) / 2,\n\n circleColor = new fabric.Color(this.color)\n .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n .toRgba();\n\n pointerPoint.radius = circleRadius;\n pointerPoint.fill = circleColor;\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n /**\n * Width of a spray\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Density of a spray (number of dots per chunk)\n * @type Number\n * @default\n */\n density: 20,\n\n /**\n * Width of spray dots\n * @type Number\n * @default\n */\n dotWidth: 1,\n\n /**\n * Width variance of spray dots\n * @type Number\n * @default\n */\n dotWidthVariance: 1,\n\n /**\n * Whether opacity of a dot should be random\n * @type Boolean\n * @default\n */\n randomOpacity: false,\n\n /**\n * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n * @type Boolean\n * @default\n */\n optimizeOverlapping: true,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.SprayBrush} Instance of a spray brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.sprayChunks = [];\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this.sprayChunks.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n var rects = [];\n\n for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n var sprayChunk = this.sprayChunks[i];\n\n for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n var rect = new fabric.Rect({\n width: sprayChunk[j].width,\n height: sprayChunk[j].width,\n left: sprayChunk[j].x + 1,\n top: sprayChunk[j].y + 1,\n originX: 'center',\n originY: 'center',\n fill: this.color\n });\n rects.push(rect);\n }\n }\n\n if (this.optimizeOverlapping) {\n rects = this._getOptimizedRects(rects);\n }\n\n var group = new fabric.Group(rects);\n this.shadow && group.setShadow(this.shadow);\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @private\n * @param {Array} rects\n */\n _getOptimizedRects: function(rects) {\n\n // avoid creating duplicate rects at the same coordinates\n var uniqueRects = { }, key, i, len;\n\n for (i = 0, len = rects.length; i < len; i++) {\n key = rects[i].left + '' + rects[i].top;\n if (!uniqueRects[key]) {\n uniqueRects[key] = rects[i];\n }\n }\n var uniqueRectsArray = [];\n for (key in uniqueRects) {\n uniqueRectsArray.push(uniqueRects[key]);\n }\n\n return uniqueRectsArray;\n },\n\n /**\n * Render new chunk of spray brush\n */\n render: function(sprayChunk) {\n var ctx = this.canvas.contextTop, i, len;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, len = sprayChunk.length; i < len; i++) {\n var point = sprayChunk[i];\n if (typeof point.opacity !== 'undefined') {\n ctx.globalAlpha = point.opacity;\n }\n ctx.fillRect(point.x, point.y, point.width, point.width);\n }\n ctx.restore();\n },\n\n /**\n * Render all spray chunks\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, ilen;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n this.render(this.sprayChunks[i]);\n }\n ctx.restore();\n },\n\n /**\n * @param {Object} pointer\n */\n addSprayChunk: function(pointer) {\n this.sprayChunkPoints = [];\n\n var x, y, width, radius = this.width / 2, i;\n\n for (i = 0; i < this.density; i++) {\n\n x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n if (this.dotWidthVariance) {\n width = fabric.util.getRandomInt(\n // bottom clamp width to 1\n Math.max(1, this.dotWidth - this.dotWidthVariance),\n this.dotWidth + this.dotWidthVariance);\n }\n else {\n width = this.dotWidth;\n }\n\n var point = new fabric.Point(x, y);\n point.width = width;\n\n if (this.randomOpacity) {\n point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n }\n\n this.sprayChunkPoints.push(point);\n }\n\n this.sprayChunks.push(this.sprayChunkPoints);\n }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n getPatternSrc: function() {\n\n var dotWidth = 20,\n dotDistance = 5,\n patternCanvas = fabric.util.createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n patternCtx.closePath();\n patternCtx.fill();\n\n return patternCanvas;\n },\n\n getPatternSrcFunction: function() {\n return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n },\n\n /**\n * Creates \"pattern\" instance property\n */\n getPattern: function() {\n return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat');\n },\n\n /**\n * Sets brush styles\n */\n _setBrushStyles: function() {\n this.callSuper('_setBrushStyles');\n this.canvas.contextTop.strokeStyle = this.getPattern();\n },\n\n /**\n * Creates path\n */\n createPath: function(pathData) {\n var path = this.callSuper('createPath', pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new fabric.Pattern({\n source: this.source || this.getPatternSrcFunction(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y\n });\n return path;\n }\n});\n\n\n(function() {\n\n var getPointer = fabric.util.getPointer,\n degreesToRadians = fabric.util.degreesToRadians,\n radiansToDegrees = fabric.util.radiansToDegrees,\n atan2 = Math.atan2,\n abs = Math.abs,\n supportLineDash = fabric.StaticCanvas.supports('setLineDash'),\n\n STROKE_OFFSET = 0.5;\n\n /**\n * Canvas class\n * @class fabric.Canvas\n * @extends fabric.StaticCanvas\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n * @see {@link fabric.Canvas#initialize} for constructor definition\n *\n * @fires object:modified at the end of a transform or any change when statefull is true\n * @fires object:rotated at the end of a rotation transform\n * @fires object:scaled at the end of a scale transform\n * @fires object:moved at the end of translation transform\n * @fires object:skewed at the end of a skew transform\n * @fires object:rotating while an object is being rotated from the control\n * @fires object:scaling while an object is being scaled by controls\n * @fires object:moving while an object is being dragged\n * @fires object:skewing while an object is being skewed from the controls\n * @fires object:selected this event is deprecated. use selection:created\n *\n * @fires before:transform before a transform is is started\n * @fires before:selection:cleared\n * @fires selection:cleared\n * @fires selection:updated\n * @fires selection:created\n *\n * @fires path:created after a drawing operation ends and the path is added\n * @fires mouse:down\n * @fires mouse:move\n * @fires mouse:up\n * @fires mouse:down:before on mouse down, before the inner fabric logic runs\n * @fires mouse:move:before on mouse move, before the inner fabric logic runs\n * @fires mouse:up:before on mouse up, before the inner fabric logic runs\n * @fires mouse:over\n * @fires mouse:out\n * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n * @fires after:render at the end of the render process, receives the context in the callback\n * @fires before:render at start the render process, receives the context in the callback\n *\n */\n fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n this._initInteractive();\n this._createCacheCanvas();\n },\n\n /**\n * When true, objects can be transformed by one side (unproportionally)\n * @type Boolean\n * @default\n */\n uniScaleTransform: false,\n\n /**\n * Indicates which key enable unproportional scaling\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n uniScaleKey: 'shiftKey',\n\n /**\n * When true, objects use center point as the origin of scale transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, objects use center point as the origin of rotate transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: false,\n\n /**\n * Indicates which key enable centered Transform\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n centeredKey: 'altKey',\n\n /**\n * Indicates which key enable alternate action on corner\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n altActionKey: 'shiftKey',\n\n /**\n * Indicates that canvas is interactive. This property should not be changed.\n * @type Boolean\n * @default\n */\n interactive: true,\n\n /**\n * Indicates whether group selection should be enabled\n * @type Boolean\n * @default\n */\n selection: true,\n\n /**\n * Indicates which key or keys enable multiple click selection\n * Pass value as a string or array of strings\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or empty or containing any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.2\n * @type String|Array\n * @default\n */\n selectionKey: 'shiftKey',\n\n /**\n * Indicates which key enable alternative selection\n * in case of target overlapping with active object\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * For a series of reason that come from the general expectations on how\n * things should work, this feature works only for preserveObjectStacking true.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.5\n * @type null|String\n * @default\n */\n altSelectionKey: null,\n\n /**\n * Color of selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(100, 100, 255, 0.3)', // blue\n\n /**\n * Default dash array pattern\n * If not empty the selection border is dashed\n * @type Array\n */\n selectionDashArray: [],\n\n /**\n * Color of the border of selection (usually slightly darker than color of selection itself)\n * @type String\n * @default\n */\n selectionBorderColor: 'rgba(255, 255, 255, 0.3)',\n\n /**\n * Width of a line used in object/group selection\n * @type Number\n * @default\n */\n selectionLineWidth: 1,\n\n /**\n * Select only shapes that are fully contained in the dragged selection rectangle.\n * @type Boolean\n * @default\n */\n selectionFullyContained: false,\n\n /**\n * Default cursor value used when hovering over an object on canvas\n * @type String\n * @default\n */\n hoverCursor: 'move',\n\n /**\n * Default cursor value used when moving an object on canvas\n * @type String\n * @default\n */\n moveCursor: 'move',\n\n /**\n * Default cursor value used for the entire canvas\n * @type String\n * @default\n */\n defaultCursor: 'default',\n\n /**\n * Cursor value used during free drawing\n * @type String\n * @default\n */\n freeDrawingCursor: 'crosshair',\n\n /**\n * Cursor value used for rotation point\n * @type String\n * @default\n */\n rotationCursor: 'crosshair',\n\n /**\n * Cursor value used for disabled elements ( corners with disabled action )\n * @type String\n * @since 2.0.0\n * @default\n */\n notAllowedCursor: 'not-allowed',\n\n /**\n * Default element class that's given to wrapper (div) element of canvas\n * @type String\n * @default\n */\n containerClass: 'canvas-container',\n\n /**\n * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * Number of pixels around target pixel to tolerate (consider active) during object detection\n * @type Number\n * @default\n */\n targetFindTolerance: 0,\n\n /**\n * When true, target detection is skipped when hovering over canvas. This can be used to improve performance.\n * @type Boolean\n * @default\n */\n skipTargetFind: false,\n\n /**\n * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n * After mousedown, mousemove creates a shape,\n * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n * @type Boolean\n * @default\n */\n isDrawingMode: false,\n\n /**\n * Indicates whether objects should remain in current stack position when selected.\n * When false objects are brought to top and rendered as part of the selection group\n * @type Boolean\n * @default\n */\n preserveObjectStacking: false,\n\n /**\n * Indicates the angle that an object will lock to while rotating.\n * @type Number\n * @since 1.6.7\n * @default\n */\n snapAngle: 0,\n\n /**\n * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n * When `null`, the snapThreshold will default to the snapAngle.\n * @type null|Number\n * @since 1.6.7\n * @default\n */\n snapThreshold: null,\n\n /**\n * Indicates if the right click on canvas can output the context menu or not\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n stopContextMenu: false,\n\n /**\n * Indicates if the canvas can fire right click events\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n fireRightClick: false,\n\n /**\n * Indicates if the canvas can fire middle click events\n * @type Boolean\n * @since 1.7.8\n * @default\n */\n fireMiddleClick: false,\n\n /**\n * Keep track of the subTargets for Mouse Events\n * @type fabric.Object[]\n */\n targets: [],\n\n /**\n * Keep track of the hovered target\n * @type fabric.Object\n * @private\n */\n _hoveredTarget: null,\n\n /**\n * hold the list of nested targets hovered\n * @type fabric.Object[]\n * @private\n */\n _hoveredTargets: [],\n\n /**\n * @private\n */\n _initInteractive: function() {\n this._currentTransform = null;\n this._groupSelector = null;\n this._initWrapperElement();\n this._createUpperCanvas();\n this._initEventListeners();\n\n this._initRetinaScaling();\n\n this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n this.calcOffset();\n },\n\n /**\n * Divides objects in two groups, one to render immediately\n * and one to render as activeGroup.\n * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n */\n _chooseObjectsToRender: function() {\n var activeObjects = this.getActiveObjects(),\n object, objsToRender, activeGroupObjects;\n\n if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n objsToRender = [];\n activeGroupObjects = [];\n for (var i = 0, length = this._objects.length; i < length; i++) {\n object = this._objects[i];\n if (activeObjects.indexOf(object) === -1 ) {\n objsToRender.push(object);\n }\n else {\n activeGroupObjects.push(object);\n }\n }\n if (activeObjects.length > 1) {\n this._activeObject._objects = activeGroupObjects;\n }\n objsToRender.push.apply(objsToRender, activeGroupObjects);\n }\n else {\n objsToRender = this._objects;\n }\n return objsToRender;\n },\n\n /**\n * Renders both the top canvas and the secondary container canvas.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n },\n\n renderTopLayer: function(ctx) {\n ctx.save();\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._render();\n this.contextTopDirty = true;\n }\n // we render the top context - last object\n if (this.selection && this._groupSelector) {\n this._drawSelection(ctx);\n this.contextTopDirty = true;\n }\n ctx.restore();\n },\n\n /**\n * Method to render only the top canvas.\n * Also used to render the group selection box.\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n renderTop: function () {\n var ctx = this.contextTop;\n this.clearContext(ctx);\n this.renderTopLayer(ctx);\n this.fire('after:render');\n return this;\n },\n\n /**\n * Resets the current transform to its original values and chooses the type of resizing based on the event\n * @private\n */\n _resetCurrentTransform: function() {\n var t = this._currentTransform;\n\n t.target.set({\n scaleX: t.original.scaleX,\n scaleY: t.original.scaleY,\n skewX: t.original.skewX,\n skewY: t.original.skewY,\n left: t.original.left,\n top: t.original.top\n });\n\n if (this._shouldCenterTransform(t.target)) {\n if (t.originX !== 'center') {\n if (t.originX === 'right') {\n t.mouseXSign = -1;\n }\n else {\n t.mouseXSign = 1;\n }\n }\n if (t.originY !== 'center') {\n if (t.originY === 'bottom') {\n t.mouseYSign = -1;\n }\n else {\n t.mouseYSign = 1;\n }\n }\n\n t.originX = 'center';\n t.originY = 'center';\n }\n else {\n t.originX = t.original.originX;\n t.originY = t.original.originY;\n }\n },\n\n /**\n * Checks if point is contained within an area of given object\n * @param {Event} e Event object\n * @param {fabric.Object} target Object to test against\n * @param {Object} [point] x,y object of point coordinates we want to check.\n * @return {Boolean} true if point is contained within an area of given object\n */\n containsPoint: function (e, target, point) {\n var ignoreZoom = true,\n pointer = point || this.getPointer(e, ignoreZoom),\n xy;\n\n if (target.group && target.group === this._activeObject && target.group.type === 'activeSelection') {\n xy = this._normalizePointer(target.group, pointer);\n }\n else {\n xy = { x: pointer.x, y: pointer.y };\n }\n // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n return (target.containsPoint(xy) || target._findTargetCorner(pointer));\n },\n\n /**\n * @private\n */\n _normalizePointer: function (object, pointer) {\n var m = object.calcTransformMatrix(),\n invertedM = fabric.util.invertTransform(m),\n vptPointer = this.restorePointerVpt(pointer);\n return fabric.util.transformPoint(vptPointer, invertedM);\n },\n\n /**\n * Returns true if object is transparent at a certain location\n * @param {fabric.Object} target Object to check\n * @param {Number} x Left coordinate\n * @param {Number} y Top coordinate\n * @return {Boolean}\n */\n isTargetTransparent: function (target, x, y) {\n // in case the target is the activeObject, we cannot execute this optimization\n // because we need to draw controls too.\n if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) {\n var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0),\n targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0);\n\n var isTransparent = fabric.util.isTransparent(\n target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance);\n\n return isTransparent;\n }\n\n var ctx = this.contextCache,\n originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n target.selectionBackgroundColor = '';\n\n this.clearContext(ctx);\n\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n target.render(ctx);\n ctx.restore();\n\n target === this._activeObject && target._renderControls(ctx, {\n hasBorders: false,\n transparentCorners: false\n }, {\n hasBorders: false,\n });\n\n target.selectionBackgroundColor = originalColor;\n\n var isTransparent = fabric.util.isTransparent(\n ctx, x, y, this.targetFindTolerance);\n\n return isTransparent;\n },\n\n /**\n * takes an event and determins if selection key has been pressed\n * @private\n * @param {Event} e Event object\n */\n _isSelectionKeyPressed: function(e) {\n var selectionKeyPressed = false;\n\n if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') {\n selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n }\n else {\n selectionKeyPressed = e[this.selectionKey];\n }\n\n return selectionKeyPressed;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _shouldClearSelection: function (e, target) {\n var activeObjects = this.getActiveObjects(),\n activeObject = this._activeObject;\n\n return (\n !target\n ||\n (target &&\n activeObject &&\n activeObjects.length > 1 &&\n activeObjects.indexOf(target) === -1 &&\n activeObject !== target &&\n !this._isSelectionKeyPressed(e))\n ||\n (target && !target.evented)\n ||\n (target &&\n !target.selectable &&\n activeObject &&\n activeObject !== target)\n );\n },\n\n /**\n * centeredScaling from object can't override centeredScaling from canvas.\n * this should be fixed, since object setting should take precedence over canvas.\n * @private\n * @param {fabric.Object} target\n */\n _shouldCenterTransform: function (target) {\n if (!target) {\n return;\n }\n\n var t = this._currentTransform,\n centerTransform;\n\n if (t.action === 'scale' || t.action === 'scaleX' || t.action === 'scaleY') {\n centerTransform = this.centeredScaling || target.centeredScaling;\n }\n else if (t.action === 'rotate') {\n centerTransform = this.centeredRotation || target.centeredRotation;\n }\n\n return centerTransform ? !t.altKey : t.altKey;\n },\n\n /**\n * @private\n */\n _getOriginFromCorner: function(target, corner) {\n var origin = {\n x: target.originX,\n y: target.originY\n };\n\n if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n origin.x = 'right';\n }\n else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n origin.x = 'left';\n }\n\n if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n origin.y = 'bottom';\n }\n else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n origin.y = 'top';\n }\n\n return origin;\n },\n\n /**\n * @private\n * @param {Boolean} alreadySelected true if target is already selected\n * @param {String} corner a string representing the corner ml, mr, tl ...\n * @param {Event} e Event object\n * @param {fabric.Object} [target] inserted back to help overriding. Unused\n */\n _getActionFromCorner: function(alreadySelected, corner, e /* target */) {\n if (!corner || !alreadySelected) {\n return 'drag';\n }\n\n switch (corner) {\n case 'mtr':\n return 'rotate';\n case 'ml':\n case 'mr':\n return e[this.altActionKey] ? 'skewY' : 'scaleX';\n case 'mt':\n case 'mb':\n return e[this.altActionKey] ? 'skewX' : 'scaleY';\n default:\n return 'scale';\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _setupCurrentTransform: function (e, target, alreadySelected) {\n if (!target) {\n return;\n }\n\n var pointer = this.getPointer(e),\n corner = target._findTargetCorner(this.getPointer(e, true)),\n action = this._getActionFromCorner(alreadySelected, corner, e, target),\n origin = this._getOriginFromCorner(target, corner);\n\n this._currentTransform = {\n target: target,\n action: action,\n corner: corner,\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n // used by transation\n offsetX: pointer.x - target.left,\n offsetY: pointer.y - target.top,\n originX: origin.x,\n originY: origin.y,\n ex: pointer.x,\n ey: pointer.y,\n lastX: pointer.x,\n lastY: pointer.y,\n // unsure they are usefull anymore.\n // left: target.left,\n // top: target.top,\n theta: degreesToRadians(target.angle),\n // end of unsure\n width: target.width * target.scaleX,\n mouseXSign: 1,\n mouseYSign: 1,\n shiftKey: e.shiftKey,\n altKey: e[this.centeredKey],\n original: fabric.util.saveObjectTransform(target),\n };\n\n this._currentTransform.original.originX = origin.x;\n this._currentTransform.original.originY = origin.y;\n\n this._resetCurrentTransform();\n this._beforeTransform(e);\n },\n\n /**\n * Translates object by \"setting\" its left/top\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the translation occurred\n */\n _translateObject: function (x, y) {\n var transform = this._currentTransform,\n target = transform.target,\n newLeft = x - transform.offsetX,\n newTop = y - transform.offsetY,\n moveX = !target.get('lockMovementX') && target.left !== newLeft,\n moveY = !target.get('lockMovementY') && target.top !== newTop;\n\n moveX && target.set('left', newLeft);\n moveY && target.set('top', newTop);\n return moveX || moveY;\n },\n\n /**\n * Check if we are increasing a positive skew or lower it,\n * checking mouse direction and pressed corner.\n * @private\n */\n _changeSkewTransformOrigin: function(mouseMove, t, by) {\n var property = 'originX', origins = { 0: 'center' },\n skew = t.target.skewX, originA = 'left', originB = 'right',\n corner = t.corner === 'mt' || t.corner === 'ml' ? 1 : -1,\n flipSign = 1;\n\n mouseMove = mouseMove > 0 ? 1 : -1;\n if (by === 'y') {\n skew = t.target.skewY;\n originA = 'top';\n originB = 'bottom';\n property = 'originY';\n }\n origins[-1] = originA;\n origins[1] = originB;\n\n t.target.flipX && (flipSign *= -1);\n t.target.flipY && (flipSign *= -1);\n\n if (skew === 0) {\n t.skewSign = -corner * mouseMove * flipSign;\n t[property] = origins[-mouseMove];\n }\n else {\n skew = skew > 0 ? 1 : -1;\n t.skewSign = skew;\n t[property] = origins[skew * corner * flipSign];\n }\n },\n\n /**\n * Skew object by mouse events\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y'\n * @return {Boolean} true if the skewing occurred\n */\n _skewObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target, skewed = false,\n lockSkewingX = target.get('lockSkewingX'),\n lockSkewingY = target.get('lockSkewingY');\n\n if ((lockSkewingX && by === 'x') || (lockSkewingY && by === 'y')) {\n return false;\n }\n\n // Get the constraint point\n var center = target.getCenterPoint(),\n actualMouseByCenter = target.toLocalPoint(new fabric.Point(x, y), 'center', 'center')[by],\n lastMouseByCenter = target.toLocalPoint(new fabric.Point(t.lastX, t.lastY), 'center', 'center')[by],\n actualMouseByOrigin, constraintPosition, dim = target._getTransformedDimensions();\n\n this._changeSkewTransformOrigin(actualMouseByCenter - lastMouseByCenter, t, by);\n actualMouseByOrigin = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY)[by];\n constraintPosition = target.translateToOriginPoint(center, t.originX, t.originY);\n // Actually skew the object\n skewed = this._setObjectSkew(actualMouseByOrigin, t, by, dim);\n t.lastX = x;\n t.lastY = y;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return skewed;\n },\n\n /**\n * Set object skew\n * @private\n * @return {Boolean} true if the skewing occurred\n */\n _setObjectSkew: function(localMouse, transform, by, _dim) {\n var target = transform.target, newValue, skewed = false,\n skewSign = transform.skewSign, newDim, dimNoSkew,\n otherBy, _otherBy, _by, newDimMouse, skewX, skewY;\n\n if (by === 'x') {\n otherBy = 'y';\n _otherBy = 'Y';\n _by = 'X';\n skewX = 0;\n skewY = target.skewY;\n }\n else {\n otherBy = 'x';\n _otherBy = 'X';\n _by = 'Y';\n skewX = target.skewX;\n skewY = 0;\n }\n\n dimNoSkew = target._getTransformedDimensions(skewX, skewY);\n newDimMouse = 2 * Math.abs(localMouse) - dimNoSkew[by];\n if (newDimMouse <= 2) {\n newValue = 0;\n }\n else {\n newValue = skewSign * Math.atan((newDimMouse / target['scale' + _by]) /\n (dimNoSkew[otherBy] / target['scale' + _otherBy]));\n newValue = fabric.util.radiansToDegrees(newValue);\n }\n skewed = target['skew' + _by] !== newValue;\n target.set('skew' + _by, newValue);\n if (target['skew' + _otherBy] !== 0) {\n newDim = target._getTransformedDimensions();\n newValue = (_dim[otherBy] / newDim[otherBy]) * target['scale' + _otherBy];\n target.set('scale' + _otherBy, newValue);\n }\n return skewed;\n },\n\n /**\n * Scales object by invoking its scaleX/scaleY methods\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object.\n * When not provided, an object is scaled by both dimensions equally\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target,\n lockScalingX = target.lockScalingX,\n lockScalingY = target.lockScalingY,\n lockScalingFlip = target.lockScalingFlip;\n\n if (lockScalingX && lockScalingY) {\n return false;\n }\n\n // Get the constraint point\n var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY),\n localMouse = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY),\n dim = target._getTransformedDimensions(), scaled = false;\n\n this._setLocalMouse(localMouse, t);\n\n // Actually scale the object\n scaled = this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip, dim);\n\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip, _dim) {\n var target = transform.target, forbidScalingX = false, forbidScalingY = false, scaled = false,\n scaleX = localMouse.x * target.scaleX / _dim.x,\n scaleY = localMouse.y * target.scaleY / _dim.y,\n changeX = target.scaleX !== scaleX,\n changeY = target.scaleY !== scaleY;\n\n transform.newScaleX = scaleX;\n transform.newScaleY = scaleY;\n if (fabric.Textbox && by === 'x' && target instanceof fabric.Textbox) {\n var w = target.width * (localMouse.x / _dim.x);\n if (w >= target.getMinWidth()) {\n scaled = w !== target.width;\n target.set('width', w);\n return scaled;\n }\n return false;\n }\n\n if (lockScalingFlip && scaleX <= 0 && scaleX < target.scaleX) {\n forbidScalingX = true;\n localMouse.x = 0;\n }\n\n if (lockScalingFlip && scaleY <= 0 && scaleY < target.scaleY) {\n forbidScalingY = true;\n localMouse.y = 0;\n }\n\n if (by === 'equally' && !lockScalingX && !lockScalingY) {\n scaled = this._scaleObjectEqually(localMouse, target, transform, _dim);\n }\n else if (!by) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX));\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY));\n }\n else if (by === 'x' && !target.get('lockUniScaling')) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = changeX));\n }\n else if (by === 'y' && !target.get('lockUniScaling')) {\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = changeY));\n }\n forbidScalingX || forbidScalingY || this._flipObject(transform, by);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObjectEqually: function(localMouse, target, transform, _dim) {\n\n var dist = localMouse.y + localMouse.x,\n lastDist = _dim.y * transform.original.scaleY / target.scaleY +\n _dim.x * transform.original.scaleX / target.scaleX,\n scaled, signX = localMouse.x < 0 ? -1 : 1,\n signY = localMouse.y < 0 ? -1 : 1, newScaleX, newScaleY;\n\n // We use transform.scaleX/Y instead of target.scaleX/Y\n // because the object may have a min scale and we'll loose the proportions\n newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist);\n newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist);\n scaled = newScaleX !== target.scaleX || newScaleY !== target.scaleY;\n target.set('scaleX', newScaleX);\n target.set('scaleY', newScaleY);\n return scaled;\n },\n\n /**\n * @private\n */\n _flipObject: function(transform, by) {\n if (transform.newScaleX < 0 && by !== 'y') {\n if (transform.originX === 'left') {\n transform.originX = 'right';\n }\n else if (transform.originX === 'right') {\n transform.originX = 'left';\n }\n }\n\n if (transform.newScaleY < 0 && by !== 'x') {\n if (transform.originY === 'top') {\n transform.originY = 'bottom';\n }\n else if (transform.originY === 'bottom') {\n transform.originY = 'top';\n }\n }\n },\n\n /**\n * @private\n */\n _setLocalMouse: function(localMouse, t) {\n var target = t.target, zoom = this.getZoom(),\n padding = target.padding / zoom;\n\n if (t.originX === 'right') {\n localMouse.x *= -1;\n }\n else if (t.originX === 'center') {\n localMouse.x *= t.mouseXSign * 2;\n if (localMouse.x < 0) {\n t.mouseXSign = -t.mouseXSign;\n }\n }\n\n if (t.originY === 'bottom') {\n localMouse.y *= -1;\n }\n else if (t.originY === 'center') {\n localMouse.y *= t.mouseYSign * 2;\n if (localMouse.y < 0) {\n t.mouseYSign = -t.mouseYSign;\n }\n }\n\n // adjust the mouse coordinates when dealing with padding\n if (abs(localMouse.x) > padding) {\n if (localMouse.x < 0) {\n localMouse.x += padding;\n }\n else {\n localMouse.x -= padding;\n }\n }\n else { // mouse is within the padding, set to 0\n localMouse.x = 0;\n }\n\n if (abs(localMouse.y) > padding) {\n if (localMouse.y < 0) {\n localMouse.y += padding;\n }\n else {\n localMouse.y -= padding;\n }\n }\n else {\n localMouse.y = 0;\n }\n },\n\n /**\n * Rotates object by invoking its rotate method\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the rotation occurred\n */\n _rotateObject: function (x, y) {\n\n var t = this._currentTransform,\n target = t.target, constraintPosition,\n constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n if (target.lockRotation) {\n return false;\n }\n\n var lastAngle = atan2(t.ey - constraintPosition.y, t.ex - constraintPosition.x),\n curAngle = atan2(y - constraintPosition.y, x - constraintPosition.x),\n angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n hasRotated = true;\n\n if (target.snapAngle > 0) {\n var snapAngle = target.snapAngle,\n snapThreshold = target.snapThreshold || snapAngle,\n rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n angle = leftAngleLocked;\n }\n else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n angle = rightAngleLocked;\n }\n }\n\n // normalize angle to positive value\n if (angle < 0) {\n angle = 360 + angle;\n }\n angle %= 360;\n\n if (target.angle === angle) {\n hasRotated = false;\n }\n else {\n // rotation only happen here\n target.angle = angle;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n }\n\n return hasRotated;\n },\n\n /**\n * Set the cursor type of the canvas element\n * @param {String} value Cursor type of the canvas element.\n * @see http://www.w3.org/TR/css3-ui/#cursor\n */\n setCursor: function (value) {\n this.upperCanvasEl.style.cursor = value;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx to draw the selection on\n */\n _drawSelection: function (ctx) {\n var groupSelector = this._groupSelector,\n left = groupSelector.left,\n top = groupSelector.top,\n aleft = abs(left),\n atop = abs(top);\n\n if (this.selectionColor) {\n ctx.fillStyle = this.selectionColor;\n\n ctx.fillRect(\n groupSelector.ex - ((left > 0) ? 0 : -left),\n groupSelector.ey - ((top > 0) ? 0 : -top),\n aleft,\n atop\n );\n }\n\n if (!this.selectionLineWidth || !this.selectionBorderColor) {\n return;\n }\n ctx.lineWidth = this.selectionLineWidth;\n ctx.strokeStyle = this.selectionBorderColor;\n\n // selection border\n if (this.selectionDashArray.length > 1 && !supportLineDash) {\n\n var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop);\n\n ctx.beginPath();\n\n fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray);\n\n ctx.closePath();\n ctx.stroke();\n }\n else {\n fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n ctx.strokeRect(\n groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop),\n aleft,\n atop\n );\n }\n },\n\n /**\n * Method that determines what object we are clicking on\n * the skipGroup parameter is for internal use, is needed for shift+click action\n * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target\n * or the outside part of the corner.\n * @param {Event} e mouse event\n * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n * @return {fabric.Object} the target found\n */\n findTarget: function (e, skipGroup) {\n if (this.skipTargetFind) {\n return;\n }\n\n var ignoreZoom = true,\n pointer = this.getPointer(e, ignoreZoom),\n activeObject = this._activeObject,\n aObjects = this.getActiveObjects(),\n activeTarget, activeTargetSubs;\n\n // first check current group (if one exists)\n // active group does not check sub targets like normal groups.\n // if active group just exits.\n this.targets = [];\n\n if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n return activeObject;\n }\n // if we hit the corner of an activeObject, let's return that.\n if (aObjects.length === 1 && activeObject._findTargetCorner(pointer)) {\n return activeObject;\n }\n if (aObjects.length === 1 &&\n activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n if (!this.preserveObjectStacking) {\n return activeObject;\n }\n else {\n activeTarget = activeObject;\n activeTargetSubs = this.targets;\n this.targets = [];\n }\n }\n var target = this._searchPossibleTargets(this._objects, pointer);\n if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n target = activeTarget;\n this.targets = activeTargetSubs;\n }\n return target;\n },\n\n /**\n * Checks point is inside the object.\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @param {fabric.Object} obj Object to test against\n * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.\n * @return {Boolean} true if point is contained within an area of given object\n * @private\n */\n _checkTarget: function(pointer, obj, globalPointer) {\n if (obj &&\n obj.visible &&\n obj.evented &&\n this.containsPoint(null, obj, pointer)){\n if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);\n if (!isTransparent) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n },\n\n /**\n * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted\n * @param {Array} [objects] objects array to look into\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @return {fabric.Object} object that contains pointer\n * @private\n */\n _searchPossibleTargets: function(objects, pointer) {\n // Cache all targets where their bounding box contains point.\n var target, i = objects.length, subTarget;\n // Do not check for currently grouped objects, since we check the parent group itself.\n // until we call this function specifically to search inside the activeGroup\n while (i--) {\n var objToCheck = objects[i];\n var pointerToUse = objToCheck.group && objToCheck.group.type !== 'activeSelection' ?\n this._normalizePointer(objToCheck.group, pointer) : pointer;\n if (this._checkTarget(pointerToUse, objToCheck, pointer)) {\n target = objects[i];\n if (target.subTargetCheck && target instanceof fabric.Group) {\n subTarget = this._searchPossibleTargets(target._objects, pointer);\n subTarget && this.targets.push(subTarget);\n }\n break;\n }\n }\n return target;\n },\n\n /**\n * Returns pointer coordinates without the effect of the viewport\n * @param {Object} pointer with \"x\" and \"y\" number values\n * @return {Object} object with \"x\" and \"y\" number values\n */\n restorePointerVpt: function(pointer) {\n return fabric.util.transformPoint(\n pointer,\n fabric.util.invertTransform(this.viewportTransform)\n );\n },\n\n /**\n * Returns pointer coordinates relative to canvas.\n * Can return coordinates with or without viewportTransform.\n * ignoreZoom false gives back coordinates that represent\n * the point clicked on canvas element.\n * ignoreZoom true gives back coordinates after being processed\n * by the viewportTransform ( sort of coordinates of what is displayed\n * on the canvas where you are clicking.\n * ignoreZoom true = HTMLElement coordinates relative to top,left\n * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n * To interact with your shapes top and left you want to use ignoreZoom true\n * most of the time, while ignoreZoom false will give you coordinates\n * compatible with the object.oCoords system.\n * of the time.\n * @param {Event} e\n * @param {Boolean} ignoreZoom\n * @return {Object} object with \"x\" and \"y\" number values\n */\n getPointer: function (e, ignoreZoom) {\n // return cached values if we are in the event processing chain\n if (this._absolutePointer && !ignoreZoom) {\n return this._absolutePointer;\n }\n if (this._pointer && ignoreZoom) {\n return this._pointer;\n }\n\n var pointer = getPointer(e),\n upperCanvasEl = this.upperCanvasEl,\n bounds = upperCanvasEl.getBoundingClientRect(),\n boundsWidth = bounds.width || 0,\n boundsHeight = bounds.height || 0,\n cssScale;\n\n if (!boundsWidth || !boundsHeight ) {\n if ('top' in bounds && 'bottom' in bounds) {\n boundsHeight = Math.abs( bounds.top - bounds.bottom );\n }\n if ('right' in bounds && 'left' in bounds) {\n boundsWidth = Math.abs( bounds.right - bounds.left );\n }\n }\n\n this.calcOffset();\n pointer.x = pointer.x - this._offset.left;\n pointer.y = pointer.y - this._offset.top;\n if (!ignoreZoom) {\n pointer = this.restorePointerVpt(pointer);\n }\n\n var retinaScaling = this.getRetinaScaling();\n if (retinaScaling !== 1) {\n pointer.x /= retinaScaling;\n pointer.y /= retinaScaling;\n }\n\n if (boundsWidth === 0 || boundsHeight === 0) {\n // If bounds are not available (i.e. not visible), do not apply scale.\n cssScale = { width: 1, height: 1 };\n }\n else {\n cssScale = {\n width: upperCanvasEl.width / boundsWidth,\n height: upperCanvasEl.height / boundsHeight\n };\n }\n\n return {\n x: pointer.x * cssScale.width,\n y: pointer.y * cssScale.height\n };\n },\n\n /**\n * @private\n * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n */\n _createUpperCanvas: function () {\n var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, ''),\n lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl;\n\n // there is no need to create a new upperCanvas element if we have already one.\n if (upperCanvasEl) {\n upperCanvasEl.className = '';\n }\n else {\n upperCanvasEl = this._createCanvasElement();\n this.upperCanvasEl = upperCanvasEl;\n }\n fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n this.wrapperEl.appendChild(upperCanvasEl);\n\n this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl);\n this._applyCanvasStyle(upperCanvasEl);\n this.contextTop = upperCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _createCacheCanvas: function () {\n this.cacheCanvasEl = this._createCanvasElement();\n this.cacheCanvasEl.setAttribute('width', this.width);\n this.cacheCanvasEl.setAttribute('height', this.height);\n this.contextCache = this.cacheCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _initWrapperElement: function () {\n this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n 'class': this.containerClass\n });\n fabric.util.setStyle(this.wrapperEl, {\n width: this.width + 'px',\n height: this.height + 'px',\n position: 'relative'\n });\n fabric.util.makeElementUnselectable(this.wrapperEl);\n },\n\n /**\n * @private\n * @param {HTMLElement} element canvas element to apply styles on\n */\n _applyCanvasStyle: function (element) {\n var width = this.width || element.width,\n height = this.height || element.height;\n\n fabric.util.setStyle(element, {\n position: 'absolute',\n width: width + 'px',\n height: height + 'px',\n left: 0,\n top: 0,\n 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none',\n '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n });\n element.width = width;\n element.height = height;\n fabric.util.makeElementUnselectable(element);\n },\n\n /**\n * Copy the entire inline style from one element (fromEl) to another (toEl)\n * @private\n * @param {Element} fromEl Element style is copied from\n * @param {Element} toEl Element copied style is applied to\n */\n _copyCanvasStyle: function (fromEl, toEl) {\n toEl.style.cssText = fromEl.style.cssText;\n },\n\n /**\n * Returns context of canvas where object selection is drawn\n * @return {CanvasRenderingContext2D}\n */\n getSelectionContext: function() {\n return this.contextTop;\n },\n\n /**\n * Returns <canvas> element on which object selection is drawn\n * @return {HTMLCanvasElement}\n */\n getSelectionElement: function () {\n return this.upperCanvasEl;\n },\n\n /**\n * Returns currently active object\n * @return {fabric.Object} active object\n */\n getActiveObject: function () {\n return this._activeObject;\n },\n\n /**\n * Returns an array with the current selected objects\n * @return {fabric.Object} active object\n */\n getActiveObjects: function () {\n var active = this._activeObject;\n if (active) {\n if (active.type === 'activeSelection' && active._objects) {\n return active._objects.slice(0);\n }\n else {\n return [active];\n }\n }\n return [];\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n // removing active object should fire \"selection:cleared\" events\n if (obj === this._activeObject) {\n this.fire('before:selection:cleared', { target: obj });\n this._discardActiveObject();\n this.fire('selection:cleared', { target: obj });\n obj.fire('deselected');\n }\n if (obj === this._hoveredTarget){\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n this.callSuper('_onObjectRemoved', obj);\n },\n\n /**\n * @private\n * Compares the old activeObject with the current one and fires correct events\n * @param {fabric.Object} obj old activeObject\n */\n _fireSelectionEvents: function(oldObjects, e) {\n var somethingChanged = false, objects = this.getActiveObjects(),\n added = [], removed = [], opt = { e: e };\n oldObjects.forEach(function(oldObject) {\n if (objects.indexOf(oldObject) === -1) {\n somethingChanged = true;\n oldObject.fire('deselected', opt);\n removed.push(oldObject);\n }\n });\n objects.forEach(function(object) {\n if (oldObjects.indexOf(object) === -1) {\n somethingChanged = true;\n object.fire('selected', opt);\n added.push(object);\n }\n });\n if (oldObjects.length > 0 && objects.length > 0) {\n opt.selected = added;\n opt.deselected = removed;\n // added for backward compatibility\n opt.updated = added[0] || removed[0];\n opt.target = this._activeObject;\n somethingChanged && this.fire('selection:updated', opt);\n }\n else if (objects.length > 0) {\n // deprecated event\n if (objects.length === 1) {\n opt.target = added[0];\n this.fire('object:selected', opt);\n }\n opt.selected = added;\n // added for backward compatibility\n opt.target = this._activeObject;\n this.fire('selection:created', opt);\n }\n else if (oldObjects.length > 0) {\n opt.deselected = removed;\n this.fire('selection:cleared', opt);\n }\n },\n\n /**\n * Sets given object as the only active object on canvas\n * @param {fabric.Object} object Object to set as an active one\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setActiveObject: function (object, e) {\n var currentActives = this.getActiveObjects();\n this._setActiveObject(object, e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * @private\n * @param {Object} object to set as active\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {Boolean} true if the selection happened\n */\n _setActiveObject: function(object, e) {\n if (this._activeObject === object) {\n return false;\n }\n if (!this._discardActiveObject(e, object)) {\n return false;\n }\n if (object.onSelect({ e: e })) {\n return false;\n }\n this._activeObject = object;\n return true;\n },\n\n /**\n * @private\n */\n _discardActiveObject: function(e, object) {\n var obj = this._activeObject;\n if (obj) {\n // onDeselect return TRUE to cancel selection;\n if (obj.onDeselect({ e: e, object: object })) {\n return false;\n }\n this._activeObject = null;\n }\n return true;\n },\n\n /**\n * Discards currently active object and fire events. If the function is called by fabric\n * as a consequence of a mouse event, the event is passed as a parameter and\n * sent to the fire function for the custom events. When used as a method the\n * e param does not have any application.\n * @param {event} e\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n discardActiveObject: function (e) {\n var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject();\n if (currentActives.length) {\n this.fire('before:selection:cleared', { target: activeObject, e: e });\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * Clears a canvas element and removes all event listeners\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n var wrapper = this.wrapperEl;\n this.removeListeners();\n wrapper.removeChild(this.upperCanvasEl);\n wrapper.removeChild(this.lowerCanvasEl);\n this.contextCache = null;\n this.contextTop = null;\n ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n if (wrapper.parentNode) {\n wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n }\n delete this.wrapperEl;\n fabric.StaticCanvas.prototype.dispose.call(this);\n return this;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n // this.discardActiveGroup();\n this.discardActiveObject();\n this.clearContext(this.contextTop);\n return this.callSuper('clear');\n },\n\n /**\n * Draws objects' controls (borders/controls)\n * @param {CanvasRenderingContext2D} ctx Context to render controls on\n */\n drawControls: function(ctx) {\n var activeObject = this._activeObject;\n\n if (activeObject) {\n activeObject._renderControls(ctx);\n }\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n //If the object is part of the current selection group, it should\n //be transformed appropriately\n //i.e. it should be serialised as it would appear if the selection group\n //were to be destroyed.\n var originalProperties = this._realizeGroupTransformOnObject(instance),\n object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n //Undo the damage we did by changing all of its properties\n this._unwindGroupTransformOnObject(instance, originalProperties);\n return object;\n },\n\n /**\n * Realises an object's group transformation on it\n * @private\n * @param {fabric.Object} [instance] the object to transform (gets mutated)\n * @returns the original values of instance which were changed\n */\n _realizeGroupTransformOnObject: function(instance) {\n if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n //Copy all the positionally relevant properties across now\n var originalValues = {};\n layoutProps.forEach(function(prop) {\n originalValues[prop] = instance[prop];\n });\n this._activeObject.realizeTransform(instance);\n return originalValues;\n }\n else {\n return null;\n }\n },\n\n /**\n * Restores the changed properties of instance\n * @private\n * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n */\n _unwindGroupTransformOnObject: function(instance, originalValues) {\n if (originalValues) {\n instance.set(originalValues);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n //If the object is in a selection group, simulate what would happen to that\n //object when the group is deselected\n var originalProperties = this._realizeGroupTransformOnObject(instance);\n this.callSuper('_setSVGObject', markup, instance, reviver);\n this._unwindGroupTransformOnObject(instance, originalProperties);\n },\n\n setViewportTransform: function (vpt) {\n if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n this._activeObject.clearContextTop();\n }\n fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n }\n });\n\n // copying static properties manually to work around Opera's bug,\n // where \"prototype\" property is enumerable and overrides existing prototype\n for (var prop in fabric.StaticCanvas) {\n if (prop !== 'prototype') {\n fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n }\n }\n})();\n\n\n(function() {\n\n var cursorOffset = {\n mt: 0, // n\n tr: 1, // ne\n mr: 2, // e\n br: 3, // se\n mb: 4, // s\n bl: 5, // sw\n ml: 6, // w\n tl: 7 // nw\n },\n addListener = fabric.util.addListener,\n removeListener = fabric.util.removeListener,\n RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n addEventOptions = { passive: false };\n\n function checkClick(e, value) {\n return e.button && (e.button === value - 1);\n }\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Map of cursor style values for each of the object controls\n * @private\n */\n cursorMap: [\n 'n-resize',\n 'ne-resize',\n 'e-resize',\n 'se-resize',\n 's-resize',\n 'sw-resize',\n 'w-resize',\n 'nw-resize'\n ],\n\n /**\n * Contains the id of the touch event that owns the fabric transform\n * @type Number\n * @private\n */\n mainTouchId: null,\n\n /**\n * Adds mouse listeners to canvas\n * @private\n */\n _initEventListeners: function () {\n // in case we initialized the class twice. This should not happen normally\n // but in some kind of applications where the canvas element may be changed\n // this is a workaround to having double listeners.\n this.removeListeners();\n this._bindEvents();\n this.addOrRemove(addListener, 'add');\n },\n\n /**\n * return an event prefix pointer or mouse.\n * @private\n */\n _getEventPrefix: function () {\n return this.enablePointerEvents ? 'pointer' : 'mouse';\n },\n\n addOrRemove: function(functor, eventjsFunctor) {\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n functor(fabric.window, 'resize', this._onResize);\n functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut);\n functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter);\n functor(canvasElement, 'wheel', this._onMouseWheel);\n functor(canvasElement, 'contextmenu', this._onContextMenu);\n functor(canvasElement, 'dblclick', this._onDoubleClick);\n functor(canvasElement, 'dragover', this._onDragOver);\n functor(canvasElement, 'dragenter', this._onDragEnter);\n functor(canvasElement, 'dragleave', this._onDragLeave);\n functor(canvasElement, 'drop', this._onDrop);\n if (!this.enablePointerEvents) {\n functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n }\n if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange);\n eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n }\n },\n\n /**\n * Removes all event listeners\n */\n removeListeners: function() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n */\n _bindEvents: function() {\n if (this.eventsBound) {\n // for any reason we pass here twice we do not want to bind events twice.\n return;\n }\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onTouchStart = this._onTouchStart.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onResize = this._onResize.bind(this);\n this._onGesture = this._onGesture.bind(this);\n this._onDrag = this._onDrag.bind(this);\n this._onShake = this._onShake.bind(this);\n this._onLongPress = this._onLongPress.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onMouseWheel = this._onMouseWheel.bind(this);\n this._onMouseOut = this._onMouseOut.bind(this);\n this._onMouseEnter = this._onMouseEnter.bind(this);\n this._onContextMenu = this._onContextMenu.bind(this);\n this._onDoubleClick = this._onDoubleClick.bind(this);\n this._onDragOver = this._onDragOver.bind(this);\n this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n this._onDrop = this._simpleEventHandler.bind(this, 'drop');\n this.eventsBound = true;\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js gesture\n * @param {Event} [self] Inner Event object\n */\n _onGesture: function(e, self) {\n this.__onTransformGesture && this.__onTransformGesture(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js drag\n * @param {Event} [self] Inner Event object\n */\n _onDrag: function(e, self) {\n this.__onDrag && this.__onDrag(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n _onMouseWheel: function(e) {\n this.__onMouseWheel(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseOut: function(e) {\n var target = this._hoveredTarget;\n this.fire('mouse:out', { target: target, e: e });\n this._hoveredTarget = null;\n target && target.fire('mouseout', { e: e });\n\n var _this = this;\n this._hoveredTargets.forEach(function(_target){\n _this.fire('mouse:out', { target: target, e: e });\n _target && target.fire('mouseout', { e: e });\n });\n this._hoveredTargets = [];\n\n if (this._iTextInstances) {\n this._iTextInstances.forEach(function(obj) {\n if (obj.isEditing) {\n obj.hiddenTextarea.focus();\n }\n });\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n _onMouseEnter: function(e) {\n // This find target and consequent 'mouse:over' is used to\n // clear old instances on hovered target.\n // calling findTarget has the side effect of killing target.__corner.\n // as a short term fix we are not firing this if we are currently transforming.\n // as a long term fix we need to separate the action of finding a target with the\n // side effects we added to it.\n if (!this.currentTransform && !this.findTarget(e)) {\n this.fire('mouse:over', { target: null, e: e });\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js orientation change\n * @param {Event} [self] Inner Event object\n */\n _onOrientationChange: function(e, self) {\n this.__onOrientationChange && this.__onOrientationChange(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onShake: function(e, self) {\n this.__onShake && this.__onShake(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onLongPress: function(e, self) {\n this.__onLongPress && this.__onLongPress(e, self);\n },\n\n /**\n * prevent default to allow drop event to be fired\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n _onDragOver: function(e) {\n e.preventDefault();\n var target = this._simpleEventHandler('dragover', e);\n this._fireEnterLeaveEvents(target, e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onContextMenu: function (e) {\n if (this.stopContextMenu) {\n e.stopPropagation();\n e.preventDefault();\n }\n return false;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onDoubleClick: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData(e);\n },\n\n /**\n * Return a the id of an event.\n * returns either the pointerId or the identifier or 0 for the mouse event\n * @private\n * @param {Event} evt Event object\n */\n getPointerId: function(evt) {\n var changedTouches = evt.changedTouches;\n\n if (changedTouches) {\n return changedTouches[0] && changedTouches[0].identifier;\n }\n\n if (this.enablePointerEvents) {\n return evt.pointerId;\n }\n\n return -1;\n },\n\n /**\n * Determines if an event has the id of the event that is considered main\n * @private\n * @param {evt} event Event object\n */\n _isMainEvent: function(evt) {\n if (evt.isPrimary === true) {\n return true;\n }\n if (evt.isPrimary === false) {\n return false;\n }\n if (evt.type === 'touchend' && evt.touches.length === 0) {\n return true;\n }\n if (evt.changedTouches) {\n return evt.changedTouches[0].identifier === this.mainTouchId;\n }\n return true;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchStart: function(e) {\n e.preventDefault();\n if (this.mainTouchId === null) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown: function (e) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchEnd: function(e) {\n if (e.touches.length > 0) {\n // if there are still touches stop here\n return;\n }\n this.__onMouseUp(e);\n this._resetTransformEventData();\n this.mainTouchId = null;\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n var _this = this;\n if (this._willAddMouseDown) {\n clearTimeout(this._willAddMouseDown);\n }\n this._willAddMouseDown = setTimeout(function() {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown);\n _this._willAddMouseDown = 0;\n }, 400);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp: function (e) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n if (this._isMainEvent(e)) {\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove: function (e) {\n !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n this.__onMouseMove(e);\n },\n\n /**\n * @private\n */\n _onResize: function () {\n this.calcOffset();\n },\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender: function(target) {\n var activeObject = this._activeObject;\n\n if (\n !!activeObject !== !!target ||\n (activeObject && target && (activeObject !== target))\n ) {\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return true;\n }\n else if (activeObject && activeObject.isEditing) {\n // if we mouse up/down over a editing textbox a cursor change,\n // there is no need to re render\n return false;\n }\n return false;\n },\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp: function (e) {\n var target, transform = this._currentTransform,\n groupSelector = this._groupSelector, shouldRender = false,\n isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, 'up:before');\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n\n if (!isClick) {\n this._maybeGroupObjects(e);\n shouldRender || (shouldRender = this._shouldRender(target));\n }\n if (target) {\n target.isMoving = false;\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = 0);\n if (shouldRender) {\n this.requestRenderAll();\n }\n else if (!isClick) {\n this.renderTop();\n }\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @return {Fabric.Object} target return the the target found, for internal reasons.\n */\n _simpleEventHandler: function(eventType, e) {\n var target = this.findTarget(e),\n targets = this.targets,\n options = {\n e: e,\n target: target,\n subTargets: targets,\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n if (!targets) {\n return target;\n }\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire(eventType, options);\n }\n return target;\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @param {fabric.Object} targetObj receiving event\n * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n */\n _handleEvent: function(e, eventType, button, isClick) {\n var target = this._target,\n targets = this.targets || [],\n options = {\n e: e,\n target: target,\n subTargets: targets,\n button: button || LEFT_CLICK,\n isClick: isClick || false,\n pointer: this._pointer,\n absolutePointer: this._absolutePointer,\n transform: this._currentTransform\n };\n this.fire('mouse:' + eventType, options);\n target && target.fire('mouse' + eventType, options);\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire('mouse' + eventType, options);\n }\n },\n\n /**\n * @private\n * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n */\n _finalizeCurrentTransform: function(e) {\n\n var transform = this._currentTransform,\n target = transform.target,\n eventName,\n options = {\n e: e,\n target: target,\n transform: transform,\n };\n\n if (target._scaling) {\n target._scaling = false;\n }\n\n target.setCoords();\n\n if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n if (transform.actionPerformed) {\n eventName = this._addEventOptions(options, transform);\n this._fire(eventName, options);\n }\n this._fire('modified', options);\n }\n },\n\n /**\n * Mutate option object in order to add by property and give back the event name.\n * @private\n * @param {Object} options to mutate\n * @param {Object} transform to inspect action from\n */\n _addEventOptions: function(options, transform) {\n // we can probably add more details at low cost\n // scale change, rotation changes, translation changes\n var eventName, by;\n switch (transform.action) {\n case 'scaleX':\n eventName = 'scaled';\n by = 'x';\n break;\n case 'scaleY':\n eventName = 'scaled';\n by = 'y';\n break;\n case 'skewX':\n eventName = 'skewed';\n by = 'x';\n break;\n case 'skewY':\n eventName = 'skewed';\n by = 'y';\n break;\n case 'scale':\n eventName = 'scaled';\n by = 'equally';\n break;\n case 'rotate':\n eventName = 'rotated';\n break;\n case 'drag':\n eventName = 'moved';\n break;\n }\n options.by = by;\n return eventName;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode: function(e) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e).requestRenderAll();\n }\n if (this.clipTo) {\n fabric.util.clipContext(this, this.contextTop);\n }\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer });\n this._handleEvent(e, 'down');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode: function(e) {\n if (this._isCurrentlyDrawing) {\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer });\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode: function(e) {\n if (this.clipTo) {\n this.contextTop.restore();\n }\n var pointer = this.getPointer(e);\n this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer });\n this._handleEvent(e, 'up');\n },\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n var target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'down', RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'down', MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n var pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n var shouldRender = this._shouldRender(target),\n shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n\n if (this.selection && (!target ||\n (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n this._groupSelector = {\n ex: pointer.x,\n ey: pointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n var alreadySelected = target === this._activeObject;\n if (target.selectable) {\n this.setActiveObject(target, e);\n }\n if (target === this._activeObject && (target.__corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n }\n }\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n (shouldRender || shouldGroup) && this.requestRenderAll();\n },\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData: function() {\n this._target = null;\n this._pointer = null;\n this._absolutePointer = null;\n },\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData: function(e) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getPointer(e, true);\n this._absolutePointer = this.restorePointerVpt(this._pointer);\n this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n },\n\n /**\n * @private\n */\n _beforeTransform: function(e) {\n var t = this._currentTransform;\n this.stateful && t.target.saveState();\n this.fire('before:transform', {\n e: e,\n transform: t,\n });\n // determine if it's a drag or rotate case\n if (t.corner) {\n this.onBeforeScaleRotate(t.target);\n }\n },\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will define whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove: function (e) {\n this._handleEvent(e, 'move:before');\n this._cacheTransformEventData(e);\n var target, pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n var groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._pointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n }\n else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n }\n else {\n this._transformObject(e);\n }\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n },\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents: function(target, e) {\n var _hoveredTarget = this._hoveredTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _hoveredTarget,\n evtOut: 'mouseout',\n canvasEvtOut: 'mouse:out',\n evtIn: 'mouseover',\n canvasEvtIn: 'mouse:over',\n });\n for (var i = 0; i < length; i++){\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'mouseout',\n evtIn: 'mouseover',\n });\n }\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n },\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Event} e Event object fired on ondrag\n * @private\n */\n _fireEnterLeaveEvents: function(target, e) {\n var _draggedoverTarget = this._draggedoverTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _draggedoverTarget,\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n for (var i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n }\n this._draggedoverTarget = target;\n },\n\n /**\n * Manage the synthetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Event} e Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSyntheticInOutEvents: function(target, e, config) {\n var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires,\n targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n if (targetChanged) {\n inOpt = { e: e, target: target, previousTarget: oldTarget };\n outOpt = { e: e, target: oldTarget, nextTarget: target };\n }\n inFires = target && targetChanged;\n outFires = oldTarget && targetChanged;\n if (outFires) {\n canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n oldTarget.fire(config.evtOut, outOpt);\n }\n if (inFires) {\n canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n target.fire(config.evtIn, inOpt);\n }\n },\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel: function(e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n },\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject: function(e) {\n var pointer = this.getPointer(e),\n transform = this._currentTransform;\n\n transform.reset = false;\n transform.target.isMoving = true;\n transform.shiftKey = e.shiftKey;\n transform.altKey = e[this.centeredKey];\n\n this._beforeScaleTransform(e, transform);\n this._performTransformAction(e, transform, pointer);\n\n transform.actionPerformed && this.requestRenderAll();\n },\n\n /**\n * @private\n */\n _performTransformAction: function(e, transform, pointer) {\n var x = pointer.x,\n y = pointer.y,\n action = transform.action,\n actionPerformed = false,\n options = {\n target: transform.target,\n e: e,\n transform: transform,\n pointer: pointer\n };\n\n if (action === 'rotate') {\n (actionPerformed = this._rotateObject(x, y)) && this._fire('rotating', options);\n }\n else if (action === 'scale') {\n (actionPerformed = this._onScale(e, transform, x, y)) && this._fire('scaling', options);\n }\n else if (action === 'scaleX') {\n (actionPerformed = this._scaleObject(x, y, 'x')) && this._fire('scaling', options);\n }\n else if (action === 'scaleY') {\n (actionPerformed = this._scaleObject(x, y, 'y')) && this._fire('scaling', options);\n }\n else if (action === 'skewX') {\n (actionPerformed = this._skewObject(x, y, 'x')) && this._fire('skewing', options);\n }\n else if (action === 'skewY') {\n (actionPerformed = this._skewObject(x, y, 'y')) && this._fire('skewing', options);\n }\n else {\n actionPerformed = this._translateObject(x, y);\n if (actionPerformed) {\n this._fire('moving', options);\n this.setCursor(options.target.moveCursor || this.moveCursor);\n }\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n },\n\n /**\n * @private\n */\n _fire: function(eventName, options) {\n this.fire('object:' + eventName, options);\n options.target.fire(eventName, options);\n },\n\n /**\n * @private\n */\n _beforeScaleTransform: function(e, transform) {\n if (transform.action === 'scale' || transform.action === 'scaleX' || transform.action === 'scaleY') {\n var centerTransform = this._shouldCenterTransform(transform.target);\n\n // Switch from a normal resize to center-based\n if ((centerTransform && (transform.originX !== 'center' || transform.originY !== 'center')) ||\n // Switch from center-based resize to normal one\n (!centerTransform && transform.originX === 'center' && transform.originY === 'center')\n ) {\n this._resetCurrentTransform();\n transform.reset = true;\n }\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {Object} transform current transform\n * @param {Number} x mouse position x from origin\n * @param {Number} y mouse position y from origin\n * @return {Boolean} true if the scaling occurred\n */\n _onScale: function(e, transform, x, y) {\n if (this._isUniscalePossible(e, transform.target)) {\n transform.currentAction = 'scale';\n return this._scaleObject(x, y);\n }\n else {\n // Switch from a normal resize to proportional\n if (!transform.reset && transform.currentAction === 'scale') {\n this._resetCurrentTransform();\n }\n\n transform.currentAction = 'scaleEqually';\n return this._scaleObject(x, y, 'equally');\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target current target\n * @return {Boolean} true if unproportional scaling is possible\n */\n _isUniscalePossible: function(e, target) {\n return (e[this.uniScaleKey] || this.uniScaleTransform) && !target.get('lockUniScaling');\n },\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent: function (e, target) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return false;\n }\n var hoverCursor = target.hoverCursor || this.hoverCursor,\n activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n this._activeObject : null,\n // only show proper corner when group selection is not active\n corner = (!activeSelection || !activeSelection.contains(target))\n && target._findTargetCorner(this.getPointer(e, true));\n\n if (!corner) {\n if (target.subTargetCheck){\n // hoverCursor should come from top-most subTarget,\n // so we walk the array backwards\n this.targets.concat().reverse().map(function(_target){\n hoverCursor = _target.hoverCursor || hoverCursor;\n });\n }\n this.setCursor(hoverCursor);\n }\n else {\n this.setCursor(this.getCornerCursor(corner, target, e));\n }\n },\n\n /**\n * @private\n */\n getCornerCursor: function(corner, target, e) {\n if (this.actionIsDisabled(corner, target, e)) {\n return this.notAllowedCursor;\n }\n else if (corner in cursorOffset) {\n return this._getRotatedCornerCursor(corner, target, e);\n }\n else if (corner === 'mtr' && target.hasRotatingPoint) {\n return this.rotationCursor;\n }\n else {\n return this.defaultCursor;\n }\n },\n\n actionIsDisabled: function(corner, target, e) {\n if (corner === 'mt' || corner === 'mb') {\n return e[this.altActionKey] ? target.lockSkewingX : target.lockScalingY;\n }\n else if (corner === 'ml' || corner === 'mr') {\n return e[this.altActionKey] ? target.lockSkewingY : target.lockScalingX;\n }\n else if (corner === 'mtr') {\n return target.lockRotation;\n }\n else {\n return this._isUniscalePossible(e, target) ?\n target.lockScalingX && target.lockScalingY : target.lockScalingX || target.lockScalingY;\n }\n },\n\n /**\n * @private\n */\n _getRotatedCornerCursor: function(corner, target, e) {\n var n = Math.round((target.angle % 360) / 45);\n\n if (n < 0) {\n n += 8; // full circle ahead\n }\n n += cursorOffset[corner];\n if (e[this.altActionKey] && cursorOffset[corner] % 2 === 0) {\n //if we are holding shift and we are on a mx corner...\n n += 2;\n }\n // normalize n to be from 0 to 7\n n %= 8;\n\n return this.cursorMap[n];\n }\n });\n})();\n\n\n(function() {\n\n var min = Math.min,\n max = Math.max;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n * @return {Boolean}\n */\n _shouldGroup: function(e, target) {\n var activeObject = this._activeObject;\n return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _handleGrouping: function (e, target) {\n var activeObject = this._activeObject;\n // avoid multi select when shift click on a corner\n if (activeObject.__corner) {\n return;\n }\n if (target === activeObject) {\n // if it's a group, find target again, using activeGroup objects\n target = this.findTarget(e, true);\n // if even object is not found or we are on activeObjectCorner, bail out\n if (!target || !target.selectable) {\n return;\n }\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n this._updateActiveSelection(target, e);\n }\n else {\n this._createActiveSelection(target, e);\n }\n },\n\n /**\n * @private\n */\n _updateActiveSelection: function(target, e) {\n var activeSelection = this._activeObject,\n currentActiveObjects = activeSelection._objects.slice(0);\n if (activeSelection.contains(target)) {\n activeSelection.removeWithUpdate(target);\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n if (activeSelection.size() === 1) {\n // activate last remaining object\n this._setActiveObject(activeSelection.item(0), e);\n }\n }\n else {\n activeSelection.addWithUpdate(target);\n this._hoveredTarget = activeSelection;\n this._hoveredTargets = this.targets.concat();\n }\n this._fireSelectionEvents(currentActiveObjects, e);\n },\n\n /**\n * @private\n */\n _createActiveSelection: function(target, e) {\n var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n this._hoveredTarget = group;\n // ISSUE 4115: should we consider subTargets here?\n // this._hoveredTargets = [];\n // this._hoveredTargets = this.targets.concat();\n this._setActiveObject(group, e);\n this._fireSelectionEvents(currentActives, e);\n },\n\n /**\n * @private\n * @param {Object} target\n */\n _createGroup: function(target) {\n var objects = this._objects,\n isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n groupObjects = isActiveLower\n ? [this._activeObject, target]\n : [target, this._activeObject];\n this._activeObject.isEditing && this._activeObject.exitEditing();\n return new fabric.ActiveSelection(groupObjects, {\n canvas: this\n });\n },\n\n /**\n * @private\n * @param {Event} e mouse event\n */\n _groupSelectedObjects: function (e) {\n\n var group = this._collectObjects(e),\n aGroup;\n\n // do not create group for 1 element only\n if (group.length === 1) {\n this.setActiveObject(group[0], e);\n }\n else if (group.length > 1) {\n aGroup = new fabric.ActiveSelection(group.reverse(), {\n canvas: this\n });\n this.setActiveObject(aGroup, e);\n }\n },\n\n /**\n * @private\n */\n _collectObjects: function(e) {\n var group = [],\n currentObject,\n x1 = this._groupSelector.ex,\n y1 = this._groupSelector.ey,\n x2 = x1 + this._groupSelector.left,\n y2 = y1 + this._groupSelector.top,\n selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n allowIntersect = !this.selectionFullyContained,\n isClick = x1 === x2 && y1 === y2;\n // we iterate reverse order to collect top first in case of click.\n for (var i = this._objects.length; i--; ) {\n currentObject = this._objects[i];\n\n if (!currentObject || !currentObject.selectable || !currentObject.visible) {\n continue;\n }\n\n if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) ||\n currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||\n (allowIntersect && currentObject.containsPoint(selectionX1Y1)) ||\n (allowIntersect && currentObject.containsPoint(selectionX2Y2))\n ) {\n group.push(currentObject);\n // only add one object if it's a click\n if (isClick) {\n break;\n }\n }\n }\n\n if (group.length > 1) {\n group = group.filter(function(object) {\n return !object.onSelect({ e: e });\n });\n }\n\n return group;\n },\n\n /**\n * @private\n */\n _maybeGroupObjects: function(e) {\n if (this.selection && this._groupSelector) {\n this._groupSelectedObjects(e);\n }\n this.setCursor(this.defaultCursor);\n // clear selection and current transformation\n this._groupSelector = null;\n }\n });\n\n})();\n\n\n(function () {\n fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n * @example Generate jpeg dataURL with lower quality\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example Generate cropped png dataURL (clipping of canvas)\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example Generate double scaled png dataURL\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n */\n toDataURL: function (options) {\n options || (options = { });\n\n var format = options.format || 'png',\n quality = options.quality || 1,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1),\n canvasEl = this.toCanvasElement(multiplier, options);\n return fabric.util.toDataURL(canvasEl, format, quality);\n },\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is useful to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [cropping] Cropping informations\n * @param {Number} [cropping.left] Cropping left offset.\n * @param {Number} [cropping.top] Cropping top offset.\n * @param {Number} [cropping.width] Cropping width.\n * @param {Number} [cropping.height] Cropping height.\n */\n toCanvasElement: function(multiplier, cropping) {\n multiplier = multiplier || 1;\n cropping = cropping || { };\n var scaledWidth = (cropping.width || this.width) * multiplier,\n scaledHeight = (cropping.height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (cropping.left || 0)) * multiplier,\n translateY = (vp[5] - (cropping.top || 0)) * multiplier,\n originalInteractive = this.interactive,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n originalRetina = this.enableRetinaScaling,\n canvasEl = fabric.util.createCanvasElement(),\n originalContextTop = this.contextTop;\n canvasEl.width = scaledWidth;\n canvasEl.height = scaledHeight;\n this.contextTop = null;\n this.enableRetinaScaling = false;\n this.interactive = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.calcViewportBoundaries();\n this.renderCanvas(canvasEl.getContext('2d'), this._objects);\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.interactive = originalInteractive;\n this.enableRetinaScaling = originalRetina;\n this.contextTop = originalContextTop;\n return canvasEl;\n },\n });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Populates canvas with data from the specified dataless JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON}\n * @deprecated since 1.2.2\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n */\n loadFromDatalessJSON: function (json, callback, reviver) {\n return this.loadFromJSON(json, callback, reviver);\n },\n\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example loadFromJSON\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n * @example loadFromJSON with reviver\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * });\n */\n loadFromJSON: function (json, callback, reviver) {\n if (!json) {\n return;\n }\n\n // serialize if it wasn't already\n var serialized = (typeof json === 'string')\n ? JSON.parse(json)\n : fabric.util.object.clone(json);\n\n var _this = this,\n clipPath = serialized.clipPath,\n renderOnAddRemove = this.renderOnAddRemove;\n\n this.renderOnAddRemove = false;\n\n delete serialized.clipPath;\n\n this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n _this.clear();\n _this._setBgOverlay(serialized, function () {\n if (clipPath) {\n _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) {\n _this.clipPath = enlivenedCanvasClip[0];\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n });\n }\n else {\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n }\n });\n }, reviver);\n return this;\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Array} restored canvas objects\n * @param {Function} cached renderOnAddRemove callback\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) {\n var _this = this;\n enlivenedObjects.forEach(function(obj, index) {\n // we splice the array just in case some custom classes restored from JSON\n // will add more object to canvas at canvas init.\n _this.insertAt(obj, index);\n });\n this.renderOnAddRemove = renderOnAddRemove;\n // remove parts i cannot set as options\n delete serialized.objects;\n delete serialized.backgroundImage;\n delete serialized.overlayImage;\n delete serialized.background;\n delete serialized.overlay;\n // this._initOptions does too many things to just\n // call it. Normally loading an Object from JSON\n // create the Object instance. Here the Canvas is\n // already an instance and we are just loading things over it\n this._setOptions(serialized);\n this.renderAll();\n callback && callback();\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n _setBgOverlay: function(serialized, callback) {\n var loaded = {\n backgroundColor: false,\n overlayColor: false,\n backgroundImage: false,\n overlayImage: false\n };\n\n if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n callback && callback();\n return;\n }\n\n var cbIfLoaded = function () {\n if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n callback && callback();\n }\n };\n\n this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n },\n\n /**\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function(property, value, loaded, callback) {\n var _this = this;\n\n if (!value) {\n loaded[property] = true;\n callback && callback();\n return;\n }\n\n if (property === 'backgroundImage' || property === 'overlayImage') {\n fabric.util.enlivenObjects([value], function(enlivedObject){\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n loaded[property] = true;\n callback && callback();\n });\n }\n },\n\n /**\n * @private\n * @param {Array} objects\n * @param {Function} callback\n * @param {Function} [reviver]\n */\n _enlivenObjects: function (objects, callback, reviver) {\n if (!objects || objects.length === 0) {\n callback && callback([]);\n return;\n }\n\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, null, reviver);\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Function} callback\n */\n _toDataURL: function (format, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURL(format));\n });\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Number} multiplier\n * @param {Function} callback\n */\n _toDataURLWithMultiplier: function (format, multiplier, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURLWithMultiplier(format, multiplier));\n });\n },\n\n /**\n * Clones canvas instance\n * @param {Object} [callback] Receives cloned instance as a first argument\n * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n */\n clone: function (callback, properties) {\n var data = JSON.stringify(this.toJSON(properties));\n this.cloneWithoutData(function(clone) {\n clone.loadFromJSON(data, function() {\n callback && callback(clone);\n });\n });\n },\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions, clipping properties, etc.\n * but leaves data empty (so that you can populate it with your own)\n * @param {Object} [callback] Receives cloned instance as a first argument\n */\n cloneWithoutData: function(callback) {\n var el = fabric.util.createCanvasElement();\n\n el.width = this.width;\n el.height = this.height;\n\n var clone = new fabric.Canvas(el);\n clone.clipTo = this.clipTo;\n if (this.backgroundImage) {\n clone.setBackgroundImage(this.backgroundImage.src, function() {\n clone.renderAll();\n callback && callback(clone);\n });\n clone.backgroundImageOpacity = this.backgroundImageOpacity;\n clone.backgroundImageStretch = this.backgroundImageStretch;\n }\n else {\n callback && callback(clone);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n capitalize = fabric.util.string.capitalize,\n degreesToRadians = fabric.util.degreesToRadians,\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash'),\n objectCaching = !fabric.isLikelyNode,\n ALIASING_LIMIT = 2;\n\n if (fabric.Object) {\n return;\n }\n\n /**\n * Root object class from which all 2d shape classes inherit from\n * @class fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n * @see {@link fabric.Object#initialize} for constructor definition\n *\n * @fires added\n * @fires removed\n *\n * @fires selected\n * @fires deselected\n * @fires modified\n * @fires modified\n * @fires moved\n * @fires scaled\n * @fires rotated\n * @fires skewed\n *\n * @fires rotating\n * @fires scaling\n * @fires moving\n * @fires skewing\n *\n * @fires mousedown\n * @fires mouseup\n * @fires mouseover\n * @fires mouseout\n * @fires mousewheel\n * @fires mousedblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n */\n fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n /**\n * Type of an object (rect, circle, path, etc.).\n * Note that this property is meant to be read-only and not meant to be modified.\n * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n * @type String\n * @default\n */\n type: 'object',\n\n /**\n * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originX: 'left',\n\n /**\n * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originY: 'top',\n\n /**\n * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n * @type Number\n * @default\n */\n top: 0,\n\n /**\n * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n * @type Number\n * @default\n */\n left: 0,\n\n /**\n * Object width\n * @type Number\n * @default\n */\n width: 0,\n\n /**\n * Object height\n * @type Number\n * @default\n */\n height: 0,\n\n /**\n * Object scale factor (horizontal)\n * @type Number\n * @default\n */\n scaleX: 1,\n\n /**\n * Object scale factor (vertical)\n * @type Number\n * @default\n */\n scaleY: 1,\n\n /**\n * When true, an object is rendered as flipped horizontally\n * @type Boolean\n * @default\n */\n flipX: false,\n\n /**\n * When true, an object is rendered as flipped vertically\n * @type Boolean\n * @default\n */\n flipY: false,\n\n /**\n * Opacity of an object\n * @type Number\n * @default\n */\n opacity: 1,\n\n /**\n * Angle of rotation of an object (in degrees)\n * @type Number\n * @default\n */\n angle: 0,\n\n /**\n * Angle of skew on x axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewX: 0,\n\n /**\n * Angle of skew on y axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewY: 0,\n\n /**\n * Size of object's controlling corners (in pixels)\n * @type Number\n * @default\n */\n cornerSize: 13,\n\n /**\n * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n * @type Boolean\n * @default\n */\n transparentCorners: true,\n\n /**\n * Default cursor value used when hovering over this object on canvas\n * @type String\n * @default\n */\n hoverCursor: null,\n\n /**\n * Default cursor value used when moving this object on canvas\n * @type String\n * @default\n */\n moveCursor: null,\n\n /**\n * Padding between object and its controlling borders (in pixels)\n * @type Number\n * @default\n */\n padding: 0,\n\n /**\n * Color of controlling borders of an object (when it's active)\n * @type String\n * @default\n */\n borderColor: 'rgba(102,153,255,0.75)',\n\n /**\n * Array specifying dash pattern of an object's borders (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n borderDashArray: null,\n\n /**\n * Color of controlling corners of an object (when it's active)\n * @type String\n * @default\n */\n cornerColor: 'rgba(102,153,255,0.5)',\n\n /**\n * Color of controlling corners of an object (when it's active and transparentCorners false)\n * @since 1.6.2\n * @type String\n * @default\n */\n cornerStrokeColor: null,\n\n /**\n * Specify style of control, 'rect' or 'circle'\n * @since 1.6.2\n * @type String\n */\n cornerStyle: 'rect',\n\n /**\n * Array specifying dash pattern of an object's control (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n cornerDashArray: null,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being scaled via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being rotated via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: true,\n\n /**\n * Color of object's fill\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n fill: 'rgb(0,0,0)',\n\n /**\n * Fill rule used to fill an object\n * accepted values are nonzero, evenodd\n * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n * @type String\n * @default\n */\n fillRule: 'nonzero',\n\n /**\n * Composite rule used for canvas globalCompositeOperation\n * @type String\n * @default\n */\n globalCompositeOperation: 'source-over',\n\n /**\n * Background color of an object.\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n backgroundColor: '',\n\n /**\n * Selection Background color of an object. colored layer behind the object when it is active.\n * does not mix good with globalCompositeOperation methods.\n * @type String\n * @default\n */\n selectionBackgroundColor: '',\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Width of a stroke used to render this object\n * @type Number\n * @default\n */\n strokeWidth: 1,\n\n /**\n * Array specifying dash pattern of an object's stroke (stroke must be defined)\n * @type Array\n */\n strokeDashArray: null,\n\n /**\n * Line offset of an object's stroke\n * @type Number\n * @default\n */\n strokeDashOffset: 0,\n\n /**\n * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'butt',\n\n /**\n * Corner style of an object's stroke (one of \"bevil\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'miter',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n * @type Number\n * @default\n */\n strokeMiterLimit: 4,\n\n /**\n * Shadow object representing shadow of this shape\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Opacity of object's controlling borders when object is active and moving\n * @type Number\n * @default\n */\n borderOpacityWhenMoving: 0.4,\n\n /**\n * Scale factor of object's controlling borders\n * bigger number will make a thicker border\n * border is 1, so this is basically a border tickness\n * since there is no way to change the border itself.\n * @type Number\n * @default\n */\n borderScaleFactor: 1,\n\n /**\n * Transform matrix (similar to SVG's transform matrix)\n * This property has been depreacted. Since caching and and qrDecompose this\n * property can be handled with the standard top,left,scaleX,scaleY,angle and skewX.\n * A documentation example on how to parse and merge a transformMatrix will be provided before\n * completely removing it in fabric 4.0\n * If you are starting a project now, DO NOT use it.\n * @deprecated since 3.2.0\n * @type Array\n */\n transformMatrix: null,\n\n /**\n * Minimum allowed scale value of an object\n * @type Number\n * @default\n */\n minScaleLimit: 0,\n\n /**\n * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n * But events still fire on it.\n * @type Boolean\n * @default\n */\n selectable: true,\n\n /**\n * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n * @type Boolean\n * @default\n */\n evented: true,\n\n /**\n * When set to `false`, an object is not rendered on canvas\n * @type Boolean\n * @default\n */\n visible: true,\n\n /**\n * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n * @type Boolean\n * @default\n */\n hasControls: true,\n\n /**\n * When set to `false`, object's controlling borders are not rendered\n * @type Boolean\n * @default\n */\n hasBorders: true,\n\n /**\n * When set to `false`, object's controlling rotating point will not be visible or selectable\n * @type Boolean\n * @default\n */\n hasRotatingPoint: true,\n\n /**\n * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`)\n * @type Number\n * @default\n */\n rotatingPointOffset: 40,\n\n /**\n * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * When `false`, default object's values are not included in its serialization\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Function that determines clipping of an object (context is passed as a first argument).\n * If you are using code minification, ctx argument can be minified/manglied you should use\n * as a workaround `var ctx = arguments[0];` in the function;\n * Note that context origin is at the object's center point (not left/top corner)\n * @deprecated since 2.0.0\n * @type Function\n */\n clipTo: null,\n\n /**\n * When `true`, object horizontal movement is locked\n * @type Boolean\n * @default\n */\n lockMovementX: false,\n\n /**\n * When `true`, object vertical movement is locked\n * @type Boolean\n * @default\n */\n lockMovementY: false,\n\n /**\n * When `true`, object rotation is locked\n * @type Boolean\n * @default\n */\n lockRotation: false,\n\n /**\n * When `true`, object horizontal scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingX: false,\n\n /**\n * When `true`, object vertical scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingY: false,\n\n /**\n * When `true`, object non-uniform scaling is locked\n * @type Boolean\n * @default\n */\n lockUniScaling: false,\n\n /**\n * When `true`, object horizontal skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingX: false,\n\n /**\n * When `true`, object vertical skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingY: false,\n\n /**\n * When `true`, object cannot be flipped by scaling into negative values\n * @type Boolean\n * @default\n */\n lockScalingFlip: false,\n\n /**\n * When `true`, object is not exported in OBJECT/JSON\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n excludeFromExport: false,\n\n /**\n * When `true`, object is cached on an additional canvas.\n * When `false`, object is not cached unless necessary ( clipPath )\n * default to true\n * @since 1.7.0\n * @type Boolean\n * @default true\n */\n objectCaching: objectCaching,\n\n /**\n * When `true`, object properties are checked for cache invalidation. In some particular\n * situation you may want this to be disabled ( spray brush, very big, groups)\n * or if your application does not allow you to modify properties for groups child you want\n * to disable it for groups.\n * default to false\n * since 1.7.0\n * @type Boolean\n * @default false\n */\n statefullCache: false,\n\n /**\n * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n * too much and will be redrawn with correct details at the end of scaling.\n * this setting is performance and application dependant.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n noScaleCache: true,\n\n /**\n * When `false`, the stoke width will scale with the object.\n * When `true`, the stroke will always match the exact pixel size entered for stroke width.\n * default to false\n * @since 2.6.0\n * @type Boolean\n * @default false\n * @type Boolean\n * @default false\n */\n strokeUniform: false,\n\n /**\n * When set to `true`, object's cache will be rerendered next render call.\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n dirty: true,\n\n /**\n * keeps the value of the last hovered corner during mouse move.\n * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n * It should be private, but there is no harm in using it as\n * a read-only property.\n * @type number|string|any\n * @default 0\n */\n __corner: 0,\n\n /**\n * Determines if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n * @type String\n * @default\n */\n paintFirst: 'fill',\n\n /**\n * List of properties to consider when checking if state\n * of an object is changed (fabric.Object#hasStateChanged)\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: (\n 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' +\n 'angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor ' +\n 'skewX skewY fillRule paintFirst clipPath strokeUniform'\n ).split(' '),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: (\n 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' +\n ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath'\n ).split(' '),\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the object has rendered, and the context is placed in the center\n * of the object cacheCanvas.\n * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will make the object clip to the outside of the clipPath\n * since 2.4.0\n * @type boolean\n * @default false\n */\n inverted: false,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will have its top and left relative to canvas, and will\n * not be influenced by the object transform. This will make the clipPath relative\n * to the canvas, but clipping just a particular object.\n * WARNING this is beta, this feature may change or be renamed.\n * since 2.4.0\n * @type boolean\n * @default false\n */\n absolutePositioned: false,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Create a the canvas used to keep the cached copy of the object\n * @private\n */\n _createCacheCanvas: function() {\n this._cacheProperties = {};\n this._cacheCanvas = fabric.util.createCanvasElement();\n this._cacheContext = this._cacheCanvas.getContext('2d');\n this._updateCacheCanvas();\n // if canvas gets created, is empty, so dirty.\n this.dirty = true;\n },\n\n /**\n * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n * and each side do not cross fabric.cacheSideLimit\n * those numbers are configurable so that you can get as much detail as you want\n * making bargain with performances.\n * @param {Object} dims\n * @param {Object} dims.width width of canvas\n * @param {Object} dims.height height of canvas\n * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _limitCacheSize: function(dims) {\n var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n width = dims.width, height = dims.height,\n max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n if (width < min) {\n dims.width = min;\n }\n if (height < min) {\n dims.height = min;\n }\n return dims;\n }\n var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n capValue = fabric.util.capValue,\n x = capValue(min, limitedDims.x, max),\n y = capValue(min, limitedDims.y, max);\n if (width > x) {\n dims.zoomX /= width / x;\n dims.width = x;\n dims.capped = true;\n }\n if (height > y) {\n dims.zoomY /= height / y;\n dims.height = y;\n dims.capped = true;\n }\n return dims;\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @return {Object}.x width of object to be cached\n * @return {Object}.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var objectScale = this.getTotalObjectScaling(),\n // caculate dimensions without skewing\n dim = this._getTransformedDimensions(0, 0),\n neededX = dim.x * objectScale.scaleX / this.scaleX,\n neededY = dim.y * objectScale.scaleY / this.scaleY;\n return {\n // for sure this ALIASING_LIMIT is slightly creating problem\n // in situation in which the cache canvas gets an upper limit\n // also objectScale contains already scaleX and scaleY\n width: neededX + ALIASING_LIMIT,\n height: neededY + ALIASING_LIMIT,\n zoomX: objectScale.scaleX,\n zoomY: objectScale.scaleY,\n x: neededX,\n y: neededY\n };\n },\n\n /**\n * Update width and height of the canvas for cache\n * returns true or false if canvas needed resize.\n * @private\n * @return {Boolean} true if the canvas has been resized\n */\n _updateCacheCanvas: function() {\n var targetCanvas = this.canvas;\n if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) {\n var target = targetCanvas._currentTransform.target,\n action = targetCanvas._currentTransform.action;\n if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n return false;\n }\n }\n var canvas = this._cacheCanvas,\n dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n minCacheSize = fabric.minCacheSideLimit,\n width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n zoomX = dims.zoomX, zoomY = dims.zoomY,\n dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n shouldRedraw = dimensionsChanged || zoomChanged,\n additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n if (dimensionsChanged) {\n var canvasWidth = this._cacheCanvas.width,\n canvasHeight = this._cacheCanvas.height,\n sizeGrowing = width > canvasWidth || height > canvasHeight,\n sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n shouldResizeCanvas = sizeGrowing || sizeShrinking;\n if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n additionalWidth = width * 0.1;\n additionalHeight = height * 0.1;\n }\n }\n if (shouldRedraw) {\n if (shouldResizeCanvas) {\n canvas.width = Math.ceil(width + additionalWidth);\n canvas.height = Math.ceil(height + additionalHeight);\n }\n else {\n this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n }\n drawingWidth = dims.x / 2;\n drawingHeight = dims.y / 2;\n this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n this.cacheWidth = width;\n this.cacheHeight = height;\n this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n this._cacheContext.scale(zoomX, zoomY);\n this.zoomX = zoomX;\n this.zoomY = zoomY;\n return true;\n }\n return false;\n },\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n this._setOptions(options);\n this._initGradient(options.fill, 'fill');\n this._initGradient(options.stroke, 'stroke');\n this._initClipping(options);\n this._initPattern(options.fill, 'fill');\n this._initPattern(options.stroke, 'stroke');\n },\n\n /**\n * Transforms context when rendering an object\n * @param {CanvasRenderingContext2D} ctx Context\n */\n transform: function(ctx) {\n var m;\n if (this.group && !this.group._transformDone) {\n m = this.calcTransformMatrix();\n }\n else {\n m = this.calcOwnMatrix();\n }\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n object = {\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: toFixed(this.left, NUM_FRACTION_DIGITS),\n top: toFixed(this.top, NUM_FRACTION_DIGITS),\n width: toFixed(this.width, NUM_FRACTION_DIGITS),\n height: toFixed(this.height, NUM_FRACTION_DIGITS),\n fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeDashOffset: this.strokeDashOffset,\n strokeLineJoin: this.strokeLineJoin,\n // TODO: add this before release\n // strokeUniform: this.strokeUniform,\n strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n visible: this.visible,\n clipTo: this.clipTo && String(this.clipTo),\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n transformMatrix: this.transformMatrix ? this.transformMatrix.concat() : null,\n skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS),\n };\n\n if (this.clipPath) {\n object.clipPath = this.clipPath.toObject(propertiesToInclude);\n object.clipPath.inverted = this.clipPath.inverted;\n object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n }\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n },\n\n /**\n * Returns (dataless) object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n // will be overwritten by subclasses\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * @private\n * @param {Object} object\n */\n _removeDefaultValues: function(object) {\n var prototype = fabric.util.getKlass(object.type).prototype,\n stateProperties = prototype.stateProperties;\n stateProperties.forEach(function(prop) {\n if (prop === 'left' || prop === 'top') {\n return;\n }\n if (object[prop] === prototype[prop]) {\n delete object[prop];\n }\n var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' &&\n Object.prototype.toString.call(prototype[prop]) === '[object Array]';\n\n // basically a check for [] === []\n if (isArray && object[prop].length === 0 && prototype[prop].length === 0) {\n delete object[prop];\n }\n });\n\n return object;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the object scale factor counting also the group scaling\n * @return {Object} object with scaleX and scaleY properties\n */\n getObjectScaling: function() {\n var options = fabric.util.qrDecompose(this.calcTransformMatrix());\n return { scaleX: Math.abs(options.scaleX), scaleY: Math.abs(options.scaleY) };\n },\n\n /**\n * Return the object scale factor counting also the group scaling, zoom and retina\n * @return {Object} object with scaleX and scaleY properties\n */\n getTotalObjectScaling: function() {\n var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n if (this.canvas) {\n var zoom = this.canvas.getZoom();\n var retina = this.canvas.getRetinaScaling();\n scaleX *= zoom * retina;\n scaleY *= zoom * retina;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object opacity counting also the group property\n * @return {Number}\n */\n getObjectOpacity: function() {\n var opacity = this.opacity;\n if (this.group) {\n opacity *= this.group.getObjectOpacity();\n }\n return opacity;\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Object} thisArg\n */\n _set: function(key, value) {\n var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n if (shouldConstrainValue) {\n value = this._constrainScale(value);\n }\n if (key === 'scaleX' && value < 0) {\n this.flipX = !this.flipX;\n value *= -1;\n }\n else if (key === 'scaleY' && value < 0) {\n this.flipY = !this.flipY;\n value *= -1;\n }\n else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n value = new fabric.Shadow(value);\n }\n else if (key === 'dirty' && this.group) {\n this.group.set('dirty', value);\n }\n\n this[key] = value;\n\n if (isChanged) {\n groupNeedsUpdate = this.group && this.group.isOnACache();\n if (this.cacheProperties.indexOf(key) > -1) {\n this.dirty = true;\n groupNeedsUpdate && this.group.set('dirty', true);\n }\n else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n this.group.set('dirty', true);\n }\n }\n\n return this;\n },\n\n /**\n * This callback function is called by the parent group of an object every\n * time a non-delegated property changes on the group. It is passed the key\n * and value as parameters. Not adding in this function's signature to avoid\n * Travis build error about unused variables.\n */\n setOnGroup: function() {\n // implemented by sub-classes, as needed.\n },\n\n /**\n * Retrieves viewportTransform from Object's canvas if possible\n * @method getViewportTransform\n * @memberOf fabric.Object.prototype\n * @return {Array}\n */\n getViewportTransform: function() {\n if (this.canvas && this.canvas.viewportTransform) {\n return this.canvas.viewportTransform;\n }\n return fabric.iMatrix.concat();\n },\n\n /*\n * @private\n * return if the object would be visible in rendering\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n isNotVisible: function() {\n return this.opacity === 0 ||\n (this.width === 0 && this.height === 0 && this.strokeWidth === 0) ||\n !this.visible;\n },\n\n /**\n * Renders an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if width/height are zeros or object is not visible\n if (this.isNotVisible()) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n ctx.save();\n this._setupCompositeOperation(ctx);\n this.drawSelectionBackground(ctx);\n this.transform(ctx);\n this._setOpacity(ctx);\n this._setShadow(ctx, this);\n if (this.transformMatrix) {\n ctx.transform.apply(ctx, this.transformMatrix);\n }\n this.clipTo && fabric.util.clipContext(this, ctx);\n if (this.shouldCache()) {\n this.renderCache();\n this.drawCacheOnCanvas(ctx);\n }\n else {\n this._removeCacheCanvas();\n this.dirty = false;\n this.drawObject(ctx);\n if (this.objectCaching && this.statefullCache) {\n this.saveState({ propertySet: 'cacheProperties' });\n }\n }\n this.clipTo && ctx.restore();\n ctx.restore();\n },\n\n renderCache: function(options) {\n options = options || {};\n if (!this._cacheCanvas) {\n this._createCacheCanvas();\n }\n if (this.isCacheDirty()) {\n this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n this.drawObject(this._cacheContext, options.forClipping);\n this.dirty = false;\n }\n },\n\n /**\n * Remove cacheCanvas and its dimensions from the objects\n */\n _removeCacheCanvas: function() {\n this._cacheCanvas = null;\n this.cacheWidth = 0;\n this.cacheHeight = 0;\n },\n\n /**\n * return true if the object will draw a stroke\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an aproximation and be fast.\n * wrote to avoid extra caching, it has to return true when stroke happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the stroke is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasStroke: function() {\n return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0;\n },\n\n /**\n * return true if the object will draw a fill\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an aproximation and be fast.\n * wrote to avoid extra caching, it has to return true when fill happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the fill is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasFill: function() {\n return this.fill && this.fill !== 'transparent';\n },\n\n /**\n * When set to `true`, force the object to have its own cache, even if it is inside a group\n * it may be needed when your object behave in a particular way on the cache and always needs\n * its own isolated canvas to render correctly.\n * Created to be overridden\n * since 1.7.12\n * @returns Boolean\n */\n needsItsOwnCache: function() {\n if (this.paintFirst === 'stroke' &&\n this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') {\n return true;\n }\n if (this.clipPath) {\n return true;\n }\n return false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * Read as: cache if is needed, or if the feature is enabled but we are not already caching.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.needsItsOwnCache() || (\n this.objectCaching &&\n (!this.group || !this.group.isOnACache())\n );\n return this.ownCaching;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * used by Group.shouldCache to know if child has a shadow recursively\n * @return {Boolean}\n */\n willDrawShadow: function() {\n return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n },\n\n /**\n * Execute the drawing operation for an object clipPath\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCache: function(ctx) {\n var path = this.clipPath;\n ctx.save();\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4\n if (path.inverted) {\n ctx.globalCompositeOperation = 'destination-out';\n }\n else {\n ctx.globalCompositeOperation = 'destination-in';\n }\n //ctx.scale(1 / 2, 1 / 2);\n if (path.absolutePositioned) {\n var m = fabric.util.invertTransform(this.calcTransformMatrix());\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx, forClipping) {\n var originalFill = this.fill, originalStroke = this.stroke;\n if (forClipping) {\n this.fill = 'black';\n this.stroke = '';\n this._setClippingProperties(ctx);\n }\n else {\n this._renderBackground(ctx);\n this._setStrokeStyles(ctx, this);\n this._setFillStyles(ctx, this);\n }\n this._render(ctx);\n this._drawClipPath(ctx);\n this.fill = originalFill;\n this.stroke = originalStroke;\n },\n\n _drawClipPath: function(ctx) {\n var path = this.clipPath;\n if (!path) { return; }\n // needed to setup a couple of variables\n // path canvas gets overridden with this one.\n // TODO find a better solution?\n path.canvas = this.canvas;\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCache(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n },\n\n /**\n * Check if cache is dirty\n * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n * on parent canvas.\n */\n isCacheDirty: function(skipCanvas) {\n if (this.isNotVisible()) {\n return false;\n }\n if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) {\n // in this case the context is already cleared.\n return true;\n }\n else {\n if (this.dirty ||\n (this.clipPath && this.clipPath.absolutePositioned) ||\n (this.statefullCache && this.hasStateChanged('cacheProperties'))\n ) {\n if (this._cacheCanvas && !skipCanvas) {\n var width = this.cacheWidth / this.zoomX;\n var height = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Draws a background for the object big as its untransformed dimensions\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n if (!this.backgroundColor) {\n return;\n }\n var dim = this._getNonTransformedDimensions();\n ctx.fillStyle = this.backgroundColor;\n\n ctx.fillRect(\n -dim.x / 2,\n -dim.y / 2,\n dim.x,\n dim.y\n );\n // if there is background color no other shadows\n // should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setOpacity: function(ctx) {\n if (this.group && !this.group._transformDone) {\n ctx.globalAlpha = this.getObjectOpacity();\n }\n else {\n ctx.globalAlpha *= this.opacity;\n }\n },\n\n _setStrokeStyles: function(ctx, decl) {\n if (decl.stroke) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = decl.strokeLineCap;\n ctx.lineDashOffset = decl.strokeDashOffset;\n ctx.lineJoin = decl.strokeLineJoin;\n ctx.miterLimit = decl.strokeMiterLimit;\n ctx.strokeStyle = decl.stroke.toLive\n ? decl.stroke.toLive(ctx, this)\n : decl.stroke;\n }\n },\n\n _setFillStyles: function(ctx, decl) {\n if (decl.fill) {\n ctx.fillStyle = decl.fill.toLive\n ? decl.fill.toLive(ctx, this)\n : decl.fill;\n }\n },\n\n _setClippingProperties: function(ctx) {\n ctx.globalAlpha = 1;\n ctx.strokeStyle = 'transparent';\n ctx.fillStyle = '#000000';\n },\n\n /**\n * @private\n * Sets line dash\n * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n * @param {Array} dashArray array representing dashes\n * @param {Function} alternative function to call if browser does not support lineDash\n */\n _setLineDash: function(ctx, dashArray, alternative) {\n if (!dashArray || dashArray.length === 0) {\n return;\n }\n // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n if (1 & dashArray.length) {\n dashArray.push.apply(dashArray, dashArray);\n }\n if (supportsLineDash) {\n ctx.setLineDash(dashArray);\n }\n else {\n alternative && alternative(ctx);\n }\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n */\n _renderControls: function(ctx, styleOverride) {\n var vpt = this.getViewportTransform(),\n matrix = this.calcTransformMatrix(),\n options, drawBorders, drawControls;\n styleOverride = styleOverride || { };\n drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n options = fabric.util.qrDecompose(matrix);\n ctx.save();\n ctx.translate(options.translateX, options.translateY);\n ctx.lineWidth = 1 * this.borderScaleFactor;\n if (!this.group) {\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n }\n if (styleOverride.forActiveSelection) {\n ctx.rotate(degreesToRadians(options.angle));\n drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n }\n else {\n ctx.rotate(degreesToRadians(this.angle));\n drawBorders && this.drawBorders(ctx, styleOverride);\n }\n drawControls && this.drawControls(ctx, styleOverride);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n var shadow = this.shadow, canvas = this.canvas, scaling,\n multX = (canvas && canvas.viewportTransform[0]) || 1,\n multY = (canvas && canvas.viewportTransform[3]) || 1;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n if (canvas && canvas._isRetinaScaling()) {\n multX *= fabric.devicePixelRatio;\n multY *= fabric.devicePixelRatio;\n }\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant *\n (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX;\n ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _removeShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n * @return {Object} offset.offsetX offset for text rendering\n * @return {Object} offset.offsetY offset for text rendering\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var t = filler.gradientTransform || filler.patternTransform;\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n\n if (filler.gradientUnits === 'percentage') {\n ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY);\n }\n else {\n ctx.transform(1, 0, 0, 1, offsetX, offsetY);\n }\n if (t) {\n ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n }\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderPaintInOrder: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderStroke(ctx);\n this._renderFill(ctx);\n }\n else {\n this._renderFill(ctx);\n this._renderStroke(ctx);\n }\n },\n\n /**\n * @private\n * function that actually render something on the context.\n * empty here to allow Obects to work on tests to benchmark fabric functionalites\n * not related to rendering\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(/* ctx */) {\n\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderFill: function(ctx) {\n if (!this.fill) {\n return;\n }\n\n ctx.save();\n this._applyPatternGradientTransform(ctx, this.fill);\n if (this.fillRule === 'evenodd') {\n ctx.fill('evenodd');\n }\n else {\n ctx.fill();\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderStroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n if (this.strokeUniform && this.group) {\n var scaling = this.getObjectScaling();\n ctx.scale(1 / scaling.scaleX, 1 / scaling.scaleY);\n }\n else if (this.strokeUniform) {\n ctx.scale(1 / this.scaleX, 1 / this.scaleY);\n }\n this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke);\n if (this.stroke.toLive && this.stroke.gradientUnits === 'percentage') {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n this._applyPatternForTransformedGradient(ctx, this.stroke);\n }\n else {\n this._applyPatternGradientTransform(ctx, this.stroke);\n }\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {fabric.Gradient} filler a fabric gradient instance\n */\n _applyPatternForTransformedGradient: function(ctx, filler) {\n var dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(),\n width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx = pCanvas.getContext('2d');\n pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n pCtx.lineTo(0, height); pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.scale(\n dims.zoomX / this.scaleX / retinaScaling,\n dims.zoomY / this.scaleY / retinaScaling\n );\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fillStyle = filler.toLive(ctx);\n pCtx.fill();\n ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2);\n ctx.scale(\n retinaScaling * this.scaleX / dims.zoomX,\n retinaScaling * this.scaleY / dims.zoomY\n );\n ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat');\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n },\n\n /**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n * @chainable\n */\n _assignTransformMatrixProps: function() {\n if (this.transformMatrix) {\n var options = fabric.util.qrDecompose(this.transformMatrix);\n this.flipX = false;\n this.flipY = false;\n this.set('scaleX', options.scaleX);\n this.set('scaleY', options.scaleY);\n this.angle = options.angle;\n this.skewX = options.skewX;\n this.skewY = 0;\n }\n },\n\n /**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n * @return {thisArg}\n */\n _removeTransformMatrix: function(preserveAspectRatioOptions) {\n var center = this._findCenterFromElement();\n if (this.transformMatrix) {\n this._assignTransformMatrixProps();\n center = fabric.util.transformPoint(center, this.transformMatrix);\n }\n this.transformMatrix = null;\n if (preserveAspectRatioOptions) {\n this.scaleX *= preserveAspectRatioOptions.scaleX;\n this.scaleY *= preserveAspectRatioOptions.scaleY;\n this.cropX = preserveAspectRatioOptions.cropX;\n this.cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n this.width = preserveAspectRatioOptions.width;\n this.height = preserveAspectRatioOptions.height;\n }\n this.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * Clones an instance, using a callback method will work for every object.\n * @param {Function} callback Callback is invoked with a clone as a first argument\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n */\n clone: function(callback, propertiesToInclude) {\n var objectForm = this.toObject(propertiesToInclude);\n if (this.constructor.fromObject) {\n this.constructor.fromObject(objectForm, callback);\n }\n else {\n fabric.Object._fromObject('Object', objectForm, callback);\n }\n },\n\n /**\n * Creates an instance of fabric.Image out of an object\n * could make use of both toDataUrl or toCanvasElement.\n * @param {Function} callback callback, invoked with an instance as a first argument\n * @param {Object} [options] for clone as image, passed to toDataURL\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {fabric.Object} thisArg\n */\n cloneAsImage: function(callback, options) {\n var canvasEl = this.toCanvasElement(options);\n if (callback) {\n callback(new fabric.Image(canvasEl));\n }\n return this;\n },\n\n /**\n * Converts an object into a HTMLCanvas element\n * @param {Object} options Options object\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {HTMLCanvasElement} Returns DOM element with the fabric.Object\n */\n toCanvasElement: function(options) {\n options || (options = { });\n\n var utils = fabric.util, origParams = utils.saveObjectTransform(this),\n originalGroup = this.group,\n originalShadow = this.shadow, abs = Math.abs,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1);\n delete this.group;\n if (options.withoutTransform) {\n utils.resetObjectTransform(this);\n }\n if (options.withoutShadow) {\n this.shadow = null;\n }\n\n var el = fabric.util.createCanvasElement(),\n // skip canvas zoom and calculate with setCoords now.\n boundingRect = this.getBoundingRect(true, true),\n shadow = this.shadow, scaling,\n shadowOffset = { x: 0, y: 0 }, shadowBlur,\n width, height;\n\n if (shadow) {\n shadowBlur = shadow.blur;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n // consider non scaling shadow.\n shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX));\n shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY));\n }\n width = boundingRect.width + shadowOffset.x;\n height = boundingRect.height + shadowOffset.y;\n // if the current width/height is not an integer\n // we need to make it so.\n el.width = Math.ceil(width);\n el.height = Math.ceil(height);\n var canvas = new fabric.StaticCanvas(el, {\n enableRetinaScaling: false,\n renderOnAddRemove: false,\n skipOffscreen: false,\n });\n if (options.format === 'jpeg') {\n canvas.backgroundColor = '#fff';\n }\n this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n var originalCanvas = this.canvas;\n canvas.add(this);\n var canvasEl = canvas.toCanvasElement(multiplier || 1, options);\n this.shadow = originalShadow;\n this.set('canvas', originalCanvas);\n if (originalGroup) {\n this.group = originalGroup;\n }\n this.set(origParams).setCoords();\n // canvas.dispose will call image.dispose that will nullify the elements\n // since this canvas is a simple element for the process, we remove references\n // to objects in this way in order to avoid object trashing.\n canvas._objects = [];\n canvas.dispose();\n canvas = null;\n\n return canvasEl;\n },\n\n /**\n * Converts an object into a data-url-like string\n * @param {Object} options Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toDataURL: function(options) {\n options || (options = { });\n return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1);\n },\n\n /**\n * Returns true if specified type is identical to the type of an instance\n * @param {String} type Type to check against\n * @return {Boolean}\n */\n isType: function(type) {\n return this.type === type;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance (is 1 unless subclassed)\n */\n complexity: function() {\n return 1;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON\n */\n toJSON: function(propertiesToInclude) {\n // delegate, not alias\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * Sets gradient (fill or stroke) of an object\n * percentages for x1,x2,y1,y2,r1,r2 together with gradientUnits 'pixels', are not supported.\n * Backwards incompatibility note: This method was named \"setGradientFill\" until v1.1.0\n * @param {String} property Property name 'stroke' or 'fill'\n * @param {Object} [options] Options object\n * @param {String} [options.type] Type of gradient 'radial' or 'linear'\n * @param {Number} [options.x1=0] x-coordinate of start point\n * @param {Number} [options.y1=0] y-coordinate of start point\n * @param {Number} [options.x2=0] x-coordinate of end point\n * @param {Number} [options.y2=0] y-coordinate of end point\n * @param {Number} [options.r1=0] Radius of start point (only for radial gradients)\n * @param {Number} [options.r2=0] Radius of end point (only for radial gradients)\n * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'}\n * @param {Object} [options.gradientTransform] transformMatrix for gradient\n * @return {fabric.Object} thisArg\n * @chainable\n * @deprecated since 3.4.0\n * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo}\n * @example Set linear gradient\n * object.setGradient('fill', {\n * type: 'linear',\n * x1: -object.width / 2,\n * y1: 0,\n * x2: object.width / 2,\n * y2: 0,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n * @example Set radial gradient\n * object.setGradient('fill', {\n * type: 'radial',\n * x1: 0,\n * y1: 0,\n * x2: 0,\n * y2: 0,\n * r1: object.width / 2,\n * r2: 10,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n */\n setGradient: function(property, options) {\n options || (options = { });\n\n var gradient = { colorStops: [] };\n\n gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear');\n gradient.coords = {\n x1: options.x1,\n y1: options.y1,\n x2: options.x2,\n y2: options.y2\n };\n gradient.gradientUnits = options.gradientUnits || 'pixels';\n if (options.r1 || options.r2) {\n gradient.coords.r1 = options.r1;\n gradient.coords.r2 = options.r2;\n }\n\n gradient.gradientTransform = options.gradientTransform;\n fabric.Gradient.prototype.addColorStop.call(gradient, options.colorStops);\n\n return this.set(property, fabric.Gradient.forObject(this, gradient));\n },\n\n /**\n * Sets pattern fill of an object\n * @param {Object} options Options object\n * @param {(String|HTMLImageElement)} options.source Pattern source\n * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner\n * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner\n * @param {Function} [callback] Callback to invoke when image set as a pattern\n * @return {fabric.Object} thisArg\n * @chainable\n * @deprecated since 3.5.0\n * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo}\n * @example Set pattern\n * object.setPatternFill({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat'\n * },canvas.renderAll.bind(canvas));\n */\n setPatternFill: function(options, callback) {\n return this.set('fill', new fabric.Pattern(options, callback));\n },\n\n /**\n * Sets {@link fabric.Object#shadow|shadow} of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @param {String} [options.color=rgb(0,0,0)] Shadow color\n * @param {Number} [options.blur=0] Shadow blur\n * @param {Number} [options.offsetX=0] Shadow horizontal offset\n * @param {Number} [options.offsetY=0] Shadow vertical offset\n * @return {fabric.Object} thisArg\n * @chainable\n * @deprecated since 3.5.0\n * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo}\n * @example Set shadow with string notation\n * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)');\n * canvas.renderAll();\n * @example Set shadow with object notation\n * object.setShadow({\n * color: 'red',\n * blur: 10,\n * offsetX: 20,\n * offsetY: 20\n * });\n * canvas.renderAll();\n */\n setShadow: function(options) {\n return this.set('shadow', options ? new fabric.Shadow(options) : null);\n },\n\n /**\n * Sets \"color\" of an instance (alias of `set('fill', …)`)\n * @param {String} color Color value\n * @return {fabric.Object} thisArg\n * @deprecated since 3.5.0\n * @chainable\n */\n setColor: function(color) {\n this.set('fill', color);\n return this;\n },\n\n /**\n * Sets \"angle\" of an instance with centered rotation\n * @param {Number} angle Angle value (in degrees)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n rotate: function(angle) {\n var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n if (shouldCenterOrigin) {\n this._setOriginToCenter();\n }\n\n this.set('angle', angle);\n\n if (shouldCenterOrigin) {\n this._resetOrigin();\n }\n\n return this;\n },\n\n /**\n * Centers object horizontally on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerH: function () {\n this.canvas && this.canvas.centerObjectH(this);\n return this;\n },\n\n /**\n * Centers object horizontally on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterH: function () {\n this.canvas && this.canvas.viewportCenterObjectH(this);\n return this;\n },\n\n /**\n * Centers object vertically on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerV: function () {\n this.canvas && this.canvas.centerObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterV: function () {\n this.canvas && this.canvas.viewportCenterObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically and horizontally on canvas to which is was added last\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n center: function () {\n this.canvas && this.canvas.centerObject(this);\n return this;\n },\n\n /**\n * Centers object on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenter: function () {\n this.canvas && this.canvas.viewportCenterObject(this);\n return this;\n },\n\n /**\n * Returns coordinates of a pointer relative to an object\n * @param {Event} e Event to operate upon\n * @param {Object} [pointer] Pointer to operate upon (instead of event)\n * @return {Object} Coordinates of a pointer (x, y)\n */\n getLocalPointer: function(e, pointer) {\n pointer = pointer || this.canvas.getPointer(e);\n var pClicked = new fabric.Point(pointer.x, pointer.y),\n objectLeftTop = this._getLeftTopCoords();\n if (this.angle) {\n pClicked = fabric.util.rotatePoint(\n pClicked, objectLeftTop, degreesToRadians(-this.angle));\n }\n return {\n x: pClicked.x - objectLeftTop.x,\n y: pClicked.y - objectLeftTop.y\n };\n },\n\n /**\n * Sets canvas globalCompositeOperation for specific object\n * custom composition operation for the particular object can be specified using globalCompositeOperation property\n * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n */\n _setupCompositeOperation: function (ctx) {\n if (this.globalCompositeOperation) {\n ctx.globalCompositeOperation = this.globalCompositeOperation;\n }\n }\n });\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n extend(fabric.Object.prototype, fabric.Observable);\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type Number\n */\n fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n fabric.Object._fromObject = function(className, object, callback, extraParam) {\n var klass = fabric[className];\n object = clone(object, true);\n fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n if (typeof patterns[0] !== 'undefined') {\n object.fill = patterns[0];\n }\n if (typeof patterns[1] !== 'undefined') {\n object.stroke = patterns[1];\n }\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n callback && callback(instance);\n });\n });\n };\n\n /**\n * Unique id used internally when creating SVG elements\n * @static\n * @memberOf fabric.Object\n * @type Number\n */\n fabric.Object.__uid = 0;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n originXOffset = {\n left: -0.5,\n center: 0,\n right: 0.5\n },\n originYOffset = {\n top: -0.5,\n center: 0,\n bottom: 0.5\n };\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n var x = point.x,\n y = point.y,\n offsetX, offsetY, dim;\n\n if (typeof fromOriginX === 'string') {\n fromOriginX = originXOffset[fromOriginX];\n }\n else {\n fromOriginX -= 0.5;\n }\n\n if (typeof toOriginX === 'string') {\n toOriginX = originXOffset[toOriginX];\n }\n else {\n toOriginX -= 0.5;\n }\n\n offsetX = toOriginX - fromOriginX;\n\n if (typeof fromOriginY === 'string') {\n fromOriginY = originYOffset[fromOriginY];\n }\n else {\n fromOriginY -= 0.5;\n }\n\n if (typeof toOriginY === 'string') {\n toOriginY = originYOffset[toOriginY];\n }\n else {\n toOriginY -= 0.5;\n }\n\n offsetY = toOriginY - fromOriginY;\n\n if (offsetX || offsetY) {\n dim = this._getTransformedDimensions();\n x = point.x + offsetX * dim.x;\n y = point.y + offsetY * dim.y;\n }\n\n return new fabric.Point(x, y);\n },\n\n /**\n * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToCenterPoint: function(point, originX, originY) {\n var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n if (this.angle) {\n return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n * @param {fabric.Point} center The point which corresponds to center of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToOriginPoint: function(center, originX, originY) {\n var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n if (this.angle) {\n return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Returns the real center coordinates of the object\n * @return {fabric.Point}\n */\n getCenterPoint: function() {\n var leftTop = new fabric.Point(this.left, this.top);\n return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n },\n\n /**\n * Returns the coordinates of the object based on center coordinates\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @return {fabric.Point}\n */\n // getOriginPoint: function(center) {\n // return this.translateToOriginPoint(center, this.originX, this.originY);\n // },\n\n /**\n * Returns the coordinates of the object as if it has a different origin\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n getPointByOrigin: function(originX, originY) {\n var center = this.getCenterPoint();\n return this.translateToOriginPoint(center, originX, originY);\n },\n\n /**\n * Returns the point in local coordinates\n * @param {fabric.Point} point The point relative to the global coordinate system\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n toLocalPoint: function(point, originX, originY) {\n var center = this.getCenterPoint(),\n p, p2;\n\n if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n }\n else {\n p = new fabric.Point(this.left, this.top);\n }\n\n p2 = new fabric.Point(point.x, point.y);\n if (this.angle) {\n p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n }\n return p2.subtractEquals(p);\n },\n\n /**\n * Returns the point in global coordinates\n * @param {fabric.Point} The point relative to the local coordinate system\n * @return {fabric.Point}\n */\n // toGlobalPoint: function(point) {\n // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n // },\n\n /**\n * Sets the position of the object taking into consideration the object's origin\n * @param {fabric.Point} pos The new position of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {void}\n */\n setPositionByOrigin: function(pos, originX, originY) {\n var center = this.translateToCenterPoint(pos, originX, originY),\n position = this.translateToOriginPoint(center, this.originX, this.originY);\n this.set('left', position.x);\n this.set('top', position.y);\n },\n\n /**\n * @param {String} to One of 'left', 'center', 'right'\n */\n adjustPosition: function(to) {\n var angle = degreesToRadians(this.angle),\n hypotFull = this.getScaledWidth(),\n xFull = fabric.util.cos(angle) * hypotFull,\n yFull = fabric.util.sin(angle) * hypotFull,\n offsetFrom, offsetTo;\n\n //TODO: this function does not consider mixed situation like top, center.\n if (typeof this.originX === 'string') {\n offsetFrom = originXOffset[this.originX];\n }\n else {\n offsetFrom = this.originX - 0.5;\n }\n if (typeof to === 'string') {\n offsetTo = originXOffset[to];\n }\n else {\n offsetTo = to - 0.5;\n }\n this.left += xFull * (offsetTo - offsetFrom);\n this.top += yFull * (offsetTo - offsetFrom);\n this.setCoords();\n this.originX = to;\n },\n\n /**\n * Sets the origin/position of the object to it's center point\n * @private\n * @return {void}\n */\n _setOriginToCenter: function() {\n this._originalOriginX = this.originX;\n this._originalOriginY = this.originY;\n\n var center = this.getCenterPoint();\n\n this.originX = 'center';\n this.originY = 'center';\n\n this.left = center.x;\n this.top = center.y;\n },\n\n /**\n * Resets the origin/position of the object to it's original origin\n * @private\n * @return {void}\n */\n _resetOrigin: function() {\n var originPoint = this.translateToOriginPoint(\n this.getCenterPoint(),\n this._originalOriginX,\n this._originalOriginY);\n\n this.originX = this._originalOriginX;\n this.originY = this._originalOriginY;\n\n this.left = originPoint.x;\n this.top = originPoint.y;\n\n this._originalOriginX = null;\n this._originalOriginY = null;\n },\n\n /**\n * @private\n */\n _getLeftTopCoords: function() {\n return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n },\n });\n\n})();\n\n\n(function() {\n\n function getCoords(coords) {\n return [\n new fabric.Point(coords.tl.x, coords.tl.y),\n new fabric.Point(coords.tr.x, coords.tr.y),\n new fabric.Point(coords.br.x, coords.br.y),\n new fabric.Point(coords.bl.x, coords.bl.y)\n ];\n }\n\n var degreesToRadians = fabric.util.degreesToRadians,\n multiplyMatrices = fabric.util.multiplyTransformMatrices,\n transformPoint = fabric.util.transformPoint;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * properties are tl,mt,tr,ml,mr,bl,mb,br,mtr for the main controls.\n * each property is an object with x, y and corner.\n * The `corner` property contains in a similar manner the 4 points of the\n * interactive area of the corner.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, viewportTransform, top, left, padding.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords;\n * @memberOf fabric.Object.prototype\n */\n oCoords: null,\n\n /**\n * Describe object's corner position in canvas object absolute coordinates\n * properties are tl,tr,bl,br and describe the four main corner.\n * each property is an object with x, y, instance of Fabric.Point.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, top, left.\n * Those coordinates are useful to understand where an object is. They get updated\n * with oCoords but they do not need to be updated when zoom or panning change.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords(true);\n * @memberOf fabric.Object.prototype\n */\n aCoords: null,\n\n /**\n * storage for object transform matrix\n */\n ownMatrixCache: null,\n\n /**\n * storage for object full transform matrix\n */\n matrixCache: null,\n\n /**\n * return correct set of coordinates for intersection\n */\n getCoords: function(absolute, calculate) {\n if (!this.oCoords) {\n this.setCoords();\n }\n var coords = absolute ? this.aCoords : this.oCoords;\n return getCoords(calculate ? this.calcCoords(absolute) : coords);\n },\n\n /**\n * Checks if object intersects with an area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with an area formed by 2 points\n */\n intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n var coords = this.getCoords(absolute, calculate),\n intersection = fabric.Intersection.intersectPolygonRectangle(\n coords,\n pointTL,\n pointBR\n );\n return intersection.status === 'Intersection';\n },\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject: function(other, absolute, calculate) {\n var intersection = fabric.Intersection.intersectPolygonPolygon(\n this.getCoords(absolute, calculate),\n other.getCoords(absolute, calculate)\n );\n\n return intersection.status === 'Intersection'\n || other.isContainedWithinObject(this, absolute, calculate)\n || this.isContainedWithinObject(other, absolute, calculate);\n },\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject: function(other, absolute, calculate) {\n var points = this.getCoords(absolute, calculate),\n i = 0, lines = other._getImageLines(\n calculate ? other.calcCoords(absolute) : absolute ? other.aCoords : other.oCoords\n );\n for (; i < 4; i++) {\n if (!other.containsPoint(points[i], lines)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Checks if object is fully contained within area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area formed by 2 points\n */\n isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n var boundingRect = this.getBoundingRect(absolute, calculate);\n\n return (\n boundingRect.left >= pointTL.x &&\n boundingRect.left + boundingRect.width <= pointBR.x &&\n boundingRect.top >= pointTL.y &&\n boundingRect.top + boundingRect.height <= pointBR.y\n );\n },\n\n /**\n * Checks if point is inside the object\n * @param {fabric.Point} point Point to check against\n * @param {Object} [lines] object returned from @method _getImageLines\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if point is inside the object\n */\n containsPoint: function(point, lines, absolute, calculate) {\n var lines = lines || this._getImageLines(\n calculate ? this.calcCoords(absolute) : absolute ? this.aCoords : this.oCoords\n ),\n xPoints = this._findCrossPoints(point, lines);\n\n // if xPoints is odd then point is inside the object\n return (xPoints !== 0 && xPoints % 2 === 1);\n },\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n var points = this.getCoords(true, calculate), point;\n for (var i = 0; i < 4; i++) {\n point = points[i];\n if (point.x <= pointBR.x && point.x >= pointTL.x && point.y <= pointBR.y && point.y >= pointTL.y) {\n return true;\n }\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Checks if the object contains the midpoint between canvas extremities\n * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n * @private\n * @param {Fabric.Point} pointTL Top Left point\n * @param {Fabric.Point} pointBR Top Right point\n * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n * @return {Boolean} true if the object contains the point\n */\n _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n // worst case scenario the object is so big that contains the screen\n var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n if (this.containsPoint(centerPoint, null, true, calculate)) {\n return true;\n }\n return false;\n },\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Method that returns an object with the object edges in it, given the coordinates of the corners\n * @private\n * @param {Object} oCoords Coordinates of the object corners\n */\n _getImageLines: function(oCoords) {\n return {\n topline: {\n o: oCoords.tl,\n d: oCoords.tr\n },\n rightline: {\n o: oCoords.tr,\n d: oCoords.br\n },\n bottomline: {\n o: oCoords.br,\n d: oCoords.bl\n },\n leftline: {\n o: oCoords.bl,\n d: oCoords.tl\n }\n };\n },\n\n /**\n * Helper method to determine how many cross points are between the 4 object edges\n * and the horizontal line determined by a point on canvas\n * @private\n * @param {fabric.Point} point Point to check\n * @param {Object} lines Coordinates of the object being evaluated\n */\n // remove yi, not used but left code here just in case.\n _findCrossPoints: function(point, lines) {\n var b1, b2, a1, a2, xi, // yi,\n xcount = 0,\n iLine;\n\n for (var lineKey in lines) {\n iLine = lines[lineKey];\n // optimisation 1: line below point. no cross\n if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n continue;\n }\n // optimisation 2: line above point. no cross\n if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n continue;\n }\n // optimisation 3: vertical line case\n if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n xi = iLine.o.x;\n // yi = point.y;\n }\n // calculate the intersection point\n else {\n b1 = 0;\n b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n a1 = point.y - b1 * point.x;\n a2 = iLine.o.y - b2 * iLine.o.x;\n\n xi = -(a1 - a2) / (b1 - b2);\n // yi = a1 + b1 * xi;\n }\n // dont count xi < point.x cases\n if (xi >= point.x) {\n xcount += 1;\n }\n // optimisation 4: specific for square images\n if (xcount === 2) {\n break;\n }\n }\n return xcount;\n },\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect: function(absolute, calculate) {\n var coords = this.getCoords(absolute, calculate);\n return fabric.util.makeBoundingBoxFromPoints(coords);\n },\n\n /**\n * Returns width of an object's bounding box counting transformations\n * before 2.0 it was named getWidth();\n * @return {Number} width value\n */\n getScaledWidth: function() {\n return this._getTransformedDimensions().x;\n },\n\n /**\n * Returns height of an object bounding box counting transformations\n * before 2.0 it was named getHeight();\n * @return {Number} height value\n */\n getScaledHeight: function() {\n return this._getTransformedDimensions().y;\n },\n\n /**\n * Makes sure the scale is valid and modifies it if necessary\n * @private\n * @param {Number} value\n * @return {Number}\n */\n _constrainScale: function(value) {\n if (Math.abs(value) < this.minScaleLimit) {\n if (value < 0) {\n return -this.minScaleLimit;\n }\n else {\n return this.minScaleLimit;\n }\n }\n else if (value === 0) {\n return 0.0001;\n }\n return value;\n },\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scale: function(value) {\n this._set('scaleX', value);\n this._set('scaleY', value);\n return this.setCoords();\n },\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToWidth: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n },\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToHeight: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n },\n\n /**\n * Calculates and returns the .coords of an object.\n * @return {Object} Object with tl, tr, br, bl ....\n * @chainable\n */\n calcCoords: function(absolute) {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n startMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n vpt = this.getViewportTransform(),\n finalMatrix = absolute ? startMatrix : multiplyMatrices(vpt, startMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2, h = dim.y / 2,\n tl = transformPoint({ x: -w, y: -h }, finalMatrix),\n tr = transformPoint({ x: w, y: -h }, finalMatrix),\n bl = transformPoint({ x: -w, y: h }, finalMatrix),\n br = transformPoint({ x: w, y: h }, finalMatrix);\n if (!absolute) {\n var padding = this.padding, angle = degreesToRadians(this.angle),\n cos = fabric.util.cos(angle), sin = fabric.util.sin(angle),\n cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n cosPMinusSinP = cosP - sinP;\n if (padding) {\n tl.x -= cosPMinusSinP;\n tl.y -= cosPSinP;\n tr.x += cosPSinP;\n tr.y -= cosPMinusSinP;\n bl.x -= cosPSinP;\n bl.y += cosPMinusSinP;\n br.x += cosPMinusSinP;\n br.y += cosPSinP;\n }\n var ml = new fabric.Point((tl.x + bl.x) / 2, (tl.y + bl.y) / 2),\n mt = new fabric.Point((tr.x + tl.x) / 2, (tr.y + tl.y) / 2),\n mr = new fabric.Point((br.x + tr.x) / 2, (br.y + tr.y) / 2),\n mb = new fabric.Point((br.x + bl.x) / 2, (br.y + bl.y) / 2),\n mtr = new fabric.Point(mt.x + sin * this.rotatingPointOffset, mt.y - cos * this.rotatingPointOffset);\n }\n\n // if (!absolute) {\n // var canvas = this.canvas;\n // setTimeout(function() {\n // canvas.contextTop.clearRect(0, 0, 700, 700);\n // canvas.contextTop.fillStyle = 'green';\n // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3);\n // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3);\n // canvas.contextTop.fillRect(br.x, br.y, 3, 3);\n // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3);\n // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3);\n // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3);\n // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3);\n // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3);\n // canvas.contextTop.fillRect(mtr.x, mtr.y, 3, 3);\n // }, 50);\n // }\n\n var coords = {\n // corners\n tl: tl, tr: tr, br: br, bl: bl,\n };\n if (!absolute) {\n // middle\n coords.ml = ml;\n coords.mt = mt;\n coords.mr = mr;\n coords.mb = mb;\n // rotating point\n coords.mtr = mtr;\n }\n return coords;\n },\n\n /**\n * Sets corner position coordinates based on current angle, width and height.\n * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords}\n * @param {Boolean} [ignoreZoom] set oCoords with or without the viewport transform.\n * @param {Boolean} [skipAbsolute] skip calculation of aCoords, useful in setViewportTransform\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setCoords: function(ignoreZoom, skipAbsolute) {\n this.oCoords = this.calcCoords(ignoreZoom);\n if (!skipAbsolute) {\n this.aCoords = this.calcCoords(true);\n }\n\n // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n ignoreZoom || (this._setCornerCoords && this._setCornerCoords());\n\n return this;\n },\n\n /**\n * calculate rotation matrix of an object\n * @return {Array} rotation matrix for the object\n */\n _calcRotateMatrix: function() {\n return fabric.util.calcRotateMatrix(this);\n },\n\n /**\n * calculate the translation matrix for an object transform\n * @return {Array} rotation matrix for the object\n */\n _calcTranslateMatrix: function() {\n var center = this.getCenterPoint();\n return [1, 0, 0, 1, center.x, center.y];\n },\n\n transformMatrixKey: function(skipGroup) {\n var sep = '_', prefix = '';\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup) + sep;\n };\n return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * @return {Array} transform matrix for the object\n */\n calcTransformMatrix: function(skipGroup) {\n if (skipGroup) {\n return this.calcOwnMatrix();\n }\n var key = this.transformMatrixKey(), cache = this.matrixCache || (this.matrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var matrix = this.calcOwnMatrix();\n if (this.group) {\n matrix = multiplyMatrices(this.group.calcTransformMatrix(), matrix);\n }\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {Array} transform matrix for the object\n */\n calcOwnMatrix: function() {\n var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var tMatrix = this._calcTranslateMatrix();\n this.translateX = tMatrix[4];\n this.translateY = tMatrix[5];\n cache.key = key;\n cache.value = fabric.util.composeMatrix(this);\n return cache.value;\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix\n * not including or including flipX, flipY to emulate the flipping boolean\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {\n return fabric.util.calcDimensionsMatrix({\n skewX: skewX,\n skewY: skewY,\n scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1),\n scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1)\n });\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getNonTransformedDimensions: function() {\n var strokeWidth = this.strokeWidth,\n w = this.width + strokeWidth,\n h = this.height + strokeWidth;\n return { x: w, y: h };\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * The skewX and skewY parameters are used in the skewing logic path and\n * do not provide something useful to common use cases.\n * @param {Number} [skewX], a value to override current skewX\n * @param {Number} [skewY], a value to override current skewY\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getTransformedDimensions: function(skewX, skewY) {\n if (typeof skewX === 'undefined') {\n skewX = this.skewX;\n }\n if (typeof skewY === 'undefined') {\n skewY = this.skewY;\n }\n var dimensions = this._getNonTransformedDimensions(), dimX, dimY,\n noSkew = skewX === 0 && skewY === 0;\n\n if (this.strokeUniform) {\n dimX = this.width;\n dimY = this.height;\n }\n else {\n dimX = dimensions.x;\n dimY = dimensions.y;\n }\n if (noSkew) {\n return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY);\n }\n else {\n dimX /= 2;\n dimY /= 2;\n }\n var points = [\n {\n x: -dimX,\n y: -dimY\n },\n {\n x: dimX,\n y: -dimY\n },\n {\n x: -dimX,\n y: dimY\n },\n {\n x: dimX,\n y: dimY\n }],\n transformMatrix = fabric.util.calcDimensionsMatrix({\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: skewX,\n skewY: skewY,\n }),\n bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix);\n return this._finalizeDimensions(bbox.width, bbox.height);\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * @param Number width width of the bbox\n * @param Number height height of the bbox\n * @private\n * @return {Object} .x finalized width dimension\n * @return {Object} .y finalized height dimension\n */\n _finalizeDimensions: function(width, height) {\n return this.strokeUniform ?\n { x: width + this.strokeWidth, y: height + this.strokeWidth }\n :\n { x: width, y: height };\n },\n /*\n * Calculate object dimensions for controls, including padding and canvas zoom.\n * private\n */\n _calculateCurrentDimensions: function() {\n var vpt = this.getViewportTransform(),\n dim = this._getTransformedDimensions(),\n p = fabric.util.transformPoint(dim, vpt, true);\n\n return p.scalarAdd(2 * this.padding);\n },\n });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Moves an object to the bottom of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendToBack: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.sendToBack(this);\n }\n return this;\n },\n\n /**\n * Moves an object to the top of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringToFront: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.bringToFront(this);\n }\n return this;\n },\n\n /**\n * Moves an object down in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendBackwards: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.sendBackwards(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object up in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringForward: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.bringForward(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {Number} index New position of object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n moveTo: function(index) {\n if (this.group && this.group.type !== 'activeSelection') {\n fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n }\n else if (this.canvas) {\n this.canvas.moveTo(this, index);\n }\n return this;\n }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n function getSvgColorString(prop, value) {\n if (!value) {\n return prop + ': none; ';\n }\n else if (value.toLive) {\n return prop + ': url(#SVGID_' + value.id + '); ';\n }\n else {\n var color = new fabric.Color(value),\n str = prop + ': ' + color.toRgb() + '; ',\n opacity = color.getAlpha();\n if (opacity !== 1) {\n //change the color in rgb + opacity\n str += prop + '-opacity: ' + opacity.toString() + '; ';\n }\n return str;\n }\n }\n\n var toFixed = fabric.util.toFixed;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n\n var fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n fill = getSvgColorString('fill', this.fill),\n stroke = getSvgColorString('stroke', this.stroke);\n\n return [\n stroke,\n 'stroke-width: ', strokeWidth, '; ',\n 'stroke-dasharray: ', strokeDashArray, '; ',\n 'stroke-linecap: ', strokeLineCap, '; ',\n 'stroke-dashoffset: ', strokeDashOffset, '; ',\n 'stroke-linejoin: ', strokeLineJoin, '; ',\n 'stroke-miterlimit: ', strokeMiterLimit, '; ',\n fill,\n 'fill-rule: ', fillRule, '; ',\n 'opacity: ', opacity, ';',\n filter,\n visibility\n ].join('');\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n * @return {String}\n */\n getSvgSpanStyles: function(style, useWhiteSpace) {\n var term = '; ';\n var fontFamily = style.fontFamily ?\n 'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n '\\'' + style.fontFamily + '\\'' : style.fontFamily)) + term : '';\n var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n fontFamily = fontFamily,\n fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n textDecoration = this.getSvgTextDecoration(style),\n deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n if (textDecoration) {\n textDecoration = 'text-decoration: ' + textDecoration + term;\n }\n\n return [\n stroke,\n strokeWidth,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration,\n fill,\n deltaY,\n useWhiteSpace ? 'white-space: pre; ' : ''\n ].join('');\n },\n\n /**\n * Returns text-decoration property for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @return {String}\n */\n getSvgTextDecoration: function(style) {\n return ['overline', 'underline', 'line-through'].filter(function(decoration) {\n return style[decoration.replace('-', '')];\n }).join(' ');\n },\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter: function() {\n return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n },\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons: function() {\n return [\n this.id ? 'id=\"' + this.id + '\" ' : '',\n this.clipPath ? 'clip-path=\"url(#' + this.clipPath.clipPathId + ')\" ' : '',\n ].join('');\n },\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform: function(full, additionalTransform) {\n var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = 'transform=\"' + fabric.util.matrixToSVG(transform);\n return svgTransform +\n (additionalTransform || '') + this.getSvgTransformMatrix() + '\" ';\n },\n\n /**\n * Returns transform-string for svg-export from the transform matrix of single elements\n * @return {String}\n */\n getSvgTransformMatrix: function() {\n return this.transformMatrix ? ' ' + fabric.util.matrixToSVG(this.transformMatrix) : '';\n },\n\n _setSVGBg: function(textBgRects) {\n if (this.backgroundColor) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n }\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n return '\\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var reviver = options.reviver,\n additionalTransform = options.additionalTransform || '',\n commonPieces = [\n this.getSvgTransform(true, additionalTransform),\n this.getSvgCommons(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n },\n\n /**\n * @private\n */\n _createBaseSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var noStyle = options.noStyle,\n reviver = options.reviver,\n styleInfo = noStyle ? '' : 'style=\"' + this.getSvgStyles() + '\" ',\n shadowInfo = options.withShadow ? 'style=\"' + this.getSvgFilter() + '\" ' : '',\n clipPath = this.clipPath,\n vectorEffect = this.strokeUniform ? 'vector-effect=\"non-scaling-stroke\" ' : '',\n absoluteClipPath = clipPath && clipPath.absolutePositioned,\n stroke = this.stroke, fill = this.fill, shadow = this.shadow,\n commonPieces, markup = [], clipPathMarkup,\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS'),\n additionalTransform = options.additionalTransform;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n clipPathMarkup = '\\n' +\n clipPath.toClipPathSVG(reviver) +\n '\\n';\n }\n if (absoluteClipPath) {\n markup.push(\n '\\n'\n );\n }\n markup.push(\n '\\n'\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(), ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n objectMarkup[index] = commonPieces;\n if (fill && fill.toLive) {\n markup.push(fill.toSVG(this));\n }\n if (stroke && stroke.toLive) {\n markup.push(stroke.toSVG(this));\n }\n if (shadow) {\n markup.push(shadow.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n markup.push(objectMarkup.join(''));\n markup.push('\\n');\n absoluteClipPath && markup.push('\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n\n addPaintOrder: function() {\n return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n }\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n var extend = fabric.util.object.extend,\n originalSet = 'stateProperties';\n\n /*\n Depends on `stateProperties`\n */\n function saveProps(origin, destination, props) {\n var tmpObj = { }, deep = true;\n props.forEach(function(prop) {\n tmpObj[prop] = origin[prop];\n });\n extend(origin[destination], tmpObj, deep);\n }\n\n function _isEqual(origValue, currentValue, firstPass) {\n if (origValue === currentValue) {\n // if the objects are identical, return\n return true;\n }\n else if (Array.isArray(origValue)) {\n if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n return false;\n }\n for (var i = 0, len = origValue.length; i < len; i++) {\n if (!_isEqual(origValue[i], currentValue[i])) {\n return false;\n }\n }\n return true;\n }\n else if (origValue && typeof origValue === 'object') {\n var keys = Object.keys(origValue), key;\n if (!currentValue ||\n typeof currentValue !== 'object' ||\n (!firstPass && keys.length !== Object.keys(currentValue).length)\n ) {\n return false;\n }\n for (var i = 0, len = keys.length; i < len; i++) {\n key = keys[i];\n // since clipPath is in the statefull cache list and the clipPath objects\n // would be iterated as an object, this would lead to possible infinite recursion\n if (key === 'canvas') {\n continue;\n }\n if (!_isEqual(origValue[key], currentValue[key])) {\n return false;\n }\n }\n return true;\n }\n }\n\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Returns true if object state (one of its state properties) was changed\n * @param {String} [propertySet] optional name for the set of property we want to save\n * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n */\n hasStateChanged: function(propertySet) {\n propertySet = propertySet || originalSet;\n var dashedPropertySet = '_' + propertySet;\n if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n return true;\n }\n return !_isEqual(this[dashedPropertySet], this, true);\n },\n\n /**\n * Saves state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n saveState: function(options) {\n var propertySet = options && options.propertySet || originalSet,\n destination = '_' + propertySet;\n if (!this[destination]) {\n return this.setupState(options);\n }\n saveProps(this, destination, this[propertySet]);\n if (options && options.stateProperties) {\n saveProps(this, destination, options.stateProperties);\n }\n return this;\n },\n\n /**\n * Setups state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n setupState: function(options) {\n options = options || { };\n var propertySet = options.propertySet || originalSet;\n options.propertySet = propertySet;\n this['_' + propertySet] = { };\n this.saveState(options);\n return this;\n }\n });\n})();\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * The object interactivity controls.\n * @private\n */\n _controlsVisibility: null,\n\n /**\n * Determines which corner has been clicked\n * @private\n * @param {Object} pointer The pointer indicating the mouse position\n * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n */\n _findTargetCorner: function(pointer) {\n // objects in group, anykind, are not self modificable,\n // must not return an hovered corner.\n if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n return false;\n }\n\n var ex = pointer.x,\n ey = pointer.y,\n xPoints,\n lines;\n this.__corner = 0;\n for (var i in this.oCoords) {\n\n if (!this.isControlVisible(i)) {\n continue;\n }\n\n if (i === 'mtr' && !this.hasRotatingPoint) {\n continue;\n }\n\n if (this.get('lockUniScaling') &&\n (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) {\n continue;\n }\n\n lines = this._getImageLines(this.oCoords[i].corner);\n\n // debugging\n\n // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n if (xPoints !== 0 && xPoints % 2 === 1) {\n this.__corner = i;\n return i;\n }\n }\n return false;\n },\n\n /**\n * Sets the coordinates of the draggable boxes in the corners of\n * the image used to scale/rotate it.\n * @private\n */\n _setCornerCoords: function() {\n var coords = this.oCoords,\n newTheta = degreesToRadians(45 - this.angle),\n /* Math.sqrt(2 * Math.pow(this.cornerSize, 2)) / 2, */\n /* 0.707106 stands for sqrt(2)/2 */\n cornerHypotenuse = this.cornerSize * 0.707106,\n cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta),\n sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta),\n x, y;\n\n for (var point in coords) {\n x = coords[point].x;\n y = coords[point].y;\n coords[point].corner = {\n tl: {\n x: x - sinHalfOffset,\n y: y - cosHalfOffset\n },\n tr: {\n x: x + cosHalfOffset,\n y: y - sinHalfOffset\n },\n bl: {\n x: x - cosHalfOffset,\n y: y + sinHalfOffset\n },\n br: {\n x: x + sinHalfOffset,\n y: y + cosHalfOffset\n }\n };\n }\n },\n\n /**\n * Draws a colored layer behind the object, inside its selection borders.\n * Requires public options: padding, selectionBackgroundColor\n * this function is called when the context is transformed\n * has checks to be skipped when the object is on a staticCanvas\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawSelectionBackground: function(ctx) {\n if (!this.selectionBackgroundColor ||\n (this.canvas && !this.canvas.interactive) ||\n (this.canvas && this.canvas._activeObject !== this)\n ) {\n return this;\n }\n ctx.save();\n var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n vpt = this.canvas.viewportTransform;\n ctx.translate(center.x, center.y);\n ctx.scale(1 / vpt[0], 1 / vpt[3]);\n ctx.rotate(degreesToRadians(this.angle));\n ctx.fillStyle = this.selectionBackgroundColor;\n ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBorders: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n strokeWidth = this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth,\n drawRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n styleOverride.hasControls : this.hasControls,\n rotatingPointOffset = typeof styleOverride.rotatingPointOffset !== 'undefined' ?\n styleOverride.rotatingPointOffset : this.rotatingPointOffset;\n\n ctx.save();\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n if (drawRotatingPoint && this.isControlVisible('mtr') && hasControls) {\n\n var rotateHeight = -height / 2;\n\n ctx.beginPath();\n ctx.moveTo(0, rotateHeight);\n ctx.lineTo(0, rotateHeight - rotatingPointOffset);\n ctx.stroke();\n }\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box when it is inside a group.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {object} options object representing current object parameters\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBordersInGroup: function(ctx, options, styleOverride) {\n styleOverride = styleOverride || {};\n var p = { x: this.width, y: this.height },\n matrix = fabric.util.composeMatrix({\n scaleX: options.scaleX,\n scaleY: options.scaleY,\n skewX: options.skewX\n }),\n wh = fabric.util.transformPoint(p, matrix),\n strokeWidth = this.strokeWidth,\n borderScaleFactor = this.borderScaleFactor,\n width =\n wh.x + strokeWidth * (this.strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,\n height =\n wh.y + strokeWidth * (this.strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;\n ctx.save();\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws corners of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: cornerSize, padding\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawControls: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n width = wh.x,\n height = wh.y,\n scaleOffset = styleOverride.cornerSize || this.cornerSize,\n left = -(width + scaleOffset) / 2,\n top = -(height + scaleOffset) / 2,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : this.transparentCorners,\n hasRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n methodName = transparentCorners ? 'stroke' : 'fill';\n\n ctx.save();\n ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null);\n\n // top-left\n this._drawControl('tl', ctx, methodName,\n left,\n top, styleOverride);\n\n // top-right\n this._drawControl('tr', ctx, methodName,\n left + width,\n top, styleOverride);\n\n // bottom-left\n this._drawControl('bl', ctx, methodName,\n left,\n top + height, styleOverride);\n\n // bottom-right\n this._drawControl('br', ctx, methodName,\n left + width,\n top + height, styleOverride);\n\n if (!this.get('lockUniScaling')) {\n\n // middle-top\n this._drawControl('mt', ctx, methodName,\n left + width / 2,\n top, styleOverride);\n\n // middle-bottom\n this._drawControl('mb', ctx, methodName,\n left + width / 2,\n top + height, styleOverride);\n\n // middle-right\n this._drawControl('mr', ctx, methodName,\n left + width,\n top + height / 2, styleOverride);\n\n // middle-left\n this._drawControl('ml', ctx, methodName,\n left,\n top + height / 2, styleOverride);\n }\n\n // middle-top-rotate\n if (hasRotatingPoint) {\n this._drawControl('mtr', ctx, methodName,\n left + width / 2,\n top - this.rotatingPointOffset, styleOverride);\n }\n\n ctx.restore();\n\n return this;\n },\n\n /**\n * @private\n */\n _drawControl: function(control, ctx, methodName, left, top, styleOverride) {\n styleOverride = styleOverride || {};\n if (!this.isControlVisible(control)) {\n return;\n }\n var size = this.cornerSize, stroke = !this.transparentCorners && this.cornerStrokeColor;\n switch (styleOverride.cornerStyle || this.cornerStyle) {\n case 'circle':\n ctx.beginPath();\n ctx.arc(left + size / 2, top + size / 2, size / 2, 0, 2 * Math.PI, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n break;\n default:\n this.transparentCorners || ctx.clearRect(left, top, size, size);\n ctx[methodName + 'Rect'](left, top, size, size);\n if (stroke) {\n ctx.strokeRect(left, top, size, size);\n }\n }\n },\n\n /**\n * Returns true if the specified control is visible, false otherwise.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @returns {Boolean} true if the specified control is visible, false otherwise\n */\n isControlVisible: function(controlName) {\n return this._getControlsVisibility()[controlName];\n },\n\n /**\n * Sets the visibility of the specified control.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @param {Boolean} visible true to set the specified control visible, false otherwise\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlVisible: function(controlName, visible) {\n this._getControlsVisibility()[controlName] = visible;\n return this;\n },\n\n /**\n * Sets the visibility state of object controls.\n * @param {Object} [options] Options object\n * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlsVisibility: function(options) {\n options || (options = { });\n\n for (var p in options) {\n this.setControlVisible(p, options[p]);\n }\n return this;\n },\n\n /**\n * Returns the instance of the control visibility set for this object.\n * @private\n * @returns {Object}\n */\n _getControlsVisibility: function() {\n if (!this._controlsVisibility) {\n this._controlsVisibility = {\n tl: true,\n tr: true,\n br: true,\n bl: true,\n ml: true,\n mt: true,\n mr: true,\n mb: true,\n mtr: true\n };\n }\n return this._controlsVisibility;\n },\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to deselect this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onDeselect: function() {\n // implemented by sub-classes, as needed.\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to select this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onSelect: function() {\n // implemented by sub-classes, as needed.\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Animation duration (in ms) for fx* methods\n * @type Number\n * @default\n */\n FX_DURATION: 500,\n\n /**\n * Centers object horizontally with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectH: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.left,\n endValue: this.getCenter().left,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('left', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Centers object vertically with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectV: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.top,\n endValue: this.getCenter().top,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('top', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Same as `fabric.Canvas#remove` but animated\n * @param {fabric.Object} object Object to remove\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxRemove: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.opacity,\n endValue: 0,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('opacity', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function () {\n _this.remove(object);\n onComplete();\n }\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Animates object's properties\n * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n * @return {fabric.Object} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n * @chainable\n *\n * As object — multiple properties\n *\n * object.animate({ left: ..., top: ... });\n * object.animate({ left: ..., top: ... }, { duration: ... });\n *\n * As string — one property\n *\n * object.animate('left', ...);\n * object.animate('left', { duration: ... });\n *\n */\n animate: function() {\n if (arguments[0] && typeof arguments[0] === 'object') {\n var propsToAnimate = [], prop, skipCallbacks;\n for (prop in arguments[0]) {\n propsToAnimate.push(prop);\n }\n for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n prop = propsToAnimate[i];\n skipCallbacks = i !== len - 1;\n this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks);\n }\n }\n else {\n this._animate.apply(this, arguments);\n }\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to animate\n * @param {String} to Value to animate to\n * @param {Object} [options] Options object\n * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n */\n _animate: function(property, to, options, skipCallbacks) {\n var _this = this, propPair;\n\n to = to.toString();\n\n if (!options) {\n options = { };\n }\n else {\n options = fabric.util.object.clone(options);\n }\n\n if (~property.indexOf('.')) {\n propPair = property.split('.');\n }\n\n var currentValue = propPair\n ? this.get(propPair[0])[propPair[1]]\n : this.get(property);\n\n if (!('from' in options)) {\n options.from = currentValue;\n }\n\n if (~to.indexOf('=')) {\n to = currentValue + parseFloat(to.replace('=', ''));\n }\n else {\n to = parseFloat(to);\n }\n\n fabric.util.animate({\n startValue: options.from,\n endValue: to,\n byValue: options.by,\n easing: options.easing,\n duration: options.duration,\n abort: options.abort && function() {\n return options.abort.call(_this);\n },\n onChange: function(value, valueProgress, timeProgress) {\n if (propPair) {\n _this[propPair[0]][propPair[1]] = value;\n }\n else {\n _this.set(property, value);\n }\n if (skipCallbacks) {\n return;\n }\n options.onChange && options.onChange(value, valueProgress, timeProgress);\n },\n onComplete: function(value, valueProgress, timeProgress) {\n if (skipCallbacks) {\n return;\n }\n\n _this.setCoords();\n options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n }\n });\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 },\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash');\n\n if (fabric.Line) {\n fabric.warn('fabric.Line is already defined');\n return;\n }\n\n /**\n * Line class\n * @class fabric.Line\n * @extends fabric.Object\n * @see {@link fabric.Line#initialize} for constructor definition\n */\n fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'line',\n\n /**\n * x value or first line edge\n * @type Number\n * @default\n */\n x1: 0,\n\n /**\n * y value or first line edge\n * @type Number\n * @default\n */\n y1: 0,\n\n /**\n * x value or second line edge\n * @type Number\n * @default\n */\n x2: 0,\n\n /**\n * y value or second line edge\n * @type Number\n * @default\n */\n y2: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n /**\n * Constructor\n * @param {Array} [points] Array of points\n * @param {Object} [options] Options object\n * @return {fabric.Line} thisArg\n */\n initialize: function(points, options) {\n if (!points) {\n points = [0, 0, 0, 0];\n }\n\n this.callSuper('initialize', options);\n\n this.set('x1', points[0]);\n this.set('y1', points[1]);\n this.set('x2', points[2]);\n this.set('y2', points[3]);\n\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Object} [options] Options\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n\n this.width = Math.abs(this.x2 - this.x1);\n this.height = Math.abs(this.y2 - this.y1);\n\n this.left = 'left' in options\n ? options.left\n : this._getLeftToOriginX();\n\n this.top = 'top' in options\n ? options.top\n : this._getTopToOriginY();\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n if (typeof coordProps[key] !== 'undefined') {\n this._setWidthHeight();\n }\n return this;\n },\n\n /**\n * @private\n * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n */\n _getLeftToOriginX: makeEdgeToOriginGetter(\n { // property names\n origin: 'originX',\n axis1: 'x1',\n axis2: 'x2',\n dimension: 'width'\n },\n { // possible values of origin\n nearest: 'left',\n center: 'center',\n farthest: 'right'\n }\n ),\n\n /**\n * @private\n * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n */\n _getTopToOriginY: makeEdgeToOriginGetter(\n { // property names\n origin: 'originY',\n axis1: 'y1',\n axis2: 'y2',\n dimension: 'height'\n },\n { // possible values of origin\n nearest: 'top',\n center: 'center',\n farthest: 'bottom'\n }\n ),\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n\n if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) {\n // move from center (of virtual box) to its left/top corner\n // we can't assume x1, y1 is top left and x2, y2 is bottom right\n var p = this.calcLinePoints();\n ctx.moveTo(p.x1, p.y1);\n ctx.lineTo(p.x2, p.y2);\n }\n\n ctx.lineWidth = this.strokeWidth;\n\n // TODO: test this\n // make sure setting \"fill\" changes color of a line\n // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n var origStrokeStyle = ctx.strokeStyle;\n ctx.strokeStyle = this.stroke || ctx.fillStyle;\n this.stroke && this._renderStroke(ctx);\n ctx.strokeStyle = origStrokeStyle;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p = this.calcLinePoints();\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return {\n x: (this.x1 + this.x2) / 2,\n y: (this.y1 + this.y2) / 2,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @methd toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n */\n _getNonTransformedDimensions: function() {\n var dim = this.callSuper('_getNonTransformedDimensions');\n if (this.strokeLineCap === 'butt') {\n if (this.width === 0) {\n dim.y -= this.strokeWidth;\n }\n if (this.height === 0) {\n dim.x -= this.strokeWidth;\n }\n }\n return dim;\n },\n\n /**\n * Recalculates line points given width and height\n * @private\n */\n calcLinePoints: function() {\n var xMult = this.x1 <= this.x2 ? -1 : 1,\n yMult = this.y1 <= this.y2 ? -1 : 1,\n x1 = (xMult * this.width * 0.5),\n y1 = (yMult * this.height * 0.5),\n x2 = (xMult * this.width * -0.5),\n y2 = (yMult * this.height * -0.5);\n\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var p = this.calcLinePoints();\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n * @static\n * @memberOf fabric.Line\n * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n */\n fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n /**\n * Returns fabric.Line instance from an SVG element\n * @static\n * @memberOf fabric.Line\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} [callback] callback function invoked after parsing\n */\n fabric.Line.fromElement = function(element, callback, options) {\n options = options || { };\n var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n points = [\n parsedAttributes.x1 || 0,\n parsedAttributes.y1 || 0,\n parsedAttributes.x2 || 0,\n parsedAttributes.y2 || 0\n ];\n callback(new fabric.Line(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Line instance from an object representation\n * @static\n * @memberOf fabric.Line\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Line.fromObject = function(object, callback) {\n function _callback(instance) {\n delete instance.points;\n callback && callback(instance);\n };\n var options = clone(object, true);\n options.points = [object.x1, object.y1, object.x2, object.y2];\n fabric.Object._fromObject('Line', options, _callback, 'points');\n };\n\n /**\n * Produces a function that calculates distance from canvas edge to Line origin.\n */\n function makeEdgeToOriginGetter(propertyNames, originValues) {\n var origin = propertyNames.origin,\n axis1 = propertyNames.axis1,\n axis2 = propertyNames.axis2,\n dimension = propertyNames.dimension,\n nearest = originValues.nearest,\n center = originValues.center,\n farthest = originValues.farthest;\n\n return function() {\n switch (this.get(origin)) {\n case nearest:\n return Math.min(this.get(axis1), this.get(axis2));\n case center:\n return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n case farthest:\n return Math.max(this.get(axis1), this.get(axis2));\n }\n };\n\n }\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n pi = Math.PI;\n\n if (fabric.Circle) {\n fabric.warn('fabric.Circle is already defined.');\n return;\n }\n\n /**\n * Circle class\n * @class fabric.Circle\n * @extends fabric.Object\n * @see {@link fabric.Circle#initialize} for constructor definition\n */\n fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'circle',\n\n /**\n * Radius of this circle\n * @type Number\n * @default\n */\n radius: 0,\n\n /**\n * Start angle of the circle, moving clockwise\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 0\n */\n startAngle: 0,\n\n /**\n * End angle of the circle\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 2Pi\n */\n endAngle: pi * 2,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Circle} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n\n if (key === 'radius') {\n this.setRadius(value);\n }\n\n return this;\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString, x = 0, y = 0,\n angle = (this.endAngle - this.startAngle) % ( 2 * pi);\n\n if (angle === 0) {\n svgString = [\n '\\n'\n ];\n }\n else {\n var startX = fabric.util.cos(this.startAngle) * this.radius,\n startY = fabric.util.sin(this.startAngle) * this.radius,\n endX = fabric.util.cos(this.endAngle) * this.radius,\n endY = fabric.util.sin(this.endAngle) * this.radius,\n largeFlag = angle > pi ? '1' : '0';\n svgString = [\n '\\n'\n ];\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.arc(\n 0,\n 0,\n this.radius,\n this.startAngle,\n this.endAngle, false);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusX: function() {\n return this.get('radius') * this.get('scaleX');\n },\n\n /**\n * Returns vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusY: function() {\n return this.get('radius') * this.get('scaleY');\n },\n\n /**\n * Sets radius of an object (and updates width accordingly)\n * @return {fabric.Circle} thisArg\n */\n setRadius: function(value) {\n this.radius = value;\n return this.set('width', value * 2).set('height', value * 2);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n * @static\n * @memberOf fabric.Circle\n * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n */\n fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n /**\n * Returns {@link fabric.Circle} instance from an SVG element\n * @static\n * @memberOf fabric.Circle\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @param {Object} [options] Options object\n * @throws {Error} If value of `r` attribute is missing or invalid\n */\n fabric.Circle.fromElement = function(element, callback) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n if (!isValidRadius(parsedAttributes)) {\n throw new Error('value of `r` attribute is required and can not be negative');\n }\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n callback(new fabric.Circle(parsedAttributes));\n };\n\n /**\n * @private\n */\n function isValidRadius(attributes) {\n return (('radius' in attributes) && (attributes.radius >= 0));\n }\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Circle} instance from an object representation\n * @static\n * @memberOf fabric.Circle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {Object} Instance of fabric.Circle\n */\n fabric.Circle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Circle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Triangle) {\n fabric.warn('fabric.Triangle is already defined');\n return;\n }\n\n /**\n * Triangle class\n * @class fabric.Triangle\n * @extends fabric.Object\n * @return {fabric.Triangle} thisArg\n * @see {@link fabric.Triangle#initialize} for constructor definition\n */\n fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'triangle',\n\n /**\n * Width is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n width: 100,\n\n /**\n * Height is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n height: 100,\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n ctx.moveTo(-widthBy2, heightBy2);\n ctx.lineTo(0, -heightBy2);\n ctx.lineTo(widthBy2, heightBy2);\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2,\n points = [\n -widthBy2 + ' ' + heightBy2,\n '0 ' + -heightBy2,\n widthBy2 + ' ' + heightBy2\n ].join(',');\n return [\n ''\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Triangle} instance from an object representation\n * @static\n * @memberOf fabric.Triangle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Triangle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Triangle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n piBy2 = Math.PI * 2;\n\n if (fabric.Ellipse) {\n fabric.warn('fabric.Ellipse is already defined.');\n return;\n }\n\n /**\n * Ellipse class\n * @class fabric.Ellipse\n * @extends fabric.Object\n * @return {fabric.Ellipse} thisArg\n * @see {@link fabric.Ellipse#initialize} for constructor definition\n */\n fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'ellipse',\n\n /**\n * Horizontal radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {fabric.Ellipse} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this.set('rx', options && options.rx || 0);\n this.set('ry', options && options.ry || 0);\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Ellipse} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n switch (key) {\n\n case 'rx':\n this.rx = value;\n this.set('width', value * 2);\n break;\n\n case 'ry':\n this.ry = value;\n this.set('height', value * 2);\n break;\n\n }\n return this;\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRx: function() {\n return this.get('rx') * this.get('scaleX');\n },\n\n /**\n * Returns Vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRy: function() {\n return this.get('ry') * this.get('scaleY');\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.save();\n ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n ctx.arc(\n 0,\n 0,\n this.rx,\n 0,\n piBy2,\n false);\n ctx.restore();\n this._renderPaintInOrder(ctx);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n * @static\n * @memberOf fabric.Ellipse\n * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n */\n fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n /**\n * Returns {@link fabric.Ellipse} instance from an SVG element\n * @static\n * @memberOf fabric.Ellipse\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromElement = function(element, callback) {\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n callback(new fabric.Ellipse(parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Ellipse} instance from an object representation\n * @static\n * @memberOf fabric.Ellipse\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Ellipse', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Rect) {\n fabric.warn('fabric.Rect is already defined');\n return;\n }\n\n /**\n * Rectangle class\n * @class fabric.Rect\n * @extends fabric.Object\n * @return {fabric.Rect} thisArg\n * @see {@link fabric.Rect#initialize} for constructor definition\n */\n fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n /**\n * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'rect',\n\n /**\n * Horizontal border radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical border radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this._initRxRy();\n },\n\n /**\n * Initializes rx/ry attributes\n * @private\n */\n _initRxRy: function() {\n if (this.rx && !this.ry) {\n this.ry = this.rx;\n }\n else if (this.ry && !this.rx) {\n this.rx = this.ry;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n\n // 1x1 case (used in spray brush) optimization was removed because\n // with caching and higher zoom level this makes more damage than help\n\n var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n w = this.width,\n h = this.height,\n x = -this.width / 2,\n y = -this.height / 2,\n isRounded = rx !== 0 || ry !== 0,\n /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n k = 1 - 0.5522847498;\n ctx.beginPath();\n\n ctx.moveTo(x + rx, y);\n\n ctx.lineTo(x + w - rx, y);\n isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n ctx.lineTo(x + w, y + h - ry);\n isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n ctx.lineTo(x + rx, y + h);\n isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n ctx.lineTo(x, y + ry);\n isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var x = -this.width / 2, y = -this.height / 2;\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n * @static\n * @memberOf fabric.Rect\n * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n */\n fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n /**\n * Returns {@link fabric.Rect} instance from an SVG element\n * @static\n * @memberOf fabric.Rect\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Rect.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options = options || { };\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = parsedAttributes.left || 0;\n parsedAttributes.top = parsedAttributes.top || 0;\n parsedAttributes.height = parsedAttributes.height || 0;\n parsedAttributes.width = parsedAttributes.width || 0;\n var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n callback(rect);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Rect} instance from an object representation\n * @static\n * @memberOf fabric.Rect\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n */\n fabric.Rect.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Rect', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Polyline) {\n fabric.warn('fabric.Polyline is already defined');\n return;\n }\n\n /**\n * Polyline class\n * @class fabric.Polyline\n * @extends fabric.Object\n * @see {@link fabric.Polyline#initialize} for constructor definition\n */\n fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polyline',\n\n /**\n * Points array\n * @type Array\n * @default\n */\n points: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n /**\n * Constructor\n * @param {Array} points Array of points (where each point is an object with x and y)\n * @param {Object} [options] Options object\n * @return {fabric.Polyline} thisArg\n * @example\n * var poly = new fabric.Polyline([\n * { x: 10, y: 10 },\n * { x: 50, y: 30 },\n * { x: 40, y: 70 },\n * { x: 60, y: 50 },\n * { x: 100, y: 150 },\n * { x: 40, y: 100 }\n * ], {\n * stroke: 'red',\n * left: 100,\n * top: 100\n * });\n */\n initialize: function(points, options) {\n options = options || {};\n this.points = points || [];\n this.callSuper('initialize', options);\n this._setPositionDimensions(options);\n },\n\n _setPositionDimensions: function(options) {\n var calcDim = this._calcDimensions(options), correctLeftTop;\n this.width = calcDim.width;\n this.height = calcDim.height;\n if (!options.fromSVG) {\n correctLeftTop = this.translateToGivenOrigin(\n { x: calcDim.left - this.strokeWidth / 2, y: calcDim.top - this.strokeWidth / 2 },\n 'left',\n 'top',\n this.originX,\n this.originY\n );\n }\n if (typeof options.left === 'undefined') {\n this.left = options.fromSVG ? calcDim.left : correctLeftTop.x;\n }\n if (typeof options.top === 'undefined') {\n this.top = options.fromSVG ? calcDim.top : correctLeftTop.y;\n }\n this.pathOffset = {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * Calculate the polygon min and max point from points array,\n * returning an object with left, top, widht, height to measure the\n * polygon size\n * @return {Object} object.left X coordinate of the polygon leftmost point\n * @return {Object} object.top Y coordinate of the polygon topmost point\n * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n * @private\n */\n _calcDimensions: function() {\n\n var points = this.points,\n minX = min(points, 'x') || 0,\n minY = min(points, 'y') || 0,\n maxX = max(points, 'x') || 0,\n maxY = max(points, 'y') || 0,\n width = (maxX - minX),\n height = (maxY - minY);\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n points: this.points.concat()\n });\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n for (var i = 0, len = this.points.length; i < len; i++) {\n points.push(\n toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n );\n }\n return [\n '<' + this.type + ' ', 'COMMON_PARTS',\n 'points=\"', points.join(''),\n '\" />\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n commonRender: function(ctx) {\n var point, len = this.points.length,\n x = this.pathOffset.x,\n y = this.pathOffset.y;\n\n if (!len || isNaN(this.points[len - 1].y)) {\n // do not draw if no points or odd points\n // NaN comes from parseFloat of a empty string in parser\n return false;\n }\n ctx.beginPath();\n ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n for (var i = 0; i < len; i++) {\n point = this.points[i];\n ctx.lineTo(point.x - x, point.y - y);\n }\n return true;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p1, p2;\n\n ctx.beginPath();\n for (var i = 0, len = this.points.length; i < len; i++) {\n p1 = this.points[i];\n p2 = this.points[i + 1] || p1;\n fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray);\n }\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.get('points').length;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n * @static\n * @memberOf fabric.Polyline\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n */\n fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns fabric.Polyline instance from an SVG element\n * @static\n * @memberOf fabric.Polyline\n * @param {SVGElement} element Element to parser\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polyline.fromElementGenerator = function(_class) {\n return function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric[_class](points, extend(parsedAttributes, options)));\n };\n };\n\n fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline');\n\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polyline instance from an object representation\n * @static\n * @memberOf fabric.Polyline\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polyline.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polyline', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Polygon) {\n fabric.warn('fabric.Polygon is already defined');\n return;\n }\n\n /**\n * Polygon class\n * @class fabric.Polygon\n * @extends fabric.Polyline\n * @see {@link fabric.Polygon#initialize} for constructor definition\n */\n fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polygon',\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n ctx.closePath();\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n this.callSuper('_renderDashedStroke', ctx);\n ctx.closePath();\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n * @static\n * @memberOf fabric.Polygon\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n */\n fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns {@link fabric.Polygon} instance from an SVG element\n * @static\n * @memberOf fabric.Polygon\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon');\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polygon instance from an object representation\n * @static\n * @memberOf fabric.Polygon\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polygon.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polygon', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n extend = fabric.util.object.extend,\n _toString = Object.prototype.toString,\n drawArc = fabric.util.drawArc,\n toFixed = fabric.util.toFixed,\n commandLengths = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n },\n repeatedCommands = {\n m: 'l',\n M: 'L'\n };\n\n if (fabric.Path) {\n fabric.warn('fabric.Path is already defined');\n return;\n }\n\n /**\n * Path class\n * @class fabric.Path\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n * @see {@link fabric.Path#initialize} for constructor definition\n */\n fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'path',\n\n /**\n * Array of path points\n * @type Array\n * @default\n */\n path: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n /**\n * Constructor\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n * @return {fabric.Path} thisArg\n */\n initialize: function(path, options) {\n options = options || { };\n this.callSuper('initialize', options);\n\n if (!path) {\n path = [];\n }\n\n var fromArray = _toString.call(path) === '[object Array]';\n\n this.path = fromArray\n ? path\n // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n if (!this.path) {\n return;\n }\n\n if (!fromArray) {\n this.path = this._parsePath();\n }\n\n fabric.Polyline.prototype._setPositionDimensions.call(this, options);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _renderPathCommands: function(ctx) {\n var current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n l = -this.pathOffset.x,\n t = -this.pathOffset.y;\n\n ctx.beginPath();\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n ctx.bezierCurveTo(\n x + current[1] + l, // x1\n y + current[2] + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n ctx.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + current[1] + l,\n y + current[2] + t,\n tempX + l,\n tempY + t\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n controlX = x + current[1];\n controlY = y + current[2];\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n\n ctx.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x + l,\n current[7] + y + t\n ]);\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + l,\n current[7] + t\n ]);\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n ctx.closePath();\n break;\n }\n previous = current;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _render: function(ctx) {\n this._renderPathCommands(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n path: this.path.map(function(item) { return item.slice(); }),\n });\n },\n\n /**\n * Returns dataless object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n if (o.sourcePath) {\n delete o.path;\n }\n return o;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var path = this.path.map(function(path) {\n return path.join(' ');\n }).join(' ');\n return [\n '\\n'\n ];\n },\n\n _getOffsetTransform: function() {\n var digits = fabric.Object.NUM_FRACTION_DIGITS;\n return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' +\n toFixed(-this.pathOffset.y, digits) + ')';\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return '\\t' + this._createBaseClipPathSVGMarkup(\n this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }\n );\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform });\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns number representation of an instance complexity\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.path.length;\n },\n\n /**\n * @private\n */\n _parsePath: function() {\n var result = [],\n coords = [],\n currentPath,\n parsed,\n re = fabric.rePathCommand,\n match,\n coordsStr;\n\n for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) {\n currentPath = this.path[i];\n\n coordsStr = currentPath.slice(1).trim();\n coords.length = 0;\n\n while ((match = re.exec(coordsStr))) {\n coords.push(match[0]);\n }\n\n coordsParsed = [currentPath.charAt(0)];\n\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n coordsParsed.push(parsed);\n }\n }\n\n var command = coordsParsed[0],\n commandLength = commandLengths[command.toLowerCase()],\n repeatedCommand = repeatedCommands[command] || command;\n\n if (coordsParsed.length - 1 > commandLength) {\n for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n command = repeatedCommand;\n }\n }\n else {\n result.push(coordsParsed);\n }\n }\n\n return result;\n },\n\n /**\n * @private\n */\n _calcDimensions: function() {\n\n var aX = [],\n aY = [],\n current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n bounds;\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n bounds = [];\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n bounds = [];\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n bounds = [];\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n bounds = [];\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n bounds = [];\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n bounds = [];\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n x + current[1], // x1\n y + current[2], // y1\n controlX, // x2\n controlY, // y2\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n controlX = current[3];\n controlY = current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n controlX,\n controlY,\n current[5],\n current[6]\n );\n x = current[5];\n y = current[6];\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n x + current[1],\n y + current[2],\n tempX,\n tempY\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n current[1],\n current[2],\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n controlX = current[1];\n controlY = current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n current[3],\n current[4]\n );\n x = current[3];\n y = current[4];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x,\n current[7] + y\n );\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6],\n current[7]\n );\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n break;\n }\n previous = current;\n bounds.forEach(function (point) {\n aX.push(point.x);\n aY.push(point.y);\n });\n aX.push(x);\n aY.push(y);\n }\n\n var minX = min(aX) || 0,\n minY = min(aY) || 0,\n maxX = max(aX) || 0,\n maxY = max(aY) || 0,\n deltaX = maxX - minX,\n deltaY = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: deltaX,\n height: deltaY\n };\n }\n });\n\n /**\n * Creates an instance of fabric.Path from an object\n * @static\n * @memberOf fabric.Path\n * @param {Object} object\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Path.fromObject = function(object, callback) {\n if (typeof object.sourcePath === 'string') {\n var pathUrl = object.sourcePath;\n fabric.loadSVGFromURL(pathUrl, function (elements) {\n var path = elements[0];\n path.setOptions(object);\n callback && callback(path);\n });\n }\n else {\n fabric.Object._fromObject('Path', object, callback, 'path');\n }\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n * @static\n * @memberOf fabric.Path\n * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n */\n fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n /**\n * Creates an instance of fabric.Path from an SVG element\n * @static\n * @memberOf fabric.Path\n * @param {SVGElement} element to parse\n * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n * @param {Object} [options] Options object\n * @param {Function} [callback] Options callback invoked after parsing is finished\n */\n fabric.Path.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max;\n\n if (fabric.Group) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.Group\n * @extends fabric.Object\n * @mixes fabric.Collection\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.Group#initialize} for constructor definition\n */\n fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'group',\n\n /**\n * Width of stroke\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets\n * @type Boolean\n * @default\n */\n subTargetCheck: false,\n\n /**\n * Groups are container, do not render anything on theyr own, ence no cache properties\n * @type Array\n * @default\n */\n cacheProperties: [],\n\n /**\n * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n * available setting this boolean to true.\n * @type Boolean\n * @since 2.0.0\n * @default\n */\n useSetOnGroup: false,\n\n /**\n * Constructor\n * @param {Object} objects Group objects\n * @param {Object} [options] Options object\n * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n * @return {Object} thisArg\n */\n initialize: function(objects, options, isAlreadyGrouped) {\n options = options || {};\n this._objects = [];\n // if objects enclosed in a group have been grouped already,\n // we cannot change properties of objects.\n // Thus we need to set options to group without objects,\n isAlreadyGrouped && this.callSuper('initialize', options);\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (!isAlreadyGrouped) {\n var center = options && options.centerPoint;\n // we want to set origins before calculating the bounding box.\n // so that the topleft can be set with that in mind.\n // if specific top and left are passed, are overwritten later\n // with the callSuper('initialize', options)\n if (options.originX !== undefined) {\n this.originX = options.originX;\n }\n if (options.originY !== undefined) {\n this.originY = options.originY;\n }\n // if coming from svg i do not want to calc bounds.\n // i assume width and height are passed along options\n center || this._calcBounds();\n this._updateObjectsCoords(center);\n delete options.centerPoint;\n this.callSuper('initialize', options);\n }\n else {\n this._updateObjectsACoords();\n }\n\n this.setCoords();\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsACoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n for (var i = this._objects.length; i--; ){\n this._objects[i].setCoords(ignoreZoom, skipAbsolute);\n }\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsCoords: function(center) {\n var center = center || this.getCenterPoint();\n for (var i = this._objects.length; i--; ){\n this._updateObjectCoords(this._objects[i], center);\n }\n },\n\n /**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\n _updateObjectCoords: function(object, center) {\n var objectLeft = object.left,\n objectTop = object.top,\n ignoreZoom = true, skipAbsolute = true;\n\n object.set({\n left: objectLeft - center.x,\n top: objectTop - center.y\n });\n object.group = this;\n object.setCoords(ignoreZoom, skipAbsolute);\n },\n\n /**\n * Returns string represenation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Adds an object to a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n addWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n if (object) {\n this._objects.push(object);\n object.group = this;\n object._set('canvas', this.canvas);\n }\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * Removes an object from a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n removeWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n\n this.remove(object);\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * @private\n */\n _onObjectAdded: function(object) {\n this.dirty = true;\n object.group = this;\n object._set('canvas', this.canvas);\n },\n\n /**\n * @private\n */\n _onObjectRemoved: function(object) {\n this.dirty = true;\n delete object.group;\n },\n\n /**\n * @private\n */\n _set: function(key, value) {\n var i = this._objects.length;\n if (this.useSetOnGroup) {\n while (i--) {\n this._objects[i].setOnGroup(key, value);\n }\n }\n if (key === 'canvas') {\n while (i--) {\n this._objects[i]._set(key, value);\n }\n }\n fabric.Object.prototype._set.call(this, key, value);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var _includeDefaultValues = this.includeDefaultValues;\n var objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Returns object representation of an instance, in dataless mode.\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var objsToObject, sourcePath = this.sourcePath;\n if (sourcePath) {\n objsToObject = sourcePath;\n }\n else {\n var _includeDefaultValues = this.includeDefaultValues;\n objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toDatalessObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n }\n var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Renders instance on a given context\n * @param {CanvasRenderingContext2D} ctx context to render instance on\n */\n render: function(ctx) {\n this._transformDone = true;\n this.callSuper('render', ctx);\n this._transformDone = false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group is already cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n var ownCache = fabric.Object.prototype.shouldCache.call(this);\n if (ownCache) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n this.ownCaching = false;\n return false;\n }\n }\n }\n return ownCache;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * @return {Boolean}\n */\n willDrawShadow: function() {\n if (fabric.Object.prototype.willDrawShadow.call(this)) {\n return true;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return this.ownCaching || (this.group && this.group.isOnACache());\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i].render(ctx);\n }\n this._drawClipPath(ctx);\n },\n\n /**\n * Check if cache is dirty\n */\n isCacheDirty: function(skipCanvas) {\n if (this.callSuper('isCacheDirty', skipCanvas)) {\n return true;\n }\n if (!this.statefullCache) {\n return false;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].isCacheDirty(true)) {\n if (this._cacheCanvas) {\n // if this group has not a cache canvas there is nothing to clean\n var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Retores original state of each of group objects (original state is that which was before group was created).\n * @private\n * @return {fabric.Group} thisArg\n * @chainable\n */\n _restoreObjectsState: function() {\n this._objects.forEach(this._restoreObjectState, this);\n return this;\n },\n\n /**\n * Realises the transform from this group onto the supplied object\n * i.e. it tells you what would happen if the supplied object was in\n * the group, and then the group was destroyed. It mutates the supplied\n * object.\n * @param {fabric.Object} object\n * @return {fabric.Object} transformedObject\n */\n realizeTransform: function(object) {\n var matrix = object.calcTransformMatrix(),\n options = fabric.util.qrDecompose(matrix),\n center = new fabric.Point(options.translateX, options.translateY);\n object.flipX = false;\n object.flipY = false;\n object.set('scaleX', options.scaleX);\n object.set('scaleY', options.scaleY);\n object.skewX = options.skewX;\n object.skewY = options.skewY;\n object.angle = options.angle;\n object.setPositionByOrigin(center, 'center', 'center');\n return object;\n },\n\n /**\n * Restores original state of a specified object in group\n * @private\n * @param {fabric.Object} object\n * @return {fabric.Group} thisArg\n */\n _restoreObjectState: function(object) {\n this.realizeTransform(object);\n object.setCoords();\n delete object.group;\n return this;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n destroy: function() {\n // when group is destroyed objects needs to get a repaint to be eventually\n // displayed on canvas.\n this._objects.forEach(function(object) {\n object.set('dirty', true);\n });\n return this._restoreObjectsState();\n },\n\n /**\n * make a group an active selection, remove the group from canvas\n * the group has to be on canvas for this to work.\n * @return {fabric.ActiveSelection} thisArg\n * @chainable\n */\n toActiveSelection: function() {\n if (!this.canvas) {\n return;\n }\n var objects = this._objects, canvas = this.canvas;\n this._objects = [];\n var options = this.toObject();\n delete options.objects;\n var activeSelection = new fabric.ActiveSelection([]);\n activeSelection.set(options);\n activeSelection.type = 'activeSelection';\n canvas.remove(this);\n objects.forEach(function(object) {\n object.group = activeSelection;\n object.dirty = true;\n canvas.add(object);\n });\n activeSelection.canvas = canvas;\n activeSelection._objects = objects;\n canvas._activeObject = activeSelection;\n activeSelection.setCoords();\n return activeSelection;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n ungroupOnCanvas: function() {\n return this._restoreObjectsState();\n },\n\n /**\n * Sets coordinates of all objects inside group\n * @return {fabric.Group} thisArg\n * @chainable\n */\n setObjectsCoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n this.forEachObject(function(object) {\n object.setCoords(ignoreZoom, skipAbsolute);\n });\n return this;\n },\n\n /**\n * @private\n */\n _calcBounds: function(onlyWidthHeight) {\n var aX = [],\n aY = [],\n o, prop,\n props = ['tr', 'br', 'bl', 'tl'],\n i = 0, iLen = this._objects.length,\n j, jLen = props.length,\n ignoreZoom = true;\n\n for ( ; i < iLen; ++i) {\n o = this._objects[i];\n o.setCoords(ignoreZoom);\n for (j = 0; j < jLen; j++) {\n prop = props[j];\n aX.push(o.oCoords[prop].x);\n aY.push(o.oCoords[prop].y);\n }\n }\n\n this._getBounds(aX, aY, onlyWidthHeight);\n },\n\n /**\n * @private\n */\n _getBounds: function(aX, aY, onlyWidthHeight) {\n var minXY = new fabric.Point(min(aX), min(aY)),\n maxXY = new fabric.Point(max(aX), max(aY)),\n top = minXY.y || 0, left = minXY.x || 0,\n width = (maxXY.x - minXY.x) || 0,\n height = (maxXY.y - minXY.y) || 0;\n this.width = width;\n this.height = height;\n if (!onlyWidthHeight) {\n // the bounding box always finds the topleft most corner.\n // whatever is the group origin, we set up here the left/top position.\n this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n }\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function(reviver) {\n var svgString = ['\\n'];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t\\t', this._objects[i].toSVG(reviver));\n }\n svgString.push('\\n');\n return svgString;\n },\n\n /**\n * Returns styles-string for svg-export, specific version for group\n * @return {String}\n */\n getSvgStyles: function() {\n var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ?\n 'opacity: ' + this.opacity + ';' : '',\n visibility = this.visible ? '' : ' visibility: hidden;';\n return [\n opacity,\n this.getSvgFilter(),\n visibility\n ].join('');\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var svgString = [];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t', this._objects[i].toClipPathSVG(reviver));\n }\n\n return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver });\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Group} instance from an object representation\n * @static\n * @memberOf fabric.Group\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an group instance is created\n */\n fabric.Group.fromObject = function(object, callback) {\n var objects = object.objects,\n options = fabric.util.object.clone(object, true);\n delete options.objects;\n if (typeof objects === 'string') {\n // it has to be an url or something went wrong.\n fabric.loadSVGFromURL(objects, function (elements) {\n var group = fabric.util.groupSVGElements(elements, object, objects);\n group.set(options);\n callback && callback(group);\n });\n return;\n }\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) {\n var options = fabric.util.object.clone(object, true);\n options.clipPath = enlivedClipPath[0];\n delete options.objects;\n callback && callback(new fabric.Group(enlivenedObjects, options, true));\n });\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.ActiveSelection) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.ActiveSelection\n * @extends fabric.Group\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n */\n fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'activeSelection',\n\n /**\n * Constructor\n * @param {Object} objects ActiveSelection objects\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(objects, options) {\n options = options || {};\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (options.originX) {\n this.originX = options.originX;\n }\n if (options.originY) {\n this.originY = options.originY;\n }\n this._calcBounds();\n this._updateObjectsCoords();\n fabric.Object.prototype.initialize.call(this, options);\n this.setCoords();\n },\n\n /**\n * Change te activeSelection to a normal group,\n * High level function that automatically adds it to canvas as\n * active object. no events fired.\n * @since 2.0.0\n * @return {fabric.Group}\n */\n toGroup: function() {\n var objects = this._objects.concat();\n this._objects = [];\n var options = fabric.Object.prototype.toObject.call(this);\n var newGroup = new fabric.Group([]);\n delete options.type;\n newGroup.set(options);\n objects.forEach(function(object) {\n object.canvas.remove(object);\n object.group = newGroup;\n });\n newGroup._objects = objects;\n if (!this.canvas) {\n return newGroup;\n }\n var canvas = this.canvas;\n canvas.add(newGroup);\n canvas._activeObject = newGroup;\n newGroup.setCoords();\n return newGroup;\n },\n\n /**\n * If returns true, deselection is cancelled.\n * @since 2.0.0\n * @return {Boolean} [cancel]\n */\n onDeselect: function() {\n this.destroy();\n return false;\n },\n\n /**\n * Returns string representation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return false;\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n * @param {Object} [childrenOverride] properties to override the children overrides\n */\n _renderControls: function(ctx, styleOverride, childrenOverride) {\n ctx.save();\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n this.callSuper('_renderControls', ctx, styleOverride);\n childrenOverride = childrenOverride || { };\n if (typeof childrenOverride.hasControls === 'undefined') {\n childrenOverride.hasControls = false;\n }\n if (typeof childrenOverride.hasRotatingPoint === 'undefined') {\n childrenOverride.hasRotatingPoint = false;\n }\n childrenOverride.forActiveSelection = true;\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i]._renderControls(ctx, childrenOverride);\n }\n ctx.restore();\n },\n });\n\n /**\n * Returns {@link fabric.ActiveSelection} instance from an object representation\n * @static\n * @memberOf fabric.ActiveSelection\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n */\n fabric.ActiveSelection.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n delete object.objects;\n callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var extend = fabric.util.object.extend;\n\n if (!global.fabric) {\n global.fabric = { };\n }\n\n if (global.fabric.Image) {\n fabric.warn('fabric.Image is already defined.');\n return;\n }\n\n /**\n * Image class\n * @class fabric.Image\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n * @see {@link fabric.Image#initialize} for constructor definition\n */\n fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'image',\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * Width of a stroke.\n * For image quality a stroke multiple of 2 gives better results.\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`.\n * This allows for relative urls as image src.\n * @since 2.7.0\n * @type Boolean\n * @default\n */\n srcFromAttribute: false,\n\n /**\n * private\n * contains last value of scaleX to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleX: 1,\n\n /**\n * private\n * contains last value of scaleY to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleY: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingX: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingY: 1,\n\n /**\n * minimum scale factor under which any resizeFilter is triggered to resize the image\n * 0 will disable the automatic resize. 1 will trigger automatically always.\n * number bigger than 1 are not implemented yet.\n * @type Number\n */\n minimumScaleTrigger: 0.5,\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n /**\n * key used to retrieve the texture representing this image\n * @since 2.0.0\n * @type String\n * @default\n */\n cacheKey: '',\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropX: 0,\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropY: 0,\n\n /**\n * Constructor\n * @param {HTMLImageElement | String} element Image element\n * @param {Object} [options] Options object\n * @param {function} [callback] callback function to call after eventual filters applied.\n * @return {fabric.Image} thisArg\n */\n initialize: function(element, options) {\n options || (options = { });\n this.filters = [];\n this.cacheKey = 'texture' + fabric.Object.__uid++;\n this.callSuper('initialize', options);\n this._initElement(element, options);\n },\n\n /**\n * Returns image element which this instance if based on\n * @return {HTMLImageElement} Image element\n */\n getElement: function() {\n return this._element || {};\n },\n\n /**\n * Sets image element for this instance to a specified one.\n * If filters defined they are applied to new image.\n * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n * @param {HTMLImageElement} element\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setElement: function(element, options) {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._element = element;\n this._originalElement = element;\n this._initConfig(options);\n if (this.filters.length !== 0) {\n this.applyFilters();\n }\n // resizeFilters work on the already filtered copy.\n // we need to apply resizeFilters AFTER normal filters.\n // applyResizeFilters is run more often than normal fiters\n // and is triggered by user interactions rather than dev code\n if (this.resizeFilter) {\n this.applyResizeFilters();\n }\n return this;\n },\n\n /**\n * Delete a single texture if in webgl mode\n */\n removeTexture: function(key) {\n var backend = fabric.filterBackend;\n if (backend && backend.evictCachesForKey) {\n backend.evictCachesForKey(key);\n }\n },\n\n /**\n * Delete textures, reference to elements and eventually JSDOM cleanup\n */\n dispose: function() {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._cacheContext = undefined;\n ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n },\n\n /**\n * Sets crossOrigin value (on an instance and corresponding image element)\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setCrossOrigin: function(value) {\n this.crossOrigin = value;\n this._element.crossOrigin = value;\n\n return this;\n },\n\n /**\n * Returns original size of an image\n * @return {Object} Object with \"width\" and \"height\" properties\n */\n getOriginalSize: function() {\n var element = this.getElement();\n return {\n width: element.naturalWidth || element.width,\n height: element.naturalHeight || element.height\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _stroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n var w = this.width / 2, h = this.height / 2;\n ctx.beginPath();\n ctx.moveTo(-w, -h);\n ctx.lineTo(w, -h);\n ctx.lineTo(w, h);\n ctx.lineTo(-w, h);\n ctx.lineTo(-w, -h);\n ctx.closePath();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.save();\n this._setStrokeStyles(ctx, this);\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var filters = [];\n\n this.filters.forEach(function(filterObj) {\n if (filterObj) {\n filters.push(filterObj.toObject());\n }\n });\n var object = extend(\n this.callSuper(\n 'toObject',\n ['crossOrigin', 'cropX', 'cropY'].concat(propertiesToInclude)\n ), {\n src: this.getSrc(),\n filters: filters,\n });\n if (this.resizeFilter) {\n object.resizeFilter = this.resizeFilter.toObject();\n }\n return object;\n },\n\n /**\n * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,hight.\n * @return {Boolean}\n */\n hasCrop: function() {\n return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString = [], imageMarkup = [], strokeSvg,\n x = -this.width / 2, y = -this.height / 2, clipPath = '';\n if (this.hasCrop()) {\n var clipPathId = fabric.Object.__uid++;\n svgString.push(\n '\\n',\n '\\t\\n',\n '\\n'\n );\n clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n }\n imageMarkup.push('\\t element with actual transformation, then offsetting object to the top/left\n // so that object's center aligns with container's left/top\n '\" width=\"', this._element.width || this._element.naturalWidth,\n '\" height=\"', this._element.height || this._element.height,\n '\"', clipPath,\n '>\\n');\n\n if (this.stroke || this.strokeDashArray) {\n var origFill = this.fill;\n this.fill = null;\n strokeSvg = [\n '\\t\\n'\n ];\n this.fill = origFill;\n }\n if (this.paintFirst !== 'fill') {\n svgString = svgString.concat(strokeSvg, imageMarkup);\n }\n else {\n svgString = svgString.concat(imageMarkup, strokeSvg);\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns source of an image\n * @param {Boolean} filtered indicates if the src is needed for svg\n * @return {String} Source of an image\n */\n getSrc: function(filtered) {\n var element = filtered ? this._element : this._originalElement;\n if (element) {\n if (element.toDataURL) {\n return element.toDataURL();\n }\n\n if (this.srcFromAttribute) {\n return element.getAttribute('src');\n }\n else {\n return element.src;\n }\n }\n else {\n return this.src || '';\n }\n },\n\n /**\n * Sets source of an image\n * @param {String} src Source string (URL)\n * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setSrc: function(src, callback, options) {\n fabric.util.loadImage(src, function(img) {\n this.setElement(img, options);\n this._setWidthHeight();\n callback && callback(this);\n }, this, options && options.crossOrigin);\n return this;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n applyResizeFilters: function() {\n var filter = this.resizeFilter,\n minimumScale = this.minimumScaleTrigger,\n objectScale = this.getTotalObjectScaling(),\n scaleX = objectScale.scaleX,\n scaleY = objectScale.scaleY,\n elementToFilter = this._filteredEl || this._originalElement;\n if (this.group) {\n this.set('dirty', true);\n }\n if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n this._element = elementToFilter;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n this._lastScaleX = scaleX;\n this._lastScaleY = scaleY;\n return;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n var canvasEl = fabric.util.createCanvasElement(),\n cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._lastScaleX = filter.scaleX = scaleX;\n this._lastScaleY = filter.scaleY = scaleY;\n fabric.filterBackend.applyFilters(\n [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n this._filterScalingX = canvasEl.width / this._originalElement.width;\n this._filterScalingY = canvasEl.height / this._originalElement.height;\n },\n\n /**\n * Applies filters assigned to this image (from \"filters\" array) or from filter param\n * @method applyFilters\n * @param {Array} filters to be applied\n * @param {Boolean} forResizing specify if the filter operation is a resize operation\n * @return {thisArg} return the fabric.Image object\n * @chainable\n */\n applyFilters: function(filters) {\n\n filters = filters || this.filters || [];\n filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n this.set('dirty', true);\n\n // needs to clear out or WEBGL will not resize correctly\n this.removeTexture(this.cacheKey + '_filtered');\n\n if (filters.length === 0) {\n this._element = this._originalElement;\n this._filteredEl = null;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n return this;\n }\n\n var imgElement = this._originalElement,\n sourceWidth = imgElement.naturalWidth || imgElement.width,\n sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n if (this._element === this._originalElement) {\n // if the element is the same we need to create a new element\n var canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._filteredEl = canvasEl;\n }\n else {\n // clear the existing element to get new filter data\n // also dereference the eventual resized _element\n this._element = this._filteredEl;\n this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n this._lastScaleX = 1;\n this._lastScaleY = 1;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n fabric.filterBackend.applyFilters(\n filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n if (this._originalElement.width !== this._element.width ||\n this._originalElement.height !== this._element.height) {\n this._filterScalingX = this._element.width / this._originalElement.width;\n this._filterScalingY = this._element.height / this._originalElement.height;\n }\n return this;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n this.applyResizeFilters();\n }\n this._stroke(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * This is the special image version where we would like to avoid caching where possible.\n * Essentially images do not benefit from caching. They may require caching, and in that\n * case we do it. Also caching an image usually ends in a loss of details.\n * A full performance audit should be done.\n * @return {Boolean}\n */\n shouldCache: function() {\n return this.needsItsOwnCache();\n },\n\n _renderFill: function(ctx) {\n var elementToDraw = this._element;\n if (!elementToDraw) {\n return;\n }\n var scaleX = this._filterScalingX, scaleY = this._filterScalingY,\n w = this.width, h = this.height, min = Math.min, max = Math.max,\n // crop values cannot be lesser than 0.\n cropX = max(this.cropX, 0), cropY = max(this.cropY, 0),\n elWidth = elementToDraw.naturalWidth || elementToDraw.width,\n elHeight = elementToDraw.naturalHeight || elementToDraw.height,\n sX = cropX * scaleX,\n sY = cropY * scaleY,\n // the width height cannot exceed element width/height, starting from the crop offset.\n sW = min(w * scaleX, elWidth - sX),\n sH = min(h * scaleY, elHeight - sY),\n x = -w / 2, y = -h / 2,\n maxDestW = min(w, elWidth / scaleX - cropX),\n maxDestH = min(h, elHeight / scaleX - cropY);\n\n elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, maxDestW, maxDestH);\n },\n\n /**\n * needed to check if image needs resize\n * @private\n */\n _needsResize: function() {\n var scale = this.getTotalObjectScaling();\n return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n },\n\n /**\n * @private\n */\n _resetWidthHeight: function() {\n this.set(this.getOriginalSize());\n },\n\n /**\n * The Image class's initialization method. This method is automatically\n * called by the constructor.\n * @private\n * @param {HTMLImageElement|String} element The element representing the image\n * @param {Object} [options] Options object\n */\n _initElement: function(element, options) {\n this.setElement(fabric.util.getById(element), options);\n fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initConfig: function(options) {\n options || (options = { });\n this.setOptions(options);\n this._setWidthHeight(options);\n if (this._element && this.crossOrigin) {\n this._element.crossOrigin = this.crossOrigin;\n }\n },\n\n /**\n * @private\n * @param {Array} filters to be initialized\n * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n */\n _initFilters: function(filters, callback) {\n if (filters && filters.length) {\n fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, 'fabric.Image.filters');\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * Set the width and the height of the image object, using the element or the\n * options.\n * @param {Object} [options] Object with width/height properties\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n var el = this.getElement();\n this.width = options.width || el.naturalWidth || el.width || 0;\n this.height = options.height || el.naturalHeight || el.height || 0;\n },\n\n /**\n * Calculate offset for center and scale factor for the image in order to respect\n * the preserveAspectRatio attribute\n * @private\n * @return {Object}\n */\n parsePreserveAspectRatioAttribute: function() {\n var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n rWidth = this._element.width, rHeight = this._element.height,\n scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n if (pAR.meetOrSlice === 'meet') {\n scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n offset = (pWidth - rWidth * scaleX) / 2;\n if (pAR.alignX === 'Min') {\n offsetLeft = -offset;\n }\n if (pAR.alignX === 'Max') {\n offsetLeft = offset;\n }\n offset = (pHeight - rHeight * scaleY) / 2;\n if (pAR.alignY === 'Min') {\n offsetTop = -offset;\n }\n if (pAR.alignY === 'Max') {\n offsetTop = offset;\n }\n }\n if (pAR.meetOrSlice === 'slice') {\n scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n offset = rWidth - pWidth / scaleX;\n if (pAR.alignX === 'Mid') {\n cropX = offset / 2;\n }\n if (pAR.alignX === 'Max') {\n cropX = offset;\n }\n offset = rHeight - pHeight / scaleY;\n if (pAR.alignY === 'Mid') {\n cropY = offset / 2;\n }\n if (pAR.alignY === 'Max') {\n cropY = offset;\n }\n rWidth = pWidth / scaleX;\n rHeight = pHeight / scaleY;\n }\n }\n else {\n scaleX = pWidth / rWidth;\n scaleY = pHeight / rHeight;\n }\n return {\n width: rWidth,\n height: rHeight,\n scaleX: scaleX,\n scaleY: scaleY,\n offsetLeft: offsetLeft,\n offsetTop: offsetTop,\n cropX: cropX,\n cropY: cropY\n };\n }\n });\n\n /**\n * Default CSS class name for canvas\n * @static\n * @type String\n * @default\n */\n fabric.Image.CSS_CANVAS = 'canvas-img';\n\n /**\n * Alias for getSrc\n * @static\n */\n fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n /**\n * Creates an instance of fabric.Image from its object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} callback Callback to invoke when an image instance is created\n */\n fabric.Image.fromObject = function(_object, callback) {\n var object = fabric.util.object.clone(_object);\n fabric.util.loadImage(object.src, function(img, error) {\n if (error) {\n callback && callback(null, error);\n return;\n }\n fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n object.filters = filters || [];\n fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n object.resizeFilter = resizeFilters[0];\n fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n object.clipPath = enlivedProps[0];\n var image = new fabric.Image(img, object);\n callback(image);\n });\n });\n });\n }, null, object.crossOrigin);\n };\n\n /**\n * Creates an instance of fabric.Image from an URL string\n * @static\n * @param {String} url URL to create an image from\n * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument)\n * @param {Object} [imgOptions] Options object\n */\n fabric.Image.fromURL = function(url, callback, imgOptions) {\n fabric.util.loadImage(url, function(img) {\n callback && callback(new fabric.Image(img, imgOptions));\n }, null, imgOptions && imgOptions.crossOrigin);\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n * @static\n * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n */\n fabric.Image.ATTRIBUTE_NAMES =\n fabric.SHARED_ATTRIBUTES.concat('x y width height preserveAspectRatio xlink:href crossOrigin'.split(' '));\n\n /**\n * Returns {@link fabric.Image} instance from an SVG element\n * @static\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} callback Callback to execute when fabric.Image object is created\n * @return {fabric.Image} Instance of fabric.Image\n */\n fabric.Image.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * @private\n * @return {Number} angle value\n */\n _getAngleValueForStraighten: function() {\n var angle = this.angle % 360;\n if (angle > 0) {\n return Math.round((angle - 1) / 90) * 90;\n }\n return Math.round(angle / 90) * 90;\n },\n\n /**\n * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n straighten: function() {\n this.rotate(this._getAngleValueForStraighten());\n return this;\n },\n\n /**\n * Same as {@link fabric.Object.prototype.straighten} but with animation\n * @param {Object} callbacks Object with callback functions\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Object} thisArg\n * @chainable\n */\n fxStraighten: function(callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: this.get('angle'),\n endValue: this._getAngleValueForStraighten(),\n duration: this.FX_DURATION,\n onChange: function(value) {\n _this.rotate(value);\n onChange();\n },\n onComplete: function() {\n _this.setCoords();\n onComplete();\n },\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Straightens object, then rerenders canvas\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n straightenObject: function (object) {\n object.straighten();\n this.requestRenderAll();\n return this;\n },\n\n /**\n * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxStraightenObject: function (object) {\n object.fxStraighten({\n onChange: this.requestRenderAllBound\n });\n return this;\n }\n});\n\n\n(function() {\n\n 'use strict';\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n function testPrecision(gl, precision){\n var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n return false;\n }\n return true;\n }\n\n /**\n * Indicate whether this filtering backend is supported by the user's browser.\n * @param {Number} tileSize check if the tileSize is supported\n * @returns {Boolean} Whether the user's browser supports WebGL.\n */\n fabric.isWebglSupported = function(tileSize) {\n if (fabric.isLikelyNode) {\n return false;\n }\n tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n var canvas = document.createElement('canvas');\n var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n var isSupported = false;\n // eslint-disable-next-line\n if (gl) {\n fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n isSupported = fabric.maxTextureSize >= tileSize;\n var precisions = ['highp', 'mediump', 'lowp'];\n for (var i = 0; i < 3; i++){\n if (testPrecision(gl, precisions[i])){\n fabric.webGlPrecision = precisions[i];\n break;\n };\n }\n }\n this.isSupported = isSupported;\n return isSupported;\n };\n\n fabric.WebglFilterBackend = WebglFilterBackend;\n\n /**\n * WebGL filter backend.\n */\n function WebglFilterBackend(options) {\n if (options && options.tileSize) {\n this.tileSize = options.tileSize;\n }\n this.setupGLContext(this.tileSize, this.tileSize);\n this.captureGPUInfo();\n };\n\n WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n tileSize: 2048,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you problably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n */\n setupGLContext: function(width, height) {\n this.dispose();\n this.createWebGLCanvas(width, height);\n // eslint-disable-next-line\n this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n this.chooseFastestCopyGLTo2DMethod(width, height);\n },\n\n /**\n * Pick a method to copy data from GL context to 2d canvas. In some browsers using\n * putImageData is faster than drawImage for that specific operation.\n */\n chooseFastestCopyGLTo2DMethod: function(width, height) {\n var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData;\n try {\n new ImageData(1, 1);\n canUseImageData = true;\n }\n catch (e) {\n canUseImageData = false;\n }\n // eslint-disable-next-line no-undef\n var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n // eslint-disable-next-line no-undef\n var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n return;\n }\n\n var targetCanvas = fabric.util.createCanvasElement();\n // eslint-disable-next-line no-undef\n var imageBuffer = new ArrayBuffer(width * height * 4);\n if (fabric.forceGLPutImageData) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n return;\n }\n var testContext = {\n imageBuffer: imageBuffer,\n destinationWidth: width,\n destinationHeight: height,\n targetCanvas: targetCanvas\n };\n var startTime, drawImageTime, putImageDataTime;\n targetCanvas.width = width;\n targetCanvas.height = height;\n\n startTime = window.performance.now();\n copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n drawImageTime = window.performance.now() - startTime;\n\n startTime = window.performance.now();\n copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n putImageDataTime = window.performance.now() - startTime;\n\n if (drawImageTime > putImageDataTime) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n }\n else {\n this.copyGLTo2D = copyGLTo2DDrawImage;\n }\n },\n\n /**\n * Create a canvas element and associated WebGL context and attaches them as\n * class properties to the GLFilterBackend class.\n */\n createWebGLCanvas: function(width, height) {\n var canvas = fabric.util.createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n var glOptions = {\n alpha: true,\n premultipliedAlpha: false,\n depth: false,\n stencil: false,\n antialias: false\n },\n gl = canvas.getContext('webgl', glOptions);\n if (!gl) {\n gl = canvas.getContext('experimental-webgl', glOptions);\n }\n if (!gl) {\n return;\n }\n gl.clearColor(0, 0, 0, 0);\n // this canvas can fire webglcontextlost and webglcontextrestored\n this.canvas = canvas;\n this.gl = gl;\n },\n\n /**\n * Attempts to apply the requested filters to the source provided, drawing the filtered output\n * to the provided target canvas.\n *\n * @param {Array} filters The filters to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n * @param {Number} width The width of the source input.\n * @param {Number} height The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n * omitted, caching will be skipped.\n */\n applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n var gl = this.gl;\n var cachedTexture;\n if (cacheKey) {\n cachedTexture = this.getCachedTexture(cacheKey, source);\n }\n var pipelineState = {\n originalWidth: source.width || source.originalWidth,\n originalHeight: source.height || source.originalHeight,\n sourceWidth: width,\n sourceHeight: height,\n destinationWidth: width,\n destinationHeight: height,\n context: gl,\n sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n targetTexture: this.createTexture(gl, width, height),\n originalTexture: cachedTexture ||\n this.createTexture(gl, width, height, !cachedTexture && source),\n passes: filters.length,\n webgl: true,\n aPosition: this.aPosition,\n programCache: this.programCache,\n pass: 0,\n filterBackend: this,\n targetCanvas: targetCanvas\n };\n var tempFbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n resizeCanvasIfNeeded(pipelineState);\n this.copyGLTo2D(gl, pipelineState);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(pipelineState.sourceTexture);\n gl.deleteTexture(pipelineState.targetTexture);\n gl.deleteFramebuffer(tempFbo);\n targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n return pipelineState;\n },\n\n /**\n * Detach event listeners, remove references, and clean up caches.\n */\n dispose: function() {\n if (this.canvas) {\n this.canvas = null;\n this.gl = null;\n }\n this.clearWebGLCaches();\n },\n\n /**\n * Wipe out WebGL-related caches.\n */\n clearWebGLCaches: function() {\n this.programCache = {};\n this.textureCache = {};\n },\n\n /**\n * Create a WebGL texture object.\n *\n * Accepts specific dimensions to initialize the textuer to or a source image.\n *\n * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n * @param {Number} width The width to initialize the texture at.\n * @param {Number} height The height to initialize the texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n * @returns {WebGLTexture}\n */\n createTexture: function(gl, width, height, textureImageSource) {\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (textureImageSource) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n return texture;\n },\n\n /**\n * Can be optionally used to get a texture from the cache array\n *\n * If an existing texture is not found, a new texture is created and cached.\n *\n * @param {String} uniqueId A cache key to use to find an existing texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n * texture cache entry if one does not already exist.\n */\n getCachedTexture: function(uniqueId, textureImageSource) {\n if (this.textureCache[uniqueId]) {\n return this.textureCache[uniqueId];\n }\n else {\n var texture = this.createTexture(\n this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n this.textureCache[uniqueId] = texture;\n return texture;\n }\n },\n\n /**\n * Clear out cached resources related to a source image that has been\n * filtered previously.\n *\n * @param {String} cacheKey The cache key provided when the source image was filtered.\n */\n evictCachesForKey: function(cacheKey) {\n if (this.textureCache[cacheKey]) {\n this.gl.deleteTexture(this.textureCache[cacheKey]);\n delete this.textureCache[cacheKey];\n }\n },\n\n copyGLTo2D: copyGLTo2DDrawImage,\n\n /**\n * Attempt to extract GPU information strings from a WebGL context.\n *\n * Useful information when debugging or blacklisting specific GPUs.\n *\n * @returns {Object} A GPU info object with renderer and vendor strings.\n */\n captureGPUInfo: function() {\n if (this.gpuInfo) {\n return this.gpuInfo;\n }\n var gl = this.gl, gpuInfo = { renderer: '', vendor: '' };\n if (!gl) {\n return gpuInfo;\n }\n var ext = gl.getExtension('WEBGL_debug_renderer_info');\n if (ext) {\n var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n if (renderer) {\n gpuInfo.renderer = renderer.toLowerCase();\n }\n if (vendor) {\n gpuInfo.vendor = vendor.toLowerCase();\n }\n }\n this.gpuInfo = gpuInfo;\n return gpuInfo;\n },\n };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n var targetCanvas = pipelineState.targetCanvas,\n width = targetCanvas.width, height = targetCanvas.height,\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight;\n\n if (width !== dWidth || height !== dHeight) {\n targetCanvas.width = dWidth;\n targetCanvas.height = dHeight;\n }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n ctx = targetCanvas.getContext('2d');\n ctx.translate(0, targetCanvas.height); // move it down again\n ctx.scale(1, -1); // vertical flip\n // where is my image on the big glcanvas?\n var sourceY = glCanvas.height - targetCanvas.height;\n ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight,\n numBytes = dWidth * dHeight * 4;\n\n // eslint-disable-next-line no-undef\n var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n // eslint-disable-next-line no-undef\n var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n 'use strict';\n\n var noop = function() {};\n\n fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n /**\n * Canvas 2D filter backend.\n */\n function Canvas2dFilterBackend() {};\n\n Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n evictCachesForKey: noop,\n dispose: noop,\n clearWebGLCaches: noop,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n var ctx = targetCanvas.getContext('2d');\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var pipelineState = {\n sourceWidth: sourceWidth,\n sourceHeight: sourceHeight,\n imageData: imageData,\n originalEl: sourceElement,\n originalImageData: originalImageData,\n canvasEl: targetCanvas,\n ctx: ctx,\n filterBackend: this,\n };\n filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n targetCanvas.width = pipelineState.imageData.width;\n targetCanvas.height = pipelineState.imageData.height;\n }\n ctx.putImageData(pipelineState.imageData, 0, 0);\n return pipelineState;\n },\n\n };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image = fabric.Image || { };\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'BaseFilter',\n\n /**\n * Array of attributes to send with buffers. do not modify\n * @private\n */\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n fragmentSource: 'precision highp float;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n '}',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Sets filter's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Compile this filter's shader program.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n * @param {String} fragmentSource fragmentShader source for compilation\n * @param {String} vertexSource vertexShader source for compilation\n */\n createProgram: function(gl, fragmentSource, vertexSource) {\n fragmentSource = fragmentSource || this.fragmentSource;\n vertexSource = vertexSource || this.vertexSource;\n if (fabric.webGlPrecision !== 'highp'){\n fragmentSource = fragmentSource.replace(\n /precision highp float/g,\n 'precision ' + fabric.webGlPrecision + ' float'\n );\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Vertex shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(vertexShader)\n );\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Fragment shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(fragmentShader)\n );\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Shader link error for \"${this.type}\" ' +\n gl.getProgramInfoLog(program)\n );\n }\n\n var attributeLocations = this.getAttributeLocations(gl, program);\n var uniformLocations = this.getUniformLocations(gl, program) || { };\n uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n return {\n program: program,\n attributeLocations: attributeLocations,\n uniformLocations: uniformLocations\n };\n },\n\n /**\n * Return a map of attribute names to WebGLAttributeLocation objects.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n * @returns {Object} A map of attribute names to attribute locations.\n */\n getAttributeLocations: function(gl, program) {\n return {\n aPosition: gl.getAttribLocation(program, 'aPosition'),\n };\n },\n\n /**\n * Return a map of uniform names to WebGLUniformLocation objects.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n * @returns {Object} A map of uniform names to uniform locations.\n */\n getUniformLocations: function (/* gl, program */) {\n // in case i do not need any special uniform i need to return an empty object\n return { };\n },\n\n /**\n * Send attribute data from this filter to its shader program on the GPU.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} attributeLocations A map of shader attribute names to their locations.\n */\n sendAttributeData: function(gl, attributeLocations, aPositionData) {\n var attributeLocation = attributeLocations.aPosition;\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attributeLocation);\n gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n },\n\n _setupFrameBuffer: function(options) {\n var gl = options.context, width, height;\n if (options.passes > 1) {\n width = options.destinationWidth;\n height = options.destinationHeight;\n if (options.sourceWidth !== width || options.sourceHeight !== height) {\n gl.deleteTexture(options.targetTexture);\n options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n }\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n options.targetTexture, 0);\n }\n else {\n // draw last filter on canvas and not to framebuffer.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.finish();\n }\n },\n\n _swapTextures: function(options) {\n options.passes--;\n options.pass++;\n var temp = options.targetTexture;\n options.targetTexture = options.sourceTexture;\n options.sourceTexture = temp;\n },\n\n /**\n * Generic isNeutral implementation for one parameter based filters.\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * Other filters may need their own verison ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n * @param {Object} options\n **/\n isNeutralState: function(/* options */) {\n var main = this.mainParameter,\n _class = fabric.Image.filters[this.type].prototype;\n if (main) {\n if (Array.isArray(_class[main])) {\n for (var i = _class[main].length; i--;) {\n if (this[main][i] !== _class[main][i]) {\n return false;\n }\n }\n return true;\n }\n else {\n return _class[main] === this[main];\n }\n }\n else {\n return false;\n }\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n if (!options.programCache.hasOwnProperty(this.type)) {\n options.programCache[this.type] = this.createProgram(options.context);\n }\n return options.programCache[this.type];\n },\n\n /**\n * Apply this filter using webgl.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyToWebGL: function(options) {\n var gl = options.context;\n var shader = this.retrieveShader(options);\n if (options.pass === 0 && options.originalTexture) {\n gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n }\n else {\n gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n }\n gl.useProgram(shader.program);\n this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n this.sendUniformData(gl, shader.uniformLocations);\n gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n\n bindAdditionalTexture: function(gl, texture, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // reset active texture to 0 as usual\n gl.activeTexture(gl.TEXTURE0);\n },\n\n unbindAdditionalTexture: function(gl, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n },\n\n getMainParameter: function() {\n return this[this.mainParameter];\n },\n\n setMainParameter: function(value) {\n this[this.mainParameter] = value;\n },\n\n /**\n * Send uniform data from this filter to its shader program on the GPU.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} uniformLocations A map of shader uniform names to their locations.\n */\n sendUniformData: function(/* gl, uniformLocations */) {\n // Intentionally left blank. Override me in subclasses.\n },\n\n /**\n * If needed by a 2d filter, this functions can create an helper canvas to be used\n * remember that options.targetCanvas is available for use till end of chain.\n */\n createHelpLayer: function(options) {\n if (!options.helpLayer) {\n var helpLayer = document.createElement('canvas');\n helpLayer.width = options.sourceWidth;\n helpLayer.height = options.sourceHeight;\n options.helpLayer = helpLayer;\n }\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n var object = { type: this.type }, mainP = this.mainParameter;\n if (mainP) {\n object[mainP] = this[mainP];\n }\n return object;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @return {Object} JSON\n */\n toJSON: function() {\n // delegate, not alias\n return this.toObject();\n }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n var filter = new fabric.Image.filters[object.type](object);\n callback && callback(filter);\n return filter;\n};\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Matrix filter class\n * @class fabric.Image.filters.ColorMatrix\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n * @example Kodachrome filter\n * var filter = new fabric.Image.filters.ColorMatrix({\n * matrix: [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0\n ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'ColorMatrix',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform mat4 uColorMatrix;\\n' +\n 'uniform vec4 uConstants;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color *= uColorMatrix;\\n' +\n 'color += uConstants;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Colormatrix for pixels.\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ],\n\n mainParameter: 'matrix',\n\n /**\n * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario\n * to save some calculation\n */\n colorsOnly: true,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.matrix = this.matrix.slice(0);\n },\n\n /**\n * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = data.length,\n m = this.matrix,\n r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n for (i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n if (colorsOnly) {\n data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n }\n else {\n a = data[i + 3];\n data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n uConstants: gl.getUniformLocation(program, 'uConstants'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var m = this.matrix,\n matrix = [\n m[0], m[1], m[2], m[3],\n m[5], m[6], m[7], m[8],\n m[10], m[11], m[12], m[13],\n m[15], m[16], m[17], m[18]\n ],\n constants = [m[4], m[9], m[14], m[19]];\n gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n gl.uniform4fv(uniformLocations.uConstants, constants);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] function to invoke after filter creation\n * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n */\n fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Brightness filter class\n * @class fabric.Image.filters.Brightness\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Brightness',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBrightness;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += uBrightness;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n brightness: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'brightness',\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.brightness === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n brightness = Math.round(this.brightness * 255);\n for (i = 0; i < len; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n */\n fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Adapted from html5rocks article\n * @class fabric.Image.filters.Convolute\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example Sharpen filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Blur filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter with opaqueness\n * var filter = new fabric.Image.filters.Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Convolute',\n\n /*\n * Opaque value (true/false)\n */\n opaque: false,\n\n /*\n * matrix for the filter, max 9x9\n */\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: {\n Convolute_3_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_3_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_5_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_5_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_7_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_7_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_9_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_9_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n },\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Convolute.prototype\n * @param {Object} [options] Options object\n * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n * @param {Array} [options.matrix] Filter matrix\n */\n\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var size = Math.sqrt(this.matrix.length);\n var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n var shaderSource = this.fragmentSource[cacheKey];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0,\n r, g, b, a, dstOff,\n scx, scy, srcOff, wt,\n x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0; g = 0; b = 0; a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n }\n else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n opaque: this.opaque,\n matrix: this.matrix\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n */\n fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Grayscale image filter class\n * @class fabric.Image.filters.Grayscale\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Grayscale',\n\n fragmentSource: {\n average: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n '}',\n lightness: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n luminosity: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n },\n\n\n /**\n * Grayscale mode, between 'average', 'lightness', 'luminosity'\n * @param {String} type\n * @default\n */\n mode: 'average',\n\n mainParameter: 'mode',\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length, value,\n mode = this.mode;\n for (i = 0; i < len; i += 4) {\n if (mode === 'average') {\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n }\n else if (mode === 'lightness') {\n value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n }\n else if (mode === 'luminosity') {\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n }\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var shaderSource = this.fragmentSource[this.mode];\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMode: gl.getUniformLocation(program, 'uMode'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n // default average mode.\n var mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n },\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState: function() {\n return false;\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n */\n fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Invert filter class\n * @class fabric.Image.filters.Invert\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Invert',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uInvert;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'if (uInvert == 1) {\\n' +\n 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n '} else {\\n' +\n 'gl_FragColor = color;\\n' +\n '}\\n' +\n '}',\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n invert: true,\n\n mainParameter: 'invert',\n\n /**\n * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n },\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function() {\n return !this.invert;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uInvert: gl.getUniformLocation(program, 'uInvert'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1i(uniformLocations.uInvert, this.invert);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n */\n fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Noise filter class\n * @class fabric.Image.filters.Noise\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Noise',\n\n /**\n * Fragment source for the noise program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uStepH;\\n' +\n 'uniform float uNoise;\\n' +\n 'uniform float uSeed;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'float rand(vec2 co, float seed, float vScale) {\\n' +\n 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'noise',\n\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n noise: 0,\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.noise === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n noise = this.noise, rand;\n\n for (i = 0, len = data.length; i < len; i += 4) {\n\n rand = (0.5 - Math.random()) * noise;\n\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n noise: this.noise\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n */\n fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Pixelate filter class\n * @class fabric.Image.filters.Pixelate\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Pixelate',\n\n blocksize: 4,\n\n mainParameter: 'blocksize',\n\n /**\n * Fragment source for the Pixelate program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBlocksize;\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'float blockW = uBlocksize * uStepW;\\n' +\n 'float blockH = uBlocksize * uStepW;\\n' +\n 'int posX = int(vTexCoord.x / blockW);\\n' +\n 'int posY = int(vTexCoord.y / blockH);\\n' +\n 'float fposX = float(posX);\\n' +\n 'float fposY = float(posY);\\n' +\n 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n 'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = imageData.height,\n jLen = imageData.width,\n index, i, j, r, g, b, a,\n _i, _j, _iLen, _jLen;\n\n for (i = 0; i < iLen; i += this.blocksize) {\n for (j = 0; j < jLen; j += this.blocksize) {\n\n index = (i * 4) * jLen + (j * 4);\n\n r = data[index];\n g = data[index + 1];\n b = data[index + 2];\n a = data[index + 3];\n\n _iLen = Math.min(i + this.blocksize, iLen);\n _jLen = Math.min(j + this.blocksize, jLen);\n for (_i = i; _i < _iLen; _i++) {\n for (_j = j; _j < _jLen; _j++) {\n index = (_i * 4) * jLen + (_j * 4);\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n },\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState: function() {\n return this.blocksize === 1;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n */\n fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Remove white filter class\n * @class fabric.Image.filters.RemoveColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'RemoveColor',\n\n /**\n * Color to remove, in any format understood by fabric.Color.\n * @param {String} type\n * @default\n */\n color: '#FFFFFF',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uLow;\\n' +\n 'uniform vec4 uHigh;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n 'gl_FragColor.a = 0.0;\\n' +\n '}\\n' +\n '}',\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n distance: 0.02,\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n useAlpha: false,\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.RemoveWhite.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.color=#RRGGBB] Threshold value\n * @param {Number} [options.distance=10] Distance value\n */\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n distance = this.distance * 255,\n r, g, b,\n source = new fabric.Color(this.color).getSource(),\n lowC = [\n source[0] - distance,\n source[1] - distance,\n source[2] - distance,\n ],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n\n for (i = 0; i < data.length; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]) {\n data[i + 3] = 0;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uLow: gl.getUniformLocation(program, 'uLow'),\n uHigh: gl.getUniformLocation(program, 'uHigh'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource(),\n distance = parseFloat(this.distance),\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n color: this.color,\n distance: this.distance\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n */\n fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n var matrices = {\n Brownie: [\n 0.59970,0.34553,-0.27082,0,0.186,\n -0.03770,0.86095,0.15059,0,-0.1449,\n 0.24113,-0.07441,0.44972,0,-0.02965,\n 0,0,0,1,0\n ],\n Vintage: [\n 0.62793,0.32021,-0.03965,0,0.03784,\n 0.02578,0.64411,0.03259,0,0.02926,\n 0.04660,-0.08512,0.52416,0,0.02023,\n 0,0,0,1,0\n ],\n Kodachrome: [\n 1.12855,-0.39673,-0.03992,0,0.24991,\n -0.16404,1.08352,-0.05498,0,0.09698,\n -0.16786,-0.56034,1.60148,0,0.13972,\n 0,0,0,1,0\n ],\n Technicolor: [\n 1.91252,-0.85453,-0.09155,0,0.04624,\n -0.30878,1.76589,-0.10601,0,-0.27589,\n -0.23110,-0.75018,1.84759,0,0.12137,\n 0,0,0,1,0\n ],\n Polaroid: [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0\n ],\n Sepia: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0\n ],\n BlackWhite: [\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 0, 0, 0, 1, 0,\n ]\n };\n\n for (var key in matrices) {\n filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: key,\n\n /**\n * Colormatrix for the effect\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: matrices[key],\n\n /**\n * Lock the matrix export for this kind of static, parameter less filters.\n */\n mainParameter: false,\n /**\n * Lock the colormatrix on the color part, skipping alpha\n */\n colorsOnly: true,\n\n });\n fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n }\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Blend filter class\n * @class fabric.Image.filter.BlendColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n type: 'BlendColor',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n color: '#F95C63',\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend color operation.\n **/\n alpha: 1,\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n overlay: 'if (uColor.r < 0.5) {\\n' +\n 'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n '} else {\\n' +\n 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n '}\\n' +\n 'if (uColor.g < 0.5) {\\n' +\n 'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n '} else {\\n' +\n 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n '}\\n' +\n 'if (uColor.b < 0.5) {\\n' +\n 'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n '} else {\\n' +\n 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n '}\\n',\n tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n 'gl_FragColor.rgb += uColor.rgb;\\n',\n },\n\n /**\n * build the fragment source for the filters, joining the common part with\n * the specific one.\n * @param {String} mode the mode of the filter, a key of this.fragmentSource\n * @return {String} the source to be compiled\n * @private\n */\n buildSource: function(mode) {\n return 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'gl_FragColor = color;\\n' +\n 'if (color.a > 0.0) {\\n' +\n this.fragmentSource[mode] +\n '}\\n' +\n '}';\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode, shaderSource;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n shaderSource = this.buildSource(this.mode);\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, iLen = data.length,\n tr, tg, tb,\n r, g, b,\n source, alpha1 = 1 - this.alpha;\n\n source = new fabric.Color(this.color).getSource();\n tr = source[0] * this.alpha;\n tg = source[1] * this.alpha;\n tb = source[2] * this.alpha;\n\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n break;\n case 'screen':\n data[i] = 255 - (255 - r) * (255 - tr) / 255;\n data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n break;\n case 'add':\n data[i] = r + tr;\n data[i + 1] = g + tg;\n data[i + 2] = b + tb;\n break;\n case 'diff':\n case 'difference':\n data[i] = Math.abs(r - tr);\n data[i + 1] = Math.abs(g - tg);\n data[i + 2] = Math.abs(b - tb);\n break;\n case 'subtract':\n data[i] = r - tr;\n data[i + 1] = g - tg;\n data[i + 2] = b - tb;\n break;\n case 'darken':\n data[i] = Math.min(r, tr);\n data[i + 1] = Math.min(g, tg);\n data[i + 2] = Math.min(b, tb);\n break;\n case 'lighten':\n data[i] = Math.max(r, tr);\n data[i + 1] = Math.max(g, tg);\n data[i + 2] = Math.max(b, tb);\n break;\n case 'overlay':\n data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n break;\n case 'exclusion':\n data[i] = tr + r - ((2 * tr * r) / 255);\n data[i + 1] = tg + g - ((2 * tg * g) / 255);\n data[i + 2] = tb + b - ((2 * tb * b) / 255);\n break;\n case 'tint':\n data[i] = tr + r * alpha1;\n data[i + 1] = tg + g * alpha1;\n data[i + 2] = tb + b * alpha1;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColor: gl.getUniformLocation(program, 'uColor'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource();\n source[0] = this.alpha * source[0] / 255;\n source[1] = this.alpha * source[1] / 255;\n source[2] = this.alpha * source[2] / 255;\n source[3] = this.alpha;\n gl.uniform4fv(uniformLocations.uColor, source);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n color: this.color,\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n */\n fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Image Blend filter class\n * @class fabric.Image.filter.BlendImage\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n type: 'BlendImage',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n image: null,\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend image operation.\n * not implemented.\n **/\n alpha: 1,\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'uniform mat3 uTransformMatrix;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.rgba *= color2.rgba;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n mask: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.a = color2.a;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n var shaderSource = this.fragmentSource[this.mode];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n applyToWebGL: function(options) {\n // load texture to blend.\n var gl = options.context,\n texture = this.createTexture(options.filterBackend, this.image);\n this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n this.callSuper('applyToWebGL', options);\n this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n },\n\n createTexture: function(backend, image) {\n return backend.getCachedTexture(image.cacheKey, image._element);\n },\n\n /**\n * Calculate a transformMatrix to adapt the image to blend over\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n calculateMatrix: function() {\n var image = this.image,\n width = image._element.width,\n height = image._element.height;\n return [\n 1 / image.scaleX, 0, 0,\n 0, 1 / image.scaleY, 0,\n -image.left / width, -image.top / height, 1\n ];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n resources = options.filterBackend.resources,\n data = imageData.data, iLen = data.length,\n width = imageData.width,\n height = imageData.height,\n tr, tg, tb, ta,\n r, g, b, a,\n canvas1, context, image = this.image, blendData;\n\n if (!resources.blendImage) {\n resources.blendImage = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blendImage;\n context = canvas1.getContext('2d');\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas1.width = width;\n canvas1.height = height;\n }\n else {\n context.clearRect(0, 0, width, height);\n }\n context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n context.drawImage(image._element, 0, 0, width, height);\n blendData = context.getImageData(0, 0, width, height).data;\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n\n tr = blendData[i];\n tg = blendData[i + 1];\n tb = blendData[i + 2];\n ta = blendData[i + 3];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n data[i + 3] = a * ta / 255;\n break;\n case 'mask':\n data[i + 3] = ta;\n break;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n uImage: gl.getUniformLocation(program, 'uImage'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var matrix = this.calculateMatrix();\n gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n image: this.image && this.image.toObject(),\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} callback to be invoked after filter creation\n * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n */\n fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n fabric.Image.fromObject(object.image, function(image) {\n var options = fabric.util.object.clone(object);\n options.image = image;\n callback(new fabric.Image.filters.BlendImage(options));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n ceil = Math.ceil,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Resize image filter class\n * @class fabric.Image.filters.Resize\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Resize',\n\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @param {String} resizeType\n * @default\n */\n resizeType: 'hermite',\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n scaleX: 1,\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n scaleY: 1,\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n lanczosLobes: 3,\n\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uDelta: gl.getUniformLocation(program, 'uDelta'),\n uTaps: gl.getUniformLocation(program, 'uTaps'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var fragmentShader = this.generateShader(filterWindow);\n options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n }\n return options.programCache[cacheKey];\n },\n\n getFilterWindow: function() {\n var scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n },\n\n getTaps: function() {\n var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n for (var i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n },\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader: function(filterWindow) {\n var offsets = new Array(filterWindow),\n fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n for (var i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = i + '.0 * uDelta';\n }\n\n fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n fragmentShader += 'void main() {\\n';\n fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\\n';\n fragmentShader += ' float sum = 1.0;\\n';\n\n offsets.forEach(function(offset, i) {\n fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\\n';\n });\n fragmentShader += ' gl_FragColor = color / sum;\\n';\n fragmentShader += '}';\n return fragmentShader;\n },\n\n fragmentSourceTOP: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n',\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceHeight = options.destinationHeight;\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n isNeutralState: function() {\n return this.scaleX === 1 && this.scaleY === 1;\n },\n\n lanczosCreate: function(lobes) {\n return function(x) {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n return 1.0;\n }\n x *= Math.PI;\n var xx = x / lobes;\n return (sin(x) / x) * sin(xx) / xx;\n };\n },\n\n /**\n * Applies filter to canvas element\n * @memberOf fabric.Image.filters.Resize.prototype\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} scaleX\n * @param {Number} scaleY\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n var oW = imageData.width, oH = imageData.height,\n dW = round(oW * scaleX), dH = round(oH * scaleY),\n newData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n }\n options.imageData = newData;\n },\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo: function(options, oW, oH, dW, dH) {\n var imageData = options.imageData,\n mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n stepH = oH * mult, resources = fabric.filterBackend.resources,\n tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = document.createElement('canvas');\n }\n tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n ctx = tmpCanvas.getContext('2d');\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = floor(dW);\n dH = floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < floor(stepW * mult)) {\n stepW = floor(stepW * mult);\n }\n else {\n stepW = dW;\n doneW = true;\n }\n if (dH < floor(stepH * mult)) {\n stepH = floor(stepH * mult);\n }\n else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n },\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize: function(options, oW, oH, dW, dH) {\n\n function process(u) {\n var v, i, weight, idx, a, red, green,\n blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = floor(center.y);\n a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = floor(1000 * abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = { };\n }\n for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = floor(1000 * abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n }\n else {\n return destImg;\n }\n }\n\n var srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n range2X = ceil(ratioX * this.lanczosLobes / 2),\n range2Y = ceil(ratioY * this.lanczosLobes / 2),\n cacheLanc = { }, center = { }, icenter = { };\n\n return process(0);\n },\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering: function(options, oW, oH, dW, dH) {\n var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n color, offset = 0, origPix, ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n w4 = 4 * (oW - 1), img = options.imageData,\n pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = floor(ratioX * j);\n y = floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n },\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize: function(options, oW, oH, dW, dH) {\n var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n ratioWHalf = ceil(ratioW / 2),\n ratioHHalf = ceil(ratioH / 2),\n img = options.imageData, data = img.data,\n img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n for (var j = 0; j < dH; j++) {\n for (var i = 0; i < dW; i++) {\n var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n w = sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = weight * data[dx + 3] / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n resizeType: this.resizeType,\n lanczosLobes: this.lanczosLobes\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n */\n fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Contrast filter class\n * @class fabric.Image.filters.Contrast\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Contrast({\n * contrast: 0.25\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Contrast',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uContrast;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * contrast value, range from -1 to 1.\n * @param {Number} contrast\n * @default 0\n */\n contrast: 0,\n\n mainParameter: 'contrast',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Contrast.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n */\n\n /**\n * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n if (this.contrast === 0) {\n return;\n }\n var imageData = options.imageData, i, len,\n data = imageData.data, len = data.length,\n contrast = Math.floor(this.contrast * 255),\n contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n for (i = 0; i < len; i += 4) {\n data[i] = contrastF * (data[i] - 128) + 128;\n data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uContrast: gl.getUniformLocation(program, 'uContrast'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uContrast, this.contrast);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n */\n fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Saturate filter class\n * @class fabric.Image.filters.Saturation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Saturation({\n * saturation: 100\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Saturation',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uSaturation;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float rgMax = max(color.r, color.g);\\n' +\n 'float rgbMax = max(rgMax, color.b);\\n' +\n 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n saturation: 0,\n\n mainParameter: 'saturation',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Saturate.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n */\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.saturation === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.saturation, i, max;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n */\n fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Blur filter class\n * @class fabric.Image.filters.Blur\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n type: 'Blur',\n\n /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n /* eslint-disable max-len */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'const float nSamples = 15.0;\\n' +\n 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n 'float random(vec3 scale) {\\n' +\n /* use the fragment position for a different seed per-pixel */\n 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0.0);\\n' +\n 'float total = 0.0;\\n' +\n 'float offset = random(v3offset);\\n' +\n 'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n 'float percent = (t + offset - 0.5) / nSamples;\\n' +\n 'float weight = 1.0 - abs(percent);\\n' +\n 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n 'total += weight;\\n' +\n '}\\n' +\n 'gl_FragColor = color / total;\\n' +\n '}',\n /* eslint-enable max-len */\n\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range bewteen 0 and 1.\n */\n blur: 0,\n\n mainParameter: 'blur',\n\n applyTo: function(options) {\n if (options.webgl) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n applyTo2d: function(options) {\n // paint canvasEl with current image data.\n //options.ctx.putImageData(options.imageData, 0, 0);\n options.imageData = this.simpleBlur(options);\n },\n\n simpleBlur: function(options) {\n var resources = options.filterBackend.resources, canvas1, canvas2,\n width = options.imageData.width,\n height = options.imageData.height;\n\n if (!resources.blurLayer1) {\n resources.blurLayer1 = fabric.util.createCanvasElement();\n resources.blurLayer2 = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blurLayer1;\n canvas2 = resources.blurLayer2;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n var ctx1 = canvas1.getContext('2d'),\n ctx2 = canvas2.getContext('2d'),\n nSamples = 15,\n random, percent, j, i,\n blur = this.blur * 0.06 * 0.5;\n\n // load first canvas\n ctx1.putImageData(options.imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n options.ctx.drawImage(canvas1, 0, 0);\n var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n delta: gl.getUniformLocation(program, 'uDelta'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n },\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta: function() {\n var blurScale = 1, delta = [0, 0], blur;\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n }\n else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n }\n else {\n delta[1] = blur;\n }\n return delta;\n },\n });\n\n /**\n * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n */\n filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Gamma filter class\n * @class fabric.Image.filters.Gamma\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Gamma({\n * brightness: 200\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Gamma',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec3 uGamma;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec3 correction = (1.0 / uGamma);\\n' +\n 'color.r = pow(color.r, correction.r);\\n' +\n 'color.g = pow(color.g, correction.g);\\n' +\n 'color.b = pow(color.b, correction.b);\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.rgb *= color.a;\\n' +\n '}',\n\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n gamma: [1, 1, 1],\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'gamma',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.gamma = [1, 1, 1];\n filters.BaseFilter.prototype.initialize.call(this, options);\n },\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData, data = imageData.data,\n gamma = this.gamma, len = data.length,\n rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n bInv = 1 / gamma[2], i;\n\n if (!this.rVals) {\n // eslint-disable-next-line\n this.rVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.gVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.bVals = new Uint8Array(256);\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n for (i = 0, len = 256; i < len; i++) {\n this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (i = 0, len = data.length; i < len; i += 4) {\n data[i] = this.rVals[data[i]];\n data[i + 1] = this.gVals[data[i + 1]];\n data[i + 2] = this.bVals[data[i + 2]];\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uGamma: gl.getUniformLocation(program, 'uGamma'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n */\n fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * A container class that knows how to apply a sequence of filters to an input image.\n */\n filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n type: 'Composed',\n\n /**\n * A non sparse array of filters to apply\n */\n subFilters: [],\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.subFilters = this.subFilters.slice(0);\n },\n\n /**\n * Apply this container's filters to the input image provided.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be applied.\n */\n applyTo: function(options) {\n options.passes += this.subFilters.length - 1;\n this.subFilters.forEach(function(filter) {\n filter.applyTo(options);\n });\n },\n\n /**\n * Serialize this filter into JSON.\n *\n * @returns {Object} A JSON representation of this filter.\n */\n toObject: function() {\n return fabric.util.object.extend(this.callSuper('toObject'), {\n subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n });\n },\n\n isNeutralState: function() {\n return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n }\n });\n\n /**\n * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n */\n fabric.Image.filters.Composed.fromObject = function(object, callback) {\n var filters = object.subFilters || [],\n subFilters = filters.map(function(filter) {\n return new fabric.Image.filters[filter.type](filter);\n }),\n instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n callback && callback(instance);\n return instance;\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * HueRotation filter class\n * @class fabric.Image.filters.HueRotation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'HueRotation',\n\n /**\n * HueRotation value, from -1 to 1.\n * the unit is radians\n * @param {Number} myParameter\n * @default\n */\n rotation: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'rotation',\n\n calculateMatrix: function() {\n var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n this.matrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ];\n this.matrix[0] = cos + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cos + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cos + aThird * OneMinusCos;\n },\n\n /**\n * HueRotation isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function(options) {\n this.calculateMatrix();\n return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n this.calculateMatrix();\n filters.BaseFilter.prototype.applyTo.call(this, options);\n },\n\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n */\n fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n clone = fabric.util.object.clone;\n\n if (fabric.Text) {\n fabric.warn('fabric.Text is already defined');\n return;\n }\n\n /**\n * Text class\n * @class fabric.Text\n * @extends fabric.Object\n * @return {fabric.Text} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n * @see {@link fabric.Text#initialize} for constructor definition\n */\n fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Array\n * @private\n */\n _dimensionAffectingProps: [\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'text',\n 'charSpacing',\n 'textAlign',\n 'styles',\n ],\n\n /**\n * @private\n */\n _reNewline: /\\r?\\n/,\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpacesAndTabs: /[ \\t\\r]/g,\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpaceAndTab: /[ \\t\\r]/,\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reWords: /\\S+/g,\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'text',\n\n /**\n * Font size (in pixels)\n * @type Number\n * @default\n */\n fontSize: 40,\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n * @default\n */\n fontWeight: 'normal',\n\n /**\n * Font family\n * @type String\n * @default\n */\n fontFamily: 'Times New Roman',\n\n /**\n * Text decoration underline.\n * @type Boolean\n * @default\n */\n underline: false,\n\n /**\n * Text decoration overline.\n * @type Boolean\n * @default\n */\n overline: false,\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n * @default\n */\n linethrough: false,\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n * @default\n */\n textAlign: 'left',\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n * @default\n */\n fontStyle: 'normal',\n\n /**\n * Line height\n * @type Number\n * @default\n */\n lineHeight: 1.16,\n\n /**\n * Superscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n superscript: {\n size: 0.60, // fontSize factor\n baseline: -0.35 // baseline-shift factor (upwards)\n },\n\n /**\n * Subscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n subscript: {\n size: 0.60, // fontSize factor\n baseline: 0.11 // baseline-shift factor (downwards)\n },\n\n /**\n * Background color of text lines\n * @type String\n * @default\n */\n textBackgroundColor: '',\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color.\n * Backwards incompatibility note: This property was named \"strokeStyle\" until v1.1.6\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property was named \"textShadow\" (String) until v1.2.11\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * @private\n */\n _fontSizeFraction: 0.222,\n\n /**\n * @private\n */\n offsets: {\n underline: 0.10,\n linethrough: -0.315,\n overline: -0.88\n },\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n * @default\n */\n _fontSizeMult: 1.13,\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n * @default\n */\n charSpacing: 0,\n\n /**\n * Object containing character styles - top-level properties -> line numbers,\n * 2nd-level properties - charater numbers\n * @type Object\n * @default\n */\n styles: null,\n\n /**\n * Reference to a context to measure text char or couple of chars\n * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n * once created it will be referenced on fabric._measuringContext to avoide creating a canvas for every\n * text object created.\n * @type {CanvasRenderingContext2D}\n * @default\n */\n _measuringContext: null,\n\n /**\n * Baseline shift, stlyes only, keep at 0 for the main text object\n * @type {Number}\n * @default\n */\n deltaY: 0,\n\n /**\n * Array of properties that define a style unit (of 'styles').\n * @type {Array}\n * @default\n */\n _styleProperties: [\n 'stroke',\n 'strokeWidth',\n 'fill',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'fontStyle',\n 'underline',\n 'overline',\n 'linethrough',\n 'deltaY',\n 'textBackgroundColor',\n ],\n\n /**\n * contains characters bounding boxes\n */\n __charBounds: [],\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @default\n * @readonly\n * @private\n */\n CACHE_FONT_SIZE: 400,\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n * @default\n */\n MIN_TEXT_WIDTH: 2,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n initialize: function(text, options) {\n this.styles = options ? (options.styles || { }) : { };\n this.text = text;\n this.__skipDimension = true;\n this.callSuper('initialize', options);\n this.__skipDimension = false;\n this.initDimensions();\n this.setCoords();\n this.setupState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Return a contex for measurement of text string.\n * if created it gets stored for reuse\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n getMeasuringContext: function() {\n // if we did not return we have to measure something.\n if (!fabric._measuringContext) {\n fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n fabric.util.createCanvasElement().getContext('2d');\n }\n return fabric._measuringContext;\n },\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n */\n _splitText: function() {\n var newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n },\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this._splitText();\n this._clearCache();\n this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces: function() {\n var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n for (var j = 0, jlen = line.length; j <= jlen; j++) {\n charBound = this.__charBounds[i][j];\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n }\n else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n return lineIndex === this._textLines.length - 1;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * It return always for text and Itext.\n * @return Number\n */\n missingNewlineOffset: function() {\n return 1;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var dims = this.callSuper('_getCacheCanvasDimensions');\n var fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n }\n else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n },\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles: function(ctx, charStyle, forMeasuring) {\n ctx.textBaseline = 'alphabetic';\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n },\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of fabric.Text object\n */\n calcTextWidth: function() {\n var maxWidth = this.getLineWidth(0);\n\n for (var i = 1, len = this._textLines.length; i < len; i++) {\n var currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n },\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n },\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground: function(ctx) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n var lineTopOffset = 0, heightOfLine,\n lineLeftOffset, originalFill = ctx.fillStyle,\n line, lastColor,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(),\n boxStart = 0, boxWidth = 0, charBox, currentColor;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n lineTopOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n lineLeftOffset = this._getLineLeftOffset(i);\n boxWidth = 0;\n boxStart = 0;\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n ctx.fillStyle = lastColor;\n lastColor && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor) {\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {Object} decl style declaration for cache\n * @param {String} decl.fontFamily fontFamily\n * @param {String} decl.fontStyle fontStyle\n * @param {String} decl.fontWeight fontWeight\n * @return {Object} reference to cache\n */\n getFontCache: function(decl) {\n var fontFamily = decl.fontFamily.toLowerCase();\n if (!fabric.charWidthsCache[fontFamily]) {\n fabric.charWidthsCache[fontFamily] = { };\n }\n var cache = fabric.charWidthsCache[fontFamily],\n cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n if (!cache[cacheProp]) {\n cache[cacheProp] = { };\n }\n return cache[cacheProp];\n },\n\n /**\n * apply all the character style to canvas for rendering\n * @private\n * @param {String} _char\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} [decl]\n */\n _applyCharStyles: function(method, ctx, lineIndex, charIndex, styleDeclaration) {\n\n this._setFillStyles(ctx, styleDeclaration);\n this._setStrokeStyles(ctx, styleDeclaration);\n\n ctx.font = this._getFontDeclaration(styleDeclaration);\n },\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} _char, char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n // first i try to return from cache\n var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth;\n }\n if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n var ctx = this.getMeasuringContext();\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n }\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n kernedWidth = coupleWidth - previousWidth;\n }\n return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n },\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line index number\n * @param {Number} _char the character index number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar: function(line, _char) {\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\n },\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n measureLine: function(lineIndex) {\n var lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n },\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine: function(lineIndex) {\n var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length);\n\n this.__charBounds[lineIndex] = lineBounds;\n for (i = 0; i < line.length; i++) {\n grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[i] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize\n };\n return { width: width, numOfSpaces: numOfSpaces };\n },\n\n /**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * @private\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n */\n _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n kernedWidth = info.kernedWidth,\n width = info.width, charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n var box = {\n width: width,\n left: 0,\n height: style.fontSize,\n kernedWidth: kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n },\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine: function(lineIndex) {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n var line = this._textLines[lineIndex],\n // char 0 is measured before the line cycle because it nneds to char\n // emptylines\n maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (var i = 1, len = line.length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n },\n\n /**\n * Calculate text box height\n */\n calcTextHeight: function() {\n var lineHeight, height = 0;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n }\n return height;\n },\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset: function() {\n return -this.width / 2;\n },\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset: function() {\n return -this.height / 2;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n * @return {Object} offset.offsetX offset for text rendering\n * @return {Object} offset.offsetY offset for text rendering\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n\n ctx.transform(1, 0, 0, 1, offsetX, offsetY);\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon: function(ctx, method) {\n ctx.save();\n var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset(),\n offsets = this._applyPatternGradientTransform(ctx, method === 'fillText' ? this.fill : this.stroke);\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n var heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset - offsets.offsetX,\n top + lineHeights + maxHeight - offsets.offsetY,\n i\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill: function(ctx) {\n if (!this.fill && !this.styleHas('fill')) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke: function(ctx) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Content of the line\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n * @param {Number} charOffset\n */\n _renderChars: function(method, ctx, line, left, top, lineIndex) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex);\n\n ctx.save();\n top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n this._renderChar(method, ctx, lineIndex, 0, this.textLines[lineIndex], left, top, lineHeight);\n ctx.restore();\n return;\n }\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n left += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChanged(actualStyle, nextStyle);\n }\n if (timeToRender) {\n this._renderChar(method, ctx, lineIndex, i, charsToRender, left, top, lineHeight);\n charsToRender = '';\n actualStyle = nextStyle;\n left += boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n var decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n decl && ctx.save();\n\n this._applyCharStyles(method, ctx, lineIndex, charIndex, fullDecl);\n\n if (decl && decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl && decl.deltaY) {\n top += decl.deltaY;\n }\n\n shouldFill && ctx.fillText(_char, left, top);\n shouldStroke && ctx.strokeText(_char, left, top);\n decl && ctx.restore();\n },\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSuperscript: function(start, end) {\n return this._setScript(start, end, this.superscript);\n },\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSubscript: function(start, end) {\n return this._setScript(start, end, this.subscript);\n },\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n _setScript: function(start, end, schema) {\n var loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n this.setSelectionStyles(style, start, end);\n return this;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChanged: function(prevStyle, thisStyle) {\n return prevStyle.fill !== thisStyle.fill ||\n prevStyle.stroke !== thisStyle.stroke ||\n prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n prevStyle.fontSize !== thisStyle.fontSize ||\n prevStyle.fontFamily !== thisStyle.fontFamily ||\n prevStyle.fontWeight !== thisStyle.fontWeight ||\n prevStyle.fontStyle !== thisStyle.fontStyle ||\n prevStyle.deltaY !== thisStyle.deltaY;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChangedForSvg: function(prevStyle, thisStyle) {\n return this._hasStyleChanged(prevStyle, thisStyle) ||\n prevStyle.overline !== thisStyle.overline ||\n prevStyle.underline !== thisStyle.underline ||\n prevStyle.linethrough !== thisStyle.linethrough;\n },\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset: function(lineIndex) {\n var lineWidth = this.getLineWidth(lineIndex);\n if (this.textAlign === 'center') {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'right') {\n return this.width - lineWidth;\n }\n if (this.textAlign === 'justify-center' && this.isEndOfWrapping(lineIndex)) {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'justify-right' && this.isEndOfWrapping(lineIndex)) {\n return this.width - lineWidth;\n }\n return 0;\n },\n\n /**\n * @private\n */\n _clearCache: function() {\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n },\n\n /**\n * @private\n */\n _shouldClearDimensionCache: function() {\n var shouldClear = this._forceClearCache;\n shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n if (shouldClear) {\n this.dirty = true;\n this._forceClearCache = false;\n }\n return shouldClear;\n },\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth: function(lineIndex) {\n if (this.__lineWidths[lineIndex]) {\n return this.__lineWidths[lineIndex];\n }\n\n var width, line = this._textLines[lineIndex], lineInfo;\n\n if (line === '') {\n width = 0;\n }\n else {\n lineInfo = this.measureLine(lineIndex);\n width = lineInfo.width;\n }\n this.__lineWidths[lineIndex] = width;\n return width;\n },\n\n _getWidthOfCharSpacing: function() {\n if (this.charSpacing !== 0) {\n return this.fontSize * this.charSpacing / 1000;\n }\n return 0;\n },\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the charater number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n if (charStyle && typeof charStyle[property] !== 'undefined') {\n return charStyle[property];\n }\n return this[property];\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration: function(ctx, type) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n var heightOfLine, size, _size,\n lineLeftOffset, dy, _dy,\n line, lastDecoration,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(), top,\n boxStart, boxWidth, charBox, currentDecoration,\n maxHeight, currentFill, lastFill,\n charSpacing = this._getWidthOfCharSpacing();\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n maxHeight = heightOfLine / this.lineHeight;\n lineLeftOffset = this._getLineLeftOffset(i);\n boxStart = 0;\n boxWidth = 0;\n lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n size = this.getHeightOfChar(i, 0);\n dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n _size = this.getHeightOfChar(i, j);\n _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if ((currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy) &&\n boxWidth > 0) {\n ctx.fillStyle = lastFill;\n lastDecoration && lastFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth,\n this.fontSize / 15\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastFill = currentFill;\n size = _size;\n dy = _dy;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n ctx.fillStyle = currentFill;\n currentDecoration && currentFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth - charSpacing,\n this.fontSize / 15\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration: function(styleObject, forMeasuring) {\n var style = styleObject || this, family = this.fontFamily,\n fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n var fontFamily = family === undefined ||\n family.indexOf('\\'') > -1 || family.indexOf(',') > -1 ||\n family.indexOf('\"') > -1 || fontIsGeneric\n ? style.fontFamily : '\"' + style.fontFamily + '\"';\n return [\n // node-canvas needs \"weight style\", while browsers need \"style weight\"\n // verify if this can be fixed in JSDOM\n (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n fontFamily\n ].join(' ');\n },\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if object is not visible\n if (!this.visible) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n }\n this.callSuper('render', ctx);\n },\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns {Array} Lines in the text\n */\n _splitTextIntoLines: function(text) {\n var lines = text.split(this._reNewline),\n newLines = new Array(lines.length),\n newLine = ['\\n'],\n newText = [];\n for (var i = 0; i < lines.length; i++) {\n newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var additionalProperties = [\n 'text',\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'textBackgroundColor',\n 'charSpacing',\n ].concat(propertiesToInclude);\n var obj = this.callSuper('toObject', additionalProperties);\n obj.styles = clone(this.styles, true);\n return obj;\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n this.callSuper('set', key, value);\n var needsDims = false;\n if (typeof key === 'object') {\n for (var _key in key) {\n needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n }\n }\n else {\n needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n }\n if (needsDims) {\n this.initDimensions();\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity: function() {\n return 1;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n * @static\n * @memberOf fabric.Text\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n /**\n * Default SVG font size\n * @static\n * @memberOf fabric.Text\n */\n fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n /**\n * Returns fabric.Text instance from an SVG element (not yet implemented)\n * @static\n * @memberOf fabric.Text\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Text.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n parsedAnchor = parsedAttributes.textAnchor || 'left';\n options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n options.top = options.top || 0;\n options.left = options.left || 0;\n if (parsedAttributes.textDecoration) {\n var textDecoration = parsedAttributes.textDecoration;\n if (textDecoration.indexOf('underline') !== -1) {\n options.underline = true;\n }\n if (textDecoration.indexOf('overline') !== -1) {\n options.overline = true;\n }\n if (textDecoration.indexOf('line-through') !== -1) {\n options.linethrough = true;\n }\n delete options.textDecoration;\n }\n if ('dx' in parsedAttributes) {\n options.left += parsedAttributes.dx;\n }\n if ('dy' in parsedAttributes) {\n options.top += parsedAttributes.dy;\n }\n if (!('fontSize' in options)) {\n options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n\n var textContent = '';\n\n // The XML is not properly parsed in IE9 so a workaround to get\n // textContent is through firstChild.data. Another workaround would be\n // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n if (!('textContent' in element)) {\n if ('firstChild' in element && element.firstChild !== null) {\n if ('data' in element.firstChild && element.firstChild.data !== null) {\n textContent = element.firstChild.data;\n }\n }\n }\n else {\n textContent = element.textContent;\n }\n\n textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n var originalStrokeWidth = options.strokeWidth;\n options.strokeWidth = 0;\n\n var text = new fabric.Text(textContent, options),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff,\n offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (parsedAnchor === 'center') {\n offX = text.getScaledWidth() / 2;\n }\n if (parsedAnchor === 'right') {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n });\n callback(text);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Text instance from an object representation\n * @static\n * @memberOf fabric.Text\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n */\n fabric.Text.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Text', object, callback, 'text');\n };\n\n fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return true;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n return true;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * This function is used to detect if a text will use a particular property or not.\n * @param {String} property to check for\n * @param {Number} lineIndex to check the style on\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return false;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] };\n // eslint-disable-next-line\n for (var p1 in obj) {\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n if (typeof obj[p1][p2][property] !== 'undefined') {\n return true;\n }\n }\n }\n return false;\n },\n\n /**\n * Check if characters in a text have a value for a property\n * whose value matches the textbox's value for that property. If so,\n * the character-level property is deleted. If the character\n * has no other properties, then it is also deleted. Finally,\n * if the line containing that character has no other characters\n * then it also is deleted.\n *\n * @param {string} property The property to compare between characters and text.\n */\n cleanStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n // eslint-disable-next-line\n for (var p1 in obj) {\n letterCount = 0;\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n var styleObject = obj[p1][p2],\n stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n stylesCount++;\n\n if (stylePropertyHasBeenSet) {\n if (!stylePropertyValue) {\n stylePropertyValue = styleObject[property];\n }\n else if (styleObject[property] !== stylePropertyValue) {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (styleObject[property] === this[property]) {\n delete styleObject[property];\n }\n }\n else {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (Object.keys(styleObject).length !== 0) {\n letterCount++;\n }\n else {\n delete obj[p1][p2];\n }\n }\n\n if (letterCount === 0) {\n delete obj[p1];\n }\n }\n // if every grapheme has the same style set then\n // delete those styles and set it on the parent\n for (var i = 0; i < this._textLines.length; i++) {\n graphemeCount += this._textLines[i].length;\n }\n if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n this[property] = stylePropertyValue;\n this.removeStyle(property);\n }\n },\n\n /**\n * Remove a style property or properties from all individual character styles\n * in a text object. Deletes the character style object if it contains no other style\n * props. Deletes a line style object if it contains no other character styles.\n *\n * @param {String} props The property to remove from character styles.\n */\n removeStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return;\n }\n var obj = this.styles, line, lineNum, charNum;\n for (lineNum in obj) {\n line = obj[lineNum];\n for (charNum in line) {\n delete line[charNum][property];\n if (Object.keys(line[charNum]).length === 0) {\n delete line[charNum];\n }\n }\n if (Object.keys(line).length === 0) {\n delete obj[lineNum];\n }\n }\n },\n\n /**\n * @private\n */\n _extendStyles: function(index, styles) {\n var loc = this.get2DCursorLocation(index);\n\n if (!this._getLineStyle(loc.lineIndex)) {\n this._setLineStyle(loc.lineIndex);\n }\n\n if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n }\n\n fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n },\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. usefull to manage styles.\n */\n get2DCursorLocation: function(selectionStart, skipWrapping) {\n if (typeof selectionStart === 'undefined') {\n selectionStart = this.selectionStart;\n }\n var lines = skipWrapping ? this._unwrappedTextLines : this._textLines,\n len = lines.length;\n for (var i = 0; i < len; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart\n };\n }\n selectionStart -= lines[i].length + this.missingNewlineOffset(i);\n }\n return {\n lineIndex: i - 1,\n charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n };\n },\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, slectionStart or selectionEnd will be used.\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles: function(startIndex, endIndex, complete) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n var styles = [];\n for (var i = startIndex; i < endIndex; i++) {\n styles.push(this.getStyleAtPosition(i, complete));\n }\n return styles;\n },\n\n /**\n * Gets style of a current selection/cursor position\n * @param {Number} position to get styles at\n * @param {Boolean} [complete] full style if true\n * @return {Object} style Style object at a specified index\n * @private\n */\n getStyleAtPosition: function(position, complete) {\n var loc = this.get2DCursorLocation(position),\n style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n return style || {};\n },\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @return {fabric.IText} thisArg\n * @chainable\n */\n setSelectionStyles: function(styles, startIndex, endIndex) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n for (var i = startIndex; i < endIndex; i++) {\n this._extendStyles(i, styles);\n }\n /* not included in _extendStyles to avoid clearing cache more than once */\n this._forceClearCache = true;\n return this;\n },\n\n /**\n * get the reference, not a clone, of the style object for a given character\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Object} style object\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n var lineStyle = this.styles && this.styles[lineIndex];\n if (!lineStyle) {\n return null;\n }\n return lineStyle[charIndex];\n },\n\n /**\n * return a new object that contains all the style property for a character\n * the object returned is newly created\n * @param {Number} lineIndex of the line where the character is\n * @param {Number} charIndex position of the character on the line\n * @return {Object} style object\n */\n getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n styleObject = { }, prop;\n for (var i = 0; i < this._styleProperties.length; i++) {\n prop = this._styleProperties[i];\n styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n }\n return styleObject;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n *\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @return {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n return !!this.styles[lineIndex];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @private\n */\n _setLineStyle: function(lineIndex) {\n this.styles[lineIndex] = {};\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n delete this.styles[lineIndex];\n }\n });\n})();\n\n\n(function() {\n\n function parseDecoration(object) {\n if (object.textDecoration) {\n object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n delete object.textDecoration;\n }\n }\n\n /**\n * IText class (introduced in v1.4) Events are also fired with \"text:\"\n * prefix when observing canvas.\n * @class fabric.IText\n * @extends fabric.Text\n * @mixes fabric.Observable\n *\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n *\n * @return {fabric.IText} thisArg\n * @see {@link fabric.IText#initialize} for constructor definition\n *\n *

Supported key combinations:

\n *
\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * 
\n *\n *

Supported mouse/touch combination

\n *
\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * 
\n */\n fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'i-text',\n\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n * @default\n */\n selectionStart: 0,\n\n /**\n * Index where text selection ends\n * @type Number\n * @default\n */\n selectionEnd: 0,\n\n /**\n * Color of text selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(17,119,255,0.3)',\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n * @default\n */\n isEditing: false,\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n * @default\n */\n editable: true,\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n * @default\n */\n editingBorderColor: 'rgba(102,153,255,0.25)',\n\n /**\n * Width of cursor (in px)\n * @type Number\n * @default\n */\n cursorWidth: 2,\n\n /**\n * Color of default cursor (when not overwritten by character style)\n * @type String\n * @default\n */\n cursorColor: '#333',\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n * @default\n */\n cursorDelay: 1000,\n\n /**\n * Duration of cursor fadein (in ms)\n * @type Number\n * @default\n */\n cursorDuration: 600,\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n * @default\n */\n caching: true,\n\n /**\n * @private\n */\n _reSpace: /\\s|\\n/,\n\n /**\n * @private\n */\n _currentCursorOpacity: 0,\n\n /**\n * @private\n */\n _selectionDirection: null,\n\n /**\n * @private\n */\n _abortCursorAnimation: false,\n\n /**\n * @private\n */\n __widthOfSpace: [],\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n inCompositionMode: false,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.IText} thisArg\n */\n initialize: function(text, options) {\n this.callSuper('initialize', text, options);\n this.initBehavior();\n },\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart: function(index) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n },\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd: function(index) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n },\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n _updateAndFire: function(property, index) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n },\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged: function() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n },\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions: function() {\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this.callSuper('initDimensions');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n this.clearContextTop();\n this.callSuper('render', ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = { };\n this.renderCursorOrSelection();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this.callSuper('_render', ctx);\n },\n\n /**\n * Prepare and clean the contextTop\n */\n clearContextTop: function(skipRestore) {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this.transform(ctx);\n this.transformMatrix && ctx.transform.apply(ctx, this.transformMatrix);\n this._clearTextArea(ctx);\n skipRestore || ctx.restore();\n },\n\n /**\n * Renders cursor or selection (depending on what exists)\n * it does on the contextTop. If contextTop is not available, do nothing.\n */\n renderCursorOrSelection: function() {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var boundaries = this._getCursorBoundaries(),\n ctx = this.canvas.contextTop;\n this.clearContextTop(true);\n if (this.selectionStart === this.selectionEnd) {\n this.renderCursor(boundaries, ctx);\n }\n else {\n this.renderSelection(boundaries, ctx);\n }\n ctx.restore();\n },\n\n _clearTextArea: function(ctx) {\n // we add 4 pixel, to be sure to do not leave any pixel out\n var width = this.width + 4, height = this.height + 4;\n ctx.clearRect(-width / 2, -height / 2, width, height);\n },\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * @private\n * @param {Array} chars Array of characters\n * @param {String} typeOfBoundaries\n */\n _getCursorBoundaries: function(position) {\n\n // left/top are left/top of entire text box\n // leftOffset/topOffset are offset from that left/top point of a text box\n\n if (typeof position === 'undefined') {\n position = this.selectionStart;\n }\n\n var left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(position);\n\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top\n };\n },\n\n /**\n * @private\n */\n _getCursorBoundariesOffsets: function(position) {\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache;\n }\n var lineLeftOffset,\n lineIndex,\n charIndex,\n topOffset = 0,\n leftOffset = 0,\n boundaries,\n cursorPosition = this.get2DCursorLocation(position);\n charIndex = cursorPosition.charIndex;\n lineIndex = cursorPosition.lineIndex;\n for (var i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n var bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n this.cursorOffsetCache = boundaries;\n return this.cursorOffsetCache;\n },\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor: function(boundaries, ctx) {\n var cursorLocation = this.get2DCursorLocation(),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.scaleX * this.canvas.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n topOffset = boundaries.topOffset,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n\n topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n - charHeight * (1 - this._fontSizeFraction);\n\n if (this.inCompositionMode) {\n this.renderSelection(boundaries, ctx);\n }\n\n ctx.fillStyle = this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n ctx.fillRect(\n boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n topOffset + boundaries.top + dy,\n cursorWidth,\n charHeight);\n },\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection: function(boundaries, ctx) {\n\n var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n isJustify = this.textAlign.indexOf('justify') !== -1,\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (var i = startLine; i <= endLine; i++) {\n var lineOffset = this._getLineLeftOffset(i) || 0,\n lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n }\n else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n }\n else {\n var charSpacing = this._getWidthOfCharSpacing();\n boxEnd = this.__charBounds[endLine][endChar - 1].left\n + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset + lineHeight,\n boxEnd - boxStart,\n 1);\n }\n else {\n ctx.fillStyle = this.selectionColor;\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset,\n boxEnd - boxStart,\n lineHeight);\n }\n\n\n boundaries.topOffset += realLineHeight;\n }\n },\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * Unused from the library, is for the end user\n * @return {Number} Character font size\n */\n getCurrentCharFontSize: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n },\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * Unused from the library, is for the end user\n * @return {String} Character color (fill)\n */\n getCurrentCharColor: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n },\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex: function() {\n var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n });\n\n /**\n * Returns fabric.IText instance from an object representation\n * @static\n * @memberOf fabric.IText\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as argument\n */\n fabric.IText.fromObject = function(object, callback) {\n parseDecoration(object);\n if (object.styles) {\n for (var i in object.styles) {\n for (var j in object.styles[i]) {\n parseDecoration(object.styles[i][j]);\n }\n }\n }\n fabric.Object._fromObject('IText', object, callback, 'text');\n };\n})();\n\n\n(function() {\n\n var clone = fabric.util.object.clone;\n\n fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior: function() {\n this.initAddedHandler();\n this.initRemovedHandler();\n this.initCursorSelectionHandlers();\n this.initDoubleClickSimulation();\n this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n },\n\n onDeselect: function() {\n this.isEditing && this.exitEditing();\n this.selected = false;\n },\n\n /**\n * Initializes \"added\" event handler\n */\n initAddedHandler: function() {\n var _this = this;\n this.on('added', function() {\n var canvas = _this.canvas;\n if (canvas) {\n if (!canvas._hasITextHandlers) {\n canvas._hasITextHandlers = true;\n _this._initCanvasHandlers(canvas);\n }\n canvas._iTextInstances = canvas._iTextInstances || [];\n canvas._iTextInstances.push(_this);\n }\n });\n },\n\n initRemovedHandler: function() {\n var _this = this;\n this.on('removed', function() {\n var canvas = _this.canvas;\n if (canvas) {\n canvas._iTextInstances = canvas._iTextInstances || [];\n fabric.util.removeFromArray(canvas._iTextInstances, _this);\n if (canvas._iTextInstances.length === 0) {\n canvas._hasITextHandlers = false;\n _this._removeCanvasHandlers(canvas);\n }\n }\n });\n },\n\n /**\n * register canvas event to manage exiting on other instances\n * @private\n */\n _initCanvasHandlers: function(canvas) {\n canvas._mouseUpITextHandler = function() {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.__isMousedown = false;\n });\n }\n };\n canvas.on('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * remove canvas event to manage exiting on other instances\n * @private\n */\n _removeCanvasHandlers: function(canvas) {\n canvas.off('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * @private\n */\n _tick: function() {\n this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n },\n\n /**\n * @private\n */\n _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n var tickState;\n\n tickState = {\n isAborted: false,\n abort: function() {\n this.isAborted = true;\n },\n };\n\n obj.animate('_currentCursorOpacity', targetOpacity, {\n duration: duration,\n onComplete: function() {\n if (!tickState.isAborted) {\n obj[completeMethod]();\n }\n },\n onChange: function() {\n // we do not want to animate a selection, only cursor\n if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n obj.renderCursorOrSelection();\n }\n },\n abort: function() {\n return tickState.isAborted;\n }\n });\n return tickState;\n },\n\n /**\n * @private\n */\n _onTickComplete: function() {\n\n var _this = this;\n\n if (this._cursorTimeout1) {\n clearTimeout(this._cursorTimeout1);\n }\n this._cursorTimeout1 = setTimeout(function() {\n _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n }, 100);\n },\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor: function(restart) {\n var _this = this,\n delay = restart ? 0 : this.cursorDelay;\n\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this._cursorTimeout2 = setTimeout(function() {\n _this._tick();\n }, delay);\n },\n\n /**\n * Aborts cursor animation and clears all timeouts\n */\n abortCursorAnimation: function() {\n var shouldClear = this._currentTickState || this._currentTickCompleteState,\n canvas = this.canvas;\n this._currentTickState && this._currentTickState.abort();\n this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n clearTimeout(this._cursorTimeout1);\n clearTimeout(this._cursorTimeout2);\n\n this._currentCursorOpacity = 0;\n // to clear just itext area we need to transform the context\n // it may not be worth it\n if (shouldClear && canvas) {\n canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n }\n\n },\n\n /**\n * Selects entire text\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectAll: function() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText: function() {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n },\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/\\S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/\\S/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary: function(selectionStart, direction) {\n var text = this._text,\n index = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart,\n _char = text[index],\n // wrong\n reNonWord = fabric.reNonWord;\n\n while (!reNonWord.test(_char) && index > 0 && index < text.length) {\n index += direction;\n _char = text[index];\n }\n if (reNonWord.test(_char)) {\n index += direction === 1 ? 0 : 1;\n }\n return index;\n },\n\n /**\n * Selects a word based on the index\n * @param {Number} selectionStart Index of a character\n */\n selectWord: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n },\n\n /**\n * Selects a line based on the index\n * @param {Number} selectionStart Index of a character\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectLine: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Enters editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n enterEditing: function(e) {\n if (this.isEditing || !this.editable) {\n return;\n }\n\n if (this.canvas) {\n this.canvas.calcOffset();\n this.exitEditingOnOthers(this.canvas);\n }\n\n this.isEditing = true;\n\n this.initHiddenTextarea(e);\n this.hiddenTextarea.focus();\n this.hiddenTextarea.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n this._tick();\n this.fire('editing:entered');\n this._fireSelectionChanged();\n if (!this.canvas) {\n return this;\n }\n this.canvas.fire('text:editing:entered', { target: this });\n this.initMouseMoveHandler();\n this.canvas.requestRenderAll();\n return this;\n },\n\n exitEditingOnOthers: function(canvas) {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.selected = false;\n if (obj.isEditing) {\n obj.exitEditing();\n }\n });\n }\n },\n\n /**\n * Initializes \"mousemove\" event handler\n */\n initMouseMoveHandler: function() {\n this.canvas.on('mouse:move', this.mouseMoveHandler);\n },\n\n /**\n * @private\n */\n mouseMoveHandler: function(options) {\n if (!this.__isMousedown || !this.isEditing) {\n return;\n }\n\n var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n if (newSelectionStart > this.__selectionStartOnMouseDown) {\n this.selectionStart = this.__selectionStartOnMouseDown;\n this.selectionEnd = newSelectionStart;\n }\n else {\n this.selectionStart = newSelectionStart;\n this.selectionEnd = this.__selectionStartOnMouseDown;\n }\n if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n this.restartCursorIfNeeded();\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * @private\n */\n _setEditingProps: function() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n },\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection: function(start, end, text) {\n var smallerTextStart = text.slice(0, start),\n graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = text.slice(start, end),\n graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection: function(start, end, _text) {\n var smallerTextStart = _text.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = _text.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * @private\n */\n _updateTextarea: function() {\n this.cursorOffsetCache = { };\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateFromTextArea: function() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = { };\n this.text = this.hiddenTextarea.value;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n var newSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateTextareaPosition: function() {\n if (this.selectionStart === this.selectionEnd) {\n var style = this._calcTextareaPosition();\n this.hiddenTextarea.style.left = style.left;\n this.hiddenTextarea.style.top = style.top;\n }\n },\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition: function() {\n if (!this.canvas) {\n return { x: 1, y: 1 };\n }\n var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPosition),\n cursorLocation = this.get2DCursorLocation(desiredPosition),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n leftOffset = boundaries.leftOffset,\n m = this.calcTransformMatrix(),\n p = {\n x: boundaries.left + leftOffset,\n y: boundaries.top + boundaries.topOffset + charHeight\n },\n retinaScaling = this.canvas.getRetinaScaling(),\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width / retinaScaling,\n upperCanvasHeight = upperCanvas.height / retinaScaling,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight,\n scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n p = fabric.util.transformPoint(p, m);\n p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n p.x *= scaleX;\n p.y *= scaleY;\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n },\n\n /**\n * @private\n */\n _saveEditingProps: function() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n hoverCursor: this.hoverCursor,\n selectable: this.selectable,\n defaultCursor: this.canvas && this.canvas.defaultCursor,\n moveCursor: this.canvas && this.canvas.moveCursor\n };\n },\n\n /**\n * @private\n */\n _restoreEditingProps: function() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.selectable = this._savedProps.selectable;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor = this._savedProps.defaultCursor;\n this.canvas.moveCursor = this._savedProps.moveCursor;\n }\n },\n\n /**\n * Exits from editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n exitEditing: function() {\n var isTextChanged = (this._textBeforeEdit !== this.text);\n var hiddenTextarea = this.hiddenTextarea;\n this.selected = false;\n this.isEditing = false;\n\n this.selectionEnd = this.selectionStart;\n\n if (hiddenTextarea) {\n hiddenTextarea.blur && hiddenTextarea.blur();\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n }\n this.hiddenTextarea = null;\n this.abortCursorAnimation();\n this._restoreEditingProps();\n this._currentCursorOpacity = 0;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this.fire('editing:exited');\n isTextChanged && this.fire('modified');\n if (this.canvas) {\n this.canvas.off('mouse:move', this.mouseMoveHandler);\n this.canvas.fire('text:editing:exited', { target: this });\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n },\n\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this.styles) {\n if (!this._textLines[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo: function(start, end) {\n var cursorStart = this.get2DCursorLocation(start, true),\n cursorEnd = this.get2DCursorLocation(end, true),\n lineStart = cursorStart.lineIndex,\n charStart = cursorStart.charIndex,\n lineEnd = cursorEnd.lineIndex,\n charEnd = cursorEnd.charIndex,\n i, styleObj;\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = { });\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n }\n else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n styleObj = this.styles[lineStart];\n var diff = charEnd - charStart, numericChar, _char;\n for (i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (_char in this.styles[lineStart]) {\n numericChar = parseInt(_char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[_char];\n delete styleObj[_char];\n }\n }\n }\n }\n },\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles: function(lineIndex, offset) {\n // shift all line styles by offset upward or downward\n // do not clone deep. we need new array, not new style objects\n var clonedStyles = clone(this.styles);\n for (var line in this.styles) {\n var numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n },\n\n restartCursorIfNeeded: function() {\n if (!this._currentTickState || this._currentTickState.isAborted\n || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n ) {\n this.initDelayedCursor();\n }\n },\n\n /**\n * Handle insertion of more consecutive style lines for when one or more\n * newlines gets added to the text. Since current style needs to be shifted\n * first we shift the current style of the number lines needed, then we add\n * new lines from the last to the first.\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n var currentCharStyle,\n newLineStyles = {},\n somethingAdded = false,\n isEndOfLine = this._unwrappedTextLines[lineIndex].length === charIndex;\n\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n if (this.styles[lineIndex]) {\n currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n }\n // we clone styles of all chars\n // after cursor onto the current line\n for (var index in this.styles[lineIndex]) {\n var numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n somethingAdded = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n if (!(isEndOfLine && charIndex === 0)) {\n delete this.styles[lineIndex][index];\n }\n }\n }\n var styleCarriedOver = false;\n if (somethingAdded && !isEndOfLine) {\n // if is end of line, the extra style we copied\n // is probably not something we want\n this.styles[lineIndex + qty] = newLineStyles;\n styleCarriedOver = true;\n }\n if (styleCarriedOver) {\n // skip the last line of since we already prepared it.\n qty--;\n }\n // for the all the lines or all the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 0) {\n if (copiedStyle && copiedStyle[qty - 1]) {\n this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty - 1]) };\n }\n else if (currentCharStyle) {\n this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n qty--;\n }\n this._forceClearCache = true;\n },\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objects\n */\n insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n if (!this.styles) {\n this.styles = {};\n }\n var currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (var index in currentLineStylesCloned) {\n var numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n }\n },\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n var cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0], linesLength = 0;\n // get an array of how many char per lines are being added.\n for (var i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLength++;\n addedLines[linesLength] = 0;\n }\n else {\n addedLines[linesLength]++;\n }\n }\n // for the first line copy the style from the current char position.\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLength && this.insertNewlineStyleObject(\n cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength);\n for (var i = 1; i < linesLength; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n else if (copiedStyle) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n // we use i outside the loop to get it like linesLength\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n },\n\n /**\n * Set the selectionStart and selectionEnd according to the new position of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift: function(start, end, newSelection) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = 'left';\n }\n else if (this._selectionDirection === 'right') {\n this._selectionDirection = 'left';\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n }\n else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === 'right') {\n this.selectionEnd = newSelection;\n }\n else {\n this.selectionStart = newSelection;\n }\n }\n else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = 'right';\n }\n else if (this._selectionDirection === 'left') {\n this._selectionDirection = 'right';\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n },\n\n setSelectionInBoundaries: function() {\n var length = this.text.length;\n if (this.selectionStart > length) {\n this.selectionStart = length;\n }\n else if (this.selectionStart < 0) {\n this.selectionStart = 0;\n }\n if (this.selectionEnd > length) {\n this.selectionEnd = length;\n }\n else if (this.selectionEnd < 0) {\n this.selectionEnd = 0;\n }\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * Initializes \"dbclick\" event handler\n */\n initDoubleClickSimulation: function() {\n\n // for double click\n this.__lastClickTime = +new Date();\n\n // for triple click\n this.__lastLastClickTime = +new Date();\n\n this.__lastPointer = { };\n\n this.on('mousedown', this.onMouseDown);\n },\n\n /**\n * Default event handler to simulate triple click\n * @private\n */\n onMouseDown: function(options) {\n if (!this.canvas) {\n return;\n }\n this.__newClickTime = +new Date();\n var newPointer = options.pointer;\n if (this.isTripleClick(newPointer)) {\n this.fire('tripleclick', options);\n this._stopEvent(options.e);\n }\n this.__lastLastClickTime = this.__lastClickTime;\n this.__lastClickTime = this.__newClickTime;\n this.__lastPointer = newPointer;\n this.__lastIsEditing = this.isEditing;\n this.__lastSelected = this.selected;\n },\n\n isTripleClick: function(newPointer) {\n return this.__newClickTime - this.__lastClickTime < 500 &&\n this.__lastClickTime - this.__lastLastClickTime < 500 &&\n this.__lastPointer.x === newPointer.x &&\n this.__lastPointer.y === newPointer.y;\n },\n\n /**\n * @private\n */\n _stopEvent: function(e) {\n e.preventDefault && e.preventDefault();\n e.stopPropagation && e.stopPropagation();\n },\n\n /**\n * Initializes event handlers related to cursor or selection\n */\n initCursorSelectionHandlers: function() {\n this.initMousedownHandler();\n this.initMouseupHandler();\n this.initClicks();\n },\n\n /**\n * Default handler for double click, select a word\n */\n doubleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectWord(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Default handler for triple click, select a line\n */\n tripleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectLine(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Initializes double and triple click event handlers\n */\n initClicks: function() {\n this.on('mousedblclick', this.doubleClickHandler);\n this.on('tripleclick', this.tripleClickHandler);\n },\n\n /**\n * Default event handler for the basic functionalities needed on _mouseDown\n * can be overridden to do something different.\n * Scope of this implementation is: find the click position, set selectionStart\n * find selectionEnd, initialize the drawing of either cursor or selection area\n */\n _mouseDownHandler: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n this.__isMousedown = true;\n\n if (this.selected) {\n this.setCursorByClick(options.e);\n }\n\n if (this.isEditing) {\n this.__selectionStartOnMouseDown = this.selectionStart;\n if (this.selectionStart === this.selectionEnd) {\n this.abortCursorAnimation();\n }\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * Default event handler for the basic functionalities needed on mousedown:before\n * can be overridden to do something different.\n * Scope of this implementation is: verify the object is already selected when mousing down\n */\n _mouseDownHandlerBefore: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n // we want to avoid that an object that was selected and then becomes unselectable,\n // may trigger editing mode in some way.\n this.selected = this === this.canvas._activeObject;\n },\n\n /**\n * Initializes \"mousedown\" event handler\n */\n initMousedownHandler: function() {\n this.on('mousedown', this._mouseDownHandler);\n this.on('mousedown:before', this._mouseDownHandlerBefore);\n },\n\n /**\n * Initializes \"mouseup\" event handler\n */\n initMouseupHandler: function() {\n this.on('mouseup', this.mouseUpHandler);\n },\n\n /**\n * standard hander for mouse up, overridable\n * @private\n */\n mouseUpHandler: function(options) {\n this.__isMousedown = false;\n if (!this.editable || this.group ||\n (options.transform && options.transform.actionPerformed) ||\n (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n if (this.canvas) {\n var currentActive = this.canvas._activeObject;\n if (currentActive && currentActive !== this) {\n // avoid running this logic when there is an active object\n // this because is possible with shift click and fast clicks,\n // to rapidly deselect and reselect this object and trigger an enterEdit\n return;\n }\n }\n\n if (this.__lastSelected && !this.__corner) {\n this.selected = false;\n this.__lastSelected = false;\n this.enterEditing(options.e);\n if (this.selectionStart === this.selectionEnd) {\n this.initDelayedCursor(true);\n }\n else {\n this.renderCursorOrSelection();\n }\n }\n else {\n this.selected = true;\n }\n },\n\n /**\n * Changes cursor location in a text depending on passed pointer (x/y) object\n * @param {Event} e Event object\n */\n setCursorByClick: function(e) {\n var newSelection = this.getSelectionStartFromPointer(e),\n start = this.selectionStart, end = this.selectionEnd;\n if (e.shiftKey) {\n this.setSelectionStartEndWithShift(start, end, newSelection);\n }\n else {\n this.selectionStart = newSelection;\n this.selectionEnd = newSelection;\n }\n if (this.isEditing) {\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Returns index of a character corresponding to where an object was clicked\n * @param {Event} e Event object\n * @return {Number} Index of a character\n */\n getSelectionStartFromPointer: function(e) {\n var mouseOffset = this.getLocalPointer(e),\n prevWidth = 0,\n width = 0,\n height = 0,\n charIndex = 0,\n lineIndex = 0,\n lineLeftOffset,\n line;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (height <= mouseOffset.y) {\n height += this.getHeightOfLine(i) * this.scaleY;\n lineIndex = i;\n if (i > 0) {\n charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1);\n }\n }\n else {\n break;\n }\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n width = lineLeftOffset * this.scaleX;\n line = this._textLines[lineIndex];\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n prevWidth = width;\n // i removed something about flipX here, check.\n width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n if (width <= mouseOffset.x) {\n charIndex++;\n }\n else {\n break;\n }\n }\n return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n },\n\n /**\n * @private\n */\n _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n distanceBtwNextCharAndCursor = width - mouseOffset.x,\n offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n newSelectionStart = index + offset;\n // if object is horizontally flipped, mirror cursor location from the end\n if (this.flipX) {\n newSelectionStart = jlen - newSelectionStart;\n }\n\n if (newSelectionStart > this._text.length) {\n newSelectionStart = this._text.length;\n }\n\n return newSelectionStart;\n }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes hidden textarea (needed to bring up keyboard in iOS)\n */\n initHiddenTextarea: function() {\n this.hiddenTextarea = fabric.document.createElement('textarea');\n this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n this.hiddenTextarea.setAttribute('autocorrect', 'off');\n this.hiddenTextarea.setAttribute('autocomplete', 'off');\n this.hiddenTextarea.setAttribute('spellcheck', 'false');\n this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n this.hiddenTextarea.setAttribute('wrap', 'off');\n var style = this._calcTextareaPosition();\n // line-height: 1px; was removed from the style to fix this:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n ' paddingーtop: ' + style.fontSize + ';';\n fabric.document.body.appendChild(this.hiddenTextarea);\n\n fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n if (!this._clickHandlerInitialized && this.canvas) {\n fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n this._clickHandlerInitialized = true;\n }\n },\n\n /**\n * For functionalities on keyDown\n * Map a special key to a function of the instance/prototype\n * If you need different behaviour for ESC or TAB or arrows, you have to change\n * this map setting the name of a function that you build on the fabric.Itext or\n * your prototype.\n * the map change will affect all Instances unless you need for only some text Instances\n * in that case you have to clone this object and assign your Instance.\n * this.keysMap = fabric.util.object.clone(this.keysMap);\n * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n */\n keysMap: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorRight',\n 36: 'moveCursorLeft',\n 37: 'moveCursorLeft',\n 38: 'moveCursorUp',\n 39: 'moveCursorRight',\n 40: 'moveCursorDown',\n },\n\n /**\n * For functionalities on keyUp + ctrl || cmd\n */\n ctrlKeysMapUp: {\n 67: 'copy',\n 88: 'cut'\n },\n\n /**\n * For functionalities on keyDown + ctrl || cmd\n */\n ctrlKeysMapDown: {\n 65: 'selectAll'\n },\n\n onClick: function() {\n // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n this.hiddenTextarea && this.hiddenTextarea.focus();\n },\n\n /**\n * Handles keyup event\n * @param {Event} e Event object\n */\n onKeyDown: function(e) {\n if (!this.isEditing || this.inCompositionMode) {\n return;\n }\n if (e.keyCode in this.keysMap) {\n this[this.keysMap[e.keyCode]](e);\n }\n else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapDown[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e.keyCode >= 33 && e.keyCode <= 40) {\n // if i press an arrow key just update selection\n this.clearContextTop();\n this.renderCursorOrSelection();\n }\n else {\n this.canvas && this.canvas.requestRenderAll();\n }\n },\n\n /**\n * Handles keyup event\n * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n * if a copy/cut event fired, keyup is dismissed\n * @param {Event} e Event object\n */\n onKeyUp: function(e) {\n if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n this._copyDone = false;\n return;\n }\n if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapUp[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n this.canvas && this.canvas.requestRenderAll();\n },\n\n /**\n * Handles onInput event\n * @param {Event} e Event object\n */\n onInput: function(e) {\n var fromPaste = this.fromPaste;\n this.fromPaste = false;\n e && e.stopPropagation();\n if (!this.isEditing) {\n return;\n }\n // decisions about style changes.\n var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n charCount = this._text.length,\n nextCharCount = nextText.length,\n removedText, insertedText,\n charDiff = nextCharCount - charCount,\n selectionStart = this.selectionStart, selectionEnd = this.selectionEnd,\n selection = selectionStart !== selectionEnd,\n copiedStyle, removeFrom, removeTo;\n if (this.hiddenTextarea.value === '') {\n this.styles = { };\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n return;\n }\n\n var textareaSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart,\n this.hiddenTextarea.selectionEnd,\n this.hiddenTextarea.value\n );\n var backDelete = selectionStart > textareaSelection.selectionStart;\n\n if (selection) {\n removedText = this._text.slice(selectionStart, selectionEnd);\n charDiff += selectionEnd - selectionStart;\n }\n else if (nextCharCount < charCount) {\n if (backDelete) {\n removedText = this._text.slice(selectionEnd + charDiff, selectionEnd);\n }\n else {\n removedText = this._text.slice(selectionStart, selectionStart - charDiff);\n }\n }\n var copiedStyle;\n insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n if (removedText && removedText.length) {\n if (insertedText.length) {\n // let's copy some style before deleting.\n // we want to copy the style before the cursor OR the style at the cursor if selection\n // is bigger than 0.\n copiedStyle = this.getSelectionStyles(selectionStart, selectionStart + 1, true);\n // now duplicate the style one for each inserted text.\n copiedStyle = insertedText.map(function() {\n // this return an array of references, but that is fine since we are\n // copying the style later.\n return copiedStyle[0];\n });\n }\n if (selection) {\n removeFrom = selectionStart;\n removeTo = selectionEnd;\n }\n else if (backDelete) {\n // detect differencies between forwardDelete and backDelete\n removeFrom = selectionEnd - removedText.length;\n removeTo = selectionEnd;\n }\n else {\n removeFrom = selectionEnd;\n removeTo = selectionEnd + removedText.length;\n }\n this.removeStyleFromTo(removeFrom, removeTo);\n }\n if (insertedText.length) {\n if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) {\n copiedStyle = fabric.copiedTextStyle;\n }\n this.insertNewStyleBlock(insertedText, selectionStart, copiedStyle);\n }\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n },\n /**\n * Composition start\n */\n onCompositionStart: function() {\n this.inCompositionMode = true;\n },\n\n /**\n * Composition end\n */\n onCompositionEnd: function() {\n this.inCompositionMode = false;\n },\n\n // /**\n // * Composition update\n // */\n onCompositionUpdate: function(e) {\n this.compositionStart = e.target.selectionStart;\n this.compositionEnd = e.target.selectionEnd;\n this.updateTextareaPosition();\n },\n\n /**\n * Copies selected text\n * @param {Event} e Event object\n */\n copy: function() {\n if (this.selectionStart === this.selectionEnd) {\n //do not cut-copy if no selection\n return;\n }\n\n fabric.copiedText = this.getSelectedText();\n if (!fabric.disableStyleCopyPaste) {\n fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n }\n else {\n fabric.copiedTextStyle = null;\n }\n this._copyDone = true;\n },\n\n /**\n * Pastes text\n * @param {Event} e Event object\n */\n paste: function() {\n this.fromPaste = true;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @return {Object} Clipboard data object\n */\n _getClipboardData: function(e) {\n return (e && e.clipboardData) || fabric.window.clipboardData;\n },\n\n /**\n * Finds the width in pixels before the cursor on the same line\n * @private\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Number} widthBeforeCursor width before cursor\n */\n _getWidthBeforeCursor: function(lineIndex, charIndex) {\n var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n if (charIndex > 0) {\n bound = this.__charBounds[lineIndex][charIndex - 1];\n widthBeforeCursor += bound.left + bound.width;\n }\n return widthBeforeCursor;\n },\n\n /**\n * Gets start offset of a selection\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getDownCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n // if on last line, down cursor goes to end of line\n if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n // move to the end of a text\n return this._text.length - selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex);\n },\n\n /**\n * private\n * Helps finding if the offset should be counted from Start or End\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n _getSelectionForOffset: function(e, isRight) {\n if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n return this.selectionEnd;\n }\n else {\n return this.selectionStart;\n }\n },\n\n /**\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getUpCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n // if on first line, up cursor goes to start of line\n return -selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex),\n missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1);\n // return a negative offset\n return -this._textLines[lineIndex - 1].length\n + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset);\n },\n\n /**\n * for a given width it founds the matching character.\n * @private\n */\n _getIndexOnLine: function(lineIndex, width) {\n\n var line = this._textLines[lineIndex],\n lineLeftOffset = this._getLineLeftOffset(lineIndex),\n widthOfCharsOnLine = lineLeftOffset,\n indexOnLine = 0, charWidth, foundMatch;\n\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charWidth = this.__charBounds[lineIndex][j].width;\n widthOfCharsOnLine += charWidth;\n if (widthOfCharsOnLine > width) {\n foundMatch = true;\n var leftEdge = widthOfCharsOnLine - charWidth,\n rightEdge = widthOfCharsOnLine,\n offsetFromLeftEdge = Math.abs(leftEdge - width),\n offsetFromRightEdge = Math.abs(rightEdge - width);\n\n indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n break;\n }\n }\n\n // reached end\n if (!foundMatch) {\n indexOnLine = line.length - 1;\n }\n\n return indexOnLine;\n },\n\n\n /**\n * Moves cursor down\n * @param {Event} e Event object\n */\n moveCursorDown: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorUpOrDown('Down', e);\n },\n\n /**\n * Moves cursor up\n * @param {Event} e Event object\n */\n moveCursorUp: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorUpOrDown('Up', e);\n },\n\n /**\n * Moves cursor up or down, fires the events\n * @param {String} direction 'Up' or 'Down'\n * @param {Event} e Event object\n */\n _moveCursorUpOrDown: function(direction, e) {\n // getUpCursorOffset\n // getDownCursorOffset\n var action = 'get' + direction + 'CursorOffset',\n offset = this[action](e, this._selectionDirection === 'right');\n if (e.shiftKey) {\n this.moveCursorWithShift(offset);\n }\n else {\n this.moveCursorWithoutShift(offset);\n }\n if (offset !== 0) {\n this.setSelectionInBoundaries();\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor with shift\n * @param {Number} offset\n */\n moveCursorWithShift: function(offset) {\n var newSelection = this._selectionDirection === 'left'\n ? this.selectionStart + offset\n : this.selectionEnd + offset;\n this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n return offset !== 0;\n },\n\n /**\n * Moves cursor up without shift\n * @param {Number} offset\n */\n moveCursorWithoutShift: function(offset) {\n if (offset < 0) {\n this.selectionStart += offset;\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionEnd += offset;\n this.selectionStart = this.selectionEnd;\n }\n return offset !== 0;\n },\n\n /**\n * Moves cursor left\n * @param {Event} e Event object\n */\n moveCursorLeft: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorLeftOrRight('Left', e);\n },\n\n /**\n * @private\n * @return {Boolean} true if a change happened\n */\n _move: function(e, prop, direction) {\n var newValue;\n if (e.altKey) {\n newValue = this['findWordBoundary' + direction](this[prop]);\n }\n else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) {\n newValue = this['findLineBoundary' + direction](this[prop]);\n }\n else {\n this[prop] += direction === 'Left' ? -1 : 1;\n return true;\n }\n if (typeof newValue !== undefined && this[prop] !== newValue) {\n this[prop] = newValue;\n return true;\n }\n },\n\n /**\n * @private\n */\n _moveLeft: function(e, prop) {\n return this._move(e, prop, 'Left');\n },\n\n /**\n * @private\n */\n _moveRight: function(e, prop) {\n return this._move(e, prop, 'Right');\n },\n\n /**\n * Moves cursor left without keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithoutShift: function(e) {\n var change = true;\n this._selectionDirection = 'left';\n\n // only move cursor when there is no selection,\n // otherwise we discard it, and leave cursor on same place\n if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n change = this._moveLeft(e, 'selectionStart');\n\n }\n this.selectionEnd = this.selectionStart;\n return change;\n },\n\n /**\n * Moves cursor left while keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithShift: function(e) {\n if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n return this._moveLeft(e, 'selectionEnd');\n }\n else if (this.selectionStart !== 0){\n this._selectionDirection = 'left';\n return this._moveLeft(e, 'selectionStart');\n }\n },\n\n /**\n * Moves cursor right\n * @param {Event} e Event object\n */\n moveCursorRight: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorLeftOrRight('Right', e);\n },\n\n /**\n * Moves cursor right or Left, fires event\n * @param {String} direction 'Left', 'Right'\n * @param {Event} e Event object\n */\n _moveCursorLeftOrRight: function(direction, e) {\n var actionName = 'moveCursor' + direction + 'With';\n this._currentCursorOpacity = 1;\n\n if (e.shiftKey) {\n actionName += 'Shift';\n }\n else {\n actionName += 'outShift';\n }\n if (this[actionName](e)) {\n this.abortCursorAnimation();\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor right while keeping selection\n * @param {Event} e\n */\n moveCursorRightWithShift: function(e) {\n if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n return this._moveRight(e, 'selectionStart');\n }\n else if (this.selectionEnd !== this._text.length) {\n this._selectionDirection = 'right';\n return this._moveRight(e, 'selectionEnd');\n }\n },\n\n /**\n * Moves cursor right without keeping selection\n * @param {Event} e Event object\n */\n moveCursorRightWithoutShift: function(e) {\n var changed = true;\n this._selectionDirection = 'right';\n\n if (this.selectionStart === this.selectionEnd) {\n changed = this._moveRight(e, 'selectionStart');\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionStart = this.selectionEnd;\n }\n return changed;\n },\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars: function(start, end) {\n if (typeof end === 'undefined') {\n end = start + 1;\n }\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars: function(text, style, start, end) {\n if (typeof end === 'undefined') {\n end = start;\n }\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n var graphemes = fabric.util.string.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n var toFixed = fabric.util.toFixed,\n multipleSpacesRegex = / +/g;\n\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function() {\n var offsets = this._getSVGLeftTopOffsets(),\n textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);\n return this._wrapSVGTextAndBg(textAndBg);\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(\n this._toSVG(),\n { reviver: reviver, noStyle: true, withShadow: true }\n );\n },\n\n /**\n * @private\n */\n _getSVGLeftTopOffsets: function() {\n return {\n textLeft: -this.width / 2,\n textTop: -this.height / 2,\n lineTop: this.getHeightOfLine(0)\n };\n },\n\n /**\n * @private\n */\n _wrapSVGTextAndBg: function(textAndBg) {\n var noShadow = true,\n textDecoration = this.getSvgTextDecoration(this);\n return [\n textAndBg.textBgRects.join(''),\n '\\t\\t',\n textAndBg.textSpans.join(''),\n '\\n'\n ];\n },\n\n /**\n * @private\n * @param {Number} textTopOffset Text top offset\n * @param {Number} textLeftOffset Text left offset\n * @return {Object}\n */\n _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n var textSpans = [],\n textBgRects = [],\n height = textTopOffset, lineOffset;\n // bounding-box background\n this._setSVGBg(textBgRects);\n\n // text and text-background\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineOffset = this._getLineLeftOffset(i);\n if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n }\n this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n height += this.getHeightOfLine(i);\n }\n\n return {\n textSpans: textSpans,\n textBgRects: textBgRects\n };\n },\n\n /**\n * @private\n */\n _createTextCharSpan: function(_char, styleDecl, left, top) {\n var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n dy = styleDecl.deltaY, dySpan = '',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n if (dy) {\n dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n }\n return [\n '',\n fabric.util.string.escapeXml(_char),\n ''\n ].join('');\n },\n\n _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox, style,\n boxWidth = 0,\n line = this._textLines[lineIndex],\n timeToRender;\n\n textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n textLeftOffset += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle);\n }\n if (timeToRender) {\n style = this._getStyleDeclaration(lineIndex, i) || { };\n textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n charsToRender = '';\n actualStyle = nextStyle;\n textLeftOffset += boxWidth;\n boxWidth = 0;\n }\n }\n },\n\n _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n },\n\n _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n var line = this._textLines[i],\n heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n boxWidth = 0,\n boxStart = 0,\n charBox, currentColor,\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n },\n\n /**\n * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n *\n * @private\n * @param {*} value\n * @return {String}\n */\n _getFillAttributes: function(value) {\n var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n return 'fill=\"' + value + '\"';\n }\n return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n },\n\n /**\n * @private\n */\n _getSVGLineTopOffset: function(lineIndex) {\n var lineTopOffset = 0, lastHeight = 0;\n for (var j = 0; j < lineIndex; j++) {\n lineTopOffset += this.getHeightOfLine(j);\n }\n lastHeight = this.getHeightOfLine(j);\n return {\n lineTop: lineTopOffset,\n offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n };\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n return svgStyle + ' white-space: pre;';\n },\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {});\n\n /**\n * Textbox class, based on IText, allows the user to resize the text rectangle\n * and wraps lines automatically. Textboxes have their Y scaling locked, the\n * user can only change width. Height is adjusted automatically based on the\n * wrapping of lines.\n * @class fabric.Textbox\n * @extends fabric.IText\n * @mixes fabric.Observable\n * @return {fabric.Textbox} thisArg\n * @see {@link fabric.Textbox#initialize} for constructor definition\n */\n fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'textbox',\n\n /**\n * Minimum width of textbox, in pixels.\n * @type Number\n * @default\n */\n minWidth: 20,\n\n /**\n * Minimum calculated width of a textbox, in pixels.\n * fixed to 2 so that an empty textbox cannot go to 0\n * and is still selectable without text.\n * @type Number\n * @default\n */\n dynamicMinWidth: 2,\n\n /**\n * Cached array of text wrapping.\n * @type Array\n */\n __cachedLines: null,\n\n /**\n * Override standard Object class values\n */\n lockScalingFlip: true,\n\n /**\n * Override standard Object class values\n * Textbox needs this on false\n */\n noScaleCache: false,\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Object\n * @private\n */\n _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n /**\n * Use this regular expression to split strings in breakable lines\n * @private\n */\n _wordJoiners: /[ \\t\\r]/,\n\n /**\n * Use this boolean property in order to split strings that have no white space concept.\n * this is a cheap way to help with chinese/japaense\n * @type Boolean\n * @since 2.6.0\n */\n splitByGrapheme: false,\n\n /**\n * Unlike superclass's version of this function, Textbox does not update\n * its width.\n * @private\n * @override\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this._clearCache();\n // clear dynamicMinWidth as it will be different after we re-wrap line\n this.dynamicMinWidth = 0;\n // wrap lines\n this._styleMap = this._generateStyleMap(this._splitText());\n // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n if (this.dynamicMinWidth > this.width) {\n this._set('width', this.dynamicMinWidth);\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n // clear cache and re-calculate height\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Generate an object that translates the style object so that it is\n * broken up by visual lines (new lines and automatic wrapping).\n * The original text styles object is broken up by actual lines (new lines only),\n * which is only sufficient for Text / IText\n * @private\n */\n _generateStyleMap: function(textInfo) {\n var realLineCount = 0,\n realLineCharCount = 0,\n charCount = 0,\n map = {};\n\n for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n realLineCharCount = 0;\n charCount++;\n realLineCount++;\n }\n else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n // this case deals with space's that are removed from end of lines when wrapping\n realLineCharCount++;\n charCount++;\n }\n\n map[i] = { line: realLineCount, offset: realLineCharCount };\n\n charCount += textInfo.graphemeLines[i].length;\n realLineCharCount += textInfo.graphemeLines[i].length;\n }\n\n return map;\n },\n\n /**\n * Returns true if object has a style property or has it on a specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (map) {\n lineIndex = map.line;\n }\n }\n return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n },\n\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,\n map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];\n if (map) {\n lineIndex = map.line;\n offset = map.offset;\n }\n if (mapNextLine) {\n nextLineIndex = mapNextLine.line;\n shouldLimit = nextLineIndex === lineIndex;\n nextOffset = mapNextLine.offset;\n }\n obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n }\n return true;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (!map) {\n return null;\n }\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n }\n return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * probably broken need a fix\n * Returns the real style line that correspond to the wrapped lineIndex line\n * Used just to verify if the line does exist or not.\n * @param {Number} lineIndex\n * @returns {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n return !!this.styles[map.line];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n this.styles[map.line] = {};\n },\n\n /**\n * Wraps text using the 'width' property of Textbox. First this function\n * splits text on newlines, so we preserve newlines entered by the user.\n * Then it wraps each line using the width of the Textbox by calling\n * _wrapLine().\n * @param {Array} lines The string array of text that is split into lines\n * @param {Number} desiredWidth width you want to wrap to\n * @returns {Array} Array of lines\n */\n _wrapText: function(lines, desiredWidth) {\n var wrapped = [], i;\n this.isWrapping = true;\n for (i = 0; i < lines.length; i++) {\n wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n }\n this.isWrapping = false;\n return wrapped;\n },\n\n /**\n * Helper function to measure a string of text, given its lineIndex and charIndex offset\n * it gets called when charBounds are not available yet.\n * @param {CanvasRenderingContext2D} ctx\n * @param {String} text\n * @param {number} lineIndex\n * @param {number} charOffset\n * @returns {number}\n * @private\n */\n _measureWord: function(word, lineIndex, charOffset) {\n var width = 0, prevGrapheme, skipLeft = true;\n charOffset = charOffset || 0;\n for (var i = 0, len = word.length; i < len; i++) {\n var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n width += box.kernedWidth;\n prevGrapheme = word[i];\n }\n return width;\n },\n\n /**\n * Wraps a line of text using the width of the Textbox and a context.\n * @param {Array} line The grapheme array that represent the line\n * @param {Number} lineIndex\n * @param {Number} desiredWidth width you want to wrap the line to\n * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n * @returns {Array} Array of line(s) into which the given text is wrapped\n * to.\n */\n _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n var lineWidth = 0,\n splitByGrapheme = this.splitByGrapheme,\n graphemeLines = [],\n line = [],\n // spaces in different languges?\n words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),\n word = '',\n offset = 0,\n infix = splitByGrapheme ? '' : ' ',\n wordWidth = 0,\n infixWidth = 0,\n largestWordWidth = 0,\n lineJustStarted = true,\n additionalSpace = splitByGrapheme ? 0 : this._getWidthOfCharSpacing(),\n reservedSpace = reservedSpace || 0;\n // fix a difference between split and graphemeSplit\n if (words.length === 0) {\n words.push([]);\n }\n desiredWidth -= reservedSpace;\n for (var i = 0; i < words.length; i++) {\n // if using splitByGrapheme words are already in graphemes.\n word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);\n wordWidth = this._measureWord(word, lineIndex, offset);\n offset += word.length;\n\n lineWidth += infixWidth + wordWidth - additionalSpace;\n\n if (lineWidth >= desiredWidth && !lineJustStarted) {\n graphemeLines.push(line);\n line = [];\n lineWidth = wordWidth;\n lineJustStarted = true;\n }\n else {\n lineWidth += additionalSpace;\n }\n\n if (!lineJustStarted && !splitByGrapheme) {\n line.push(infix);\n }\n line = line.concat(word);\n\n infixWidth = this._measureWord([infix], lineIndex, offset);\n offset++;\n lineJustStarted = false;\n // keep track of largest word\n if (wordWidth > largestWordWidth) {\n largestWordWidth = wordWidth;\n }\n }\n\n i && graphemeLines.push(line);\n\n if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n }\n\n return graphemeLines;\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @param {Number} lineIndex text to split\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n if (!this._styleMap[lineIndex + 1]) {\n // is last line, return true;\n return true;\n }\n if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n // this is last line before a line break, return true;\n return true;\n }\n return false;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * @return Number\n */\n missingNewlineOffset: function(lineIndex) {\n if (this.splitByGrapheme) {\n return this.isEndOfWrapping(lineIndex) ? 1 : 0;\n }\n return 1;\n },\n\n /**\n * Gets lines of text to render in the Textbox. This function calculates\n * text wrapping on the fly every time it is called.\n * @param {String} text text to split\n * @returns {Array} Array of lines in the Textbox.\n * @override\n */\n _splitTextIntoLines: function(text) {\n var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n graphemeLines = this._wrapText(newText.lines, this.width),\n lines = new Array(graphemeLines.length);\n for (var i = 0; i < graphemeLines.length; i++) {\n lines[i] = graphemeLines[i].join('');\n }\n newText.lines = lines;\n newText.graphemeLines = graphemeLines;\n return newText;\n },\n\n getMinWidth: function() {\n return Math.max(this.minWidth, this.dynamicMinWidth);\n },\n\n _removeExtraneousStyles: function() {\n var linesToKeep = {};\n for (var prop in this._styleMap) {\n if (this._textLines[prop]) {\n linesToKeep[this._styleMap[prop].line] = 1;\n }\n }\n for (var prop in this.styles) {\n if (!linesToKeep[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));\n }\n });\n\n /**\n * Returns fabric.Textbox instance from an object representation\n * @static\n * @memberOf fabric.Textbox\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n */\n fabric.Textbox.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Textbox', object, callback, 'text');\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\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 */\n function 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\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function 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 /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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 /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function 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\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\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 */\n function 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\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\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 */\n function 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\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\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 */\n function 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\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function 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\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\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 */\n function 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\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\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 */\n function 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\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\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 */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\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 */\n function 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\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\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 */\n function 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\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\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 */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\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 */\n function 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\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\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 */\n function 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\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\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 */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\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 */\n function 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\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\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 */\n function 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\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\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 */\n var 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\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 */\n function 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\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 */\n function 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\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\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 */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\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 */\n function 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\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\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 */\n function 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\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\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 */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` 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 five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\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 */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.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 _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\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 */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\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 */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values 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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '