{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/bignumber.js/bignumber.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/panolens/build/panolens.module.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isArray.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_root.js","webpack:///./node_modules/chartkick/dist/chartkick.esm.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isObject.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getNative.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/toString.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/get.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isSymbol.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseGetTag.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Symbol.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isObjectLike.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_toKey.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_nativeCreate.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_ListCache.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_assocIndexOf.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/eq.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getMapData.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isIndex.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isArrayLike.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/identity.js","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/chart.js/auto/auto.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack:///./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack:///./node_modules/date-fns/esm/constants/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/constants.js","webpack:///./node_modules/date-fns/esm/parse/_lib/utils.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack:///./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/chartkick/chart.js/chart.esm.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","webpack:///./app/javascript/packs/admin/api_response_room_design_page.js","webpack:///./app/javascript/packs/admin/form_room_design_show_page.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/account_select2_controller.js","webpack:///./app/javascript/controllers/activities_line_chart_controller.js","webpack:///./app/javascript/controllers/add_item_form_controller.js","webpack:///./app/javascript/controllers/add_to_cart_controller.js","webpack:///./app/javascript/controllers/admin_setting_form_controller.js","webpack:///./app/javascript/controllers/art_filter_controller.js","webpack:///./app/javascript/controllers/auto_submit_form_controller.js","webpack:///./app/javascript/controllers/catalog_select2_controller.js","webpack:///./app/javascript/controllers/change_password_form_controller.js","webpack:///./app/javascript/controllers/chat_controller.js","webpack:///./app/javascript/controllers/ckeditor_controller.js","webpack:///./app/javascript/controllers/clipboard_controller.js","webpack:///./app/javascript/controllers/closeable_navs_controller.js","webpack:///./app/javascript/controllers/create_multi_catalog_items_controller.js","webpack:///./app/javascript/controllers/create_quote_controller.js","webpack:///./app/javascript/controllers/custom_items_api_setting_controller.js","webpack:///./app/javascript/controllers/design_families_select2_controller.js","webpack:///./app/javascript/controllers/dropdown_controller.js","webpack:///./app/javascript/controllers/edit_catalog_form_controller.js","webpack:///./app/javascript/controllers/embed_setting_controller.js","webpack:///./app/javascript/controllers/exclusive_family_controller.js","webpack:///./app/javascript/controllers/floating_catalog_items_filter_controller.js","webpack:///./app/javascript/controllers/flycam_controller.js","webpack:///./app/javascript/controllers/infinited_scrolling_controller.js","webpack:///./app/javascript/controllers/inquiry_form_controller.js","webpack:///./app/javascript/controllers/item_categories_controller.js","webpack:///./app/javascript/controllers/item_set_image_form_controller.js","webpack:///./app/javascript/controllers/magento_price_controller.js","webpack:///./app/javascript/controllers/member_select2_controller.js","webpack:///./app/javascript/controllers/multi_items_select_controller.js","webpack:///./app/javascript/controllers/my_catalog_item_controller.js","webpack:///./app/javascript/controllers/my_catalog_items_controller.js","webpack:///./app/javascript/controllers/my_catalog_selector_controller.js","webpack:///./app/javascript/controllers/notion_block_controller.js","webpack:///./app/javascript/controllers/open_custom_item_controller.js","webpack:///./app/javascript/controllers/owl_carousel_controller.js","webpack:///./app/javascript/controllers/panorama_controller.js","webpack:///./app/javascript/controllers/panorama_set_controller.js","webpack:///./app/javascript/controllers/presentation_pin_controller.js","webpack:///./app/javascript/controllers/registration_form_controller.js","webpack:///./app/javascript/controllers/review_room_design_image_controller.js","webpack:///./app/javascript/controllers/room_design_image_form_controller.js","webpack:///./app/javascript/controllers/search_articles_controller.js","webpack:///./app/javascript/controllers/select_all_controller.js","webpack:///./app/javascript/controllers/special_message_form_controller.js","webpack:///./app/javascript/controllers/stripe_checkout_controller.js","webpack:///./app/javascript/controllers/studio_setting_controller.js","webpack:///./app/javascript/controllers/tag_input_controller.js","webpack:///./app/javascript/controllers/tags_select2_controller.js","webpack:///./app/javascript/controllers/text_searching_controller.js","webpack:///./app/javascript/controllers/toc_controller.js","webpack:///./app/javascript/controllers/toggle_shipping_address_controller.js","webpack:///./app/javascript/controllers/unsplash_image_controller.js","webpack:///./app/javascript/controllers/update_email_controller.js","webpack:///./app/javascript/controllers/update_password_controller.js","webpack:///./app/javascript/controllers/upload_brand_cover_image_controller.js","webpack:///./app/javascript/controllers/upload_ftp_file_controller.js","webpack:///./app/javascript/controllers/upload_room_file_controller.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseGet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_castPath.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isKey.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_MapCache.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Map.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isArguments.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isLength.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_setToArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isIterateeCall.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/keys.js","webpack:///./app/javascript/packs/gallery/show_page.js","webpack:///./app/javascript/packs/global/admin_global_application.js","webpack:///./app/javascript/packs/global/global_application.js","webpack:///./app/javascript/packs/groups/group_invitations_new_page.js","webpack:///./app/javascript/packs/groups/group_members_index_page.js","webpack:///./app/javascript/packs/groups/group_show_page.js","webpack:///./app/javascript/packs/groups/groups_index_page.js","webpack:///./app/javascript/packs/home.js","webpack:///./app/javascript/packs/home/callback_page.js","webpack:///./app/javascript/packs/home/home_index_page.js","webpack:///./app/javascript/packs/member/change_password_page.js","webpack:///./app/javascript/packs/member/confirm_delete_page.js","webpack:///./app/javascript/packs/member/confirm_email_change_page.js","webpack:///./app/javascript/packs/member/edit_forgot_password_page.js","webpack:///./app/javascript/packs/member/forgot_password_page.js","webpack:///./app/javascript/packs/member/member_show_page.js","webpack:///./app/javascript/packs/member/new_session_page.js","webpack:///./app/javascript/packs/member/notifications/index_page.js","webpack:///./app/javascript/packs/member/register_page.js","webpack:///./app/javascript/packs/my_pages/my_catalog.js","webpack:///./app/javascript/packs/my_pages/my_pages.js","webpack:///./app/javascript/packs/my_pages/portfolios_page.js","webpack:///./app/javascript/packs/room_design/room_design_invite_friend_modal.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./app/javascript/src/routes.js","webpack:///./app/javascript/src/api/index.js","webpack:///./app/javascript/src/vuex/actions.js","webpack:///./app/javascript/src/vuex/index.js","webpack:///./app/javascript/src/vuex/state.js","webpack:///./app/javascript/src/vuex/mutations.js","webpack:///./app/javascript/src/vuex/getters.js","webpack:///./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack:///./app/javascript/src/i18n.js","webpack:///./app/javascript/src/pages/App.vue","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///app/javascript/src/pages/App.vue","webpack:///./app/javascript/src/pages/App.vue?da4f","webpack:///./app/javascript/packs/vue_application.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/set.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_freeGlobal.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isFunction.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_toSource.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayMap.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hasPath.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_assignValue.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_defineProperty.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_SetCache.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_cacheHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Set.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hasUnicode.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/toFinite.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseFlatten.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayPush.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Stack.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsEqual.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_equalArrays.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isBuffer.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/isTypedArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseUnary.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isStrictComparable.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_matchesStrictComparable.js","webpack:///./node_modules/i18n-js/dist/import/Locales.js","webpack:///./node_modules/i18n-js/dist/import/Pluralization.js","webpack:///./node_modules/make-plural/plurals.mjs","webpack:///./node_modules/i18n-js/dist/import/helpers/camelCaseKeys.js","webpack:///./node_modules/i18n-js/dist/import/helpers/isSet.js","webpack:///./node_modules/i18n-js/dist/import/helpers/expandRoundMode.js","webpack:///./node_modules/i18n-js/dist/import/helpers/roundNumber.js","webpack:///./node_modules/i18n-js/dist/import/helpers/formatNumber.js","webpack:///./node_modules/i18n-js/dist/import/helpers/getFullScope.js","webpack:///./node_modules/i18n-js/dist/import/helpers/inferType.js","webpack:///./node_modules/i18n-js/dist/import/helpers/interpolate.js","webpack:///./node_modules/i18n-js/dist/import/helpers/lookup.js","webpack:///./node_modules/i18n-js/dist/import/helpers/numberToDelimited.js","webpack:///./node_modules/i18n-js/dist/import/helpers/numberToHuman.js","webpack:///./node_modules/i18n-js/dist/import/helpers/numberToHumanSize.js","webpack:///./node_modules/i18n-js/dist/import/helpers/parseDate.js","webpack:///./node_modules/i18n-js/dist/import/helpers/pluralize.js","webpack:///./node_modules/i18n-js/dist/import/helpers/propertyFlatList.js","webpack:///./node_modules/i18n-js/dist/import/helpers/strftime.js","webpack:///./node_modules/i18n-js/dist/import/helpers/timeAgoInWords.js","webpack:///./node_modules/i18n-js/dist/import/MissingTranslation.js","webpack:///./node_modules/i18n-js/dist/import/I18n.js","webpack:///./node_modules/i18n-js/dist/import/helpers/createTranslationOptions.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/has.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/uniq.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/camelCase.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/repeat.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/sortBy.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/zipObject.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/flattenDeep.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/range.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/owl.carousel/dist/owl.carousel.js","webpack:///./node_modules/bootstrap-autocomplete/dist/latest/bootstrap-autocomplete.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getRawTag.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_objectToString.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stringToPath.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_memoizeCapped.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/memoize.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapCacheClear.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Hash.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hashClear.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsNative.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isMasked.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_coreJsData.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getValue.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hashDelete.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hashGet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hashHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hashSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_listCacheClear.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_listCacheDelete.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_listCacheGet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_listCacheHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_listCacheSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapCacheDelete.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isKeyable.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapCacheGet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapCacheHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapCacheSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseToString.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsArguments.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseAssignValue.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseUniq.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_setCacheAdd.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_setCacheHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayIncludes.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIndexOf.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseFindIndex.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsNaN.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_strictIndexOf.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayIncludesWith.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/noop.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/capitalize.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/upperFirst.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createCaseFirst.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_castSlice.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseSlice.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stringToArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_asciiToArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_unicodeToArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createCompounder.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayReduce.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/deburr.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_deburrLetter.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_basePropertyOf.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/words.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_asciiWords.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_hasUnicodeWord.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_unicodeWords.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseRepeat.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/toInteger.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/toNumber.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseTrim.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_trimmedEndIndex.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isFlattenable.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseOrderBy.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIteratee.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseMatches.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsMatch.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stackClear.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stackDelete.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stackGet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stackHas.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_stackSet.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arraySome.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_equalByTag.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Uint8Array.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_mapToArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_equalObjects.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getAllKeys.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseGetAllKeys.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getSymbols.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayFilter.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/stubArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_arrayLikeKeys.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseTimes.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/stubFalse.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseIsTypedArray.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_nodeUtil.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseKeys.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_isPrototype.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_nativeKeys.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_overArg.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getTag.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_DataView.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_Promise.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_WeakMap.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_getMatchData.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseMatchesProperty.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/hasIn.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseHasIn.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/property.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseProperty.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_basePropertyDeep.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseMap.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseEach.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseForOwn.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseFor.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createBaseFor.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createBaseEach.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseSortBy.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_compareMultiple.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_compareAscending.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseRest.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_overRest.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_apply.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_setToString.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseSetToString.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/constant.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_shortOut.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseZipObject.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_createRange.js","webpack:///./node_modules/i18n-js/dist/import/vendor/lodash/_baseRange.js","webpack:///./app/javascript/packs sync \\.js$","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./app/javascript/channels/x3ds_file_channel.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventDispatcher","undefined","Number","EPSILON","Math","pow","isInteger","isFinite","floor","sign","x","Function","this","toString","match","assign","target","TypeError","output","index","arguments","length","source","nextKey","addEventListener","type","listener","_listeners","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","splice","dispatchEvent","event","array","slice","v1","quaternion","_canvas","REVISION","MOUSE","LEFT","MIDDLE","RIGHT","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","FrontSide","BackSide","DoubleSide","NoColors","VertexColors","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","Uncharted2ToneMapping","CineonToneMapping","ACESFilmicToneMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","SphericalReflectionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipMapNearestFilter","LinearMipMapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","TrianglesDrawMode","TriangleStripDrawMode","TriangleFanDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","_Math","DEG2RAD","PI","RAD2DEG","generateUUID","lut","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","mapLinear","a1","a2","b1","b2","lerp","y","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","Vector2","Quaternion","z","w","_x","_y","_z","_w","Vector3","Matrix3","elements","console","error","defineProperties","set","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","add","warn","addVectors","addScalar","a","b","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","e","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","sqrt","manhattanLength","abs","normalize","angle","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","alpha","lerpVectors","v2","equals","fromArray","offset","toArray","fromBufferAttribute","attribute","getX","getY","rotateAround","center","cos","sin","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","f","onChangeCallback","isQuaternion","setFromEuler","euler","update","isEuler","order","c1","c2","c3","s1","s2","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","angleTo","q","acos","rotateTowards","step","inverse","conjugate","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","onChange","callback","isVector3","setZ","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyMatrix4","qx","qy","qz","qw","ix","iy","iz","iw","project","camera","matrixWorldInverse","projectionMatrix","unproject","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","vector","projectOnPlane","planeNormal","reflect","normal","theta","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","sx","setFromMatrixColumn","sy","sz","getZ","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","identity","me","setFromMatrix4","applyToBufferAttribute","count","setXYZ","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","g","h","getInverse","matrix","throwOnDegenerate","isMatrix4","t11","t12","t13","det","msg","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","setUvTransform","tx","ty","rotation","cx","cy","scale","rotate","translate","points","closestPoint","box","sphere","zero","one","ImageUtils","getDataURL","image","canvas","HTMLCanvasElement","src","document","createElementNS","width","height","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","Vector4","WebGLRenderTarget","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","WebGLMultisampleRenderTarget","samples","WebGLRenderTargetCube","DataTexture","data","Box3","Infinity","Sphere","Plane","constant","Frustum","p0","p1","p2","p3","p4","p5","planes","Matrix4","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","Array","isArray","dispose","transformUv","uv","isVector4","setW","setAxisAngleFromQuaternion","setAxisAngleFromRotationMatrix","epsilon","epsilon2","xx","yy","zz","xy","xz","yz","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","isWebGLRenderTargetCube","isDataTexture","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scope","traverse","node","geometry","isGeometry","vertices","isBufferGeometry","attributes","position","updateMatrixWorld","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","intersectsPlane","plane","intersectsTriangle","v0","f0","f1","f2","testAxis","extents","triangleNormal","satForAxes","axes","j","triangle","distanceToPoint","getBoundingSphere","intersect","union","optionalCenter","maxRadiusSq","empty","radiusSum","deltaLengthSq","getBoundingBox","getMaxScaleOnAxis","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","line","direction","delta","denominator","start","intersectsLine","startSign","endSign","end","coplanarPoint","m1","optionalNormalMatrix","normalMatrix","referencePoint","frustum","setFromMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","boundingSphere","computeBoundingSphere","intersectsSprite","sprite","negRadius","n14","n24","n34","n41","n42","n43","n44","copyPosition","extractBasis","xAxis","yAxis","zAxis","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","ShaderChunk","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","cloneUniforms","u","isColor","mergeUniforms","uniforms","merged","hslA","hslB","hsl","ColorKeywords","Color","setRGB","setHex","setStyle","hex","setHSL","hue2rgb","style","handleAlpha","string","parseFloat","exec","color","components","parseInt","charAt","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","SRGBToLinear","copyLinearToSRGB","LinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","UniformsLib","diffuse","opacity","map","uvTransform","alphaMap","specularmap","specularMap","envmap","envMap","flipEnvMap","reflectivity","refractionRatio","maxMipLevel","aomap","aoMap","aoMapIntensity","lightmap","lightMap","lightMapIntensity","emissivemap","emissiveMap","bumpmap","bumpMap","bumpScale","normalmap","normalMap","normalScale","displacementmap","displacementMap","displacementScale","displacementBias","roughnessmap","roughnessMap","metalnessmap","metalnessMap","gradientmap","gradientMap","fog","fogDensity","fogNear","fogFar","fogColor","lights","ambientLightColor","lightProbe","directionalLights","properties","shadow","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","distance","coneCos","penumbraCos","decay","spotShadowMap","spotShadowMatrix","pointLights","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ShaderLib","basic","vertexShader","fragmentShader","lambert","emissive","phong","specular","shininess","standard","roughness","metalness","envMapIntensity","matcap","dashed","dashSize","totalSize","depth","background","t2D","cube","tCube","tFlip","equirect","tEquirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","requestAnimationFrame","stop","setAnimationLoop","setContext","WebGLAttributes","gl","buffers","WeakMap","isInterleavedBufferAttribute","remove","deleteBuffer","buffer","delete","bufferType","usage","dynamic","createBuffer","bindBuffer","bufferData","onUploadCallback","Float32Array","Float64Array","Uint16Array","Int16Array","Uint32Array","Int32Array","Int8Array","Uint8Array","bytesPerElement","BYTES_PER_ELEMENT","updateRange","bufferSubData","subarray","updateBuffer","Face3","materialIndex","vertexNormals","vertexColors","Euler","_order","DefaultOrder","Layers","mask","physical","clearCoat","clearCoatRoughness","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","channel","enable","toggle","disable","test","layers","q1","object3DId","Object3D","parent","children","DefaultUp","configurable","modelViewMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","isObject3D","onBeforeRender","onAfterRender","applyMatrix","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","translateX","translateY","translateZ","localToWorld","worldToLocal","updateWorldMatrix","isCamera","isLight","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","element","JSON","stringify","isMesh","drawMode","isLine","isPoints","parameters","shape","material","uuids","extractFromCache","cache","values","recursive","parse","child","obj","geometryId","Geometry","colors","faces","faceVertexUvs","morphTargets","morphNormals","skinWeights","skinIndices","lineDistances","boundingBox","elementsNeedUpdate","verticesNeedUpdate","uvsNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","lineDistancesNeedUpdate","groupsNeedUpdate","BufferAttribute","itemSize","normalized","Int8BufferAttribute","Uint8BufferAttribute","Uint8ClampedBufferAttribute","Uint8ClampedArray","Int16BufferAttribute","Uint16BufferAttribute","Int32BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","Float64BufferAttribute","DirectGeometry","normals","uvs","uvs2","groups","arrayMax","face","jl","computeBoundingBox","fromBufferGeometry","indices","positions","uv2","addFace","group","computeFaceNormals","cb","ab","fl","vA","vB","vC","computeVertexNormals","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","merge","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","uvs1","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","uvCopy","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","precision","faceIndicesToRemove","idx","diff","sortFacesByMaterialIndex","_id","sort","newUvs1","newUvs2","vertex","normalsHash","colorsHash","uvsHash","hasFaceVertexUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","k","kl","uvsCopy","morphTarget","morphNormal","srcVertexNormal","destVertexNormal","isBufferAttribute","setArray","setDynamic","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZW","onUpload","computeGroups","fromGeometry","morphTargetsPosition","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","bufferGeometryId","BufferGeometry","morphAttributes","drawRange","BoxGeometry","widthSegments","heightSegments","depthSegments","BoxBufferGeometry","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","addGroup","setIndex","addAttribute","PlaneGeometry","PlaneBufferGeometry","width_half","height_half","segment_width","segment_height","getIndex","getAttribute","removeAttribute","clearGroups","setDrawRange","needsUpdate","tangent","updateFromObject","direct","__directGeometry","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","isNaN","boxMorphTargets","pA","pB","pC","normalizeNormals","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","array2","geometry2","newAttribute","morphArray","keys","attributeData","hasMorphAttributes","attributeArray","materialId","Material","blending","side","flatShading","vertexTangents","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","isMaterial","onBeforeCompile","setValues","newValue","currentValue","isRoot","emissiveIntensity","normalMapType","combine","sizeAttenuation","linewidth","gapSize","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","srcPlanes","dstPlanes","segCenter","segDir","barycoord","vab","vac","vbc","vap","vbp","vcp","default_vertex","default_fragment","ShaderMaterial","defines","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","Ray","origin","Triangle","MeshBasicMaterial","Mesh","updateMorphTargets","WebGLBackground","renderer","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","render","renderList","scene","forceClear","vr","session","getSession","environmentBlendMode","autoClear","clear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","unshift","WebGLBufferRenderer","info","capabilities","setMode","drawArrays","renderInstances","extension","isWebGL2","maxInstancedCount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","_bufferGeometry","geometryAttributes","getWireframeAttribute","geometryIndex","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","reset","instanceCount","absNumericalSort","WebGLMorphtargets","influencesList","morphInfluences","program","objectInfluences","morphTargetInfluences","influences","influence","getUniforms","setValue","WebGLObjects","updateList","CubeTexture","DataTexture2DArray","wrapR","DataTexture3D","isShaderMaterial","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getUV","uv1","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","d4","vc","d5","d6","vb","va","isMeshBasicMaterial","setDrawMode","morphTargetDictionary","ml","String","inverseMatrix","tempA","tempB","tempC","morphA","morphB","morphC","uvA","uvB","uvC","intersectionPoint","intersectionPointWorld","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","intersection","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","faceMaterial","uvs_f","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","debug","shader","createShader","shaderSource","compileShader","getShaderParameter","getShaderInfoLog","split","join","addLineNumbers","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getTexelDecodingFunction","functionName","getToneMappingFunction","toneMapping","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","parseIncludes","include","unrollLoops","snippet","unroll","WebGLProgram","code","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","prefixVertex","prefixFragment","gammaFactorDefine","customExtensions","rendererExtensions","envMapCubeUV","objectSpaceNormalMap","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","cachedAttributes","fragmentGlsl","glVertexShader","checkShaderErrors","glFragmentShader","attachShader","bindAttribLocation","linkProgram","programLog","getProgramInfoLog","trim","vertexLog","fragmentLog","runnable","haveDiagnostics","getError","diagnostics","prefix","deleteShader","getAttributes","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getTextureEncodingFromMap","gammaOverrideLinear","getParameters","shadows","nClipPlanes","nClipIntersection","shaderID","isSkinnedMesh","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","currentRenderTarget","getRenderTarget","gammaOutput","gammaInput","envMapMode","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCode","acquireProgram","pl","programInfo","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","WebGLLights","stateID","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","shadowsLength","ambient","probe","vector3","matrix42","setup","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","bias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","WebGLShadowMap","_renderer","_objects","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_MorphingFlag","_SkinningFlag","_NumberOfMaterialVariants","_depthMaterials","_distanceMaterials","_materialCache","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","getDepthMaterial","lightPositionWorld","result","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","variantIndex","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","renderBufferDirect","autoUpdate","faceCount","activeCubeFace","getActiveCubeFace","activeMipMapLevel","getActiveMipMapLevel","_state","setBlending","setTest","setScissorTest","vpWidth","vpHeight","pars","updateProjectionMatrix","isSpotLightShadow","shadowMatrix","setRenderTarget","vpDimensions","WebGLState","utils","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","setOp","stencilFail","stencilZFail","stencilZPass","stencilOp","stencil","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","enabledCapabilities","compressedTextureFormats","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","blendEquationSeparate","convert","blendFuncSeparate","blendFunc","setFlipSided","frontFace","setCullFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","initAttributes","enableAttribute","disableUnusedAttributes","disableVertexAttribArray","getCompressedTextureFormats","formats","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","compressedTexImage2D","apply","texImage3D","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","glFormat","glType","internalFormat","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTarget","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","glInternalFormat","setTextureParameters","mipmap","setTextureCubeDynamic","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","Group","Camera","PerspectiveCamera","fov","aspect","zoom","focus","view","filmGauge","filmOffset","ArrayCamera","isMeshDepthMaterial","isGroup","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","tan","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","isArrayCamera","matrixPosition","offsetMatrix","identityMatrix","cameraLPos","cameraRPos","setProjectionFromUnion","cameraL","cameraR","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","WebVRManager","renderWidth","renderHeight","device","frameData","poseTarget","controllers","standingMatrix","standingMatrixInverse","framebufferScaleFactor","referenceSpaceType","window","VRFrameData","onVRDisplayPresentChange","tempQuaternion","tempPosition","cameraVR","isPresenting","currentPixelRatio","currentSize","eyeParameters","getEyeParameters","getPixelRatio","setDrawingBufferSize","animation","triggers","findGamepad","gamepads","navigator","getGamepads","gamepad","startsWith","updateViewportFromBounds","bounds","getController","controller","getDevice","setDevice","setFramebufferScaleFactor","setReferenceSpaceType","setPoseTarget","getCamera","userHeight","depthNear","depthFar","getFrameData","stageParameters","sittingToStandingTransform","pose","poseObject","orientation","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","getLayers","layer","leftBounds","rightBounds","hasPosition","buttonId","buttons","pressed","updateControllers","getStandingMatrix","submitFrame","setFrameOfReferenceType","WebXRManager","referenceSpace","inputSources","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","onRequestReferenceSpace","updateCamera","setSession","updateRenderState","baseLayer","XRWebGLLayer","requestReferenceSpace","then","onAnimationFrameCallback","getViewerPose","views","getViewport","transform","inputPose","getPose","targetRaySpace","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_viewport","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_vector3","getTargetPixelRatio","contextAttributes","xrCompatible","onContextLost","onContextRestore","message","initGLContext","xr","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","vertexAttribPointer","normalArray","uvArray","colorArray","setProgram","updateBuffers","rangeFactor","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","initMaterial","projectObject","isImmediateRenderObject","renderObjects","overrideMaterial","camera2","renderObjectImmediate","materialProperties","lightsHash","lightsStateHash","programChange","numSupportedMorphTargets","numSupportedMorphNormals","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","isMeshPhongMaterial","isMeshStandardMaterial","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","boneMatrices","boneTextureSize","isFog","density","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsPhong","refreshUniformsToon","isMeshPhysicalMaterial","refreshUniformsStandard","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","ltc_1","LTC_1","ltc_2","LTC_2","uvScaleMap","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","FogExp2","Fog","Scene","InterleavedBuffer","InterleavedBufferAttribute","interleavedBuffer","Sprite","LOD","levels","SkinnedMesh","bindMode","bindMatrix","bindMatrixInverse","Skeleton","boneInverses","calculateInverses","Bone","linecap","linejoin","Line","LineSegments","LineLoop","Points","VideoTexture","video","CompressedTexture","CanvasTexture","DepthTexture","WireframeGeometry","ol","edge","edges","ParametricGeometry","func","slices","stacks","ParametricBufferGeometry","EPS","pu","pv","sliceCount","PolyhedronGeometry","detail","PolyhedronBufferGeometry","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","inclination","subdivide","appplyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","TetrahedronGeometry","TetrahedronBufferGeometry","OctahedronGeometry","OctahedronBufferGeometry","IcosahedronGeometry","IcosahedronBufferGeometry","DodecahedronGeometry","DodecahedronBufferGeometry","TubeGeometry","tubularSegments","radialSegments","closed","taper","bufferGeometry","TubeBufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateIndices","generateBufferData","TorusKnotGeometry","tube","heightScale","TorusKnotBufferGeometry","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","TorusGeometry","arc","TorusBufferGeometry","isScene","isInterleavedBuffer","intersectPoint","worldScale","mvPosition","alignedPosition","rotatedPosition","viewWorldMatrix","transformVertex","vertexPosition","isLOD","addLevel","getObjectForDistance","normalizeSkinWeights","skinWeight","bone","isBone","getBoneByName","computeLineDistances","positionAttribute","linePrecision","localPrecision","localPrecisionSq","vStart","vEnd","interSegment","interRay","nbVertices","threshold","params","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","distanceToRay","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","last","sum","signedArea","insertNode","removeNode","again","area","prev","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q2","Node","an","bp","ShapeUtils","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","forEach","ExtrudeGeometry","ExtrudeBufferGeometry","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","concat","scalePt2","pt","vec","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","TextGeometry","text","TextBufferGeometry","font","isFont","generateShapes","SphereGeometry","phiStart","phiLength","thetaStart","thetaLength","SphereBufferGeometry","thetaEnd","grid","verticesRow","uOffset","RingGeometry","innerRadius","outerRadius","thetaSegments","phiSegments","RingBufferGeometry","segment","radiusStep","thetaSegmentLevel","LatheGeometry","segments","LatheBufferGeometry","base","inverseSegments","n1","n2","ShapeGeometry","ShapeBufferGeometry","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","EdgesGeometry","thresholdAngle","thresholdDot","sourceVertices","face1","face2","CylinderGeometry","radiusTop","radiusBottom","openEnded","CylinderBufferGeometry","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","ConeGeometry","ConeBufferGeometry","CircleGeometry","CircleBufferGeometry","Geometries","freeze","RawShaderMaterial","Materials","AnimationUtils","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","Interpolant","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","duration","tracks","resetDuration","parseKeyframeTrack","json","trackType","typeName","toLowerCase","getTrackTypeForValueTypeName","evaluate","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","track","getInterpolation","ValueTypeName","InterpolantFactoryMethodDiscrete","getValueSize","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","createInterpolant","shift","timeOffset","timeScale","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","fps","clip","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","DefaultLoadingManager","loading","FileLoader","manager","DataTextureLoader","_parser","ImageLoader","CubeTextureLoader","TextureLoader","Curve","arcLengthDivisions","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","load","cached","setTimeout","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","header","open","callbacks","status","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setPath","setResponseType","setWithCredentials","setMimeType","loader","loadTexture","texDatas","loaded","mipmapCount","isCubemap","texData","crossOrigin","onImageLoad","onImageError","substr","setCrossOrigin","urls","isJPEG","search","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","CatmullRomCurve3","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezierCurve","v3","CubicBezierCurve3","LineCurve","LineCurve3","QuadraticBezierCurve","QuadraticBezierCurve3","SplineCurve","isCatmullRomCurve3","intPoint","weight","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","CurvePath","curves","autoClose","Path","currentPoint","Shape","Light","HemisphereLight","LightShadow","SpotLightShadow","SpotLight","power","PointLight","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","MaterialLoader","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","resolution","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","isOrthographicCamera","zoomW","zoomH","scaleW","scaleH","getTexture","shading","setTextures","LoaderUtils","lastIndexOf","InstancedBufferGeometry","InstancedBufferAttribute","BufferGeometryLoader","typedArray","TYPED_ARRAYS","bufferAttribute","drawcalls","offsets","ObjectLoader","resourcePath","setResourcePath","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","bufferGeometryLoader","details","geometryShapes","THREE","LegacyJSONLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","BlendingMode","textureLoader","materialLoader","UVMapping","ImageBitmapLoader","createImageBitmap","fetch","ShapePath","subPaths","currentPath","Font","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","Loader","setOptions","res","blob","imageBitmap","catch","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","paths","chars","line_height","yMax","yMin","underlineThickness","ret","createPaths","substring","Handlers","handlers","regex","onLoadStart","onLoadProgress","onLoadComplete","initMaterials","texturePath","createMaterial","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","AudioContext","webkitAudioContext","AudioLoader","SphericalHarmonics3","LightProbe","HemisphereLightProbe","sky","ground","AmbientLightProbe","StereoCamera","eyeSep","bufferCopy","decodeAudioData","audioBuffer","isSphericalHarmonics3","getAt","coeff","getIrradianceAt","getBasisAt","shBasis","isHemisphereLightProbe","isAmbientLightProbe","instance","eyeRight","eyeLeft","xmin","xmax","eyeSepOnProjection","ymax","CubeCamera","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","Clock","autoStart","oldTime","elapsedTime","running","AudioListener","gain","createGain","connect","destination","timeDelta","Audio","getInput","autoplay","detune","loop","playbackRate","isPlaying","hasPlaybackControl","sourceType","filters","PositionalAudio","panner","createPanner","panningModel","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getOutput","PropertyMixer","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","performance","Date","now","getElapsedTime","getDelta","newTime","removeFilter","disconnect","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","currentTime","clock","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","setNodeSource","audioNode","setMediaElementSource","mediaElement","createMediaElementSource","setBuffer","play","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","getVolume","setVolume","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","wordChar","wordCharOrDot","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","reservedRe","startP","startEnd","lineGeometry","coneGeometry","RESERVED_CHARS_RE","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","nodeName","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","AnimationMixer","root","_root","_initMemoryManager","_accuIndex","Uniform","InstancedInterleavedBuffer","Raycaster","PointCloud","ascSort","intersectObject","Box2","Line3","ImmediateRenderObject","VertexNormalsHelper","nNormals","objGeometry","SpotLightHelper","cone","getBoneList","boneList","SkeletonHelper","PointLightHelper","sphereSize","RectAreaLightHelper","HemisphereLightHelper","LightProbeHelper","GridHelper","PolarGridHelper","radials","circles","PositionalAudioHelper","divisionsInnerAngle","divisionsOuterAngle","materialInnerAngle","materialOuterAngle","FaceNormalsHelper","DirectionalLightHelper","lightPlane","targetLine","CameraHelper","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","BoxHelper","Box3Helper","PlaneHelper","ArrowHelper","headLength","headWidth","setDirection","AxesHelper","firstValidIndex","nCachedObjects_","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","RegExp","matches","results","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","childNode","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","inUse","bindingsPerObject","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","action","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","remove_empty_map","_","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","objPos","objNorm","coneLength","coneWidth","boneMatrix","matrixWorldInv","halfConeInnerAngle","halfConeOuterAngle","setPoint","setColor","Spline","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","extractUrlBase","setTexturePath","isIntersectionBox","isIntersectionSphere","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBuffer","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","copyIndicesArray","addIndex","addDrawCall","clearDrawCalls","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","shadowMapCullFace","renderReverseSided","renderSingleSided","standing","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","_slicedToArray","arr","_arrayWithHoles","iterator","done","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","EventListener","eventTarget","eventName","eventOptions","unorderedBindings","Set","bindingConnected","bindingDisconnected","handleEvent","extendedEvent","stopImmediatePropagation","immediatePropagationStopped","extendEvent","hasBindings","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","reduce","fetchEventListenerForBinding","clearEventListeners","clearEventListenersForBinding","handleError","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","defaultActionDescriptorFilters","_ref","stopPropagation","prevent","_ref2","self","_ref3","descriptorPattern","parseEventTarget","eventTargetName","camelize","namespaceCamelize","capitalize","dasherize","isSomething","hasProperty","allModifiers","Action","descriptor","schema","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","keyFilter","forToken","token","descriptorString","includes","parseActionDescriptorString","content","eventFilter","shouldIgnoreKeyboardEvent","keyFilterDissatisfied","standardFilter","keyMappings","shouldIgnoreMouseEvent","_ref4","typecast","_allModifiers$map2","modifier","ctrl","alt","metaKey","ctrlKey","altKey","shiftKey","button","form","input","select","textarea","o_O","Binding","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","method","actionDescriptorFilters","passes","_ref5","entries","_ref6","currentTarget","logDebugActivity","KeyboardEvent","MouseEvent","Element","contains","containsElement","ElementObserver","delegate","mutationObserverInit","childList","subtree","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","takeRecords","matchElementsInTree","has","removeElement","addElement","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","selector","hasAttribute","querySelectorAll","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","del","prune","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","_ref7","_ref8","_ref9","_ref10","SelectorObserver","_selector","matchesByElement","selectorMatchElement","selectorMatched","selectors","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","stringMap","attributeOldValue","knownAttributeNames","refreshAttribute","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","zip","findIndex","_ref11","_ref12","previousToken","currentToken","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_ref13","valueDescriptors","rawValue","rawOldValue","changedMethodName","changedMethod","reader","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref14","connectTarget","_ref15","disconnectTarget","_a","targetConnected","targetDisconnected","readInheritableStaticArrayValues","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","getPrototypeOf","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","_ref16","outlet","getOutlet","connectOutlet","_ref17","getOutletFromMap","disconnectOutlet","_ref18","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","outletConnected","outletDisconnected","selectorObserver","body","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","find","outletDependencies","dependencies","router","controllerConstructor","dependentControllerIdentifiers","identifiers","contexts","getControllerForElementAndIdentifier","Context","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_len","args","_key2","bless","shadowConstructor","extend","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","Reflect","setPrototypeOf","testReflectExtension","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAll","getAttributeName","getAttributeNameForKey","DataMap","setAttribute","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","_len2","targetNames","_key3","findTarget","findLegacyTarget","findAll","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","deprecate","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_len4","outletNames","_key5","findOutlet","_len5","_key6","findAllOutlets","queryElements","matchesElement","Scope","classes","closest","controllerSelector","documentScope","isDocumentScope","documentElement","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","afterLoad","disconnectModule","getContextForElementAndIdentifier","proposeToConnectScopeForElementAndIdentifier","defaultSchema","enter","tab","esc","space","down","home","page_up","page_down","objectFromEntries","memo","_ref19","_ref20","Application","_this2","logFormattedMessage","Promise","resolve","register","registerActionOption","head","_len6","rest","_key7","shouldLoad","unload","_len7","_key8","onerror","groupCollapsed","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","parseValueDefinitionPair","_ref21","_ref22","payload","typeDefinition","typeObject","typeFromObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","parseValueTypeObject","typeFromConstant","propertyPath","parseValueTypeDefinition","defaultValuesByType","constantFromType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Boolean","number","writeJSON","Controller","_identifier","_application","dispatch","_ref23","_ref23$target","_ref23$detail","_ref23$prefix","_ref23$bubbles","bubbles","_ref23$cancelable","cancelable","CustomEvent","classDefinition","targetDefinition","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","outletElement","propertiesForOutletDefinition","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","global","freeSelf","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","types","require","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","thisArg","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","props","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","arg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","uid","defaults","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","isObject","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","fn","arrLength","oldArray","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","toInteger","pair","noop","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findLastIndex","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","delay","resolver","memoized","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isNumber","isString","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","pickBy","prop","toPairs","toPairsIn","camelCase","word","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","dividend","divisor","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","setWith","shuffle","sortedUniq","sortedUniqBy","separator","limit","spread","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escape","escapeRegExp","every","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","template","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","each","eachRight","first","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","kindOf","thing","str","kindOfTest","val","isFile","isBlob","isFileList","isURLSearchParams","TypedArray","isFormData","FormData","isArrayBufferView","isStream","pipe","isStandardBrowserEnv","product","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","searchString","globalObject","BigNumber","isNumeric","mathceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","compare","xc","yc","intCheck","isOdd","toExponential","toFixedPoint","zs","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","DEBUG","rm","ne","maxOrMin","normalise","sd","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","minimum","dp","plus","decimal","toBaseOut","baseIn","baseOut","arrL","callerIsToString","xlo","xhi","carry","klo","khi","aL","bL","cmp","more","prod","prodL","qc","rem","remL","rem0","xi","xL","yc0","yL","NaN","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","mod","integerValue","isEqualTo","isGreaterThan","isGreaterThanOrEqualTo","isLessThan","isLessThanOrEqualTo","isNegative","isPositive","isZero","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","shiftedBy","squareRoot","rep","toFixed","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","toFraction","md","exp","n0","toPrecision","AxiosError","description","fileName","lineNumber","columnNumber","customProps","axiosError","emptyObject","isUndef","isDef","isTrue","isPrimitive","_toString","isValidArrayIndex","isPromise","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","remove$2","item","hasOwn","camelizeRE","hyphenateRE","hyphenate","bind$1","ctx","boundFn","_length","_from","toObject","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","called","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","writable","bailRE","hasProto","inBrowser","UA","userAgent","isIE","isIE9","isEdge","isIOS","_isServer","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","hasSymbol","ownKeys","currentInstance","setCurrentInstance","vm","_scope","off","on","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","uid$2","pendingCleanupDeps","cleanupDeps","dep","subs","_pending","Dep","addSub","removeSub","depend","addDep","notify","targetStack","pushTarget","popTarget","arrayMethods","original","_i","inserted","ob","__ob__","observeArray","arrayKeys","NO_INIITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","vmCount","__proto__","defineReactive","ssrMockReactivity","isExtensible","__v_skip","isRef","customSetter","childOb","dependArray","newVal","isReadonly","_isVue","shallowReactive","makeReactive","__v_isReadonly","__v_isRef","proxyWithRefUnwrap","normalizeEvent","passive","capture","createFnInvoker","fns","invoker","invokeWithErrorHandling","updateListeners","oldOn","createOnceHandler","cur","old","mergeVNodeHook","hookKey","hook","oldHook","wrappedHook","checkProp","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","createElement$1","normalizationType","alwaysNormalize","is","scopedSlots","simpleNormalizeChildren","$vnode","pre","resolveAsset","$options","createComponent","applyNS","class","registerDeepBindings","_createElement","renderSlot","fallbackRender","bindObject","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","_loop_1","attrs","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","markStatic$1","staticRenderFns","_renderProxy","_c","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","proxy","$key","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","resolveSlots","slots","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","normalSlots","prevScopedSlots","hasNormalSlots","isStable","_normalized","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","createSetupContext","_attrsProxy","syncSetupProxy","$attrs","_listenersProxy","$listeners","_slotsProxy","syncSetupSlots","initSlotsProxy","emit","$emit","expose","exposed","changed","defineProxyAttr","target$1","currentRenderingInstance","ensureCtor","comp","getFirstComponentChild","add$1","$on","remove$1","$off","createOnceHandler$1","_target","onceHandler","updateComponentListeners","oldListeners","activeInstance","setActiveInstance","prevActiveInstance","isInInactiveTree","$parent","_inactive","activateChildComponent","_directInactive","$children","callHook$1","deactivateChildComponent","_hasHookEvent","activatedChildren","waiting","flushing","index$1","currentFlushTimestamp","getNow","performance_1","createEvent","timeStamp","sortCompareFn","post","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","_isMounted","_isDestroyed","callUpdatedHooks","queueWatcher","noRecurse","nextTick","WATCHER","activeEffectScope","EffectScope","detached","active","effects","cleanups","scopes","currentEffectScope","fromParent","teardown","resolveProvided","_provided","parentProvides","err","hooks","errorCaptured","globalHandleError","handler","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","copies","p_1","setImmediate","counter_1","textNode_1","createTextNode","characterData","_resolve","createLifeCycle","hookName","mergeLifecycleHook","injectHook","seenObjects","_traverse","isA","isFrozen","depId","uid$1","Watcher","expOrFn","isRenderWatcher","effect","_vm","deep","user","lazy","sync","dirty","deps","newDeps","depIds","newDepIds","expression","parsePath","_isBeingDestroyed","onStop","sharedPropertyDefinition","sourceKey","initState","propsOptions","propsData","_props","_propKeys","validateProp","initProps$1","_setupContext","setupResult","_setupState","__sfc","_setupProxy","initSetup","methods","initMethods","_data","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed$1","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","resolveInject","inject","provideKey","provideDefault","resolveConstructorOptions","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","mergeOptions","FunctionalRenderContext","contextVm","_original","isCompiled","_compiled","needNormalization","injections","_scopeId","cloneAndMarkFunctionalResult","renderContext","mergeProps","getComponentName","__name","_componentTag","componentVNodeHooks","hydrating","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","prevVNode","_vnode","prevListeners","_parentListeners","propKeys","propOptions","$forceUpdate","updateChildComponent","insert","$destroy","hooksToMerge","baseCtor","_base","cid","factory","errorComp","resolved","owner","owners","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","forceRender_1","renderCompleted","reject_1","reason","res_1","component","timeout","resolveAsyncComponent","createAsyncPlaceholder","model","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook","installComponentHooks","warn$2","strats","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","parent_1","provide","defaultStrat","normalizeProps","normalizeInject","dirs","directives","normalizeDirectives$1","extends","mixins","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps","initComputed","use","_getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","_uid","vnodeComponentOptions","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","provideOption","provided","initProvide","el","initMixin$1","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i_1","cbs","eventsMixin","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","renderMixin","patternTypes","KeepAlive","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","builtInComponents","configDef","util","observable","plugin","installedPlugins","_installedPlugins","install","initUse","initMixin","initAssetRegisters","initGlobalAPI","ssrContext","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","querySelector","createElement","nodeOps","multiple","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","ref","registerRef","isRemoval","refValue","$refsValue","isFor","refInFor","_isString","_isRef","refs","setSetupRef","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","directives$1","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","setupDef","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","_v_attr_proxy","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker_1","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","expressionPos","expressionEndPos","klass$1","validDivisionCharRE","parseFilters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","pluckModuleFunction","addProp","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","baseValueExpression","valueExpression","assignment","genAssignmentCode","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","ownerDocument","updateDOMListeners","event_1","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","vendorNames","capName","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","style$1","whitespaceRE$1","addClass","classList","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","i_3","childElm","createRmCb","findIdxInOld","oldCh","i_5","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","postpatch","invokeInsertHook","i_6","isRenderedModule","inVPre","hasChildNodes","childrenMatch","i_7","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i_8","i_9","insert_1","i_10","createPatchFunction","vmodel","trigger","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","locateNode","originalDisplay","__vOriginalDisplay","display","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave_1","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","pos","getBoundingClientRect","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","offsetHeight","moved","el_1","WebkitTransform","transitionDuration","_moveCb","_hasMove","cloneNode","newPos","oldPos","platformComponents","HTMLUnknownElement","HTMLElement","updateComponent","preWatchers","_preWatchers","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","close","klass","staticKeys","transformNode","classBinding","genData","decoder","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","parseHTML","lastTag","expectHTML","endTagLength_1","stackedTag_1","reStackedTag","all","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","unarySlash","parseStartTag","shouldDecodeNewlinesForHref","lowerCasedTag","handleStartTag","lowerCasedTagName","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","rawAttrsMap","isPreTag","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","block","forbidden","findPrevElement","slotScope","slotTarget","lastNode","comments","outputSourceRange","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","tagRE","tokenValue","rawTokens","parseText","processKey","for","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","name_3","slotContainer_1","processSlotContent","slotName","processComponent","syncGen","isDynamic","parseModifiers","camel","argMatch","processAttrs","inMatch","alias","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","ret_1","cloneASTElement","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","_warn","selectedVal","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","baseOptions","genStaticKeys$1","genStaticKeysCached","markStatic","markStaticRoots","static","isDirectChildOfTemplateFor","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","keyNames","genGuard","modifierCode","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","modifiers_1","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","genSlot","componentName","genComponent","__isScriptSetup","camelName","PascalName","checkType","fromConst","fromMaybeRef","checkBindingType","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","parent_2","generatedSlots","genScopedSlot","genScopedSlots","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","normalizationType_1","needsNormalization","getNormalizationType","gen_1","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","createFunction","errors","createCompileToFunctionFn","compiled","fnGenErrors","baseCompile","createCompiler","finalOptions","tips","tip","compileToFunctions","getShouldDecode","href","idToTemplate","mount","outerHTML","getOuterHTML","three","THREE_REVISION","CONTROLS","MODES","UNKNOWN","NORMAL","CARDBOARD","STEREO","DataImage","Info","Arrow","FullscreenEnter","FullscreenLeave","VideoPlay","VideoPause","WhiteTile","Setting","ChevronRight","Check","ViewIndicator","arrayBufferView","urlCreator","iconName","URL","webkitURL","onImageLoaded","revokeObjectURL","npm_lifecycle_event","onreadystatechange","lengthComputable","createObjectURL","progress","loadings","Media","constraints","ideal","facingMode","exact","devices","stream","ratioScalar","videoDeviceIndex","Reticle","autoSelect","dwellTime","dpr","devicePixelRatio","_this$createCanvas","createCanvasTexture","canvasWidth","canvasHeight","rippleDuration","startTimestamp","updateCanvasArcByProgress","setContainer","setScene","enumerateDevices","resolvedPromise","mediaDevices","switchNextVideoDevice","setVideDeviceIndex","getDevices","_devices","reg","kind","getUserMedia","setMediaStream","playVideo","targetDevice","createVideoElement","deviceId","getTracks","onWindowResize","srcObject","createVideoTexture","pauseVideo","objectPosition","objectFit","videoWidth","videoHeight","_this$container","clientWidth","clientHeight","_this$element","ratio","shadowBlur","shadowColor","degree","clearRect","beginPath","fillStyle","strokeStyle","stroke","ripple","timestamp","cancelAnimationFrame","hide","Tween","createCommonjsModule","_Group","_tweens","_tweensAddedDuringUpdate","tweenId","removeAll","tween","getId","tweenIds","TWEEN","_isPlaying","_nextId","nextId","hrtime","_object","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_repeatDelayTime","_yoyo","_reversed","_delayTime","_easingFunction","Easing","Linear","_interpolationFunction","Interpolation","_chainedTweens","_onStartCallback","_onStartCallbackFired","_onUpdateCallback","_onRepeatCallback","_onCompleteCallback","_onStopCallback","_group","stopChainedTweens","numChainedTweens","repeatDelay","yoyo","easing","easingFunction","interpolationFunction","onRepeat","onComplete","elapsed","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","Back","Bounce","Utils","Bezier","pw","bn","Bernstein","fc","Factorial","Infospot","imageSrc","animated","isHovering","toPanorama","cursorStyle","originalRaycast","HANDLER_FOCUS","scaleUpAnimation","scaleDownAnimation","postLoad","textureScale","naturalWidth","naturalHeight","showAnimation","enableRaycast","hideAnimation","onClick","onHover","onHoverStart","onHoverEnd","onDualEyeEffect","onDismiss","setFocusMethod","Widget","DEFAULT_TRANSITION","TOUCH_ENABLED","DocumentTouch","PREVENT_EVENT_HANDLER","barElement","fullscreenElement","videoElement","settingElement","mainMenu","activeMainItem","activeSubMenu","Panorama","ImageQualityLow","ImageQualityFair","ImageQualityMedium","ImageQualityHigh","ImageQualitySuperHigh","animationDuration","defaultInfospotSize","linkedSpots","isInfospotVisible","linkingImageURL","linkingImageScale","infospotAnimation","setupTransitions","ImagePanorama","_geometry","_material","EmptyPanorama","CubePanorama","edgeLength","BasicPanorama","VideoPanorama","muted","playsinline","videoProgress","resumeVideoProgress","toggleVideo","setVideoCurrentTime","GoogleStreetviewLoader","_parameters","_zoom","_panoId","_panoClient","google","maps","StreetViewService","_count","_total","_ctx","_wc","_hc","copyright","onSizeChange","onPanoramaLoad","levelsW","levelsH","widths","heights","maxW","maxH","MAX_TEXTURE_SIZE","GoogleStreetviewPanorama","panoId","apiKey","gsvLoader","loadRequested","setupGoogleMapAPI","getContainer","lockHoverElement","unlockHoverElement","cursor","mouseEvent","clientX","clientY","translateElement","verticalDelta","setElementStyle","webkitTransform","msTransform","setText","setCursorHoverStyle","addHoverText","maxWidth","maxHeight","textShadow","fontFamily","addHoverElement","removeHoverElement","addControlBar","bar","styleTranslate","styleOpacity","gradientStyle","float","pointerEvents","isHidden","menu","createDefaultMenu","createMainMenu","createMask","deactivate","title","subMenu","addControlButton","createFullscreenButton","createSettingButton","createVideoControl","createCustomItem","backgroundImage","webkitTransition","onTap","activated","changeSize","unslideAll","stylesheetId","isFullscreen","tapSkipped","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","onFullScreenChange","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","ALLOW_KEYBOARD_INPUT","sheet","controlButton","createVideoControlButton","seekBar","createVideoControlSeekbar","progressElement","progressElementControl","mouseX","percentageNow","percentageNext","isDragging","onMouseDown","changedTouches","onVideoControlDrag","onVideoControlStop","setProgress","removeControlListeners","backgroundColor","borderRadius","marginTop","percentage","pageX","onDispose","createMenuItem","padding","textDecoration","slide","unslide","setIcon","icon","setSelectionTitle","selection","addSelection","fontSize","fontWeight","addIcon","backgroundSize","addSubMenu","items","createSubMenu","createMenuItemHeader","borderBottom","paddingBottom","menus","createMenu","slideAll","addItem","paddingLeft","setActiveItem","activeItem","addHeader","visibility","boxShadow","overflow","willChange","backgroundRepeat","backgroundPosition","webkitUserSelect","MozUserSelect","userSelect","webkitFilter","mergeStyleOptions","invertedObject","scalePlaceHolder","getZoomLevel","zoomLevel","innerWidth","updateTexture","toggleInfospotVisibility","isVisible","setLinkingImage","link","pano","imageScale","img","fadeInAnimation","fadeOutAnimation","enterTransition","leaveTransition","onFadeAnimationUpdate","onEnter","onLeave","recursiveDispose","isMobile","check","vendor","opera","_this$options","onloadeddata","setVideoTexture","resetVideo","videoTexture","isVideoPaused","onSuccess","isVideoMuted","muteVideo","unmuteVideo","getVideoElement","adaptTextureToZoom","composeFromTile","composePanorama","useWebGL","Image","panoid","loadPano","getPanoramaById","StreetViewStatus","OK","location","setZoom","loadGSVLoader","script","setGSVLoader","onload","getGSVLoader","StereographicShader","LittlePlanet","frameId","dragging","userMouse","quatA","quatB","quatCur","quatSlerp","vectorX","vectorY","ImageLittlePlanet","CameraPanorama","media","onPanolensContainer","onPanolensScene","OrbitControls","noZoom","zoomSpeed","minDistance","minZoom","maxZoom","noRotate","rotateSpeed","noPan","keyPanSpeed","autoRotate","autoRotateSpeed","minPolarAngle","maxPolarAngle","momentumDampingFactor","momentumScalingFactor","momentumKeydownFactor","minFov","maxFov","minAzimuthAngle","maxAzimuthAngle","noKeys","UP","BOTTOM","mouseButtons","ORBIT","ZOOM","PAN","eventPrevious","keyUp","keyBottom","keyLeft","keyRight","MEPS","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","panOffset","dollyStart","dollyEnd","dollyDelta","phiDelta","thetaDelta","pan","lastPosition","lastQuaternion","momentumLeft","momentumUp","momentumOn","STATE","NONE","ROTATE","DOLLY","TOUCH_ROTATE","TOUCH_DOLLY","TOUCH_PAN","target0","position0","zoom0","quat","quatInverse","changeEvent","startEvent","endEvent","getAutoRotationAngle","getZoomScale","onMouseMove","onMouseUp","rotateLeft","rotateUp","dollyIn","dollyOut","onMouseWheel","wheelDelta","onKeyUp","onKeyDown","touchstart","touches","pageY","touchmove","touchend","setLastQuaternion","getLastPosition","panLeft","panUp","deltaX","deltaY","targetDistance","momentum","dollyScale","ignoreUpdate","getPolarAngle","getAzimuthalAngle","DeviceOrientationControls","rotY","rotX","tempX","tempY","deviceOrientation","screenOrientation","alphaOffsetAngle","onDeviceOrientationChangeEvent","onScreenOrientationChangeEvent","onTouchStartEvent","onTouchMoveEvent","updateAlphaOffsetAngle","beta","gamma","orient","vectorFingerY","zee","q0","fingerQY","fingerQX","setCameraQuaternion","CardboardEffect","_camera","_scene","_stereo","_params","_renderTarget","distortion","positions2","registerMouseEvents","onContextMenu","unregisterMouseEvents","pinchDistance","onUpdateCallback","angleX","angleY","addZoomDelta","lowerBound","upperBound","tDiffuse","StereoEffect","setEyeSeparation","Viewer","controlBar","controlButtons","autoHideControlBar","autoHideInfospot","horizontalView","clickTolerance","cameraFov","reverseDragging","enableReticle","autoReticleSelect","viewIndicator","indicatorSize","autoRotateActivationDuration","innerHeight","sceneReticle","viewIndicatorSize","reticle","tempEnableReticle","panorama","widget","hoverObject","infospot","pressEntityObject","pressObject","raycasterPoint","updateCallbacks","requestAnimationId","cameraFrustum","cameraViewProjectionMatrix","autoRotateRequestId","outputDivElement","touchSupported","HANDLER_MOUSE_DOWN","HANDLER_MOUSE_UP","HANDLER_MOUSE_MOVE","HANDLER_WINDOW_RESIZE","HANDLER_KEY_DOWN","HANDLER_KEY_UP","HANDLER_TAP","OUTPUT_INFOSPOT","tweenLeftAnimation","tweenUpAnimation","passiveRendering","controls","control","addReticle","addDefaultControlBar","addViewIndicator","reverseDraggingDirection","enableReticleControl","registerMouseAndTouchEvents","addOutputElement","registerEventListeners","eventHandler","addPanoramaEventListener","setPanorama","buttonName","leavingPanorama","hideInfospot","afterEnterComplete","dispatchEventToChildren","activateWidgetItem","controlIndex","ControlMenuItem","ModeMenuItem","enableEffect","disableEffect","disableReticleControl","unregisterMouseAndTouchEvents","registerReticleEvent","updateReticleEvent","unregisterReticleEvent","enableAutoRate","disableAutoRate","toggleVideoPlay","onVideoUpdate","addUpdateCallback","removeUpdateCallback","showVideoWidget","hideVideoWidget","updateVideoPlayButton","setCameraControl","getControl","getScene","getRenderer","getControlId","getNextControlId","getNextControlIndex","setCameraFov","enableControl","disableControl","toggleNextControl","getScreenVector","worldVector","checkSpriteInViewport","tweenControlCenter","chv","cvv","hv","vv","vptc","ov","nv","tweenControlCenterByObject","isUnderScalePlaceHolder","invertXVector","windowWidth","windowHeight","expand","isAndroid","adjustWidth","adjustHeight","outputPosition","converter","world","onTarget","_this$options2","toggleControlBar","_this$container$getBo","_this$container2","intersect_entity","getConvertedIntersect","passThrough","entity","_this$getScreenVector","offsetLeft","unregisterEventListeners","onPanoramaDispose","loadAsyncRequest","onloadend","asyncEvent","viewIndicatorDiv","responseXML","indicator","currentPanoAngle","fovAngle","leftAngle","rightAngle","leftX","leftY","rightX","rightY","indicatorD","appendControlItem","clearAllCache","CanceledError","ERR_CANCELED","__CANCEL__","devtoolHook","deepCopy","hit","forEachValue","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","namespaced","addChild","getChild","hasChild","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","this$1","rawChildModule","unregister","isRegistered","Store","plugins","strict","_committing","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","store","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","subscribe","prepend","subscribeAction","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","_Vue","beforeCreate","vuexInit","$store","applyMixin","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","startMessage","collapsed","endMessage","getFormattedTime","getHours","getMinutes","getSeconds","getMilliseconds","num","createNamespacedHelpers","createLogger","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","nextState","formattedTime","formattedMutation","formattedAction","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","transitional","transformRequest","isObjectPayload","contentType","_FormData","encoder","stringifySafely","transformResponse","silentJSONParsing","forcedJSONParsing","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","browser","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","obj1","obj2","DATE_PATTERN","toStr","toFloat","toDate","year","month","day","toArr","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","chartOptions","series","singleSeriesFormat","legend","negativeValues","xtitle","ytitle","sortByTime","sortByNumberSeries","sortByNumber","calculateTimeUnit","maxDay","getDate","dayOfWeek","getDay","getMonth","byteSuffixes","formatValue","byteScale","positive","suffixIdx","baseValue","zeros","thousands","seriesOption","maintainAspectRatio","tooltip","displayColors","interaction","defaultOptions$2","scales","ticks","maxTicksLimit","drawOnChartArea","defaultColors","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","notnull","calculateScale","maxAbsY","setFormatOptions$1","chartType","numericOptions","formatOptions","bytes","stepSize","label","dataset","dataPoint","parsed","valueLabel","xtype","jsOptions$2","prepareData","maxR","labels","prepareBubbleData","prepareNumberData","i$1","i$2","key$1","row","j$1","prepareDefaultData","createDataTable","datasets","borderColor","borderWidth","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","pointRadius","pointHoverRadius","timeUnit","minTime","maxTime","timeDiff","displayFormats","hour","minute","offsetWidth","unitStepSize","tooltipFormat","defaultExport$2","renderLineChart","drawChart","renderPieChart","donut","cutout","renderColumnChart","barOptions","indexAxis","maxLabelSize","getLabelForValue","setLabelSize","renderAreaChart","renderBarChart","renderScatterChart","showLine","renderBubbleChart","getElementsByTagName","defaultOptions$1","credits","plotOptions","areaspline","useUTC","hideLegend$1","verticalAlign","layout","align","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","formatter","pointFormatter","pointFormat","defaultExport$1","pie","innerSize","categories","newSeries","d$1","renderTo","Chart","chartArea","fontName","pointSize","textStyle","alignment","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","setBarMin","setBarMax","isStacked","italic","jsOptions","defaultExport","this$1$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","rows2","renderTimeline","lineHeight","clearChart","draw","attachEvent","pack","runCallbacks","loadOptions","packages","__config","language","mapsApiKey","charts","LineChart","Timeline","GeoChart","columnType","sortedLabels","isDay","i$3","adapters","addAdapter","adapterType","getAdapterType","callAdapter","fnName","adapterName","Highcharts","__adapterObject","Chartkick","configure","setDefaultOptions","eachChart","chartId","destroyAll","formatSeriesData","keyType","formatSeriesBubble","keyFunc","detectXTypeWithFunction","processSeries","noDatetime","rawData","copySeries","discrete","dataEmpty","detectXType","processSimple","perfectData","pendingRequests","runningRequests","maxRequests","runNext","success","xhr","responseText","statusText","chartError","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","showLoading","renderChart","messages","download","__downloadAttached","filename","zIndex","encodeURIComponent","border","__enterEvent","related","relatedTarget","toImage","__leaveEvent","addDownloadButton","elementId","getElementById","getElement","startRefresh","getDataSource","getOptions","getChartObject","getAdapter","updateData","__updateOptions","redraw","refreshData","sep","intervalId","setInterval","stopRefresh","clearInterval","tmpCanvas","tmpCtx","fillRect","toBase64Image","updateRefresh","__processData","__chartName","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","autoDestroy","Event","encode","paramsSerializer","serializedParams","toISOString","hashmarkIndex","clarifyTimeoutError","formData","convertValue","build","parentKey","fullKey","append","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","parseProtocol","onCanceled","requestData","requestHeaders","cancelToken","unsubscribe","signal","auth","username","password","Authorization","btoa","baseURL","responseHeaders","getAllResponseHeaders","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","onDownloadProgress","onUploadProgress","abort","aborted","protocol","ERR_BAD_REQUEST","isAbsoluteURL","combineURLs","requestedURL","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","webpackPolyfill","Axios","mergeConfig","axios","createInstance","defaultConfig","instanceConfig","CancelToken","isCancel","Cancel","promises","isAxiosError","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","runWhen","synchronous","fulfilled","rejected","promise","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","eject","transformData","throwIfCancellationRequested","throwIfRequested","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","that","RangeError","encodingOrOffset","fromArrayLike","fromArrayBuffer","isEncoding","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","expires","domain","secure","cookie","toGMTString","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","host","hostname","port","pathname","requestURL","deprecatedWarnings","formatMessage","opt","desc","ERR_DEPRECATED","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","executor","resolvePromise","onfulfilled","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","isKeyable","lim","p2b","n2b","b2n","n2p","map$1","A","C","D","E","F","h1","h2","hexString","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hueParse","hwb2rgb","hsv2rgb","Z","Y","X","W","V","U","S","R","Q","O","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","ok","nk","unpack","RGB_RE","modHSL","functionParse","rgbParse","_rgb","_valid","rgbString","hslString","w2","rgb1","rgb2","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","deg","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","loopable","_elementsEqual","a0","ilen","datasetIndex","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","part","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","TAU","PITAU","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","almostEquals","niceNum","roundedRange","niceRange","fraction","_setMinAndMaxByKey","toRadians","toDegrees","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","_lookupByKey","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","_alignStartEnd","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","_sorted","iScale","_parsed","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","ymin","atEdge","elasticIn","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","intlCache","formatNumber","locale","Intl","NumberFormat","getNumberFormat","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","overrides","getScope$1","Defaults","_descriptors","_appliers","platform","getDevicePixelRatio","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","includeInvisible","parsing","responsive","drawActiveElementsOnTop","describe","override","route","targetScope","scopeObject","targetScopeObject","privateName","appliers","_scriptable","_indexable","_fallback","resize","autoPadding","beginAtZero","grace","drawTicks","tickLength","tickWidth","tickColor","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","nestedThing","gcLen","_alignPixel","pixel","currentDevicePixelRatio","clearCanvas","resetTransform","drawPoint","drawPointLegend","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rad","SQRT1_2","rect","_isPointInArea","margin","clipArea","unclipArea","_steppedLineTo","_bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","drawBackdrop","oldColor","renderText","strokeWidth","strokeColor","translation","textAlign","textBaseline","setRenderOpts","backdrop","strokeText","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","toTRBL","toTRBLCorners","toPadding","toFont","fallback","toFontString","inputs","cacheable","createContext","parentContext","_createResolver","prefixes","getTarget","finalRootScopes","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","rootScopes","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","getValueAxis","splineCurve","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","defaultView","getPositionedStyle","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalizeSegment","_boundSegment","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","subStart","shouldStart","shouldStop","_boundSegments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","_objectSpread","_defineProperty","getOwnPropertyDescriptors","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","_request","_charts","_running","_lastDate","_notify","anims","date","numSteps","currentStep","_refresh","_active","tick","_getAnims","listen","acc","animator","interpolators","cfg","_fn","_easing","_start","_loop","_prop","_to","_promises","rej","_properties","animationOptions","animatedProps","_animateOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","getOrCreateStack","stackKey","indexValue","subStack","getLastIndexInStack","vScale","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","shared","_cachedDataOpts","getMeta","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","_key","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","disabled","toClip","defaultClip","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","_sync","_args2","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","updateMinAndPrev","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","setInflateAmount","inflateAmount","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","_this$_cachedMeta","minBarLength","actualBase","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","_value_","_this$_cachedMeta2","_this$_getSharedOptio2","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","chartWeight","_getRingWeight","_this$_getRotationExt","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","generateLabels","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","_this$_cachedMeta3","_this$_getSharedOptio4","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_chart$legend$options3","angleLines","circular","pointLabels","PieController","_fullLoop","pointPosition","getPointPositionForValue","_meta$data2","_getStartAndCountOfVi2","registry","_this$_cachedMeta4","_this$options3","BarController","BubbleController","DoughnutController","LineController","PolarAreaController","RadarController","ScatterController","DateAdapterBase","members","startOf","endOf","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","getSortedVisibleDatasetMetas","_metasets$i","_binarySearch","getIntersectItems","useFinalPosition","isPointInArea","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","getCenterPoint","getNearestItems","_element$getProps","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","setBoxDims","placeBoxes","userPadding","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","nodeList","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","fromNativeEvent","displayWidth","displayHeight","initCanvas","proxies","$proxies","detach","tooltipPosition","_this$getProps","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","getTicksLimit","ticksLength","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_margins","paddingTop","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","_this$options4","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","offsetRight","_this$options7","isFullSize","_computeLabelSizes","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","positionAxisID","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","_computeLabelArea","drawBackground","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","_this$options10","lastLineWidth","drawLabels","renderTextOptions","drawTitle","_this$options11","_titleArgs","titleX","titleY","titleArgs","gz","axisID","_maxDigits","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","_typedRegistries","_each","addControllers","addPlugins","addScales","_get","getPlugin","getScale","removeControllers","removeElements","_len8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","_getRegistryForType","_exec","itemReg","camelMethod","_createDescriptors","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","determineAxis","_len11","scaleOptions","_key11","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","keyCache","keysCached","cachedKeys","addIfFound","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","_getResolver","getResolver","subPrefixes","_descriptors2","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","getSizeForArea","field","invalidatePlugins","userConfig","initialCanvas","existingChart","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_defaults$datasets$ty","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","_this$_resizeBeforeDr","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","bindUserEvents","bindResponsiveEvents","_add","_remove","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","inChartArea","_handleEvent","_this$_active","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfRadius","radiusOffset","drawArc","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref8$move","fastPathSegment","_pathVars2","_ref9$move","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","mouseY","_this$getProps4","inXRange","inYRange","_this$getProps5","hoverRadius","getBarBounds","_bar$getProps","skipOrLimit","boundingRects","parseBorderWidth","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","_this$options14","_boundingRects","addRectPath","_this$getProps6","ArcElement","BarElement","LineElement","PointElement","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","containsColorsDefinitions","plugin_colors","forceOverride","_args","_chart$config","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","_getStartAndCountOfVi3","getStartAndCountOfVisiblePointsSimplified","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","_data$a","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_ref10$x","_ref10$y","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","_findPoint","findPoint","pointValue","firstValue","lastValue","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_source$scale","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","_ref12$above","above","_ref12$below","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","_src$style","_src$style2$backgroun","notShape","clipBounds","interpolatedLineTo","targetLoop","_scale$chart$chartAre","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","_this$options15","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","isListened","hoveredItem","sameItem","plugin_legend","afterEvent","ci","_chart$legend$options","useBorderRadius","_padding","textSize","_drawArgs","fontOpts","_this$_drawArgs","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","_controller$getLabelA","formattedValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","y3","_toTRBLCorners2","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","Colors","Decimation","Filler","Legend","SubTitle","Title","Tooltip","findOrAddLabel","addedLabels","addIfString","_getLabelForValue","_startValue","_valueRange","_addedLabels","added","_this$getUserBounds2","_this$getMinMax","generateTicks$1","generationOptions","dataRange","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","relativeLabelSize","_endValue","handleTickRangeOptions","_this$getUserBounds3","minSign","maxSign","getTickLimit","computeTickLimit","_this$getMinMax2","log10Floor","changeExponent","isMajor","tickVal","rangeExp","rangeStep","generateTicks","minExp","startExp","lastTick","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","_opts$pointLabels","itemOpts","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","_this$getMinMax4","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","_this$_pointLabelItem","_this$options16","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","millisecond","second","week","quarter","UNITS","sorter","_adapter","_scale$_parseOpts","_parseOpts","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_unit","_majorUnit","_offsets","_this$getUserBounds5","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","datetime","fmt","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","CategoryScale","LinearScale","LogarithmicScale","RadialLinearScale","TimeScale","_typeof","requiredArgs","required","argument","argStr","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","_e2","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","addSuffix","buildFormatLongFn","defaultWidth","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_baseDate","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","valueCallback","parsePattern","any","defaultLocale","formatDistance","formatLong","formatRelative","localize","weekStartsOn","firstWeekContainsDate","addMilliseconds","dirtyDate","dirtyAmount","subMilliseconds","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","setUTCFullYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","_assertThisInitialized","ReferenceError","_setPrototypeOf","_inherits","subClass","superClass","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","NewTarget","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","Setter","_utcDate","_Setter","ValueSetter","_super","validateValue","priority","subPriority","flags","_Setter2","DateToSystemTimezoneSetter","_super2","timestampIsSet","convertedDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","Parser","dateString","_Parser","EraParser","setUTCHours","millisecondsInMinute","millisecondsInHour","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","hours","minutes","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getUTCDay","setUTCDate","getUTCWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfUTCISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","setUTCMonth","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","MILLISECONDS_IN_WEEK","getUTCWeek","firstWeek","startOfUTCWeekYear","LocalWeekParser","dirtyWeek","setUTCWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","ISOWeekParser","dirtyISOWeek","isoWeek","setUTCISOWeek","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setUTCDay","dirtyDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","setUTCISODay","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatString","_step","subFnOptions","setters","firstCharacter","longFormatter","usedTokens","_iterator","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleTokens","incompatibleToken","usedToken","fullToken","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","parseISO","_options$additionalDi","additionalDigits","dateStrings","timeString","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","isValid","addLeadingZeros","targetLength","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","dayPeriodEnum","lightFormatters","signedWeekYear","weekYear","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","delimiter","dirtyFormatStr","formatStr","formatterOptions","matched","addDays","setDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","differenceInMilliseconds","dateLeft","dateRight","roundingMap","trunc","defaultRoundingMethod","getRoundingMethod","startOfDay","compareLocalAsc","differenceInDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarDays","compareAsc","endOfDay","endOfMonth","differenceInMonths","differenceInCalendarMonths","isLastMonthNotFull","isLastDayOfMonth","differenceInYears","differenceInCalendarYears","isLastYearNotFull","startOfWeek","FORMATS","addSeconds","addMinutes","addHours","addWeeks","addQuarters","addYears","roundingMethod","differenceInSeconds","differenceInMinutes","differenceInHours","differenceInWeeks","differenceInQuarters","setMilliseconds","startOfSecond","setSeconds","startOfMinute","setMinutes","startOfHour","startOfMonth","currentMonth","startOfQuarter","cleanDate","startOfYear","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","Pages","onCopyResponseClicked","$","execCommand","alert","I18n","preventFormSubmit","deleteRoomDesignImageForm","which","checkbox","toggleSubmitButton","webpackContext","req","webpackContextResolve","_default","_Controller","setUpSelect2","select2","minimumInputLength","allowClear","dropdownParent","hasPlaceholderValue","placeholderValue","ajax","urlSearchValue","dataType","term","isASCII","page","processResults","pagination","templateResult","escapeMarkup","markup","urlSearch","resultsTarget","hideResults","hideClearBtn","emptyResults","clearBtnTarget","inputTarget","emptyInput","disabledInput","createUrlValue","design_version_element","insertToItemList","entriesTarget","insertAdjacentHTML","URLSearchParams","urlValue","loadingTarget","showClearBtn","getJSON","entities","showResults","_this3","createUrl","_e$data","labelValue","products","productsValue","postMessage","addValidator","errorElement","errorClass","rules","setDefault","categoriesValue","cat","categoryCheckBoxesTarget","filterContainerTarget","themeCheckBoxesTarget","selectedThemes","theme","searchParams","selectedCategories","disabledAll","paginationTarget","enableAll","hideLoading","formTarget","email","bindFileChanged","fileInputTarget","imageCount","FileReader","readAsDataURL","imageTag","CKEDITOR","idValue","setMentions","hasMentionsTarget","mentions","editor","getText","mentionsTarget","clipboard","isSecureContext","writeText","textValue","textArea","currentTab","bindTabsClicked","wrapperIdValue","bindOutsideClicked","openTabValue","navTabsTargets","contentid","onTabClicked","parents","_this4","navTab","_navTab$classList","_toConsumableArray","activeClasses","_tab$classList","newCurrent","allContentIds","wrapperId","openTab","ids","updateButton","createButtonTarget","idsTarget","linkValue","hasStoreviewTarget","storeviewTarget","linkTarget","copyButtonTarget","clipboardTextValue","showValue","activeState","inactiveState","dropdownMenuTarget","changingTimeout","widthValue","heightValue","mobileColumnsValue","desktopColumnsValue","updateIframe","widthInputTarget","heightInputTarget","fixedInputTarget","mobileColumns","desktopColumns","defaultStoreViewCode","bindScrollingEvent","pageYOffset","endTimeIdx","inverval","pauseTimes","getPauseTimes","setCurrentPauseTime","videoTarget","presentationPauseTimesValue","currentPauseTime","hideAllPins","originalNext","controlTargets","cont","hideControls","currrentVideoTime","hasEditLinkTarget","setEditLink","showControls","showPins","_this$currentPauseTim","presentationVideoId","presentation_video_id","presentationPauseTimeId","editLinkTarget","presentationPauseTimes","pauseTimePins","allowRequest","IntersectionObserver","isIntersecting","loadMore","bindObserver","observers","scrollHeight","scrollY","triggerHeightValue","nextLink","remote","click","scripts","oldScript","newScript","replaceChild","triggerHeight","validateForm","keyUpTimeout","requested","searching","finishSearching","first_name","depends","last_name","showErrors","errorMap","errorList","defaultShowErrors","parentTargets","bindParentEvent","childTargets","catId","foundChild","bindChangeEvent","bindClickEvent","showLoadingState","submit","clickableLabelTargets","item_set","base64_thumbnail_image","clImageTargets","image_url","hideLoadingState","skuValue","setPricesheet","resuts","pricesheet","option_wise","element0Value","csv","rowValue","columnValue","getPrice","domIdValue","listPriceValue","sku","element0","column","price","domId","listPrice","shiftHolding","lastTab","holdingKeyCodeValue","onItemSelected","callbackName","eval","holdingKeyCode","activeValue","toggleBtnTarget","updateUrlValue","my_catalog_item","toggleButton","updateUrl","selectorTarget","confirm","rs","modal","currentIndex","loadMoreTriggered","nextPage","owl","initCarousel","owlCarousel","dots","dotsValue","nav","navValue","navText","onInitialized","adjustArrowPosition","onResized","onChanged","onCarouselTranslated","viewer","PANOLENS","panoramaRecordValue","showExistedPins","clickEnableValue","removeAllNewInfospot","_this$viewer$raycaste","getInfospot","currentSpot","requestNewLink","processData","editPanelTarget","pinsValue","pin","hoverText","hover_text","panoramaRecord","pins","clickEnable","setUp","panoramaInstances","buildImagePanoramaInstances","assignPanoramaLinks","panoramasValue","getImagePano","associationsValue","associationItems","start_panorama_id","end_panorama_id","_this4$viewer$raycast","groupValue","begining","panoramas","associations","presentationPauseTimeValue","removeNewMarkers","hasEditPanelTarget","showEditPanel","hasMarkerTarget","markerTarget","presentationPauseTime","member_first_name","member_last_name","member_email","member_password","currentImage","invalid","hiddenField","textField","elmField","bindHideResult","disableButton","hasButtonTarget","buttonTarget","bindParentChanged","bindChildrenChanged","parentTarget","enableElement","allChecked","hasFormTarget","formEnable","hasChecked","errorPlacement","hasClass","insertAfter","autocompleteUrl","stripe","Stripe","publicKeyValue","checkStatus","fetchPaymentIntent","getPaymentIntentUrlValue","authenticity_token","clientSecret","buildElements","payButtonTarget","confirmPayment","confirmParams","return_url","returnUrlValue","appearance","statusMessageTarget","paymentIntentClientSecretValue","retrievePaymentIntent","paymentIntent","showMessage","publicKey","returnUrl","getPaymentIntentUrl","paymentIntentClientSecret","openTabTargets","updateLink","hideTabTargets","openProductTargets","hasLangTarget","langTargets","hasIsOpenTabTarget","isOpenTabTarget","hasIsHideTabTarget","isHideTabTarget","hasIsOpenProductTarget","isOpenProductTarget","hidePricesTarget","showAddCartTarget","hasHideMultiSlotsTarget","hideMultiSlotsTarget","autoComplete","resolverSettings","queryKey","minLength","preventEnter","typed","searchPost","formatResult","defaultTagItemsValue","assignsOptions","newOption","Option","maximumSelectionLength","tokenSeparators","tags","tagsValue","closeOnSelect","defaultTagItems","bindSearchChanged","hasMoreLinkTarget","bindMoreClicked","moreLinkTarget","textItemTargets","searchInputTarget","searchText","regSearch","tocWrapper","articleContent","navHeight","footerHeight","marginLeft","updateTOC","scrollToActiveValue","scrollToActive","toMatchItem","activeElm","shortNotionId","replaceAll","scrollTop","offsetTop","checkboxTarget","hasImageTarget","imageTarget","hasTextTarget","textTarget","thumb","links","current_password","new_email","new_password","confirm_password","equalTo","initBackground","coverPreviewTarget","bindFileChangeEvent","submitMode","inputWrapTarget","submitWrapTarget","inputMode","bindFileInput","hasInputTarget","fileId","updateItemHtml","getPresignedUrl","presigned_url","put","progressEvent","hasProgressbarTarget","percentCompleted","progressbarTarget","updateUploadStatus","updateFile","download_url","itemHtmlTarget","hasItemHtmlTarget","uploaded","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","loadmoreGalleries","loadmoreGalleriesTimeoutId","addLightSlider","lightSlider","gallery","thumbItem","slideMargin","auto","enableDrag","breakpoint","moreGalleriesUrl","getScript","onFavoriteChanged","toggleVerticalNav","toggleClass","hideMemberMenu","toggleHeaderVerticalNav","changeHeaderNav","primaryMenu","languageMenu","myAccountMenu","customRoomModelMenu","footerNav","navMainMenuItems","navLanguagemenuItems","navCustomRoomModelmenuItems","myAccountMenuItems","addClassToShownModal","showElement","hideElement","hideAnimationVerticalNav","menuIconLine","showHeaderVerticalNav","hideHeaderVerticalNav","showAnimationVerticalNav","showMenu","menuToShow","menuItems","showOrHideNavWithAnimation","setUpCloudinaryClient","cloudinary_fileupload","maxFileSize","acceptFileTypes","processalways","fileupload","showAlertOnClicked","toggleHeadMenu","pushLoginGTMEvent","memberId","dataLayer","pushSignupGTMEvent","searchMembersToInvite","removeSelectedMember","except_member_ids","memberInfo","submitFormIfEventOccurs","reloadPageIfJoinOrLeaveGroup","showPreviewGroupImage","showReplyForm","showOrHideEditCGroupCommentForm","readURL","ajaxStop","reload","showErrorMessage","selectImage","selectedText","templePreview","file_field","slideToggle","editGroupCommentFormId","groupCommentBodyId","moveNavActiveClass","submitForm","appendParamsAndSubmit","ready","GLightbox","preload","keyboardNavigation","bindCarousel","arrow","scrollLeft","backToTop","highlight","unhighlight","minlength","validateContactBrandForm","requestGetMemberSaleforceData","requestUpdateMemberSaleforceData","onkeyup","industry","city","appendTo","endpoint","fieldValue","member_data","phone","company","street","fieldName","moreSkills","moveActiveClass","password_confirm","onMyCatalogItemChecked","showPreviewMemberCoverImage","disableDeleteButton","selectedRooms","emailsInputValidation","hideErrorMsgWhenTyping","emailAddressPattern","emailsInput","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","task","encodeReserveRE","encodeReserveReplacer","commaRE","decode","castQueryParamValue","parseQuery","param","stringifyQuery","val2","trailingSlashRE","createRoute","record","redirectedFrom","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","enteredCbs","View","routerView","$route","_routerViewCache","inactive","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","propsToPass","resolveProps","resolvePath","relative","firstChar","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction","tokensToFunction_1","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","asterisk","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","pretty","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","hashIndex","queryIndex","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","Link","exactPath","exactActiveClass","ariaCurrentValue","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","navigate","isActive","isExactActive","findAnchor","aData","handler$1","event$1","aAttrs","defaultPrevented","createRouteMap","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","redirect","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","app","behavior","scrollBehavior","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","isValidPosition","normalizePosition","hashStartsWithNumberRE","docRect","elRect","getElementPosition","scrollTo","ua","supportsPushState","pushState","NavigationFailureType","redirected","duplicated","createNavigationRedirectedError","createRouterError","propertiesToLog","stringifyRoute","createNavigationCancelledError","_isRouter","isNavigationFailure","errorType","runQueue","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","History","baseEl","normalizeBase","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","guards","extractGuard","bindGuard","onReady","errorCb","transitionTo","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","createNavigationDuplicatedError","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","createNavigationAbortedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","VueRouter$1","installed","registerInstance","callVal","_router","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","redirectToLoginPage","redirect_back","Vuex","clickOutsideEvent","currentUser","owned","writeable","errorMessage","debugMember","approverMember","brandIds","setCurrentUser","setOwned","setWriteable","setErrorMessage","setDebugMember","setApproverMember","setBrandIds","currentUserId","isLoggedIn","isOwner","isWriteable","isDebug","isApprover","myBrandIds","numberFormatKeys","dateTimeFormatKeys","OBJECT_STRING","parseArgs","looseClone","arguments$1","interpolationComponent","places","$i18n","onlyHasDefaultPlace","assignChildIndex","createParamsFromPlaces","everyPlace","vnodeHasPlaceAttribute","assignChildPlace","useLegacyPlaces","place","numberComponent","i18n","_ntp","oldVNode","_locale","localeEqual","_localeMessage","getLocaleMessage","preserveDirectiveContent","_vt","ref$1","ref$2","choice","tc","makeParams","bridge","_i18n","$t","_getMessages","$tc","_tc","$te","_te","$d","$n","__INTLIFY_META__","__i18nBridge","__i18n","VueI18n","localeMessages","resource","mergeLocaleMessage","_i18nWatcher","watchI18nData","rootI18n","fallbackLocale","formatFallbackMessages","silentTranslationWarn","silentFallbackWarn","pluralizationRules","localeMessages$1","sharedMessages","_localeWatcher","watchLocale","onComponentInstanceCreated","subscribeDataChanging","_subscribing","beforeDestroy","unsubscribeDataChanging","destroyVM","defineMixin","BaseFormatter","_caches","isClosed","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","pathStateMachine","literalValueRE","getPathCharType","formatSubPath","trimmed","I18nPath","newChar","typeMap","subPathDepth","maybeUnescapeQuote","nextChar","parse$1","getPathValue","availabilities","htmlTagMatcher","linkKeyMatcher","linkKeyPrefixMatcher","bracketsMatcher","defaultModifiers","toLocaleUpperCase","toLocaleLowerCase","defaultFormatter","dateTimeFormats","datetimeFormats","numberFormats","_formatter","_modifiers","_missing","missing","_fallbackRoot","fallbackRoot","_fallbackRootWithEmptyString","fallbackRootWithEmptyString","_formatFallbackMessages","_silentTranslationWarn","_silentFallbackWarn","_dateTimeFormatters","_numberFormatters","_dataListeners","_componentInstanceCreatedListener","componentInstanceCreatedListener","_preserveDirectiveContent","_warnHtmlInMessage","warnHtmlInMessage","_postTranslation","postTranslation","_escapeParameterHtml","escapeParameterHtml","__VUE_I18N_BRIDGE__","getChoiceIndex","choicesLength","thisPrototype","_choice","_choicesLength","_exist","_checkLocaleMessage","_initVM","availableLocales","__VUE18N__INSTANCE__","composer","newI18n","_getDateTimeFormats","_getNumberFormats","_localeChainCache","orgLevel","_warnDefault","interpolateMode","missingRet","parsedArgs","_isFallbackRoot","_isSilentFallbackWarn","_isSilentFallback","_isSilentTranslationWarn","visitedLinkStack","pathRet","_link","linkKeyPrefixMatches","linkPrefix","formatterName","linkPlaceholder","translated","_translate","_createMessageContext","_list","_named","named","linked","linkedKey","_appendItemToChain","blocks","follow","_appendLocaleToChain","_appendBlockToChain","_getLocaleChain","predefined","fetchChoice","choices","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","_clearDateTimeFormat","mergeDateTimeFormat","_localizeDateTime","DateTimeFormat","setNumberFormat","_clearNumberFormat","mergeNumberFormat","_getNumberFormatter","numberFormat","formatToParts","intlDefined","translations","scriptExports","functionalTemplate","injectStyles","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","_injectStyles","originalRender","currentMember","approver","brands","App","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","baseIsTypedArray","defaultLocaleResolver","locales","enableFallback","currentLocale","codes","Locales","localeResolver","defaultPluralizer","pluralizer","_ref$includeZero","includeZero","_ref$ordinal","ordinal","useMakePlural","ord","n10","n100","Pluralization","camelCaseKeys","RoundingModeMap","expandRoundMode","roundMode","getAbsolutePrecision","significant","digitCount","roundNumber","rounder","originalNumber","raise","roundedNumber","_roundedNumber$split2","whole","formattedNumber","positiveFormat","negativeFormat","computeSignificand","stripInsignificantZeros","replaceInFormat","getFullScope","defaultSeparator","inferType","transformKey","nullPlaceholder","missingPlaceholder","localeType","DECIMAL_UNITS","INVERTED_DECIMAL_UNITS","numberToHuman","roundOptions","exponent","unitExponents","calculateExponent","determineUnit","_formattedNumber$spli2","STORAGE_UNITS","setTime","_parts","$1","$2","$3","$6","$4","$5","pluralize","baseScope","missingTranslation","pluralization","missingKeys","compute","DEFAULT_OPTIONS","meridian","dayNames","abbrDayNames","monthNames","abbrMonthNames","within","guessStrategy","missingTranslationPrefix","_match","messageStrategy","fullScope","errorStrategy","fullScopeWithLocale","MissingTranslation","strategy","missingBehavior","_regeneratorRuntime","asyncIterator","define","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","awrap","rval","finish","delegateYield","__awaiter","_arguments","DEFAULT_I18N_OPTIONS","_defaultLocale","_version","onChangeHandlers","distanceOfTimeInWords","timeAgoInWords","_Object$assign","newLocale","translationOptions","createTranslationOptions","translationOption","numberToCurrency","numberToPercentage","localizedValue","toTime","strftime","numberToHumanSize","smallerThanBase","numberToBeFormatted","computeExponent","billion","million","quadrillion","thousand","trillion","numberToRounded","numberToDelimited","delimiterPattern","_numeric$toString$spl2","digitToDelimiter","withLocale","_callee","originalLocale","AM_PM","weekDay","hour12","secs","mins","absOffsetHours","absOffsetMinutes","timezoneoffset","currentNode","currentType","overrideType","toSentence","_Object$assign2","wordsConnector","twoWordsConnector","lastWordConnector","fromTime","fromInSeconds","toInSeconds","distanceInSeconds","distanceInMinutes","distanceInDays","distanceInHoursRounded","distanceInDaysRounded","distanceInMonthsRounded","includeSeconds","fromYear","toYear","minutesInYear","minutesWithOffset","distanceInYears","datepicker","initLightSlider","onBeforeStart","onSliderLoad","playButton","channels","Owl","$element","_handlers","_supress","_current","_speed","_coordinates","_breakpoint","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","pointer","stage","_states","Plugins","Workers","worker","rewind","checkVisibility","mouseDrag","touchDrag","pullDrag","freeDrag","stagePadding","mergeFit","autoWidth","startPosition","smartSpeed","fluidSpeed","dragEndSpeed","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","slideTransition","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","State","$stage","clones","prependTo","coordinates","removeAttr","begin","op","initializeStage","initializeItems","$items","not","imgs","nestedSelector","preloadAutoWidthImages","registerEventHandlers","overwrites","optionsLogic","prepare","grep","onThrottledResize","resizeTimer","isDefaultPrevented","support","onTransitionEnd","onDragStart","onDragEnd","speed","onDragMove","coordinate","transform3d","suppress","release","reciprocalItemsWidth","elementWidth","mergers","odd","even","newPosition","revert","srcElement","originalTarget","jQuery","addBack","unwrap","contents","removeData","detachEvent","onTrigger","special","inArray","originalEvent","$this","Zepto","AutoRefresh","carousel","_core","_interval","_visible","autoRefresh","autoRefreshInterval","Lazy","_loaded","lazyLoad","lazyLoadEager","$item","$elements","AutoHeight","_previousHeight","autoHeight","_intervalId","refThis","autoHeightClass","lazyLoadEnabled","maxheight","Video","_videos","_playing","isInFullScreen","thumbnail","tnLink","dimensions","customTn","srcType","lazyClass","jsonp","thumbnail_large","framegrab_url","mozFullScreenElement","webkitFullscreenElement","Animate","core","swapping","animateOut","animateIn","incoming","outgoing","Autoplay","_call","_time","_timeout","_paused","autoplayHoverPause","autoplayTimeout","autoplaySpeed","_next","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dotsEach","dotsSpeed","dotsContainer","$relative","$previous","$next","$absolute","overides","successor","_hashes","URLhashListener","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","prefixed","getDefaults","extraData","requestThrottling","jqXHR","_settings","requestTID","fail","always","getResults","initialized","shown","ddMouseover","_$el","formatItem","noResultsText","_dd","itemSelectedLaunchEvent","haveResults","mouseover","checkInitialized","focusNextItem","focusPreviousItem","selectFocusItem","isShown","dropdown","updateItems","refreshItemList","showMatchedText","getElPos","_selectedItem","_defaultValue","_defaultText","_isSelectElement","valueKey","defaultFormatResult","bootstrapVersion","searchPre","_el","manageInlineDataAttributes","getSettings","convertSelectToText","getBootstrapVersion","_selectHiddenField","NAME","replaceWith","bindDefaultEventListeners","isItemFocused","handlerTyped","isMouseOver","isDdMouseOver","itemSelectedDefaultHandler","_searchText","handlerPreSearch","handlerDoSearch","postSearchCallback","handlerStartShow","manageAPI","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","rsModifier","WebSocket","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","recordMessage","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","getPollInterval","_this$constructor","reconnectionBackoffRate","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","getState","socketProtocols","subprotocols","uninstallEventHandlers","installEventHandlers","allowReconnect","reopenDelay","getProtocol","isState","triedToReconnect","isProtocolSupported","_JSON$parse","reconnect","reconnectAttempted","confirmSubscription","reconnected","notifyAll","willAttemptReconnect","Subscription","perform","command","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","Subscriptions","guarantor","channelName","ensureActiveConnection","sendCommand","Consumer","_url","createWebSocketURL","addSubProtocol","subprotocol","createConsumer","getConfig","connected","received"],"mappings":"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,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV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AQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SA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","file":"js/application-8b9961929ef6462d4e78.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 188);\n","// Polyfills\n\nif (Number.EPSILON === undefined) {\n Number.EPSILON = Math.pow(2, -52);\n}\nif (Number.isInteger === undefined) {\n // Missing in IE\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n Number.isInteger = function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n };\n}\n\n//\n\nif (Math.sign === undefined) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n Math.sign = function (x) {\n return x < 0 ? -1 : x > 0 ? 1 : +x;\n };\n}\nif ('name' in Function.prototype === false) {\n // Missing in IE\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n Object.defineProperty(Function.prototype, 'name', {\n get: function () {\n return this.toString().match(/^\\s*function\\s*([^\\(\\s]*)/)[1];\n }\n });\n}\nif (Object.assign === undefined) {\n // Missing in IE\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n (function () {\n Object.assign = function (target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (Object.prototype.hasOwnProperty.call(source, nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n })();\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\nObject.assign(EventDispatcher.prototype, {\n addEventListener: function (type, listener) {\n if (this._listeners === undefined) this._listeners = {};\n var listeners = this._listeners;\n if (listeners[type] === undefined) {\n listeners[type] = [];\n }\n if (listeners[type].indexOf(listener) === -1) {\n listeners[type].push(listener);\n }\n },\n hasEventListener: function (type, listener) {\n if (this._listeners === undefined) return false;\n var listeners = this._listeners;\n return listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1;\n },\n removeEventListener: function (type, listener) {\n if (this._listeners === undefined) return;\n var listeners = this._listeners;\n var listenerArray = listeners[type];\n if (listenerArray !== undefined) {\n var index = listenerArray.indexOf(listener);\n if (index !== -1) {\n listenerArray.splice(index, 1);\n }\n }\n },\n dispatchEvent: function (event) {\n if (this._listeners === undefined) return;\n var listeners = this._listeners;\n var listenerArray = listeners[event.type];\n if (listenerArray !== undefined) {\n event.target = this;\n var array = listenerArray.slice(0);\n for (var i = 0, l = array.length; i < l; i++) {\n array[i].call(this, event);\n }\n }\n }\n});\nvar REVISION = '105';\nvar MOUSE = {\n LEFT: 0,\n MIDDLE: 1,\n RIGHT: 2\n};\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n DEG2RAD: Math.PI / 180,\n RAD2DEG: 180 / Math.PI,\n generateUUID: function () {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n var lut = [];\n for (var i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + i.toString(16);\n }\n return function generateUUID() {\n var d0 = Math.random() * 0xffffffff | 0;\n var d1 = Math.random() * 0xffffffff | 0;\n var d2 = Math.random() * 0xffffffff | 0;\n var d3 = Math.random() * 0xffffffff | 0;\n var uuid = lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + '-' + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff];\n\n // .toUpperCase() here flattens concatenated strings to save heap memory space.\n return uuid.toUpperCase();\n };\n }(),\n clamp: function (value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n // compute euclidian modulo of m % n\n // https://en.wikipedia.org/wiki/Modulo_operation\n\n euclideanModulo: function (n, m) {\n return (n % m + m) % m;\n },\n // Linear mapping from range to range \n\n mapLinear: function (x, a1, a2, b1, b2) {\n return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n },\n // https://en.wikipedia.org/wiki/Linear_interpolation\n\n lerp: function (x, y, t) {\n return (1 - t) * x + t * y;\n },\n // http://en.wikipedia.org/wiki/Smoothstep\n\n smoothstep: function (x, min, max) {\n if (x <= min) return 0;\n if (x >= max) return 1;\n x = (x - min) / (max - min);\n return x * x * (3 - 2 * x);\n },\n smootherstep: function (x, min, max) {\n if (x <= min) return 0;\n if (x >= max) return 1;\n x = (x - min) / (max - min);\n return x * x * x * (x * (x * 6 - 15) + 10);\n },\n // Random integer from interval\n\n randInt: function (low, high) {\n return low + Math.floor(Math.random() * (high - low + 1));\n },\n // Random float from interval\n\n randFloat: function (low, high) {\n return low + Math.random() * (high - low);\n },\n // Random float from <-range/2, range/2> interval\n\n randFloatSpread: function (range) {\n return range * (0.5 - Math.random());\n },\n degToRad: function (degrees) {\n return degrees * _Math.DEG2RAD;\n },\n radToDeg: function (radians) {\n return radians * _Math.RAD2DEG;\n },\n isPowerOfTwo: function (value) {\n return (value & value - 1) === 0 && value !== 0;\n },\n ceilPowerOfTwo: function (value) {\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n },\n floorPowerOfTwo: function (value) {\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n }\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n}\nObject.defineProperties(Vector2.prototype, {\n \"width\": {\n get: function () {\n return this.x;\n },\n set: function (value) {\n this.x = value;\n }\n },\n \"height\": {\n get: function () {\n return this.y;\n },\n set: function (value) {\n this.y = value;\n }\n }\n});\nObject.assign(Vector2.prototype, {\n isVector2: true,\n set: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n setScalar: function (scalar) {\n this.x = scalar;\n this.y = scalar;\n return this;\n },\n setX: function (x) {\n this.x = x;\n return this;\n },\n setY: function (y) {\n this.y = y;\n return this;\n },\n setComponent: function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n default:\n throw new Error('index is out of range: ' + index);\n }\n return this;\n },\n getComponent: function (index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n default:\n throw new Error('index is out of range: ' + index);\n }\n },\n clone: function () {\n return new this.constructor(this.x, this.y);\n },\n copy: function (v) {\n this.x = v.x;\n this.y = v.y;\n return this;\n },\n add: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n return this;\n },\n addScalar: function (s) {\n this.x += s;\n this.y += s;\n return this;\n },\n addVectors: function (a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n return this;\n },\n addScaledVector: function (v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n return this;\n },\n sub: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n return this;\n },\n subScalar: function (s) {\n this.x -= s;\n this.y -= s;\n return this;\n },\n subVectors: function (a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n return this;\n },\n multiply: function (v) {\n this.x *= v.x;\n this.y *= v.y;\n return this;\n },\n multiplyScalar: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n divide: function (v) {\n this.x /= v.x;\n this.y /= v.y;\n return this;\n },\n divideScalar: function (scalar) {\n return this.multiplyScalar(1 / scalar);\n },\n applyMatrix3: function (m) {\n var x = this.x,\n y = this.y;\n var e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6];\n this.y = e[1] * x + e[4] * y + e[7];\n return this;\n },\n min: function (v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n return this;\n },\n max: function (v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n return this;\n },\n clamp: function (min, max) {\n // assumes min < max, componentwise\n\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n return this;\n },\n clampScalar: function (minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n return this;\n },\n clampLength: function (min, max) {\n var length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n },\n floor: function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n return this;\n },\n ceil: function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n return this;\n },\n round: function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n },\n roundToZero: function () {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n return this;\n },\n negate: function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n },\n dot: function (v) {\n return this.x * v.x + this.y * v.y;\n },\n cross: function (v) {\n return this.x * v.y - this.y * v.x;\n },\n lengthSq: function () {\n return this.x * this.x + this.y * this.y;\n },\n length: function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n manhattanLength: function () {\n return Math.abs(this.x) + Math.abs(this.y);\n },\n normalize: function () {\n return this.divideScalar(this.length() || 1);\n },\n angle: function () {\n // computes the angle in radians with respect to the positive x-axis\n\n var angle = Math.atan2(this.y, this.x);\n if (angle < 0) angle += 2 * Math.PI;\n return angle;\n },\n distanceTo: function (v) {\n return Math.sqrt(this.distanceToSquared(v));\n },\n distanceToSquared: function (v) {\n var dx = this.x - v.x,\n dy = this.y - v.y;\n return dx * dx + dy * dy;\n },\n manhattanDistanceTo: function (v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n },\n setLength: function (length) {\n return this.normalize().multiplyScalar(length);\n },\n lerp: function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n return this;\n },\n lerpVectors: function (v1, v2, alpha) {\n return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1);\n },\n equals: function (v) {\n return v.x === this.x && v.y === this.y;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n this.x = array[offset];\n this.y = array[offset + 1];\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this.x;\n array[offset + 1] = this.y;\n return array;\n },\n fromBufferAttribute: function (attribute, index, offset) {\n if (offset !== undefined) {\n console.warn('THREE.Vector2: offset has been removed from .fromBufferAttribute().');\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n return this;\n },\n rotateAround: function (center, angle) {\n var c = Math.cos(angle),\n s = Math.sin(angle);\n var x = this.x - center.x;\n var y = this.y - center.y;\n this.x = x * c - y * s + center.x;\n this.y = x * s + y * c + center.y;\n return this;\n }\n});\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion(x, y, z, w) {\n this._x = x || 0;\n this._y = y || 0;\n this._z = z || 0;\n this._w = w !== undefined ? w : 1;\n}\nObject.assign(Quaternion, {\n slerp: function (qa, qb, qm, t) {\n return qm.copy(qa).slerp(qb, t);\n },\n slerpFlat: function (dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\n // fuzz-free, array-based Quaternion SLERP operation\n\n var x0 = src0[srcOffset0 + 0],\n y0 = src0[srcOffset0 + 1],\n z0 = src0[srcOffset0 + 2],\n w0 = src0[srcOffset0 + 3],\n x1 = src1[srcOffset1 + 0],\n y1 = src1[srcOffset1 + 1],\n z1 = src1[srcOffset1 + 2],\n w1 = src1[srcOffset1 + 3];\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n var s = 1 - t,\n cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n dir = cos >= 0 ? 1 : -1,\n sqrSin = 1 - cos * cos;\n\n // Skip the Slerp for tiny steps to avoid numeric problems:\n if (sqrSin > Number.EPSILON) {\n var sin = Math.sqrt(sqrSin),\n len = Math.atan2(sin, cos * dir);\n s = Math.sin(s * len) / sin;\n t = Math.sin(t * len) / sin;\n }\n var tDir = t * dir;\n x0 = x0 * s + x1 * tDir;\n y0 = y0 * s + y1 * tDir;\n z0 = z0 * s + z1 * tDir;\n w0 = w0 * s + w1 * tDir;\n\n // Normalize in case we just did a lerp:\n if (s === 1 - t) {\n var f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n x0 *= f;\n y0 *= f;\n z0 *= f;\n w0 *= f;\n }\n }\n dst[dstOffset] = x0;\n dst[dstOffset + 1] = y0;\n dst[dstOffset + 2] = z0;\n dst[dstOffset + 3] = w0;\n }\n});\nObject.defineProperties(Quaternion.prototype, {\n x: {\n get: function () {\n return this._x;\n },\n set: function (value) {\n this._x = value;\n this.onChangeCallback();\n }\n },\n y: {\n get: function () {\n return this._y;\n },\n set: function (value) {\n this._y = value;\n this.onChangeCallback();\n }\n },\n z: {\n get: function () {\n return this._z;\n },\n set: function (value) {\n this._z = value;\n this.onChangeCallback();\n }\n },\n w: {\n get: function () {\n return this._w;\n },\n set: function (value) {\n this._w = value;\n this.onChangeCallback();\n }\n }\n});\nObject.assign(Quaternion.prototype, {\n isQuaternion: true,\n set: function (x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this.onChangeCallback();\n return this;\n },\n clone: function () {\n return new this.constructor(this._x, this._y, this._z, this._w);\n },\n copy: function (quaternion) {\n this._x = quaternion.x;\n this._y = quaternion.y;\n this._z = quaternion.z;\n this._w = quaternion.w;\n this.onChangeCallback();\n return this;\n },\n setFromEuler: function (euler, update) {\n if (!(euler && euler.isEuler)) {\n throw new Error('THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.');\n }\n var x = euler._x,\n y = euler._y,\n z = euler._z,\n order = euler.order;\n\n // http://www.mathworks.com/matlabcentral/fileexchange/\n // \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n //\tcontent/SpinCalc.m\n\n var cos = Math.cos;\n var sin = Math.sin;\n var c1 = cos(x / 2);\n var c2 = cos(y / 2);\n var c3 = cos(z / 2);\n var s1 = sin(x / 2);\n var s2 = sin(y / 2);\n var s3 = sin(z / 2);\n if (order === 'XYZ') {\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'YXZ') {\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n } else if (order === 'ZXY') {\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'ZYX') {\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n } else if (order === 'YZX') {\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'XZY') {\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\n }\n if (update !== false) this.onChangeCallback();\n return this;\n },\n setFromAxisAngle: function (axis, angle) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n // assumes axis is normalized\n\n var halfAngle = angle / 2,\n s = Math.sin(halfAngle);\n this._x = axis.x * s;\n this._y = axis.y * s;\n this._z = axis.z * s;\n this._w = Math.cos(halfAngle);\n this.onChangeCallback();\n return this;\n },\n setFromRotationMatrix: function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n var te = m.elements,\n m11 = te[0],\n m12 = te[4],\n m13 = te[8],\n m21 = te[1],\n m22 = te[5],\n m23 = te[9],\n m31 = te[2],\n m32 = te[6],\n m33 = te[10],\n trace = m11 + m22 + m33,\n s;\n if (trace > 0) {\n s = 0.5 / Math.sqrt(trace + 1.0);\n this._w = 0.25 / s;\n this._x = (m32 - m23) * s;\n this._y = (m13 - m31) * s;\n this._z = (m21 - m12) * s;\n } else if (m11 > m22 && m11 > m33) {\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n this._w = (m32 - m23) / s;\n this._x = 0.25 * s;\n this._y = (m12 + m21) / s;\n this._z = (m13 + m31) / s;\n } else if (m22 > m33) {\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n this._w = (m13 - m31) / s;\n this._x = (m12 + m21) / s;\n this._y = 0.25 * s;\n this._z = (m23 + m32) / s;\n } else {\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n this._w = (m21 - m12) / s;\n this._x = (m13 + m31) / s;\n this._y = (m23 + m32) / s;\n this._z = 0.25 * s;\n }\n this.onChangeCallback();\n return this;\n },\n setFromUnitVectors: function (vFrom, vTo) {\n // assumes direction vectors vFrom and vTo are normalized\n\n var EPS = 0.000001;\n var r = vFrom.dot(vTo) + 1;\n if (r < EPS) {\n r = 0;\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n this._x = -vFrom.y;\n this._y = vFrom.x;\n this._z = 0;\n this._w = r;\n } else {\n this._x = 0;\n this._y = -vFrom.z;\n this._z = vFrom.y;\n this._w = r;\n }\n } else {\n // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n this._w = r;\n }\n return this.normalize();\n },\n angleTo: function (q) {\n return 2 * Math.acos(Math.abs(_Math.clamp(this.dot(q), -1, 1)));\n },\n rotateTowards: function (q, step) {\n var angle = this.angleTo(q);\n if (angle === 0) return this;\n var t = Math.min(1, step / angle);\n this.slerp(q, t);\n return this;\n },\n inverse: function () {\n // quaternion is assumed to have unit length\n\n return this.conjugate();\n },\n conjugate: function () {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this.onChangeCallback();\n return this;\n },\n dot: function (v) {\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n },\n lengthSq: function () {\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n },\n length: function () {\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n },\n normalize: function () {\n var l = this.length();\n if (l === 0) {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n } else {\n l = 1 / l;\n this._x = this._x * l;\n this._y = this._y * l;\n this._z = this._z * l;\n this._w = this._w * l;\n }\n this.onChangeCallback();\n return this;\n },\n multiply: function (q, p) {\n if (p !== undefined) {\n console.warn('THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.');\n return this.multiplyQuaternions(q, p);\n }\n return this.multiplyQuaternions(this, q);\n },\n premultiply: function (q) {\n return this.multiplyQuaternions(q, this);\n },\n multiplyQuaternions: function (a, b) {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n var qax = a._x,\n qay = a._y,\n qaz = a._z,\n qaw = a._w;\n var qbx = b._x,\n qby = b._y,\n qbz = b._z,\n qbw = b._w;\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n this.onChangeCallback();\n return this;\n },\n slerp: function (qb, t) {\n if (t === 0) return this;\n if (t === 1) return this.copy(qb);\n var x = this._x,\n y = this._y,\n z = this._z,\n w = this._w;\n\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n if (cosHalfTheta < 0) {\n this._w = -qb._w;\n this._x = -qb._x;\n this._y = -qb._y;\n this._z = -qb._z;\n cosHalfTheta = -cosHalfTheta;\n } else {\n this.copy(qb);\n }\n if (cosHalfTheta >= 1.0) {\n this._w = w;\n this._x = x;\n this._y = y;\n this._z = z;\n return this;\n }\n var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n if (sqrSinHalfTheta <= Number.EPSILON) {\n var s = 1 - t;\n this._w = s * w + t * this._w;\n this._x = s * x + t * this._x;\n this._y = s * y + t * this._y;\n this._z = s * z + t * this._z;\n return this.normalize();\n }\n var sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n var halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n var ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta,\n ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n this._w = w * ratioA + this._w * ratioB;\n this._x = x * ratioA + this._x * ratioB;\n this._y = y * ratioA + this._y * ratioB;\n this._z = z * ratioA + this._z * ratioB;\n this.onChangeCallback();\n return this;\n },\n equals: function (quaternion) {\n return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this.onChangeCallback();\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._w;\n return array;\n },\n onChange: function (callback) {\n this.onChangeCallback = callback;\n return this;\n },\n onChangeCallback: function () {}\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3(x, y, z) {\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n}\nObject.assign(Vector3.prototype, {\n isVector3: true,\n set: function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n },\n setScalar: function (scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n return this;\n },\n setX: function (x) {\n this.x = x;\n return this;\n },\n setY: function (y) {\n this.y = y;\n return this;\n },\n setZ: function (z) {\n this.z = z;\n return this;\n },\n setComponent: function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n default:\n throw new Error('index is out of range: ' + index);\n }\n return this;\n },\n getComponent: function (index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n default:\n throw new Error('index is out of range: ' + index);\n }\n },\n clone: function () {\n return new this.constructor(this.x, this.y, this.z);\n },\n copy: function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n return this;\n },\n add: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n return this;\n },\n addScalar: function (s) {\n this.x += s;\n this.y += s;\n this.z += s;\n return this;\n },\n addVectors: function (a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n return this;\n },\n addScaledVector: function (v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n return this;\n },\n sub: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n return this;\n },\n subScalar: function (s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n return this;\n },\n subVectors: function (a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n return this;\n },\n multiply: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.');\n return this.multiplyVectors(v, w);\n }\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n return this;\n },\n multiplyScalar: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n return this;\n },\n multiplyVectors: function (a, b) {\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n return this;\n },\n applyEuler: function () {\n var quaternion = new Quaternion();\n return function applyEuler(euler) {\n if (!(euler && euler.isEuler)) {\n console.error('THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.');\n }\n return this.applyQuaternion(quaternion.setFromEuler(euler));\n };\n }(),\n applyAxisAngle: function () {\n var quaternion = new Quaternion();\n return function applyAxisAngle(axis, angle) {\n return this.applyQuaternion(quaternion.setFromAxisAngle(axis, angle));\n };\n }(),\n applyMatrix3: function (m) {\n var x = this.x,\n y = this.y,\n z = this.z;\n var e = m.elements;\n this.x = e[0] * x + e[3] * y + e[6] * z;\n this.y = e[1] * x + e[4] * y + e[7] * z;\n this.z = e[2] * x + e[5] * y + e[8] * z;\n return this;\n },\n applyMatrix4: function (m) {\n var x = this.x,\n y = this.y,\n z = this.z;\n var e = m.elements;\n var w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n return this;\n },\n applyQuaternion: function (q) {\n var x = this.x,\n y = this.y,\n z = this.z;\n var qx = q.x,\n qy = q.y,\n qz = q.z,\n qw = q.w;\n\n // calculate quat * vector\n\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return this;\n },\n project: function (camera) {\n return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n },\n unproject: function (camera) {\n return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n },\n transformDirection: function (m) {\n // input: THREE.Matrix4 affine matrix\n // vector interpreted as a direction\n\n var x = this.x,\n y = this.y,\n z = this.z;\n var e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z;\n this.y = e[1] * x + e[5] * y + e[9] * z;\n this.z = e[2] * x + e[6] * y + e[10] * z;\n return this.normalize();\n },\n divide: function (v) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n return this;\n },\n divideScalar: function (scalar) {\n return this.multiplyScalar(1 / scalar);\n },\n min: function (v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n return this;\n },\n max: function (v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n return this;\n },\n clamp: function (min, max) {\n // assumes min < max, componentwise\n\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n return this;\n },\n clampScalar: function (minVal, maxVal) {\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\n return this;\n },\n clampLength: function (min, max) {\n var length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n },\n floor: function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n return this;\n },\n ceil: function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n return this;\n },\n round: function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n return this;\n },\n roundToZero: function () {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n return this;\n },\n negate: function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n return this;\n },\n dot: function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n },\n // TODO lengthSquared?\n\n lengthSq: function () {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n },\n length: function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n },\n manhattanLength: function () {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n },\n normalize: function () {\n return this.divideScalar(this.length() || 1);\n },\n setLength: function (length) {\n return this.normalize().multiplyScalar(length);\n },\n lerp: function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n return this;\n },\n lerpVectors: function (v1, v2, alpha) {\n return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1);\n },\n cross: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.');\n return this.crossVectors(v, w);\n }\n return this.crossVectors(this, v);\n },\n crossVectors: function (a, b) {\n var ax = a.x,\n ay = a.y,\n az = a.z;\n var bx = b.x,\n by = b.y,\n bz = b.z;\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n return this;\n },\n projectOnVector: function (vector) {\n var scalar = vector.dot(this) / vector.lengthSq();\n return this.copy(vector).multiplyScalar(scalar);\n },\n projectOnPlane: function () {\n var v1 = new Vector3();\n return function projectOnPlane(planeNormal) {\n v1.copy(this).projectOnVector(planeNormal);\n return this.sub(v1);\n };\n }(),\n reflect: function () {\n // reflect incident vector off plane orthogonal to normal\n // normal is assumed to have unit length\n\n var v1 = new Vector3();\n return function reflect(normal) {\n return this.sub(v1.copy(normal).multiplyScalar(2 * this.dot(normal)));\n };\n }(),\n angleTo: function (v) {\n var theta = this.dot(v) / Math.sqrt(this.lengthSq() * v.lengthSq());\n\n // clamp, to handle numerical problems\n\n return Math.acos(_Math.clamp(theta, -1, 1));\n },\n distanceTo: function (v) {\n return Math.sqrt(this.distanceToSquared(v));\n },\n distanceToSquared: function (v) {\n var dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return dx * dx + dy * dy + dz * dz;\n },\n manhattanDistanceTo: function (v) {\n return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n },\n setFromSpherical: function (s) {\n return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n },\n setFromSphericalCoords: function (radius, phi, theta) {\n var sinPhiRadius = Math.sin(phi) * radius;\n this.x = sinPhiRadius * Math.sin(theta);\n this.y = Math.cos(phi) * radius;\n this.z = sinPhiRadius * Math.cos(theta);\n return this;\n },\n setFromCylindrical: function (c) {\n return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n },\n setFromCylindricalCoords: function (radius, theta, y) {\n this.x = radius * Math.sin(theta);\n this.y = y;\n this.z = radius * Math.cos(theta);\n return this;\n },\n setFromMatrixPosition: function (m) {\n var e = m.elements;\n this.x = e[12];\n this.y = e[13];\n this.z = e[14];\n return this;\n },\n setFromMatrixScale: function (m) {\n var sx = this.setFromMatrixColumn(m, 0).length();\n var sy = this.setFromMatrixColumn(m, 1).length();\n var sz = this.setFromMatrixColumn(m, 2).length();\n this.x = sx;\n this.y = sy;\n this.z = sz;\n return this;\n },\n setFromMatrixColumn: function (m, index) {\n return this.fromArray(m.elements, index * 4);\n },\n equals: function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n return array;\n },\n fromBufferAttribute: function (attribute, index, offset) {\n if (offset !== undefined) {\n console.warn('THREE.Vector3: offset has been removed from .fromBufferAttribute().');\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n return this;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n this.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (arguments.length > 0) {\n console.error('THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.');\n }\n}\nObject.assign(Matrix3.prototype, {\n isMatrix3: true,\n set: function (n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n var te = this.elements;\n te[0] = n11;\n te[1] = n21;\n te[2] = n31;\n te[3] = n12;\n te[4] = n22;\n te[5] = n32;\n te[6] = n13;\n te[7] = n23;\n te[8] = n33;\n return this;\n },\n identity: function () {\n this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n return this;\n },\n clone: function () {\n return new this.constructor().fromArray(this.elements);\n },\n copy: function (m) {\n var te = this.elements;\n var me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n return this;\n },\n setFromMatrix4: function (m) {\n var me = m.elements;\n this.set(me[0], me[4], me[8], me[1], me[5], me[9], me[2], me[6], me[10]);\n return this;\n },\n applyToBufferAttribute: function () {\n var v1 = new Vector3();\n return function applyToBufferAttribute(attribute) {\n for (var i = 0, l = attribute.count; i < l; i++) {\n v1.x = attribute.getX(i);\n v1.y = attribute.getY(i);\n v1.z = attribute.getZ(i);\n v1.applyMatrix3(this);\n attribute.setXYZ(i, v1.x, v1.y, v1.z);\n }\n return attribute;\n };\n }(),\n multiply: function (m) {\n return this.multiplyMatrices(this, m);\n },\n premultiply: function (m) {\n return this.multiplyMatrices(m, this);\n },\n multiplyMatrices: function (a, b) {\n var ae = a.elements;\n var be = b.elements;\n var te = this.elements;\n var a11 = ae[0],\n a12 = ae[3],\n a13 = ae[6];\n var a21 = ae[1],\n a22 = ae[4],\n a23 = ae[7];\n var a31 = ae[2],\n a32 = ae[5],\n a33 = ae[8];\n var b11 = be[0],\n b12 = be[3],\n b13 = be[6];\n var b21 = be[1],\n b22 = be[4],\n b23 = be[7];\n var b31 = be[2],\n b32 = be[5],\n b33 = be[8];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return this;\n },\n multiplyScalar: function (s) {\n var te = this.elements;\n te[0] *= s;\n te[3] *= s;\n te[6] *= s;\n te[1] *= s;\n te[4] *= s;\n te[7] *= s;\n te[2] *= s;\n te[5] *= s;\n te[8] *= s;\n return this;\n },\n determinant: function () {\n var te = this.elements;\n var a = te[0],\n b = te[1],\n c = te[2],\n d = te[3],\n e = te[4],\n f = te[5],\n g = te[6],\n h = te[7],\n i = te[8];\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n },\n getInverse: function (matrix, throwOnDegenerate) {\n if (matrix && matrix.isMatrix4) {\n console.error(\"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\");\n }\n var me = matrix.elements,\n te = this.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n12 = me[3],\n n22 = me[4],\n n32 = me[5],\n n13 = me[6],\n n23 = me[7],\n n33 = me[8],\n t11 = n33 * n22 - n32 * n23,\n t12 = n32 * n13 - n33 * n12,\n t13 = n23 * n12 - n22 * n13,\n det = n11 * t11 + n21 * t12 + n31 * t13;\n if (det === 0) {\n var msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n if (throwOnDegenerate === true) {\n throw new Error(msg);\n } else {\n console.warn(msg);\n }\n return this.identity();\n }\n var detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n31 * n23 - n33 * n21) * detInv;\n te[2] = (n32 * n21 - n31 * n22) * detInv;\n te[3] = t12 * detInv;\n te[4] = (n33 * n11 - n31 * n13) * detInv;\n te[5] = (n31 * n12 - n32 * n11) * detInv;\n te[6] = t13 * detInv;\n te[7] = (n21 * n13 - n23 * n11) * detInv;\n te[8] = (n22 * n11 - n21 * n12) * detInv;\n return this;\n },\n transpose: function () {\n var tmp,\n m = this.elements;\n tmp = m[1];\n m[1] = m[3];\n m[3] = tmp;\n tmp = m[2];\n m[2] = m[6];\n m[6] = tmp;\n tmp = m[5];\n m[5] = m[7];\n m[7] = tmp;\n return this;\n },\n getNormalMatrix: function (matrix4) {\n return this.setFromMatrix4(matrix4).getInverse(this).transpose();\n },\n transposeIntoArray: function (r) {\n var m = this.elements;\n r[0] = m[0];\n r[1] = m[3];\n r[2] = m[6];\n r[3] = m[1];\n r[4] = m[4];\n r[5] = m[7];\n r[6] = m[2];\n r[7] = m[5];\n r[8] = m[8];\n return this;\n },\n setUvTransform: function (tx, ty, sx, sy, rotation, cx, cy) {\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n this.set(sx * c, sx * s, -sx * (c * cx + s * cy) + cx + tx, -sy * s, sy * c, -sy * (-s * cx + c * cy) + cy + ty, 0, 0, 1);\n },\n scale: function (sx, sy) {\n var te = this.elements;\n te[0] *= sx;\n te[3] *= sx;\n te[6] *= sx;\n te[1] *= sy;\n te[4] *= sy;\n te[7] *= sy;\n return this;\n },\n rotate: function (theta) {\n var c = Math.cos(theta);\n var s = Math.sin(theta);\n var te = this.elements;\n var a11 = te[0],\n a12 = te[3],\n a13 = te[6];\n var a21 = te[1],\n a22 = te[4],\n a23 = te[7];\n te[0] = c * a11 + s * a21;\n te[3] = c * a12 + s * a22;\n te[6] = c * a13 + s * a23;\n te[1] = -s * a11 + c * a21;\n te[4] = -s * a12 + c * a22;\n te[7] = -s * a13 + c * a23;\n return this;\n },\n translate: function (tx, ty) {\n var te = this.elements;\n te[0] += tx * te[2];\n te[3] += tx * te[5];\n te[6] += tx * te[8];\n te[1] += ty * te[2];\n te[4] += ty * te[5];\n te[7] += ty * te[8];\n return this;\n },\n equals: function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 9; i++) {\n if (te[i] !== me[i]) return false;\n }\n return true;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n for (var i = 0; i < 9; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n return array;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\nvar ImageUtils = {\n getDataURL: function (image) {\n var canvas;\n if (typeof HTMLCanvasElement == 'undefined') {\n return image.src;\n } else if (image instanceof HTMLCanvasElement) {\n canvas = image;\n } else {\n if (_canvas === undefined) _canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');\n _canvas.width = image.width;\n _canvas.height = image.height;\n var context = _canvas.getContext('2d');\n if (image instanceof ImageData) {\n context.putImageData(image, 0, 0);\n } else {\n context.drawImage(image, 0, 0, image.width, image.height);\n }\n canvas = _canvas;\n }\n if (canvas.width > 2048 || canvas.height > 2048) {\n return canvas.toDataURL('image/jpeg', 0.6);\n } else {\n return canvas.toDataURL('image/png');\n }\n }\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\nfunction Texture(image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n Object.defineProperty(this, 'id', {\n value: textureId++\n });\n this.uuid = _Math.generateUUID();\n this.name = '';\n this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n this.mipmaps = [];\n this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n this.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n this.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n this.format = format !== undefined ? format : RGBAFormat;\n this.type = type !== undefined ? type : UnsignedByteType;\n this.offset = new Vector2(0, 0);\n this.repeat = new Vector2(1, 1);\n this.center = new Vector2(0, 0);\n this.rotation = 0;\n this.matrixAutoUpdate = true;\n this.matrix = new Matrix3();\n this.generateMipmaps = true;\n this.premultiplyAlpha = false;\n this.flipY = true;\n this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n //\n // Also changing the encoding after already used by a Material will not automatically make the Material\n // update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n this.encoding = encoding !== undefined ? encoding : LinearEncoding;\n this.version = 0;\n this.onUpdate = null;\n}\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: Texture,\n isTexture: true,\n updateMatrix: function () {\n this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (source) {\n this.name = source.name;\n this.image = source.image;\n this.mipmaps = source.mipmaps.slice(0);\n this.mapping = source.mapping;\n this.wrapS = source.wrapS;\n this.wrapT = source.wrapT;\n this.magFilter = source.magFilter;\n this.minFilter = source.minFilter;\n this.anisotropy = source.anisotropy;\n this.format = source.format;\n this.type = source.type;\n this.offset.copy(source.offset);\n this.repeat.copy(source.repeat);\n this.center.copy(source.center);\n this.rotation = source.rotation;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrix.copy(source.matrix);\n this.generateMipmaps = source.generateMipmaps;\n this.premultiplyAlpha = source.premultiplyAlpha;\n this.flipY = source.flipY;\n this.unpackAlignment = source.unpackAlignment;\n this.encoding = source.encoding;\n return this;\n },\n toJSON: function (meta) {\n var isRootObject = meta === undefined || typeof meta === 'string';\n if (!isRootObject && meta.textures[this.uuid] !== undefined) {\n return meta.textures[this.uuid];\n }\n var output = {\n metadata: {\n version: 4.5,\n type: 'Texture',\n generator: 'Texture.toJSON'\n },\n uuid: this.uuid,\n name: this.name,\n mapping: this.mapping,\n repeat: [this.repeat.x, this.repeat.y],\n offset: [this.offset.x, this.offset.y],\n center: [this.center.x, this.center.y],\n rotation: this.rotation,\n wrap: [this.wrapS, this.wrapT],\n format: this.format,\n type: this.type,\n encoding: this.encoding,\n minFilter: this.minFilter,\n magFilter: this.magFilter,\n anisotropy: this.anisotropy,\n flipY: this.flipY,\n premultiplyAlpha: this.premultiplyAlpha,\n unpackAlignment: this.unpackAlignment\n };\n if (this.image !== undefined) {\n // TODO: Move to THREE.Image\n\n var image = this.image;\n if (image.uuid === undefined) {\n image.uuid = _Math.generateUUID(); // UGH\n }\n\n if (!isRootObject && meta.images[image.uuid] === undefined) {\n var url;\n if (Array.isArray(image)) {\n // process array of images e.g. CubeTexture\n\n url = [];\n for (var i = 0, l = image.length; i < l; i++) {\n url.push(ImageUtils.getDataURL(image[i]));\n }\n } else {\n // process single image\n\n url = ImageUtils.getDataURL(image);\n }\n meta.images[image.uuid] = {\n uuid: image.uuid,\n url: url\n };\n }\n output.image = image.uuid;\n }\n if (!isRootObject) {\n meta.textures[this.uuid] = output;\n }\n return output;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n },\n transformUv: function (uv) {\n if (this.mapping !== UVMapping) return uv;\n uv.applyMatrix3(this.matrix);\n if (uv.x < 0 || uv.x > 1) {\n switch (this.wrapS) {\n case RepeatWrapping:\n uv.x = uv.x - Math.floor(uv.x);\n break;\n case ClampToEdgeWrapping:\n uv.x = uv.x < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n uv.x = Math.ceil(uv.x) - uv.x;\n } else {\n uv.x = uv.x - Math.floor(uv.x);\n }\n break;\n }\n }\n if (uv.y < 0 || uv.y > 1) {\n switch (this.wrapT) {\n case RepeatWrapping:\n uv.y = uv.y - Math.floor(uv.y);\n break;\n case ClampToEdgeWrapping:\n uv.y = uv.y < 0 ? 0 : 1;\n break;\n case MirroredRepeatWrapping:\n if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n uv.y = Math.ceil(uv.y) - uv.y;\n } else {\n uv.y = uv.y - Math.floor(uv.y);\n }\n break;\n }\n }\n if (this.flipY) {\n uv.y = 1 - uv.y;\n }\n return uv;\n }\n});\nObject.defineProperty(Texture.prototype, \"needsUpdate\", {\n set: function (value) {\n if (value === true) this.version++;\n }\n});\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4(x, y, z, w) {\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n this.w = w !== undefined ? w : 1;\n}\nObject.assign(Vector4.prototype, {\n isVector4: true,\n set: function (x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n },\n setScalar: function (scalar) {\n this.x = scalar;\n this.y = scalar;\n this.z = scalar;\n this.w = scalar;\n return this;\n },\n setX: function (x) {\n this.x = x;\n return this;\n },\n setY: function (y) {\n this.y = y;\n return this;\n },\n setZ: function (z) {\n this.z = z;\n return this;\n },\n setW: function (w) {\n this.w = w;\n return this;\n },\n setComponent: function (index, value) {\n switch (index) {\n case 0:\n this.x = value;\n break;\n case 1:\n this.y = value;\n break;\n case 2:\n this.z = value;\n break;\n case 3:\n this.w = value;\n break;\n default:\n throw new Error('index is out of range: ' + index);\n }\n return this;\n },\n getComponent: function (index) {\n switch (index) {\n case 0:\n return this.x;\n case 1:\n return this.y;\n case 2:\n return this.z;\n case 3:\n return this.w;\n default:\n throw new Error('index is out of range: ' + index);\n }\n },\n clone: function () {\n return new this.constructor(this.x, this.y, this.z, this.w);\n },\n copy: function (v) {\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n this.w = v.w !== undefined ? v.w : 1;\n return this;\n },\n add: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n return this.addVectors(v, w);\n }\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n this.w += v.w;\n return this;\n },\n addScalar: function (s) {\n this.x += s;\n this.y += s;\n this.z += s;\n this.w += s;\n return this;\n },\n addVectors: function (a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n this.w = a.w + b.w;\n return this;\n },\n addScaledVector: function (v, s) {\n this.x += v.x * s;\n this.y += v.y * s;\n this.z += v.z * s;\n this.w += v.w * s;\n return this;\n },\n sub: function (v, w) {\n if (w !== undefined) {\n console.warn('THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n return this.subVectors(v, w);\n }\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n this.w -= v.w;\n return this;\n },\n subScalar: function (s) {\n this.x -= s;\n this.y -= s;\n this.z -= s;\n this.w -= s;\n return this;\n },\n subVectors: function (a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n this.w = a.w - b.w;\n return this;\n },\n multiplyScalar: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n this.w *= scalar;\n return this;\n },\n applyMatrix4: function (m) {\n var x = this.x,\n y = this.y,\n z = this.z,\n w = this.w;\n var e = m.elements;\n this.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n this.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n this.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n this.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n return this;\n },\n divideScalar: function (scalar) {\n return this.multiplyScalar(1 / scalar);\n },\n setAxisAngleFromQuaternion: function (q) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n // q is assumed to be normalized\n\n this.w = 2 * Math.acos(q.w);\n var s = Math.sqrt(1 - q.w * q.w);\n if (s < 0.0001) {\n this.x = 1;\n this.y = 0;\n this.z = 0;\n } else {\n this.x = q.x / s;\n this.y = q.y / s;\n this.z = q.z / s;\n }\n return this;\n },\n setAxisAngleFromRotationMatrix: function (m) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n var angle,\n x,\n y,\n z,\n // variables for result\n epsilon = 0.01,\n // margin to allow for rounding errors\n epsilon2 = 0.1,\n // margin to distinguish between 0 and 180 degrees\n\n te = m.elements,\n m11 = te[0],\n m12 = te[4],\n m13 = te[8],\n m21 = te[1],\n m22 = te[5],\n m23 = te[9],\n m31 = te[2],\n m32 = te[6],\n m33 = te[10];\n if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n // singularity found\n // first check for identity matrix which must have +1 for all terms\n // in leading diagonal and zero in other terms\n\n if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n // this singularity is identity matrix so angle = 0\n\n this.set(1, 0, 0, 0);\n return this; // zero angle, arbitrary axis\n }\n\n // otherwise this singularity is angle = 180\n\n angle = Math.PI;\n var xx = (m11 + 1) / 2;\n var yy = (m22 + 1) / 2;\n var zz = (m33 + 1) / 2;\n var xy = (m12 + m21) / 4;\n var xz = (m13 + m31) / 4;\n var yz = (m23 + m32) / 4;\n if (xx > yy && xx > zz) {\n // m11 is the largest diagonal term\n\n if (xx < epsilon) {\n x = 0;\n y = 0.707106781;\n z = 0.707106781;\n } else {\n x = Math.sqrt(xx);\n y = xy / x;\n z = xz / x;\n }\n } else if (yy > zz) {\n // m22 is the largest diagonal term\n\n if (yy < epsilon) {\n x = 0.707106781;\n y = 0;\n z = 0.707106781;\n } else {\n y = Math.sqrt(yy);\n x = xy / y;\n z = yz / y;\n }\n } else {\n // m33 is the largest diagonal term so base result on this\n\n if (zz < epsilon) {\n x = 0.707106781;\n y = 0.707106781;\n z = 0;\n } else {\n z = Math.sqrt(zz);\n x = xz / z;\n y = yz / z;\n }\n }\n this.set(x, y, z, angle);\n return this; // return 180 deg rotation\n }\n\n // as we have reached here there are no singularities so we can handle normally\n\n var s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12)); // used to normalize\n\n if (Math.abs(s) < 0.001) s = 1;\n\n // prevent divide by zero, should not happen if matrix is orthogonal and should be\n // caught by singularity test above, but I've left it in just in case\n\n this.x = (m32 - m23) / s;\n this.y = (m13 - m31) / s;\n this.z = (m21 - m12) / s;\n this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n return this;\n },\n min: function (v) {\n this.x = Math.min(this.x, v.x);\n this.y = Math.min(this.y, v.y);\n this.z = Math.min(this.z, v.z);\n this.w = Math.min(this.w, v.w);\n return this;\n },\n max: function (v) {\n this.x = Math.max(this.x, v.x);\n this.y = Math.max(this.y, v.y);\n this.z = Math.max(this.z, v.z);\n this.w = Math.max(this.w, v.w);\n return this;\n },\n clamp: function (min, max) {\n // assumes min < max, componentwise\n\n this.x = Math.max(min.x, Math.min(max.x, this.x));\n this.y = Math.max(min.y, Math.min(max.y, this.y));\n this.z = Math.max(min.z, Math.min(max.z, this.z));\n this.w = Math.max(min.w, Math.min(max.w, this.w));\n return this;\n },\n clampScalar: function () {\n var min, max;\n return function clampScalar(minVal, maxVal) {\n if (min === undefined) {\n min = new Vector4();\n max = new Vector4();\n }\n min.set(minVal, minVal, minVal, minVal);\n max.set(maxVal, maxVal, maxVal, maxVal);\n return this.clamp(min, max);\n };\n }(),\n clampLength: function (min, max) {\n var length = this.length();\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\n },\n floor: function () {\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n this.w = Math.floor(this.w);\n return this;\n },\n ceil: function () {\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n this.w = Math.ceil(this.w);\n return this;\n },\n round: function () {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n this.w = Math.round(this.w);\n return this;\n },\n roundToZero: function () {\n this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n return this;\n },\n negate: function () {\n this.x = -this.x;\n this.y = -this.y;\n this.z = -this.z;\n this.w = -this.w;\n return this;\n },\n dot: function (v) {\n return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n },\n lengthSq: function () {\n return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n },\n length: function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n },\n manhattanLength: function () {\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n },\n normalize: function () {\n return this.divideScalar(this.length() || 1);\n },\n setLength: function (length) {\n return this.normalize().multiplyScalar(length);\n },\n lerp: function (v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n this.w += (v.w - this.w) * alpha;\n return this;\n },\n lerpVectors: function (v1, v2, alpha) {\n return this.subVectors(v2, v1).multiplyScalar(alpha).add(v1);\n },\n equals: function (v) {\n return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n this.x = array[offset];\n this.y = array[offset + 1];\n this.z = array[offset + 2];\n this.w = array[offset + 3];\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this.x;\n array[offset + 1] = this.y;\n array[offset + 2] = this.z;\n array[offset + 3] = this.w;\n return array;\n },\n fromBufferAttribute: function (attribute, index, offset) {\n if (offset !== undefined) {\n console.warn('THREE.Vector4: offset has been removed from .fromBufferAttribute().');\n }\n this.x = attribute.getX(index);\n this.y = attribute.getY(index);\n this.z = attribute.getZ(index);\n this.w = attribute.getW(index);\n return this;\n }\n});\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget(width, height, options) {\n this.width = width;\n this.height = height;\n this.scissor = new Vector4(0, 0, width, height);\n this.scissorTest = false;\n this.viewport = new Vector4(0, 0, width, height);\n options = options || {};\n this.texture = new Texture(undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n}\nWebGLRenderTarget.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: WebGLRenderTarget,\n isWebGLRenderTarget: true,\n setSize: function (width, height) {\n if (this.width !== width || this.height !== height) {\n this.width = width;\n this.height = height;\n this.dispose();\n }\n this.viewport.set(0, 0, width, height);\n this.scissor.set(0, 0, width, height);\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (source) {\n this.width = source.width;\n this.height = source.height;\n this.viewport.copy(source.viewport);\n this.texture = source.texture.clone();\n this.depthBuffer = source.depthBuffer;\n this.stencilBuffer = source.stencilBuffer;\n this.depthTexture = source.depthTexture;\n return this;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n});\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget(width, height, options) {\n WebGLRenderTarget.call(this, width, height, options);\n this.samples = 4;\n}\nWebGLMultisampleRenderTarget.prototype = Object.assign(Object.create(WebGLRenderTarget.prototype), {\n constructor: WebGLMultisampleRenderTarget,\n isWebGLMultisampleRenderTarget: true,\n copy: function (source) {\n WebGLRenderTarget.prototype.copy.call(this, source);\n this.samples = source.samples;\n return this;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube(width, height, options) {\n WebGLRenderTarget.call(this, width, height, options);\n}\nWebGLRenderTargetCube.prototype = Object.create(WebGLRenderTarget.prototype);\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture(data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {\n data: data,\n width: width,\n height: height\n };\n this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n this.generateMipmaps = false;\n this.flipY = false;\n this.unpackAlignment = 1;\n}\nDataTexture.prototype = Object.create(Texture.prototype);\nDataTexture.prototype.constructor = DataTexture;\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3(min, max) {\n this.min = min !== undefined ? min : new Vector3(+Infinity, +Infinity, +Infinity);\n this.max = max !== undefined ? max : new Vector3(-Infinity, -Infinity, -Infinity);\n}\nObject.assign(Box3.prototype, {\n isBox3: true,\n set: function (min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n },\n setFromArray: function (array) {\n var minX = +Infinity;\n var minY = +Infinity;\n var minZ = +Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (z < minZ) minZ = z;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n if (z > maxZ) maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n },\n setFromBufferAttribute: function (attribute) {\n var minX = +Infinity;\n var minY = +Infinity;\n var minZ = +Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = attribute.count; i < l; i++) {\n var x = attribute.getX(i);\n var y = attribute.getY(i);\n var z = attribute.getZ(i);\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (z < minZ) minZ = z;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n if (z > maxZ) maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n },\n setFromPoints: function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n },\n setFromCenterAndSize: function () {\n var v1 = new Vector3();\n return function setFromCenterAndSize(center, size) {\n var halfSize = v1.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n };\n }(),\n setFromObject: function (object) {\n this.makeEmpty();\n return this.expandByObject(object);\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n },\n makeEmpty: function () {\n this.min.x = this.min.y = this.min.z = +Infinity;\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n },\n isEmpty: function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n },\n getCenter: function (target) {\n if (target === undefined) {\n console.warn('THREE.Box3: .getCenter() target is now required');\n target = new Vector3();\n }\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n },\n getSize: function (target) {\n if (target === undefined) {\n console.warn('THREE.Box3: .getSize() target is now required');\n target = new Vector3();\n }\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n },\n expandByPoint: function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n },\n expandByVector: function (vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n },\n expandByScalar: function (scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n },\n expandByObject: function () {\n // Computes the world-axis-aligned bounding box of an object (including its children),\n // accounting for both the object's, and children's, world transforms\n\n var scope, i, l;\n var v1 = new Vector3();\n function traverse(node) {\n var geometry = node.geometry;\n if (geometry !== undefined) {\n if (geometry.isGeometry) {\n var vertices = geometry.vertices;\n for (i = 0, l = vertices.length; i < l; i++) {\n v1.copy(vertices[i]);\n v1.applyMatrix4(node.matrixWorld);\n scope.expandByPoint(v1);\n }\n } else if (geometry.isBufferGeometry) {\n var attribute = geometry.attributes.position;\n if (attribute !== undefined) {\n for (i = 0, l = attribute.count; i < l; i++) {\n v1.fromBufferAttribute(attribute, i).applyMatrix4(node.matrixWorld);\n scope.expandByPoint(v1);\n }\n }\n }\n }\n }\n return function expandByObject(object) {\n scope = this;\n object.updateMatrixWorld(true);\n object.traverse(traverse);\n return this;\n };\n }(),\n containsPoint: function (point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n },\n containsBox: function (box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n },\n getParameter: function (point, target) {\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n\n if (target === undefined) {\n console.warn('THREE.Box3: .getParameter() target is now required');\n target = new Vector3();\n }\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n },\n intersectsBox: function (box) {\n // using 6 splitting planes to rule out intersections.\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n },\n intersectsSphere: function () {\n var closestPoint = new Vector3();\n return function intersectsSphere(sphere) {\n // Find the point on the AABB closest to the sphere center.\n this.clampPoint(sphere.center, closestPoint);\n\n // If that point is inside the sphere, the AABB and sphere intersect.\n return closestPoint.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n };\n }(),\n intersectsPlane: function (plane) {\n // We compute the minimum and maximum dot product values. If those values\n // are on the same side (back or front) of the plane, then there is no intersection.\n\n var min, max;\n if (plane.normal.x > 0) {\n min = plane.normal.x * this.min.x;\n max = plane.normal.x * this.max.x;\n } else {\n min = plane.normal.x * this.max.x;\n max = plane.normal.x * this.min.x;\n }\n if (plane.normal.y > 0) {\n min += plane.normal.y * this.min.y;\n max += plane.normal.y * this.max.y;\n } else {\n min += plane.normal.y * this.max.y;\n max += plane.normal.y * this.min.y;\n }\n if (plane.normal.z > 0) {\n min += plane.normal.z * this.min.z;\n max += plane.normal.z * this.max.z;\n } else {\n min += plane.normal.z * this.max.z;\n max += plane.normal.z * this.min.z;\n }\n return min <= -plane.constant && max >= -plane.constant;\n },\n intersectsTriangle: function () {\n // triangle centered vertices\n var v0 = new Vector3();\n var v1 = new Vector3();\n var v2 = new Vector3();\n\n // triangle edge vectors\n var f0 = new Vector3();\n var f1 = new Vector3();\n var f2 = new Vector3();\n var testAxis = new Vector3();\n var center = new Vector3();\n var extents = new Vector3();\n var triangleNormal = new Vector3();\n function satForAxes(axes) {\n var i, j;\n for (i = 0, j = axes.length - 3; i <= j; i += 3) {\n testAxis.fromArray(axes, i);\n // project the aabb onto the seperating axis\n var r = extents.x * Math.abs(testAxis.x) + extents.y * Math.abs(testAxis.y) + extents.z * Math.abs(testAxis.z);\n // project all 3 vertices of the triangle onto the seperating axis\n var p0 = v0.dot(testAxis);\n var p1 = v1.dot(testAxis);\n var p2 = v2.dot(testAxis);\n // actual test, basically see if either of the most extreme of the triangle points intersects r\n if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n // points of the projected triangle are outside the projected half-length of the aabb\n // the axis is seperating and we can exit\n return false;\n }\n }\n return true;\n }\n return function intersectsTriangle(triangle) {\n if (this.isEmpty()) {\n return false;\n }\n\n // compute box center and extents\n this.getCenter(center);\n extents.subVectors(this.max, center);\n\n // translate triangle to aabb origin\n v0.subVectors(triangle.a, center);\n v1.subVectors(triangle.b, center);\n v2.subVectors(triangle.c, center);\n\n // compute edge vectors for triangle\n f0.subVectors(v1, v0);\n f1.subVectors(v2, v1);\n f2.subVectors(v0, v2);\n\n // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n var axes = [0, -f0.z, f0.y, 0, -f1.z, f1.y, 0, -f2.z, f2.y, f0.z, 0, -f0.x, f1.z, 0, -f1.x, f2.z, 0, -f2.x, -f0.y, f0.x, 0, -f1.y, f1.x, 0, -f2.y, f2.x, 0];\n if (!satForAxes(axes)) {\n return false;\n }\n\n // test 3 face normals from the aabb\n axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!satForAxes(axes)) {\n return false;\n }\n\n // finally testing the face normal of the triangle\n // use already existing triangle edge vectors here\n triangleNormal.crossVectors(f0, f1);\n axes = [triangleNormal.x, triangleNormal.y, triangleNormal.z];\n return satForAxes(axes);\n };\n }(),\n clampPoint: function (point, target) {\n if (target === undefined) {\n console.warn('THREE.Box3: .clampPoint() target is now required');\n target = new Vector3();\n }\n return target.copy(point).clamp(this.min, this.max);\n },\n distanceToPoint: function () {\n var v1 = new Vector3();\n return function distanceToPoint(point) {\n var clampedPoint = v1.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n };\n }(),\n getBoundingSphere: function () {\n var v1 = new Vector3();\n return function getBoundingSphere(target) {\n if (target === undefined) {\n console.error('THREE.Box3: .getBoundingSphere() target is now required');\n //target = new Sphere(); // removed to avoid cyclic dependency\n }\n\n this.getCenter(target.center);\n target.radius = this.getSize(v1).length() * 0.5;\n return target;\n };\n }(),\n intersect: function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) this.makeEmpty();\n return this;\n },\n union: function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n },\n applyMatrix4: function () {\n var points = [new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3()];\n return function applyMatrix4(matrix) {\n // transform of empty box is an empty box.\n if (this.isEmpty()) return this;\n\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); // 000\n points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); // 001\n points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); // 010\n points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); // 011\n points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); // 100\n points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); // 101\n points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); // 110\n points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); // 111\n\n this.setFromPoints(points);\n return this;\n };\n }(),\n translate: function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n },\n equals: function (box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere(center, radius) {\n this.center = center !== undefined ? center : new Vector3();\n this.radius = radius !== undefined ? radius : 0;\n}\nObject.assign(Sphere.prototype, {\n set: function (center, radius) {\n this.center.copy(center);\n this.radius = radius;\n return this;\n },\n setFromPoints: function () {\n var box = new Box3();\n return function setFromPoints(points, optionalCenter) {\n var center = this.center;\n if (optionalCenter !== undefined) {\n center.copy(optionalCenter);\n } else {\n box.setFromPoints(points).getCenter(center);\n }\n var maxRadiusSq = 0;\n for (var i = 0, il = points.length; i < il; i++) {\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n }\n this.radius = Math.sqrt(maxRadiusSq);\n return this;\n };\n }(),\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (sphere) {\n this.center.copy(sphere.center);\n this.radius = sphere.radius;\n return this;\n },\n empty: function () {\n return this.radius <= 0;\n },\n containsPoint: function (point) {\n return point.distanceToSquared(this.center) <= this.radius * this.radius;\n },\n distanceToPoint: function (point) {\n return point.distanceTo(this.center) - this.radius;\n },\n intersectsSphere: function (sphere) {\n var radiusSum = this.radius + sphere.radius;\n return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n },\n intersectsBox: function (box) {\n return box.intersectsSphere(this);\n },\n intersectsPlane: function (plane) {\n return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n },\n clampPoint: function (point, target) {\n var deltaLengthSq = this.center.distanceToSquared(point);\n if (target === undefined) {\n console.warn('THREE.Sphere: .clampPoint() target is now required');\n target = new Vector3();\n }\n target.copy(point);\n if (deltaLengthSq > this.radius * this.radius) {\n target.sub(this.center).normalize();\n target.multiplyScalar(this.radius).add(this.center);\n }\n return target;\n },\n getBoundingBox: function (target) {\n if (target === undefined) {\n console.warn('THREE.Sphere: .getBoundingBox() target is now required');\n target = new Box3();\n }\n target.set(this.center, this.center);\n target.expandByScalar(this.radius);\n return target;\n },\n applyMatrix4: function (matrix) {\n this.center.applyMatrix4(matrix);\n this.radius = this.radius * matrix.getMaxScaleOnAxis();\n return this;\n },\n translate: function (offset) {\n this.center.add(offset);\n return this;\n },\n equals: function (sphere) {\n return sphere.center.equals(this.center) && sphere.radius === this.radius;\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane(normal, constant) {\n // normal is assumed to be normalized\n\n this.normal = normal !== undefined ? normal : new Vector3(1, 0, 0);\n this.constant = constant !== undefined ? constant : 0;\n}\nObject.assign(Plane.prototype, {\n set: function (normal, constant) {\n this.normal.copy(normal);\n this.constant = constant;\n return this;\n },\n setComponents: function (x, y, z, w) {\n this.normal.set(x, y, z);\n this.constant = w;\n return this;\n },\n setFromNormalAndCoplanarPoint: function (normal, point) {\n this.normal.copy(normal);\n this.constant = -point.dot(this.normal);\n return this;\n },\n setFromCoplanarPoints: function () {\n var v1 = new Vector3();\n var v2 = new Vector3();\n return function setFromCoplanarPoints(a, b, c) {\n var normal = v1.subVectors(c, b).cross(v2.subVectors(a, b)).normalize();\n\n // Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n this.setFromNormalAndCoplanarPoint(normal, a);\n return this;\n };\n }(),\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (plane) {\n this.normal.copy(plane.normal);\n this.constant = plane.constant;\n return this;\n },\n normalize: function () {\n // Note: will lead to a divide by zero if the plane is invalid.\n\n var inverseNormalLength = 1.0 / this.normal.length();\n this.normal.multiplyScalar(inverseNormalLength);\n this.constant *= inverseNormalLength;\n return this;\n },\n negate: function () {\n this.constant *= -1;\n this.normal.negate();\n return this;\n },\n distanceToPoint: function (point) {\n return this.normal.dot(point) + this.constant;\n },\n distanceToSphere: function (sphere) {\n return this.distanceToPoint(sphere.center) - sphere.radius;\n },\n projectPoint: function (point, target) {\n if (target === undefined) {\n console.warn('THREE.Plane: .projectPoint() target is now required');\n target = new Vector3();\n }\n return target.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n },\n intersectLine: function () {\n var v1 = new Vector3();\n return function intersectLine(line, target) {\n if (target === undefined) {\n console.warn('THREE.Plane: .intersectLine() target is now required');\n target = new Vector3();\n }\n var direction = line.delta(v1);\n var denominator = this.normal.dot(direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n if (this.distanceToPoint(line.start) === 0) {\n return target.copy(line.start);\n }\n\n // Unsure if this is the correct method to handle this case.\n return undefined;\n }\n var t = -(line.start.dot(this.normal) + this.constant) / denominator;\n if (t < 0 || t > 1) {\n return undefined;\n }\n return target.copy(direction).multiplyScalar(t).add(line.start);\n };\n }(),\n intersectsLine: function (line) {\n // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n var startSign = this.distanceToPoint(line.start);\n var endSign = this.distanceToPoint(line.end);\n return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n },\n intersectsBox: function (box) {\n return box.intersectsPlane(this);\n },\n intersectsSphere: function (sphere) {\n return sphere.intersectsPlane(this);\n },\n coplanarPoint: function (target) {\n if (target === undefined) {\n console.warn('THREE.Plane: .coplanarPoint() target is now required');\n target = new Vector3();\n }\n return target.copy(this.normal).multiplyScalar(-this.constant);\n },\n applyMatrix4: function () {\n var v1 = new Vector3();\n var m1 = new Matrix3();\n return function applyMatrix4(matrix, optionalNormalMatrix) {\n var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix(matrix);\n var referencePoint = this.coplanarPoint(v1).applyMatrix4(matrix);\n var normal = this.normal.applyMatrix3(normalMatrix).normalize();\n this.constant = -referencePoint.dot(normal);\n return this;\n };\n }(),\n translate: function (offset) {\n this.constant -= offset.dot(this.normal);\n return this;\n },\n equals: function (plane) {\n return plane.normal.equals(this.normal) && plane.constant === this.constant;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum(p0, p1, p2, p3, p4, p5) {\n this.planes = [p0 !== undefined ? p0 : new Plane(), p1 !== undefined ? p1 : new Plane(), p2 !== undefined ? p2 : new Plane(), p3 !== undefined ? p3 : new Plane(), p4 !== undefined ? p4 : new Plane(), p5 !== undefined ? p5 : new Plane()];\n}\nObject.assign(Frustum.prototype, {\n set: function (p0, p1, p2, p3, p4, p5) {\n var planes = this.planes;\n planes[0].copy(p0);\n planes[1].copy(p1);\n planes[2].copy(p2);\n planes[3].copy(p3);\n planes[4].copy(p4);\n planes[5].copy(p5);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (frustum) {\n var planes = this.planes;\n for (var i = 0; i < 6; i++) {\n planes[i].copy(frustum.planes[i]);\n }\n return this;\n },\n setFromMatrix: function (m) {\n var planes = this.planes;\n var me = m.elements;\n var me0 = me[0],\n me1 = me[1],\n me2 = me[2],\n me3 = me[3];\n var me4 = me[4],\n me5 = me[5],\n me6 = me[6],\n me7 = me[7];\n var me8 = me[8],\n me9 = me[9],\n me10 = me[10],\n me11 = me[11];\n var me12 = me[12],\n me13 = me[13],\n me14 = me[14],\n me15 = me[15];\n planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n return this;\n },\n intersectsObject: function () {\n var sphere = new Sphere();\n return function intersectsObject(object) {\n var geometry = object.geometry;\n if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n sphere.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n return this.intersectsSphere(sphere);\n };\n }(),\n intersectsSprite: function () {\n var sphere = new Sphere();\n return function intersectsSprite(sprite) {\n sphere.center.set(0, 0, 0);\n sphere.radius = 0.7071067811865476;\n sphere.applyMatrix4(sprite.matrixWorld);\n return this.intersectsSphere(sphere);\n };\n }(),\n intersectsSphere: function (sphere) {\n var planes = this.planes;\n var center = sphere.center;\n var negRadius = -sphere.radius;\n for (var i = 0; i < 6; i++) {\n var distance = planes[i].distanceToPoint(center);\n if (distance < negRadius) {\n return false;\n }\n }\n return true;\n },\n intersectsBox: function () {\n var p = new Vector3();\n return function intersectsBox(box) {\n var planes = this.planes;\n for (var i = 0; i < 6; i++) {\n var plane = planes[i];\n\n // corner at max distance\n\n p.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n p.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n p.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n if (plane.distanceToPoint(p) < 0) {\n return false;\n }\n }\n return true;\n };\n }(),\n containsPoint: function (point) {\n var planes = this.planes;\n for (var i = 0; i < 6; i++) {\n if (planes[i].distanceToPoint(point) < 0) {\n return false;\n }\n }\n return true;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n if (arguments.length > 0) {\n console.error('THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.');\n }\n}\nObject.assign(Matrix4.prototype, {\n isMatrix4: true,\n set: function (n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n var te = this.elements;\n te[0] = n11;\n te[4] = n12;\n te[8] = n13;\n te[12] = n14;\n te[1] = n21;\n te[5] = n22;\n te[9] = n23;\n te[13] = n24;\n te[2] = n31;\n te[6] = n32;\n te[10] = n33;\n te[14] = n34;\n te[3] = n41;\n te[7] = n42;\n te[11] = n43;\n te[15] = n44;\n return this;\n },\n identity: function () {\n this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n },\n clone: function () {\n return new Matrix4().fromArray(this.elements);\n },\n copy: function (m) {\n var te = this.elements;\n var me = m.elements;\n te[0] = me[0];\n te[1] = me[1];\n te[2] = me[2];\n te[3] = me[3];\n te[4] = me[4];\n te[5] = me[5];\n te[6] = me[6];\n te[7] = me[7];\n te[8] = me[8];\n te[9] = me[9];\n te[10] = me[10];\n te[11] = me[11];\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n te[15] = me[15];\n return this;\n },\n copyPosition: function (m) {\n var te = this.elements,\n me = m.elements;\n te[12] = me[12];\n te[13] = me[13];\n te[14] = me[14];\n return this;\n },\n extractBasis: function (xAxis, yAxis, zAxis) {\n xAxis.setFromMatrixColumn(this, 0);\n yAxis.setFromMatrixColumn(this, 1);\n zAxis.setFromMatrixColumn(this, 2);\n return this;\n },\n makeBasis: function (xAxis, yAxis, zAxis) {\n this.set(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1);\n return this;\n },\n extractRotation: function () {\n var v1 = new Vector3();\n return function extractRotation(m) {\n // this method does not support reflection matrices\n\n var te = this.elements;\n var me = m.elements;\n var scaleX = 1 / v1.setFromMatrixColumn(m, 0).length();\n var scaleY = 1 / v1.setFromMatrixColumn(m, 1).length();\n var scaleZ = 1 / v1.setFromMatrixColumn(m, 2).length();\n te[0] = me[0] * scaleX;\n te[1] = me[1] * scaleX;\n te[2] = me[2] * scaleX;\n te[3] = 0;\n te[4] = me[4] * scaleY;\n te[5] = me[5] * scaleY;\n te[6] = me[6] * scaleY;\n te[7] = 0;\n te[8] = me[8] * scaleZ;\n te[9] = me[9] * scaleZ;\n te[10] = me[10] * scaleZ;\n te[11] = 0;\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n };\n }(),\n makeRotationFromEuler: function (euler) {\n if (!(euler && euler.isEuler)) {\n console.error('THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.');\n }\n var te = this.elements;\n var x = euler.x,\n y = euler.y,\n z = euler.z;\n var a = Math.cos(x),\n b = Math.sin(x);\n var c = Math.cos(y),\n d = Math.sin(y);\n var e = Math.cos(z),\n f = Math.sin(z);\n if (euler.order === 'XYZ') {\n var ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n te[0] = c * e;\n te[4] = -c * f;\n te[8] = d;\n te[1] = af + be * d;\n te[5] = ae - bf * d;\n te[9] = -b * c;\n te[2] = bf - ae * d;\n te[6] = be + af * d;\n te[10] = a * c;\n } else if (euler.order === 'YXZ') {\n var ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n te[0] = ce + df * b;\n te[4] = de * b - cf;\n te[8] = a * d;\n te[1] = a * f;\n te[5] = a * e;\n te[9] = -b;\n te[2] = cf * b - de;\n te[6] = df + ce * b;\n te[10] = a * c;\n } else if (euler.order === 'ZXY') {\n var ce = c * e,\n cf = c * f,\n de = d * e,\n df = d * f;\n te[0] = ce - df * b;\n te[4] = -a * f;\n te[8] = de + cf * b;\n te[1] = cf + de * b;\n te[5] = a * e;\n te[9] = df - ce * b;\n te[2] = -a * d;\n te[6] = b;\n te[10] = a * c;\n } else if (euler.order === 'ZYX') {\n var ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n te[0] = c * e;\n te[4] = be * d - af;\n te[8] = ae * d + bf;\n te[1] = c * f;\n te[5] = bf * d + ae;\n te[9] = af * d - be;\n te[2] = -d;\n te[6] = b * c;\n te[10] = a * c;\n } else if (euler.order === 'YZX') {\n var ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n te[0] = c * e;\n te[4] = bd - ac * f;\n te[8] = bc * f + ad;\n te[1] = f;\n te[5] = a * e;\n te[9] = -b * e;\n te[2] = -d * e;\n te[6] = ad * f + bc;\n te[10] = ac - bd * f;\n } else if (euler.order === 'XZY') {\n var ac = a * c,\n ad = a * d,\n bc = b * c,\n bd = b * d;\n te[0] = c * e;\n te[4] = -f;\n te[8] = d * e;\n te[1] = ac * f + bd;\n te[5] = a * e;\n te[9] = ad * f - bc;\n te[2] = bc * f - ad;\n te[6] = b * e;\n te[10] = bd * f + ac;\n }\n\n // bottom row\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n\n // last column\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n return this;\n },\n makeRotationFromQuaternion: function () {\n var zero = new Vector3(0, 0, 0);\n var one = new Vector3(1, 1, 1);\n return function makeRotationFromQuaternion(q) {\n return this.compose(zero, q, one);\n };\n }(),\n lookAt: function () {\n var x = new Vector3();\n var y = new Vector3();\n var z = new Vector3();\n return function lookAt(eye, target, up) {\n var te = this.elements;\n z.subVectors(eye, target);\n if (z.lengthSq() === 0) {\n // eye and target are in the same position\n\n z.z = 1;\n }\n z.normalize();\n x.crossVectors(up, z);\n if (x.lengthSq() === 0) {\n // up and z are parallel\n\n if (Math.abs(up.z) === 1) {\n z.x += 0.0001;\n } else {\n z.z += 0.0001;\n }\n z.normalize();\n x.crossVectors(up, z);\n }\n x.normalize();\n y.crossVectors(z, x);\n te[0] = x.x;\n te[4] = y.x;\n te[8] = z.x;\n te[1] = x.y;\n te[5] = y.y;\n te[9] = z.y;\n te[2] = x.z;\n te[6] = y.z;\n te[10] = z.z;\n return this;\n };\n }(),\n multiply: function (m, n) {\n if (n !== undefined) {\n console.warn('THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.');\n return this.multiplyMatrices(m, n);\n }\n return this.multiplyMatrices(this, m);\n },\n premultiply: function (m) {\n return this.multiplyMatrices(m, this);\n },\n multiplyMatrices: function (a, b) {\n var ae = a.elements;\n var be = b.elements;\n var te = this.elements;\n var a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n var a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n var a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n var a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n var b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n var b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n var b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n var b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n return this;\n },\n multiplyScalar: function (s) {\n var te = this.elements;\n te[0] *= s;\n te[4] *= s;\n te[8] *= s;\n te[12] *= s;\n te[1] *= s;\n te[5] *= s;\n te[9] *= s;\n te[13] *= s;\n te[2] *= s;\n te[6] *= s;\n te[10] *= s;\n te[14] *= s;\n te[3] *= s;\n te[7] *= s;\n te[11] *= s;\n te[15] *= s;\n return this;\n },\n applyToBufferAttribute: function () {\n var v1 = new Vector3();\n return function applyToBufferAttribute(attribute) {\n for (var i = 0, l = attribute.count; i < l; i++) {\n v1.x = attribute.getX(i);\n v1.y = attribute.getY(i);\n v1.z = attribute.getZ(i);\n v1.applyMatrix4(this);\n attribute.setXYZ(i, v1.x, v1.y, v1.z);\n }\n return attribute;\n };\n }(),\n determinant: function () {\n var te = this.elements;\n var n11 = te[0],\n n12 = te[4],\n n13 = te[8],\n n14 = te[12];\n var n21 = te[1],\n n22 = te[5],\n n23 = te[9],\n n24 = te[13];\n var n31 = te[2],\n n32 = te[6],\n n33 = te[10],\n n34 = te[14];\n var n41 = te[3],\n n42 = te[7],\n n43 = te[11],\n n44 = te[15];\n\n //TODO: make this more efficient\n //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n },\n transpose: function () {\n var te = this.elements;\n var tmp;\n tmp = te[1];\n te[1] = te[4];\n te[4] = tmp;\n tmp = te[2];\n te[2] = te[8];\n te[8] = tmp;\n tmp = te[6];\n te[6] = te[9];\n te[9] = tmp;\n tmp = te[3];\n te[3] = te[12];\n te[12] = tmp;\n tmp = te[7];\n te[7] = te[13];\n te[13] = tmp;\n tmp = te[11];\n te[11] = te[14];\n te[14] = tmp;\n return this;\n },\n setPosition: function (x, y, z) {\n var te = this.elements;\n if (x.isVector3) {\n te[12] = x.x;\n te[13] = x.y;\n te[14] = x.z;\n } else {\n te[12] = x;\n te[13] = y;\n te[14] = z;\n }\n return this;\n },\n getInverse: function (m, throwOnDegenerate) {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n var te = this.elements,\n me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n if (det === 0) {\n var msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n if (throwOnDegenerate === true) {\n throw new Error(msg);\n } else {\n console.warn(msg);\n }\n return this.identity();\n }\n var detInv = 1 / det;\n te[0] = t11 * detInv;\n te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n te[4] = t12 * detInv;\n te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n te[8] = t13 * detInv;\n te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n te[12] = t14 * detInv;\n te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n return this;\n },\n scale: function (v) {\n var te = this.elements;\n var x = v.x,\n y = v.y,\n z = v.z;\n te[0] *= x;\n te[4] *= y;\n te[8] *= z;\n te[1] *= x;\n te[5] *= y;\n te[9] *= z;\n te[2] *= x;\n te[6] *= y;\n te[10] *= z;\n te[3] *= x;\n te[7] *= y;\n te[11] *= z;\n return this;\n },\n getMaxScaleOnAxis: function () {\n var te = this.elements;\n var scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n var scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n var scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n },\n makeTranslation: function (x, y, z) {\n this.set(1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1);\n return this;\n },\n makeRotationX: function (theta) {\n var c = Math.cos(theta),\n s = Math.sin(theta);\n this.set(1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1);\n return this;\n },\n makeRotationY: function (theta) {\n var c = Math.cos(theta),\n s = Math.sin(theta);\n this.set(c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1);\n return this;\n },\n makeRotationZ: function (theta) {\n var c = Math.cos(theta),\n s = Math.sin(theta);\n this.set(c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n return this;\n },\n makeRotationAxis: function (axis, angle) {\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n var c = Math.cos(angle);\n var s = Math.sin(angle);\n var t = 1 - c;\n var x = axis.x,\n y = axis.y,\n z = axis.z;\n var tx = t * x,\n ty = t * y;\n this.set(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1);\n return this;\n },\n makeScale: function (x, y, z) {\n this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n return this;\n },\n makeShear: function (x, y, z) {\n this.set(1, y, z, 0, x, 1, z, 0, x, y, 1, 0, 0, 0, 0, 1);\n return this;\n },\n compose: function (position, quaternion, scale) {\n var te = this.elements;\n var x = quaternion._x,\n y = quaternion._y,\n z = quaternion._z,\n w = quaternion._w;\n var x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n var xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n var yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n var wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n var sx = scale.x,\n sy = scale.y,\n sz = scale.z;\n te[0] = (1 - (yy + zz)) * sx;\n te[1] = (xy + wz) * sx;\n te[2] = (xz - wy) * sx;\n te[3] = 0;\n te[4] = (xy - wz) * sy;\n te[5] = (1 - (xx + zz)) * sy;\n te[6] = (yz + wx) * sy;\n te[7] = 0;\n te[8] = (xz + wy) * sz;\n te[9] = (yz - wx) * sz;\n te[10] = (1 - (xx + yy)) * sz;\n te[11] = 0;\n te[12] = position.x;\n te[13] = position.y;\n te[14] = position.z;\n te[15] = 1;\n return this;\n },\n decompose: function () {\n var vector = new Vector3();\n var matrix = new Matrix4();\n return function decompose(position, quaternion, scale) {\n var te = this.elements;\n var sx = vector.set(te[0], te[1], te[2]).length();\n var sy = vector.set(te[4], te[5], te[6]).length();\n var sz = vector.set(te[8], te[9], te[10]).length();\n\n // if determine is negative, we need to invert one scale\n var det = this.determinant();\n if (det < 0) sx = -sx;\n position.x = te[12];\n position.y = te[13];\n position.z = te[14];\n\n // scale the rotation part\n matrix.copy(this);\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n matrix.elements[0] *= invSX;\n matrix.elements[1] *= invSX;\n matrix.elements[2] *= invSX;\n matrix.elements[4] *= invSY;\n matrix.elements[5] *= invSY;\n matrix.elements[6] *= invSY;\n matrix.elements[8] *= invSZ;\n matrix.elements[9] *= invSZ;\n matrix.elements[10] *= invSZ;\n quaternion.setFromRotationMatrix(matrix);\n scale.x = sx;\n scale.y = sy;\n scale.z = sz;\n return this;\n };\n }(),\n makePerspective: function (left, right, top, bottom, near, far) {\n if (far === undefined) {\n console.warn('THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.');\n }\n var te = this.elements;\n var x = 2 * near / (right - left);\n var y = 2 * near / (top - bottom);\n var a = (right + left) / (right - left);\n var b = (top + bottom) / (top - bottom);\n var c = -(far + near) / (far - near);\n var d = -2 * far * near / (far - near);\n te[0] = x;\n te[4] = 0;\n te[8] = a;\n te[12] = 0;\n te[1] = 0;\n te[5] = y;\n te[9] = b;\n te[13] = 0;\n te[2] = 0;\n te[6] = 0;\n te[10] = c;\n te[14] = d;\n te[3] = 0;\n te[7] = 0;\n te[11] = -1;\n te[15] = 0;\n return this;\n },\n makeOrthographic: function (left, right, top, bottom, near, far) {\n var te = this.elements;\n var w = 1.0 / (right - left);\n var h = 1.0 / (top - bottom);\n var p = 1.0 / (far - near);\n var x = (right + left) * w;\n var y = (top + bottom) * h;\n var z = (far + near) * p;\n te[0] = 2 * w;\n te[4] = 0;\n te[8] = 0;\n te[12] = -x;\n te[1] = 0;\n te[5] = 2 * h;\n te[9] = 0;\n te[13] = -y;\n te[2] = 0;\n te[6] = 0;\n te[10] = -2 * p;\n te[14] = -z;\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n te[15] = 1;\n return this;\n },\n equals: function (matrix) {\n var te = this.elements;\n var me = matrix.elements;\n for (var i = 0; i < 16; i++) {\n if (te[i] !== me[i]) return false;\n }\n return true;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n for (var i = 0; i < 16; i++) {\n this.elements[i] = array[i + offset];\n }\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n var te = this.elements;\n array[offset] = te[0];\n array[offset + 1] = te[1];\n array[offset + 2] = te[2];\n array[offset + 3] = te[3];\n array[offset + 4] = te[4];\n array[offset + 5] = te[5];\n array[offset + 6] = te[6];\n array[offset + 7] = te[7];\n array[offset + 8] = te[8];\n array[offset + 9] = te[9];\n array[offset + 10] = te[10];\n array[offset + 11] = te[11];\n array[offset + 12] = te[12];\n array[offset + 13] = te[13];\n array[offset + 14] = te[14];\n array[offset + 15] = te[15];\n return array;\n }\n});\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\";\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\";\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale = bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = normalMatrix * objectTangent;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\";\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.clearCoat = saturate( clearCoat );\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\";\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#endif\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearCoatInv = 1.0 - clearCoatDHR;\\n\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec3 singleScattering = vec3( 0.0 );\\n\\t\\tvec3 multiScattering = vec3( 0.0 );\\n\\t\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\t\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\\n\\t\\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\\n\\t\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n\\t#else\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\";\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\";\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\";\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\";\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_MORPHNORMALS\\n\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\t#ifdef USE_TANGENT\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy = normalScale * mapN.xy;\\n\\t\\t\\tnormal = normalize( vTBN * mapN );\\n\\t\\t#else\\n\\t\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t\\t#endif\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\";\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#if defined( DITHERING )\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar dithering_pars_fragment = \"#if defined( DITHERING )\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n#endif\";\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\";\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\nvar uv_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n#endif\";\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\";\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\";\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\";\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n}\";\nvar shadow_vert = \"#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\nvar ShaderChunk = {\n alphamap_fragment: alphamap_fragment,\n alphamap_pars_fragment: alphamap_pars_fragment,\n alphatest_fragment: alphatest_fragment,\n aomap_fragment: aomap_fragment,\n aomap_pars_fragment: aomap_pars_fragment,\n begin_vertex: begin_vertex,\n beginnormal_vertex: beginnormal_vertex,\n bsdfs: bsdfs,\n bumpmap_pars_fragment: bumpmap_pars_fragment,\n clipping_planes_fragment: clipping_planes_fragment,\n clipping_planes_pars_fragment: clipping_planes_pars_fragment,\n clipping_planes_pars_vertex: clipping_planes_pars_vertex,\n clipping_planes_vertex: clipping_planes_vertex,\n color_fragment: color_fragment,\n color_pars_fragment: color_pars_fragment,\n color_pars_vertex: color_pars_vertex,\n color_vertex: color_vertex,\n common: common,\n cube_uv_reflection_fragment: cube_uv_reflection_fragment,\n defaultnormal_vertex: defaultnormal_vertex,\n displacementmap_pars_vertex: displacementmap_pars_vertex,\n displacementmap_vertex: displacementmap_vertex,\n emissivemap_fragment: emissivemap_fragment,\n emissivemap_pars_fragment: emissivemap_pars_fragment,\n encodings_fragment: encodings_fragment,\n encodings_pars_fragment: encodings_pars_fragment,\n envmap_fragment: envmap_fragment,\n envmap_pars_fragment: envmap_pars_fragment,\n envmap_pars_vertex: envmap_pars_vertex,\n envmap_physical_pars_fragment: envmap_physical_pars_fragment,\n envmap_vertex: envmap_vertex,\n fog_vertex: fog_vertex,\n fog_pars_vertex: fog_pars_vertex,\n fog_fragment: fog_fragment,\n fog_pars_fragment: fog_pars_fragment,\n gradientmap_pars_fragment: gradientmap_pars_fragment,\n lightmap_fragment: lightmap_fragment,\n lightmap_pars_fragment: lightmap_pars_fragment,\n lights_lambert_vertex: lights_lambert_vertex,\n lights_pars_begin: lights_pars_begin,\n lights_phong_fragment: lights_phong_fragment,\n lights_phong_pars_fragment: lights_phong_pars_fragment,\n lights_physical_fragment: lights_physical_fragment,\n lights_physical_pars_fragment: lights_physical_pars_fragment,\n lights_fragment_begin: lights_fragment_begin,\n lights_fragment_maps: lights_fragment_maps,\n lights_fragment_end: lights_fragment_end,\n logdepthbuf_fragment: logdepthbuf_fragment,\n logdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n logdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n logdepthbuf_vertex: logdepthbuf_vertex,\n map_fragment: map_fragment,\n map_pars_fragment: map_pars_fragment,\n map_particle_fragment: map_particle_fragment,\n map_particle_pars_fragment: map_particle_pars_fragment,\n metalnessmap_fragment: metalnessmap_fragment,\n metalnessmap_pars_fragment: metalnessmap_pars_fragment,\n morphnormal_vertex: morphnormal_vertex,\n morphtarget_pars_vertex: morphtarget_pars_vertex,\n morphtarget_vertex: morphtarget_vertex,\n normal_fragment_begin: normal_fragment_begin,\n normal_fragment_maps: normal_fragment_maps,\n normalmap_pars_fragment: normalmap_pars_fragment,\n packing: packing,\n premultiplied_alpha_fragment: premultiplied_alpha_fragment,\n project_vertex: project_vertex,\n dithering_fragment: dithering_fragment,\n dithering_pars_fragment: dithering_pars_fragment,\n roughnessmap_fragment: roughnessmap_fragment,\n roughnessmap_pars_fragment: roughnessmap_pars_fragment,\n shadowmap_pars_fragment: shadowmap_pars_fragment,\n shadowmap_pars_vertex: shadowmap_pars_vertex,\n shadowmap_vertex: shadowmap_vertex,\n shadowmask_pars_fragment: shadowmask_pars_fragment,\n skinbase_vertex: skinbase_vertex,\n skinning_pars_vertex: skinning_pars_vertex,\n skinning_vertex: skinning_vertex,\n skinnormal_vertex: skinnormal_vertex,\n specularmap_fragment: specularmap_fragment,\n specularmap_pars_fragment: specularmap_pars_fragment,\n tonemapping_fragment: tonemapping_fragment,\n tonemapping_pars_fragment: tonemapping_pars_fragment,\n uv_pars_fragment: uv_pars_fragment,\n uv_pars_vertex: uv_pars_vertex,\n uv_vertex: uv_vertex,\n uv2_pars_fragment: uv2_pars_fragment,\n uv2_pars_vertex: uv2_pars_vertex,\n uv2_vertex: uv2_vertex,\n worldpos_vertex: worldpos_vertex,\n background_frag: background_frag,\n background_vert: background_vert,\n cube_frag: cube_frag,\n cube_vert: cube_vert,\n depth_frag: depth_frag,\n depth_vert: depth_vert,\n distanceRGBA_frag: distanceRGBA_frag,\n distanceRGBA_vert: distanceRGBA_vert,\n equirect_frag: equirect_frag,\n equirect_vert: equirect_vert,\n linedashed_frag: linedashed_frag,\n linedashed_vert: linedashed_vert,\n meshbasic_frag: meshbasic_frag,\n meshbasic_vert: meshbasic_vert,\n meshlambert_frag: meshlambert_frag,\n meshlambert_vert: meshlambert_vert,\n meshmatcap_frag: meshmatcap_frag,\n meshmatcap_vert: meshmatcap_vert,\n meshphong_frag: meshphong_frag,\n meshphong_vert: meshphong_vert,\n meshphysical_frag: meshphysical_frag,\n meshphysical_vert: meshphysical_vert,\n normal_frag: normal_frag,\n normal_vert: normal_vert,\n points_frag: points_frag,\n points_vert: points_vert,\n shadow_frag: shadow_frag,\n shadow_vert: shadow_vert,\n sprite_frag: sprite_frag,\n sprite_vert: sprite_vert\n};\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms(src) {\n var dst = {};\n for (var u in src) {\n dst[u] = {};\n for (var p in src[u]) {\n var property = src[u][p];\n if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture)) {\n dst[u][p] = property.clone();\n } else if (Array.isArray(property)) {\n dst[u][p] = property.slice();\n } else {\n dst[u][p] = property;\n }\n }\n }\n return dst;\n}\nfunction mergeUniforms(uniforms) {\n var merged = {};\n for (var u = 0; u < uniforms.length; u++) {\n var tmp = cloneUniforms(uniforms[u]);\n for (var p in tmp) {\n merged[p] = tmp[p];\n }\n }\n return merged;\n}\n\n// Legacy\n\nvar UniformsUtils = {\n clone: cloneUniforms,\n merge: mergeUniforms\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = {\n 'aliceblue': 0xF0F8FF,\n 'antiquewhite': 0xFAEBD7,\n 'aqua': 0x00FFFF,\n 'aquamarine': 0x7FFFD4,\n 'azure': 0xF0FFFF,\n 'beige': 0xF5F5DC,\n 'bisque': 0xFFE4C4,\n 'black': 0x000000,\n 'blanchedalmond': 0xFFEBCD,\n 'blue': 0x0000FF,\n 'blueviolet': 0x8A2BE2,\n 'brown': 0xA52A2A,\n 'burlywood': 0xDEB887,\n 'cadetblue': 0x5F9EA0,\n 'chartreuse': 0x7FFF00,\n 'chocolate': 0xD2691E,\n 'coral': 0xFF7F50,\n 'cornflowerblue': 0x6495ED,\n 'cornsilk': 0xFFF8DC,\n 'crimson': 0xDC143C,\n 'cyan': 0x00FFFF,\n 'darkblue': 0x00008B,\n 'darkcyan': 0x008B8B,\n 'darkgoldenrod': 0xB8860B,\n 'darkgray': 0xA9A9A9,\n 'darkgreen': 0x006400,\n 'darkgrey': 0xA9A9A9,\n 'darkkhaki': 0xBDB76B,\n 'darkmagenta': 0x8B008B,\n 'darkolivegreen': 0x556B2F,\n 'darkorange': 0xFF8C00,\n 'darkorchid': 0x9932CC,\n 'darkred': 0x8B0000,\n 'darksalmon': 0xE9967A,\n 'darkseagreen': 0x8FBC8F,\n 'darkslateblue': 0x483D8B,\n 'darkslategray': 0x2F4F4F,\n 'darkslategrey': 0x2F4F4F,\n 'darkturquoise': 0x00CED1,\n 'darkviolet': 0x9400D3,\n 'deeppink': 0xFF1493,\n 'deepskyblue': 0x00BFFF,\n 'dimgray': 0x696969,\n 'dimgrey': 0x696969,\n 'dodgerblue': 0x1E90FF,\n 'firebrick': 0xB22222,\n 'floralwhite': 0xFFFAF0,\n 'forestgreen': 0x228B22,\n 'fuchsia': 0xFF00FF,\n 'gainsboro': 0xDCDCDC,\n 'ghostwhite': 0xF8F8FF,\n 'gold': 0xFFD700,\n 'goldenrod': 0xDAA520,\n 'gray': 0x808080,\n 'green': 0x008000,\n 'greenyellow': 0xADFF2F,\n 'grey': 0x808080,\n 'honeydew': 0xF0FFF0,\n 'hotpink': 0xFF69B4,\n 'indianred': 0xCD5C5C,\n 'indigo': 0x4B0082,\n 'ivory': 0xFFFFF0,\n 'khaki': 0xF0E68C,\n 'lavender': 0xE6E6FA,\n 'lavenderblush': 0xFFF0F5,\n 'lawngreen': 0x7CFC00,\n 'lemonchiffon': 0xFFFACD,\n 'lightblue': 0xADD8E6,\n 'lightcoral': 0xF08080,\n 'lightcyan': 0xE0FFFF,\n 'lightgoldenrodyellow': 0xFAFAD2,\n 'lightgray': 0xD3D3D3,\n 'lightgreen': 0x90EE90,\n 'lightgrey': 0xD3D3D3,\n 'lightpink': 0xFFB6C1,\n 'lightsalmon': 0xFFA07A,\n 'lightseagreen': 0x20B2AA,\n 'lightskyblue': 0x87CEFA,\n 'lightslategray': 0x778899,\n 'lightslategrey': 0x778899,\n 'lightsteelblue': 0xB0C4DE,\n 'lightyellow': 0xFFFFE0,\n 'lime': 0x00FF00,\n 'limegreen': 0x32CD32,\n 'linen': 0xFAF0E6,\n 'magenta': 0xFF00FF,\n 'maroon': 0x800000,\n 'mediumaquamarine': 0x66CDAA,\n 'mediumblue': 0x0000CD,\n 'mediumorchid': 0xBA55D3,\n 'mediumpurple': 0x9370DB,\n 'mediumseagreen': 0x3CB371,\n 'mediumslateblue': 0x7B68EE,\n 'mediumspringgreen': 0x00FA9A,\n 'mediumturquoise': 0x48D1CC,\n 'mediumvioletred': 0xC71585,\n 'midnightblue': 0x191970,\n 'mintcream': 0xF5FFFA,\n 'mistyrose': 0xFFE4E1,\n 'moccasin': 0xFFE4B5,\n 'navajowhite': 0xFFDEAD,\n 'navy': 0x000080,\n 'oldlace': 0xFDF5E6,\n 'olive': 0x808000,\n 'olivedrab': 0x6B8E23,\n 'orange': 0xFFA500,\n 'orangered': 0xFF4500,\n 'orchid': 0xDA70D6,\n 'palegoldenrod': 0xEEE8AA,\n 'palegreen': 0x98FB98,\n 'paleturquoise': 0xAFEEEE,\n 'palevioletred': 0xDB7093,\n 'papayawhip': 0xFFEFD5,\n 'peachpuff': 0xFFDAB9,\n 'peru': 0xCD853F,\n 'pink': 0xFFC0CB,\n 'plum': 0xDDA0DD,\n 'powderblue': 0xB0E0E6,\n 'purple': 0x800080,\n 'rebeccapurple': 0x663399,\n 'red': 0xFF0000,\n 'rosybrown': 0xBC8F8F,\n 'royalblue': 0x4169E1,\n 'saddlebrown': 0x8B4513,\n 'salmon': 0xFA8072,\n 'sandybrown': 0xF4A460,\n 'seagreen': 0x2E8B57,\n 'seashell': 0xFFF5EE,\n 'sienna': 0xA0522D,\n 'silver': 0xC0C0C0,\n 'skyblue': 0x87CEEB,\n 'slateblue': 0x6A5ACD,\n 'slategray': 0x708090,\n 'slategrey': 0x708090,\n 'snow': 0xFFFAFA,\n 'springgreen': 0x00FF7F,\n 'steelblue': 0x4682B4,\n 'tan': 0xD2B48C,\n 'teal': 0x008080,\n 'thistle': 0xD8BFD8,\n 'tomato': 0xFF6347,\n 'turquoise': 0x40E0D0,\n 'violet': 0xEE82EE,\n 'wheat': 0xF5DEB3,\n 'white': 0xFFFFFF,\n 'whitesmoke': 0xF5F5F5,\n 'yellow': 0xFFFF00,\n 'yellowgreen': 0x9ACD32\n};\nfunction Color(r, g, b) {\n if (g === undefined && b === undefined) {\n // r is THREE.Color, hex or string\n return this.set(r);\n }\n return this.setRGB(r, g, b);\n}\nObject.assign(Color.prototype, {\n isColor: true,\n r: 1,\n g: 1,\n b: 1,\n set: function (value) {\n if (value && value.isColor) {\n this.copy(value);\n } else if (typeof value === 'number') {\n this.setHex(value);\n } else if (typeof value === 'string') {\n this.setStyle(value);\n }\n return this;\n },\n setScalar: function (scalar) {\n this.r = scalar;\n this.g = scalar;\n this.b = scalar;\n return this;\n },\n setHex: function (hex) {\n hex = Math.floor(hex);\n this.r = (hex >> 16 & 255) / 255;\n this.g = (hex >> 8 & 255) / 255;\n this.b = (hex & 255) / 255;\n return this;\n },\n setRGB: function (r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n return this;\n },\n setHSL: function () {\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * 6 * (2 / 3 - t);\n return p;\n }\n return function setHSL(h, s, l) {\n // h,s,l ranges are in 0.0 - 1.0\n h = _Math.euclideanModulo(h, 1);\n s = _Math.clamp(s, 0, 1);\n l = _Math.clamp(l, 0, 1);\n if (s === 0) {\n this.r = this.g = this.b = l;\n } else {\n var p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n var q = 2 * l - p;\n this.r = hue2rgb(q, p, h + 1 / 3);\n this.g = hue2rgb(q, p, h);\n this.b = hue2rgb(q, p, h - 1 / 3);\n }\n return this;\n };\n }(),\n setStyle: function (style) {\n function handleAlpha(string) {\n if (string === undefined) return;\n if (parseFloat(string) < 1) {\n console.warn('THREE.Color: Alpha component of ' + style + ' will be ignored.');\n }\n }\n var m;\n if (m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec(style)) {\n // rgb / hsl\n\n var color;\n var name = m[1];\n var components = m[2];\n switch (name) {\n case 'rgb':\n case 'rgba':\n if (color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec(components)) {\n // rgb(255,0,0) rgba(255,0,0,0.5)\n this.r = Math.min(255, parseInt(color[1], 10)) / 255;\n this.g = Math.min(255, parseInt(color[2], 10)) / 255;\n this.b = Math.min(255, parseInt(color[3], 10)) / 255;\n handleAlpha(color[5]);\n return this;\n }\n if (color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec(components)) {\n // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n this.r = Math.min(100, parseInt(color[1], 10)) / 100;\n this.g = Math.min(100, parseInt(color[2], 10)) / 100;\n this.b = Math.min(100, parseInt(color[3], 10)) / 100;\n handleAlpha(color[5]);\n return this;\n }\n break;\n case 'hsl':\n case 'hsla':\n if (color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec(components)) {\n // hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n var h = parseFloat(color[1]) / 360;\n var s = parseInt(color[2], 10) / 100;\n var l = parseInt(color[3], 10) / 100;\n handleAlpha(color[5]);\n return this.setHSL(h, s, l);\n }\n break;\n }\n } else if (m = /^\\#([A-Fa-f0-9]+)$/.exec(style)) {\n // hex color\n\n var hex = m[1];\n var size = hex.length;\n if (size === 3) {\n // #ff0\n this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n return this;\n } else if (size === 6) {\n // #ff0000\n this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n return this;\n }\n }\n if (style && style.length > 0) {\n // color keywords\n var hex = ColorKeywords[style];\n if (hex !== undefined) {\n // red\n this.setHex(hex);\n } else {\n // unknown color\n console.warn('THREE.Color: Unknown color ' + style);\n }\n }\n return this;\n },\n clone: function () {\n return new this.constructor(this.r, this.g, this.b);\n },\n copy: function (color) {\n this.r = color.r;\n this.g = color.g;\n this.b = color.b;\n return this;\n },\n copyGammaToLinear: function (color, gammaFactor) {\n if (gammaFactor === undefined) gammaFactor = 2.0;\n this.r = Math.pow(color.r, gammaFactor);\n this.g = Math.pow(color.g, gammaFactor);\n this.b = Math.pow(color.b, gammaFactor);\n return this;\n },\n copyLinearToGamma: function (color, gammaFactor) {\n if (gammaFactor === undefined) gammaFactor = 2.0;\n var safeInverse = gammaFactor > 0 ? 1.0 / gammaFactor : 1.0;\n this.r = Math.pow(color.r, safeInverse);\n this.g = Math.pow(color.g, safeInverse);\n this.b = Math.pow(color.b, safeInverse);\n return this;\n },\n convertGammaToLinear: function (gammaFactor) {\n this.copyGammaToLinear(this, gammaFactor);\n return this;\n },\n convertLinearToGamma: function (gammaFactor) {\n this.copyLinearToGamma(this, gammaFactor);\n return this;\n },\n copySRGBToLinear: function () {\n function SRGBToLinear(c) {\n return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n }\n return function copySRGBToLinear(color) {\n this.r = SRGBToLinear(color.r);\n this.g = SRGBToLinear(color.g);\n this.b = SRGBToLinear(color.b);\n return this;\n };\n }(),\n copyLinearToSRGB: function () {\n function LinearToSRGB(c) {\n return c < 0.0031308 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n }\n return function copyLinearToSRGB(color) {\n this.r = LinearToSRGB(color.r);\n this.g = LinearToSRGB(color.g);\n this.b = LinearToSRGB(color.b);\n return this;\n };\n }(),\n convertSRGBToLinear: function () {\n this.copySRGBToLinear(this);\n return this;\n },\n convertLinearToSRGB: function () {\n this.copyLinearToSRGB(this);\n return this;\n },\n getHex: function () {\n return this.r * 255 << 16 ^ this.g * 255 << 8 ^ this.b * 255 << 0;\n },\n getHexString: function () {\n return ('000000' + this.getHex().toString(16)).slice(-6);\n },\n getHSL: function (target) {\n // h,s,l ranges are in 0.0 - 1.0\n\n if (target === undefined) {\n console.warn('THREE.Color: .getHSL() target is now required');\n target = {\n h: 0,\n s: 0,\n l: 0\n };\n }\n var r = this.r,\n g = this.g,\n b = this.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var hue, saturation;\n var lightness = (min + max) / 2.0;\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n var delta = max - min;\n saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n hue /= 6;\n }\n target.h = hue;\n target.s = saturation;\n target.l = lightness;\n return target;\n },\n getStyle: function () {\n return 'rgb(' + (this.r * 255 | 0) + ',' + (this.g * 255 | 0) + ',' + (this.b * 255 | 0) + ')';\n },\n offsetHSL: function () {\n var hsl = {};\n return function (h, s, l) {\n this.getHSL(hsl);\n hsl.h += h;\n hsl.s += s;\n hsl.l += l;\n this.setHSL(hsl.h, hsl.s, hsl.l);\n return this;\n };\n }(),\n add: function (color) {\n this.r += color.r;\n this.g += color.g;\n this.b += color.b;\n return this;\n },\n addColors: function (color1, color2) {\n this.r = color1.r + color2.r;\n this.g = color1.g + color2.g;\n this.b = color1.b + color2.b;\n return this;\n },\n addScalar: function (s) {\n this.r += s;\n this.g += s;\n this.b += s;\n return this;\n },\n sub: function (color) {\n this.r = Math.max(0, this.r - color.r);\n this.g = Math.max(0, this.g - color.g);\n this.b = Math.max(0, this.b - color.b);\n return this;\n },\n multiply: function (color) {\n this.r *= color.r;\n this.g *= color.g;\n this.b *= color.b;\n return this;\n },\n multiplyScalar: function (s) {\n this.r *= s;\n this.g *= s;\n this.b *= s;\n return this;\n },\n lerp: function (color, alpha) {\n this.r += (color.r - this.r) * alpha;\n this.g += (color.g - this.g) * alpha;\n this.b += (color.b - this.b) * alpha;\n return this;\n },\n lerpHSL: function () {\n var hslA = {\n h: 0,\n s: 0,\n l: 0\n };\n var hslB = {\n h: 0,\n s: 0,\n l: 0\n };\n return function lerpHSL(color, alpha) {\n this.getHSL(hslA);\n color.getHSL(hslB);\n var h = _Math.lerp(hslA.h, hslB.h, alpha);\n var s = _Math.lerp(hslA.s, hslB.s, alpha);\n var l = _Math.lerp(hslA.l, hslB.l, alpha);\n this.setHSL(h, s, l);\n return this;\n };\n }(),\n equals: function (c) {\n return c.r === this.r && c.g === this.g && c.b === this.b;\n },\n fromArray: function (array, offset) {\n if (offset === undefined) offset = 0;\n this.r = array[offset];\n this.g = array[offset + 1];\n this.b = array[offset + 2];\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this.r;\n array[offset + 1] = this.g;\n array[offset + 2] = this.b;\n return array;\n },\n toJSON: function () {\n return this.getHex();\n }\n});\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n common: {\n diffuse: {\n value: new Color(0xeeeeee)\n },\n opacity: {\n value: 1.0\n },\n map: {\n value: null\n },\n uvTransform: {\n value: new Matrix3()\n },\n alphaMap: {\n value: null\n }\n },\n specularmap: {\n specularMap: {\n value: null\n }\n },\n envmap: {\n envMap: {\n value: null\n },\n flipEnvMap: {\n value: -1\n },\n reflectivity: {\n value: 1.0\n },\n refractionRatio: {\n value: 0.98\n },\n maxMipLevel: {\n value: 0\n }\n },\n aomap: {\n aoMap: {\n value: null\n },\n aoMapIntensity: {\n value: 1\n }\n },\n lightmap: {\n lightMap: {\n value: null\n },\n lightMapIntensity: {\n value: 1\n }\n },\n emissivemap: {\n emissiveMap: {\n value: null\n }\n },\n bumpmap: {\n bumpMap: {\n value: null\n },\n bumpScale: {\n value: 1\n }\n },\n normalmap: {\n normalMap: {\n value: null\n },\n normalScale: {\n value: new Vector2(1, 1)\n }\n },\n displacementmap: {\n displacementMap: {\n value: null\n },\n displacementScale: {\n value: 1\n },\n displacementBias: {\n value: 0\n }\n },\n roughnessmap: {\n roughnessMap: {\n value: null\n }\n },\n metalnessmap: {\n metalnessMap: {\n value: null\n }\n },\n gradientmap: {\n gradientMap: {\n value: null\n }\n },\n fog: {\n fogDensity: {\n value: 0.00025\n },\n fogNear: {\n value: 1\n },\n fogFar: {\n value: 2000\n },\n fogColor: {\n value: new Color(0xffffff)\n }\n },\n lights: {\n ambientLightColor: {\n value: []\n },\n lightProbe: {\n value: []\n },\n directionalLights: {\n value: [],\n properties: {\n direction: {},\n color: {},\n shadow: {},\n shadowBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }\n },\n directionalShadowMap: {\n value: []\n },\n directionalShadowMatrix: {\n value: []\n },\n spotLights: {\n value: [],\n properties: {\n color: {},\n position: {},\n direction: {},\n distance: {},\n coneCos: {},\n penumbraCos: {},\n decay: {},\n shadow: {},\n shadowBias: {},\n shadowRadius: {},\n shadowMapSize: {}\n }\n },\n spotShadowMap: {\n value: []\n },\n spotShadowMatrix: {\n value: []\n },\n pointLights: {\n value: [],\n properties: {\n color: {},\n position: {},\n decay: {},\n distance: {},\n shadow: {},\n shadowBias: {},\n shadowRadius: {},\n shadowMapSize: {},\n shadowCameraNear: {},\n shadowCameraFar: {}\n }\n },\n pointShadowMap: {\n value: []\n },\n pointShadowMatrix: {\n value: []\n },\n hemisphereLights: {\n value: [],\n properties: {\n direction: {},\n skyColor: {},\n groundColor: {}\n }\n },\n // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n rectAreaLights: {\n value: [],\n properties: {\n color: {},\n position: {},\n width: {},\n height: {}\n }\n }\n },\n points: {\n diffuse: {\n value: new Color(0xeeeeee)\n },\n opacity: {\n value: 1.0\n },\n size: {\n value: 1.0\n },\n scale: {\n value: 1.0\n },\n map: {\n value: null\n },\n uvTransform: {\n value: new Matrix3()\n }\n },\n sprite: {\n diffuse: {\n value: new Color(0xeeeeee)\n },\n opacity: {\n value: 1.0\n },\n center: {\n value: new Vector2(0.5, 0.5)\n },\n rotation: {\n value: 0.0\n },\n map: {\n value: null\n },\n uvTransform: {\n value: new Matrix3()\n }\n }\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n basic: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.fog]),\n vertexShader: ShaderChunk.meshbasic_vert,\n fragmentShader: ShaderChunk.meshbasic_frag\n },\n lambert: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.fog, UniformsLib.lights, {\n emissive: {\n value: new Color(0x000000)\n }\n }]),\n vertexShader: ShaderChunk.meshlambert_vert,\n fragmentShader: ShaderChunk.meshlambert_frag\n },\n phong: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.specularmap, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.gradientmap, UniformsLib.fog, UniformsLib.lights, {\n emissive: {\n value: new Color(0x000000)\n },\n specular: {\n value: new Color(0x111111)\n },\n shininess: {\n value: 30\n }\n }]),\n vertexShader: ShaderChunk.meshphong_vert,\n fragmentShader: ShaderChunk.meshphong_frag\n },\n standard: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.envmap, UniformsLib.aomap, UniformsLib.lightmap, UniformsLib.emissivemap, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.roughnessmap, UniformsLib.metalnessmap, UniformsLib.fog, UniformsLib.lights, {\n emissive: {\n value: new Color(0x000000)\n },\n roughness: {\n value: 0.5\n },\n metalness: {\n value: 0.5\n },\n envMapIntensity: {\n value: 1\n } // temporary\n }]),\n\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n },\n matcap: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, UniformsLib.fog, {\n matcap: {\n value: null\n }\n }]),\n vertexShader: ShaderChunk.meshmatcap_vert,\n fragmentShader: ShaderChunk.meshmatcap_frag\n },\n points: {\n uniforms: mergeUniforms([UniformsLib.points, UniformsLib.fog]),\n vertexShader: ShaderChunk.points_vert,\n fragmentShader: ShaderChunk.points_frag\n },\n dashed: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.fog, {\n scale: {\n value: 1\n },\n dashSize: {\n value: 1\n },\n totalSize: {\n value: 2\n }\n }]),\n vertexShader: ShaderChunk.linedashed_vert,\n fragmentShader: ShaderChunk.linedashed_frag\n },\n depth: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap]),\n vertexShader: ShaderChunk.depth_vert,\n fragmentShader: ShaderChunk.depth_frag\n },\n normal: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.bumpmap, UniformsLib.normalmap, UniformsLib.displacementmap, {\n opacity: {\n value: 1.0\n }\n }]),\n vertexShader: ShaderChunk.normal_vert,\n fragmentShader: ShaderChunk.normal_frag\n },\n sprite: {\n uniforms: mergeUniforms([UniformsLib.sprite, UniformsLib.fog]),\n vertexShader: ShaderChunk.sprite_vert,\n fragmentShader: ShaderChunk.sprite_frag\n },\n background: {\n uniforms: {\n uvTransform: {\n value: new Matrix3()\n },\n t2D: {\n value: null\n }\n },\n vertexShader: ShaderChunk.background_vert,\n fragmentShader: ShaderChunk.background_frag\n },\n /* -------------------------------------------------------------------------\n //\tCube map shader\n ------------------------------------------------------------------------- */\n\n cube: {\n uniforms: {\n tCube: {\n value: null\n },\n tFlip: {\n value: -1\n },\n opacity: {\n value: 1.0\n }\n },\n vertexShader: ShaderChunk.cube_vert,\n fragmentShader: ShaderChunk.cube_frag\n },\n equirect: {\n uniforms: {\n tEquirect: {\n value: null\n }\n },\n vertexShader: ShaderChunk.equirect_vert,\n fragmentShader: ShaderChunk.equirect_frag\n },\n distanceRGBA: {\n uniforms: mergeUniforms([UniformsLib.common, UniformsLib.displacementmap, {\n referencePosition: {\n value: new Vector3()\n },\n nearDistance: {\n value: 1\n },\n farDistance: {\n value: 1000\n }\n }]),\n vertexShader: ShaderChunk.distanceRGBA_vert,\n fragmentShader: ShaderChunk.distanceRGBA_frag\n },\n shadow: {\n uniforms: mergeUniforms([UniformsLib.lights, UniformsLib.fog, {\n color: {\n value: new Color(0x00000)\n },\n opacity: {\n value: 1.0\n }\n }]),\n vertexShader: ShaderChunk.shadow_vert,\n fragmentShader: ShaderChunk.shadow_frag\n }\n};\nShaderLib.physical = {\n uniforms: mergeUniforms([ShaderLib.standard.uniforms, {\n clearCoat: {\n value: 0\n },\n clearCoatRoughness: {\n value: 0\n }\n }]),\n vertexShader: ShaderChunk.meshphysical_vert,\n fragmentShader: ShaderChunk.meshphysical_frag\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n var context = null;\n var isAnimating = false;\n var animationLoop = null;\n function onAnimationFrame(time, frame) {\n if (isAnimating === false) return;\n animationLoop(time, frame);\n context.requestAnimationFrame(onAnimationFrame);\n }\n return {\n start: function () {\n if (isAnimating === true) return;\n if (animationLoop === null) return;\n context.requestAnimationFrame(onAnimationFrame);\n isAnimating = true;\n },\n stop: function () {\n isAnimating = false;\n },\n setAnimationLoop: function (callback) {\n animationLoop = callback;\n },\n setContext: function (value) {\n context = value;\n }\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes(gl) {\n var buffers = new WeakMap();\n function createBuffer(attribute, bufferType) {\n var array = attribute.array;\n var usage = attribute.dynamic ? 35048 : 35044;\n var buffer = gl.createBuffer();\n gl.bindBuffer(bufferType, buffer);\n gl.bufferData(bufferType, array, usage);\n attribute.onUploadCallback();\n var type = 5126;\n if (array instanceof Float32Array) {\n type = 5126;\n } else if (array instanceof Float64Array) {\n console.warn('THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.');\n } else if (array instanceof Uint16Array) {\n type = 5123;\n } else if (array instanceof Int16Array) {\n type = 5122;\n } else if (array instanceof Uint32Array) {\n type = 5125;\n } else if (array instanceof Int32Array) {\n type = 5124;\n } else if (array instanceof Int8Array) {\n type = 5120;\n } else if (array instanceof Uint8Array) {\n type = 5121;\n }\n return {\n buffer: buffer,\n type: type,\n bytesPerElement: array.BYTES_PER_ELEMENT,\n version: attribute.version\n };\n }\n function updateBuffer(buffer, attribute, bufferType) {\n var array = attribute.array;\n var updateRange = attribute.updateRange;\n gl.bindBuffer(bufferType, buffer);\n if (attribute.dynamic === false) {\n gl.bufferData(bufferType, array, 35044);\n } else if (updateRange.count === -1) {\n // Not using update ranges\n\n gl.bufferSubData(bufferType, 0, array);\n } else if (updateRange.count === 0) {\n console.error('THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.');\n } else {\n gl.bufferSubData(bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, array.subarray(updateRange.offset, updateRange.offset + updateRange.count));\n updateRange.count = -1; // reset range\n }\n }\n\n //\n\n function get(attribute) {\n if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n return buffers.get(attribute);\n }\n function remove(attribute) {\n if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n var data = buffers.get(attribute);\n if (data) {\n gl.deleteBuffer(data.buffer);\n buffers.delete(attribute);\n }\n }\n function update(attribute, bufferType) {\n if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n var data = buffers.get(attribute);\n if (data === undefined) {\n buffers.set(attribute, createBuffer(attribute, bufferType));\n } else if (data.version < attribute.version) {\n updateBuffer(data.buffer, attribute, bufferType);\n data.version = attribute.version;\n }\n }\n return {\n get: get,\n remove: remove,\n update: update\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3(a, b, c, normal, color, materialIndex) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.normal = normal && normal.isVector3 ? normal : new Vector3();\n this.vertexNormals = Array.isArray(normal) ? normal : [];\n this.color = color && color.isColor ? color : new Color();\n this.vertexColors = Array.isArray(color) ? color : [];\n this.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n}\nObject.assign(Face3.prototype, {\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (source) {\n this.a = source.a;\n this.b = source.b;\n this.c = source.c;\n this.normal.copy(source.normal);\n this.color.copy(source.color);\n this.materialIndex = source.materialIndex;\n for (var i = 0, il = source.vertexNormals.length; i < il; i++) {\n this.vertexNormals[i] = source.vertexNormals[i].clone();\n }\n for (var i = 0, il = source.vertexColors.length; i < il; i++) {\n this.vertexColors[i] = source.vertexColors[i].clone();\n }\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler(x, y, z, order) {\n this._x = x || 0;\n this._y = y || 0;\n this._z = z || 0;\n this._order = order || Euler.DefaultOrder;\n}\nEuler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX'];\nEuler.DefaultOrder = 'XYZ';\nObject.defineProperties(Euler.prototype, {\n x: {\n get: function () {\n return this._x;\n },\n set: function (value) {\n this._x = value;\n this.onChangeCallback();\n }\n },\n y: {\n get: function () {\n return this._y;\n },\n set: function (value) {\n this._y = value;\n this.onChangeCallback();\n }\n },\n z: {\n get: function () {\n return this._z;\n },\n set: function (value) {\n this._z = value;\n this.onChangeCallback();\n }\n },\n order: {\n get: function () {\n return this._order;\n },\n set: function (value) {\n this._order = value;\n this.onChangeCallback();\n }\n }\n});\nObject.assign(Euler.prototype, {\n isEuler: true,\n set: function (x, y, z, order) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order || this._order;\n this.onChangeCallback();\n return this;\n },\n clone: function () {\n return new this.constructor(this._x, this._y, this._z, this._order);\n },\n copy: function (euler) {\n this._x = euler._x;\n this._y = euler._y;\n this._z = euler._z;\n this._order = euler._order;\n this.onChangeCallback();\n return this;\n },\n setFromRotationMatrix: function (m, order, update) {\n var clamp = _Math.clamp;\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n var te = m.elements;\n var m11 = te[0],\n m12 = te[4],\n m13 = te[8];\n var m21 = te[1],\n m22 = te[5],\n m23 = te[9];\n var m31 = te[2],\n m32 = te[6],\n m33 = te[10];\n order = order || this._order;\n if (order === 'XYZ') {\n this._y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.99999) {\n this._x = Math.atan2(-m23, m33);\n this._z = Math.atan2(-m12, m11);\n } else {\n this._x = Math.atan2(m32, m22);\n this._z = 0;\n }\n } else if (order === 'YXZ') {\n this._x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.99999) {\n this._y = Math.atan2(m13, m33);\n this._z = Math.atan2(m21, m22);\n } else {\n this._y = Math.atan2(-m31, m11);\n this._z = 0;\n }\n } else if (order === 'ZXY') {\n this._x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.99999) {\n this._y = Math.atan2(-m31, m33);\n this._z = Math.atan2(-m12, m22);\n } else {\n this._y = 0;\n this._z = Math.atan2(m21, m11);\n }\n } else if (order === 'ZYX') {\n this._y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.99999) {\n this._x = Math.atan2(m32, m33);\n this._z = Math.atan2(m21, m11);\n } else {\n this._x = 0;\n this._z = Math.atan2(-m12, m22);\n }\n } else if (order === 'YZX') {\n this._z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.99999) {\n this._x = Math.atan2(-m23, m22);\n this._y = Math.atan2(-m31, m11);\n } else {\n this._x = 0;\n this._y = Math.atan2(m13, m33);\n }\n } else if (order === 'XZY') {\n this._z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.99999) {\n this._x = Math.atan2(m32, m22);\n this._y = Math.atan2(m13, m11);\n } else {\n this._x = Math.atan2(-m23, m33);\n this._y = 0;\n }\n } else {\n console.warn('THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order);\n }\n this._order = order;\n if (update !== false) this.onChangeCallback();\n return this;\n },\n setFromQuaternion: function () {\n var matrix = new Matrix4();\n return function setFromQuaternion(q, order, update) {\n matrix.makeRotationFromQuaternion(q);\n return this.setFromRotationMatrix(matrix, order, update);\n };\n }(),\n setFromVector3: function (v, order) {\n return this.set(v.x, v.y, v.z, order || this._order);\n },\n reorder: function () {\n // WARNING: this discards revolution information -bhouston\n\n var q = new Quaternion();\n return function reorder(newOrder) {\n q.setFromEuler(this);\n return this.setFromQuaternion(q, newOrder);\n };\n }(),\n equals: function (euler) {\n return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n },\n fromArray: function (array) {\n this._x = array[0];\n this._y = array[1];\n this._z = array[2];\n if (array[3] !== undefined) this._order = array[3];\n this.onChangeCallback();\n return this;\n },\n toArray: function (array, offset) {\n if (array === undefined) array = [];\n if (offset === undefined) offset = 0;\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n array[offset + 3] = this._order;\n return array;\n },\n toVector3: function (optionalResult) {\n if (optionalResult) {\n return optionalResult.set(this._x, this._y, this._z);\n } else {\n return new Vector3(this._x, this._y, this._z);\n }\n },\n onChange: function (callback) {\n this.onChangeCallback = callback;\n return this;\n },\n onChangeCallback: function () {}\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n this.mask = 1 | 0;\n}\nObject.assign(Layers.prototype, {\n set: function (channel) {\n this.mask = 1 << channel | 0;\n },\n enable: function (channel) {\n this.mask |= 1 << channel | 0;\n },\n toggle: function (channel) {\n this.mask ^= 1 << channel | 0;\n },\n disable: function (channel) {\n this.mask &= ~(1 << channel | 0);\n },\n test: function (layers) {\n return (this.mask & layers.mask) !== 0;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\nfunction Object3D() {\n Object.defineProperty(this, 'id', {\n value: object3DId++\n });\n this.uuid = _Math.generateUUID();\n this.name = '';\n this.type = 'Object3D';\n this.parent = null;\n this.children = [];\n this.up = Object3D.DefaultUp.clone();\n var position = new Vector3();\n var rotation = new Euler();\n var quaternion = new Quaternion();\n var scale = new Vector3(1, 1, 1);\n function onRotationChange() {\n quaternion.setFromEuler(rotation, false);\n }\n function onQuaternionChange() {\n rotation.setFromQuaternion(quaternion, undefined, false);\n }\n rotation.onChange(onRotationChange);\n quaternion.onChange(onQuaternionChange);\n Object.defineProperties(this, {\n position: {\n configurable: true,\n enumerable: true,\n value: position\n },\n rotation: {\n configurable: true,\n enumerable: true,\n value: rotation\n },\n quaternion: {\n configurable: true,\n enumerable: true,\n value: quaternion\n },\n scale: {\n configurable: true,\n enumerable: true,\n value: scale\n },\n modelViewMatrix: {\n value: new Matrix4()\n },\n normalMatrix: {\n value: new Matrix3()\n }\n });\n this.matrix = new Matrix4();\n this.matrixWorld = new Matrix4();\n this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n this.matrixWorldNeedsUpdate = false;\n this.layers = new Layers();\n this.visible = true;\n this.castShadow = false;\n this.receiveShadow = false;\n this.frustumCulled = true;\n this.renderOrder = 0;\n this.userData = {};\n}\nObject3D.DefaultUp = new Vector3(0, 1, 0);\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: Object3D,\n isObject3D: true,\n onBeforeRender: function () {},\n onAfterRender: function () {},\n applyMatrix: function (matrix) {\n if (this.matrixAutoUpdate) this.updateMatrix();\n this.matrix.premultiply(matrix);\n this.matrix.decompose(this.position, this.quaternion, this.scale);\n },\n applyQuaternion: function (q) {\n this.quaternion.premultiply(q);\n return this;\n },\n setRotationFromAxisAngle: function (axis, angle) {\n // assumes axis is normalized\n\n this.quaternion.setFromAxisAngle(axis, angle);\n },\n setRotationFromEuler: function (euler) {\n this.quaternion.setFromEuler(euler, true);\n },\n setRotationFromMatrix: function (m) {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n this.quaternion.setFromRotationMatrix(m);\n },\n setRotationFromQuaternion: function (q) {\n // assumes q is normalized\n\n this.quaternion.copy(q);\n },\n rotateOnAxis: function () {\n // rotate object on axis in object space\n // axis is assumed to be normalized\n\n var q1 = new Quaternion();\n return function rotateOnAxis(axis, angle) {\n q1.setFromAxisAngle(axis, angle);\n this.quaternion.multiply(q1);\n return this;\n };\n }(),\n rotateOnWorldAxis: function () {\n // rotate object on axis in world space\n // axis is assumed to be normalized\n // method assumes no rotated parent\n\n var q1 = new Quaternion();\n return function rotateOnWorldAxis(axis, angle) {\n q1.setFromAxisAngle(axis, angle);\n this.quaternion.premultiply(q1);\n return this;\n };\n }(),\n rotateX: function () {\n var v1 = new Vector3(1, 0, 0);\n return function rotateX(angle) {\n return this.rotateOnAxis(v1, angle);\n };\n }(),\n rotateY: function () {\n var v1 = new Vector3(0, 1, 0);\n return function rotateY(angle) {\n return this.rotateOnAxis(v1, angle);\n };\n }(),\n rotateZ: function () {\n var v1 = new Vector3(0, 0, 1);\n return function rotateZ(angle) {\n return this.rotateOnAxis(v1, angle);\n };\n }(),\n translateOnAxis: function () {\n // translate object by distance along axis in object space\n // axis is assumed to be normalized\n\n var v1 = new Vector3();\n return function translateOnAxis(axis, distance) {\n v1.copy(axis).applyQuaternion(this.quaternion);\n this.position.add(v1.multiplyScalar(distance));\n return this;\n };\n }(),\n translateX: function () {\n var v1 = new Vector3(1, 0, 0);\n return function translateX(distance) {\n return this.translateOnAxis(v1, distance);\n };\n }(),\n translateY: function () {\n var v1 = new Vector3(0, 1, 0);\n return function translateY(distance) {\n return this.translateOnAxis(v1, distance);\n };\n }(),\n translateZ: function () {\n var v1 = new Vector3(0, 0, 1);\n return function translateZ(distance) {\n return this.translateOnAxis(v1, distance);\n };\n }(),\n localToWorld: function (vector) {\n return vector.applyMatrix4(this.matrixWorld);\n },\n worldToLocal: function () {\n var m1 = new Matrix4();\n return function worldToLocal(vector) {\n return vector.applyMatrix4(m1.getInverse(this.matrixWorld));\n };\n }(),\n lookAt: function () {\n // This method does not support objects having non-uniformly-scaled parent(s)\n\n var q1 = new Quaternion();\n var m1 = new Matrix4();\n var target = new Vector3();\n var position = new Vector3();\n return function lookAt(x, y, z) {\n if (x.isVector3) {\n target.copy(x);\n } else {\n target.set(x, y, z);\n }\n var parent = this.parent;\n this.updateWorldMatrix(true, false);\n position.setFromMatrixPosition(this.matrixWorld);\n if (this.isCamera || this.isLight) {\n m1.lookAt(position, target, this.up);\n } else {\n m1.lookAt(target, position, this.up);\n }\n this.quaternion.setFromRotationMatrix(m1);\n if (parent) {\n m1.extractRotation(parent.matrixWorld);\n q1.setFromRotationMatrix(m1);\n this.quaternion.premultiply(q1.inverse());\n }\n };\n }(),\n add: function (object) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n if (object === this) {\n console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n return this;\n }\n if (object && object.isObject3D) {\n if (object.parent !== null) {\n object.parent.remove(object);\n }\n object.parent = this;\n object.dispatchEvent({\n type: 'added'\n });\n this.children.push(object);\n } else {\n console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n }\n return this;\n },\n remove: function (object) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.remove(arguments[i]);\n }\n return this;\n }\n var index = this.children.indexOf(object);\n if (index !== -1) {\n object.parent = null;\n object.dispatchEvent({\n type: 'removed'\n });\n this.children.splice(index, 1);\n }\n return this;\n },\n attach: function () {\n // adds object as a child of this, while maintaining the object's world transform\n\n var m = new Matrix4();\n return function attach(object) {\n this.updateWorldMatrix(true, false);\n m.getInverse(this.matrixWorld);\n if (object.parent !== null) {\n object.parent.updateWorldMatrix(true, false);\n m.multiply(object.parent.matrixWorld);\n }\n object.applyMatrix(m);\n object.updateWorldMatrix(false, false);\n this.add(object);\n return this;\n };\n }(),\n getObjectById: function (id) {\n return this.getObjectByProperty('id', id);\n },\n getObjectByName: function (name) {\n return this.getObjectByProperty('name', name);\n },\n getObjectByProperty: function (name, value) {\n if (this[name] === value) return this;\n for (var i = 0, l = this.children.length; i < l; i++) {\n var child = this.children[i];\n var object = child.getObjectByProperty(name, value);\n if (object !== undefined) {\n return object;\n }\n }\n return undefined;\n },\n getWorldPosition: function (target) {\n if (target === undefined) {\n console.warn('THREE.Object3D: .getWorldPosition() target is now required');\n target = new Vector3();\n }\n this.updateMatrixWorld(true);\n return target.setFromMatrixPosition(this.matrixWorld);\n },\n getWorldQuaternion: function () {\n var position = new Vector3();\n var scale = new Vector3();\n return function getWorldQuaternion(target) {\n if (target === undefined) {\n console.warn('THREE.Object3D: .getWorldQuaternion() target is now required');\n target = new Quaternion();\n }\n this.updateMatrixWorld(true);\n this.matrixWorld.decompose(position, target, scale);\n return target;\n };\n }(),\n getWorldScale: function () {\n var position = new Vector3();\n var quaternion = new Quaternion();\n return function getWorldScale(target) {\n if (target === undefined) {\n console.warn('THREE.Object3D: .getWorldScale() target is now required');\n target = new Vector3();\n }\n this.updateMatrixWorld(true);\n this.matrixWorld.decompose(position, quaternion, target);\n return target;\n };\n }(),\n getWorldDirection: function (target) {\n if (target === undefined) {\n console.warn('THREE.Object3D: .getWorldDirection() target is now required');\n target = new Vector3();\n }\n this.updateMatrixWorld(true);\n var e = this.matrixWorld.elements;\n return target.set(e[8], e[9], e[10]).normalize();\n },\n raycast: function () {},\n traverse: function (callback) {\n callback(this);\n var children = this.children;\n for (var i = 0, l = children.length; i < l; i++) {\n children[i].traverse(callback);\n }\n },\n traverseVisible: function (callback) {\n if (this.visible === false) return;\n callback(this);\n var children = this.children;\n for (var i = 0, l = children.length; i < l; i++) {\n children[i].traverseVisible(callback);\n }\n },\n traverseAncestors: function (callback) {\n var parent = this.parent;\n if (parent !== null) {\n callback(parent);\n parent.traverseAncestors(callback);\n }\n },\n updateMatrix: function () {\n this.matrix.compose(this.position, this.quaternion, this.scale);\n this.matrixWorldNeedsUpdate = true;\n },\n updateMatrixWorld: function (force) {\n if (this.matrixAutoUpdate) this.updateMatrix();\n if (this.matrixWorldNeedsUpdate || force) {\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n this.matrixWorldNeedsUpdate = false;\n force = true;\n }\n\n // update children\n\n var children = this.children;\n for (var i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(force);\n }\n },\n updateWorldMatrix: function (updateParents, updateChildren) {\n var parent = this.parent;\n if (updateParents === true && parent !== null) {\n parent.updateWorldMatrix(true, false);\n }\n if (this.matrixAutoUpdate) this.updateMatrix();\n if (this.parent === null) {\n this.matrixWorld.copy(this.matrix);\n } else {\n this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n }\n\n // update children\n\n if (updateChildren === true) {\n var children = this.children;\n for (var i = 0, l = children.length; i < l; i++) {\n children[i].updateWorldMatrix(false, true);\n }\n }\n },\n toJSON: function (meta) {\n // meta is a string when called from JSON.stringify\n var isRootObject = meta === undefined || typeof meta === 'string';\n var output = {};\n\n // meta is a hash used to collect geometries, materials.\n // not providing it implies that this is the root object\n // being serialized.\n if (isRootObject) {\n // initialize meta obj\n meta = {\n geometries: {},\n materials: {},\n textures: {},\n images: {},\n shapes: {}\n };\n output.metadata = {\n version: 4.5,\n type: 'Object',\n generator: 'Object3D.toJSON'\n };\n }\n\n // standard Object3D serialization\n\n var object = {};\n object.uuid = this.uuid;\n object.type = this.type;\n if (this.name !== '') object.name = this.name;\n if (this.castShadow === true) object.castShadow = true;\n if (this.receiveShadow === true) object.receiveShadow = true;\n if (this.visible === false) object.visible = false;\n if (this.frustumCulled === false) object.frustumCulled = false;\n if (this.renderOrder !== 0) object.renderOrder = this.renderOrder;\n if (JSON.stringify(this.userData) !== '{}') object.userData = this.userData;\n object.layers = this.layers.mask;\n object.matrix = this.matrix.toArray();\n if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false;\n\n // object specific properties\n\n if (this.isMesh && this.drawMode !== TrianglesDrawMode) object.drawMode = this.drawMode;\n\n //\n\n function serialize(library, element) {\n if (library[element.uuid] === undefined) {\n library[element.uuid] = element.toJSON(meta);\n }\n return element.uuid;\n }\n if (this.isMesh || this.isLine || this.isPoints) {\n object.geometry = serialize(meta.geometries, this.geometry);\n var parameters = this.geometry.parameters;\n if (parameters !== undefined && parameters.shapes !== undefined) {\n var shapes = parameters.shapes;\n if (Array.isArray(shapes)) {\n for (var i = 0, l = shapes.length; i < l; i++) {\n var shape = shapes[i];\n serialize(meta.shapes, shape);\n }\n } else {\n serialize(meta.shapes, shapes);\n }\n }\n }\n if (this.material !== undefined) {\n if (Array.isArray(this.material)) {\n var uuids = [];\n for (var i = 0, l = this.material.length; i < l; i++) {\n uuids.push(serialize(meta.materials, this.material[i]));\n }\n object.material = uuids;\n } else {\n object.material = serialize(meta.materials, this.material);\n }\n }\n\n //\n\n if (this.children.length > 0) {\n object.children = [];\n for (var i = 0; i < this.children.length; i++) {\n object.children.push(this.children[i].toJSON(meta).object);\n }\n }\n if (isRootObject) {\n var geometries = extractFromCache(meta.geometries);\n var materials = extractFromCache(meta.materials);\n var textures = extractFromCache(meta.textures);\n var images = extractFromCache(meta.images);\n var shapes = extractFromCache(meta.shapes);\n if (geometries.length > 0) output.geometries = geometries;\n if (materials.length > 0) output.materials = materials;\n if (textures.length > 0) output.textures = textures;\n if (images.length > 0) output.images = images;\n if (shapes.length > 0) output.shapes = shapes;\n }\n output.object = object;\n return output;\n\n // extract data from the cache hash\n // remove metadata on each item\n // and return as array\n function extractFromCache(cache) {\n var values = [];\n for (var key in cache) {\n var data = cache[key];\n delete data.metadata;\n values.push(data);\n }\n return values;\n }\n },\n clone: function (recursive) {\n return new this.constructor().copy(this, recursive);\n },\n copy: function (source, recursive) {\n if (recursive === undefined) recursive = true;\n this.name = source.name;\n this.up.copy(source.up);\n this.position.copy(source.position);\n this.quaternion.copy(source.quaternion);\n this.scale.copy(source.scale);\n this.matrix.copy(source.matrix);\n this.matrixWorld.copy(source.matrixWorld);\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n this.layers.mask = source.layers.mask;\n this.visible = source.visible;\n this.castShadow = source.castShadow;\n this.receiveShadow = source.receiveShadow;\n this.frustumCulled = source.frustumCulled;\n this.renderOrder = source.renderOrder;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n if (recursive === true) {\n for (var i = 0; i < source.children.length; i++) {\n var child = source.children[i];\n this.add(child.clone());\n }\n }\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n Object.defineProperty(this, 'id', {\n value: geometryId += 2\n });\n this.uuid = _Math.generateUUID();\n this.name = '';\n this.type = 'Geometry';\n this.vertices = [];\n this.colors = [];\n this.faces = [];\n this.faceVertexUvs = [[]];\n this.morphTargets = [];\n this.morphNormals = [];\n this.skinWeights = [];\n this.skinIndices = [];\n this.lineDistances = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n\n // update flags\n\n this.elementsNeedUpdate = false;\n this.verticesNeedUpdate = false;\n this.uvsNeedUpdate = false;\n this.normalsNeedUpdate = false;\n this.colorsNeedUpdate = false;\n this.lineDistancesNeedUpdate = false;\n this.groupsNeedUpdate = false;\n}\nGeometry.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: Geometry,\n isGeometry: true,\n applyMatrix: function (matrix) {\n var normalMatrix = new Matrix3().getNormalMatrix(matrix);\n for (var i = 0, il = this.vertices.length; i < il; i++) {\n var vertex = this.vertices[i];\n vertex.applyMatrix4(matrix);\n }\n for (var i = 0, il = this.faces.length; i < il; i++) {\n var face = this.faces[i];\n face.normal.applyMatrix3(normalMatrix).normalize();\n for (var j = 0, jl = face.vertexNormals.length; j < jl; j++) {\n face.vertexNormals[j].applyMatrix3(normalMatrix).normalize();\n }\n }\n if (this.boundingBox !== null) {\n this.computeBoundingBox();\n }\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere();\n }\n this.verticesNeedUpdate = true;\n this.normalsNeedUpdate = true;\n return this;\n },\n rotateX: function () {\n // rotate geometry around world x-axis\n\n var m1 = new Matrix4();\n return function rotateX(angle) {\n m1.makeRotationX(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n rotateY: function () {\n // rotate geometry around world y-axis\n\n var m1 = new Matrix4();\n return function rotateY(angle) {\n m1.makeRotationY(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n rotateZ: function () {\n // rotate geometry around world z-axis\n\n var m1 = new Matrix4();\n return function rotateZ(angle) {\n m1.makeRotationZ(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n translate: function () {\n // translate geometry\n\n var m1 = new Matrix4();\n return function translate(x, y, z) {\n m1.makeTranslation(x, y, z);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n scale: function () {\n // scale geometry\n\n var m1 = new Matrix4();\n return function scale(x, y, z) {\n m1.makeScale(x, y, z);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n lookAt: function () {\n var obj = new Object3D();\n return function lookAt(vector) {\n obj.lookAt(vector);\n obj.updateMatrix();\n this.applyMatrix(obj.matrix);\n };\n }(),\n fromBufferGeometry: function (geometry) {\n var scope = this;\n var indices = geometry.index !== null ? geometry.index.array : undefined;\n var attributes = geometry.attributes;\n var positions = attributes.position.array;\n var normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n var colors = attributes.color !== undefined ? attributes.color.array : undefined;\n var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n if (uvs2 !== undefined) this.faceVertexUvs[1] = [];\n for (var i = 0; i < positions.length; i += 3) {\n scope.vertices.push(new Vector3().fromArray(positions, i));\n if (colors !== undefined) {\n scope.colors.push(new Color().fromArray(colors, i));\n }\n }\n function addFace(a, b, c, materialIndex) {\n var vertexColors = colors === undefined ? [] : [scope.colors[a].clone(), scope.colors[b].clone(), scope.colors[c].clone()];\n var vertexNormals = normals === undefined ? [] : [new Vector3().fromArray(normals, a * 3), new Vector3().fromArray(normals, b * 3), new Vector3().fromArray(normals, c * 3)];\n var face = new Face3(a, b, c, vertexNormals, vertexColors, materialIndex);\n scope.faces.push(face);\n if (uvs !== undefined) {\n scope.faceVertexUvs[0].push([new Vector2().fromArray(uvs, a * 2), new Vector2().fromArray(uvs, b * 2), new Vector2().fromArray(uvs, c * 2)]);\n }\n if (uvs2 !== undefined) {\n scope.faceVertexUvs[1].push([new Vector2().fromArray(uvs2, a * 2), new Vector2().fromArray(uvs2, b * 2), new Vector2().fromArray(uvs2, c * 2)]);\n }\n }\n var groups = geometry.groups;\n if (groups.length > 0) {\n for (var i = 0; i < groups.length; i++) {\n var group = groups[i];\n var start = group.start;\n var count = group.count;\n for (var j = start, jl = start + count; j < jl; j += 3) {\n if (indices !== undefined) {\n addFace(indices[j], indices[j + 1], indices[j + 2], group.materialIndex);\n } else {\n addFace(j, j + 1, j + 2, group.materialIndex);\n }\n }\n }\n } else {\n if (indices !== undefined) {\n for (var i = 0; i < indices.length; i += 3) {\n addFace(indices[i], indices[i + 1], indices[i + 2]);\n }\n } else {\n for (var i = 0; i < positions.length / 3; i += 3) {\n addFace(i, i + 1, i + 2);\n }\n }\n }\n this.computeFaceNormals();\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone();\n }\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone();\n }\n return this;\n },\n center: function () {\n var offset = new Vector3();\n return function center() {\n this.computeBoundingBox();\n this.boundingBox.getCenter(offset).negate();\n this.translate(offset.x, offset.y, offset.z);\n return this;\n };\n }(),\n normalize: function () {\n this.computeBoundingSphere();\n var center = this.boundingSphere.center;\n var radius = this.boundingSphere.radius;\n var s = radius === 0 ? 1 : 1.0 / radius;\n var matrix = new Matrix4();\n matrix.set(s, 0, 0, -s * center.x, 0, s, 0, -s * center.y, 0, 0, s, -s * center.z, 0, 0, 0, 1);\n this.applyMatrix(matrix);\n return this;\n },\n computeFaceNormals: function () {\n var cb = new Vector3(),\n ab = new Vector3();\n for (var f = 0, fl = this.faces.length; f < fl; f++) {\n var face = this.faces[f];\n var vA = this.vertices[face.a];\n var vB = this.vertices[face.b];\n var vC = this.vertices[face.c];\n cb.subVectors(vC, vB);\n ab.subVectors(vA, vB);\n cb.cross(ab);\n cb.normalize();\n face.normal.copy(cb);\n }\n },\n computeVertexNormals: function (areaWeighted) {\n if (areaWeighted === undefined) areaWeighted = true;\n var v, vl, f, fl, face, vertices;\n vertices = new Array(this.vertices.length);\n for (v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v] = new Vector3();\n }\n if (areaWeighted) {\n // vertex normals weighted by triangle areas\n // http://www.iquilezles.org/www/articles/normals/normals.htm\n\n var vA, vB, vC;\n var cb = new Vector3(),\n ab = new Vector3();\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n vA = this.vertices[face.a];\n vB = this.vertices[face.b];\n vC = this.vertices[face.c];\n cb.subVectors(vC, vB);\n ab.subVectors(vA, vB);\n cb.cross(ab);\n vertices[face.a].add(cb);\n vertices[face.b].add(cb);\n vertices[face.c].add(cb);\n }\n } else {\n this.computeFaceNormals();\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n vertices[face.a].add(face.normal);\n vertices[face.b].add(face.normal);\n vertices[face.c].add(face.normal);\n }\n }\n for (v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v].normalize();\n }\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n var vertexNormals = face.vertexNormals;\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(vertices[face.a]);\n vertexNormals[1].copy(vertices[face.b]);\n vertexNormals[2].copy(vertices[face.c]);\n } else {\n vertexNormals[0] = vertices[face.a].clone();\n vertexNormals[1] = vertices[face.b].clone();\n vertexNormals[2] = vertices[face.c].clone();\n }\n }\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true;\n }\n },\n computeFlatVertexNormals: function () {\n var f, fl, face;\n this.computeFaceNormals();\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n var vertexNormals = face.vertexNormals;\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(face.normal);\n vertexNormals[1].copy(face.normal);\n vertexNormals[2].copy(face.normal);\n } else {\n vertexNormals[0] = face.normal.clone();\n vertexNormals[1] = face.normal.clone();\n vertexNormals[2] = face.normal.clone();\n }\n }\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true;\n }\n },\n computeMorphNormals: function () {\n var i, il, f, fl, face;\n\n // save original normals\n // - create temp variables on first access\n // otherwise just copy (for faster repeated calls)\n\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n if (!face.__originalFaceNormal) {\n face.__originalFaceNormal = face.normal.clone();\n } else {\n face.__originalFaceNormal.copy(face.normal);\n }\n if (!face.__originalVertexNormals) face.__originalVertexNormals = [];\n for (i = 0, il = face.vertexNormals.length; i < il; i++) {\n if (!face.__originalVertexNormals[i]) {\n face.__originalVertexNormals[i] = face.vertexNormals[i].clone();\n } else {\n face.__originalVertexNormals[i].copy(face.vertexNormals[i]);\n }\n }\n }\n\n // use temp geometry to compute face and vertex normals for each morph\n\n var tmpGeo = new Geometry();\n tmpGeo.faces = this.faces;\n for (i = 0, il = this.morphTargets.length; i < il; i++) {\n // create on first access\n\n if (!this.morphNormals[i]) {\n this.morphNormals[i] = {};\n this.morphNormals[i].faceNormals = [];\n this.morphNormals[i].vertexNormals = [];\n var dstNormalsFace = this.morphNormals[i].faceNormals;\n var dstNormalsVertex = this.morphNormals[i].vertexNormals;\n var faceNormal, vertexNormals;\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n faceNormal = new Vector3();\n vertexNormals = {\n a: new Vector3(),\n b: new Vector3(),\n c: new Vector3()\n };\n dstNormalsFace.push(faceNormal);\n dstNormalsVertex.push(vertexNormals);\n }\n }\n var morphNormals = this.morphNormals[i];\n\n // set vertices to morph target\n\n tmpGeo.vertices = this.morphTargets[i].vertices;\n\n // compute morph normals\n\n tmpGeo.computeFaceNormals();\n tmpGeo.computeVertexNormals();\n\n // store morph normals\n\n var faceNormal, vertexNormals;\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n faceNormal = morphNormals.faceNormals[f];\n vertexNormals = morphNormals.vertexNormals[f];\n faceNormal.copy(face.normal);\n vertexNormals.a.copy(face.vertexNormals[0]);\n vertexNormals.b.copy(face.vertexNormals[1]);\n vertexNormals.c.copy(face.vertexNormals[2]);\n }\n }\n\n // restore original normals\n\n for (f = 0, fl = this.faces.length; f < fl; f++) {\n face = this.faces[f];\n face.normal = face.__originalFaceNormal;\n face.vertexNormals = face.__originalVertexNormals;\n }\n },\n computeBoundingBox: function () {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3();\n }\n this.boundingBox.setFromPoints(this.vertices);\n },\n computeBoundingSphere: function () {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere();\n }\n this.boundingSphere.setFromPoints(this.vertices);\n },\n merge: function (geometry, matrix, materialIndexOffset) {\n if (!(geometry && geometry.isGeometry)) {\n console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry);\n return;\n }\n var normalMatrix,\n vertexOffset = this.vertices.length,\n vertices1 = this.vertices,\n vertices2 = geometry.vertices,\n faces1 = this.faces,\n faces2 = geometry.faces,\n uvs1 = this.faceVertexUvs[0],\n uvs2 = geometry.faceVertexUvs[0],\n colors1 = this.colors,\n colors2 = geometry.colors;\n if (materialIndexOffset === undefined) materialIndexOffset = 0;\n if (matrix !== undefined) {\n normalMatrix = new Matrix3().getNormalMatrix(matrix);\n }\n\n // vertices\n\n for (var i = 0, il = vertices2.length; i < il; i++) {\n var vertex = vertices2[i];\n var vertexCopy = vertex.clone();\n if (matrix !== undefined) vertexCopy.applyMatrix4(matrix);\n vertices1.push(vertexCopy);\n }\n\n // colors\n\n for (var i = 0, il = colors2.length; i < il; i++) {\n colors1.push(colors2[i].clone());\n }\n\n // faces\n\n for (i = 0, il = faces2.length; i < il; i++) {\n var face = faces2[i],\n faceCopy,\n normal,\n color,\n faceVertexNormals = face.vertexNormals,\n faceVertexColors = face.vertexColors;\n faceCopy = new Face3(face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset);\n faceCopy.normal.copy(face.normal);\n if (normalMatrix !== undefined) {\n faceCopy.normal.applyMatrix3(normalMatrix).normalize();\n }\n for (var j = 0, jl = faceVertexNormals.length; j < jl; j++) {\n normal = faceVertexNormals[j].clone();\n if (normalMatrix !== undefined) {\n normal.applyMatrix3(normalMatrix).normalize();\n }\n faceCopy.vertexNormals.push(normal);\n }\n faceCopy.color.copy(face.color);\n for (var j = 0, jl = faceVertexColors.length; j < jl; j++) {\n color = faceVertexColors[j];\n faceCopy.vertexColors.push(color.clone());\n }\n faceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n faces1.push(faceCopy);\n }\n\n // uvs\n\n for (i = 0, il = uvs2.length; i < il; i++) {\n var uv = uvs2[i],\n uvCopy = [];\n if (uv === undefined) {\n continue;\n }\n for (var j = 0, jl = uv.length; j < jl; j++) {\n uvCopy.push(uv[j].clone());\n }\n uvs1.push(uvCopy);\n }\n },\n mergeMesh: function (mesh) {\n if (!(mesh && mesh.isMesh)) {\n console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh);\n return;\n }\n if (mesh.matrixAutoUpdate) mesh.updateMatrix();\n this.merge(mesh.geometry, mesh.matrix);\n },\n /*\n * Checks for duplicate vertices with hashmap.\n * Duplicated vertices are removed\n * and faces' vertices are updated.\n */\n\n mergeVertices: function () {\n var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n var unique = [],\n changes = [];\n var v, key;\n var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n var precision = Math.pow(10, precisionPoints);\n var i, il, face;\n var indices, j, jl;\n for (i = 0, il = this.vertices.length; i < il; i++) {\n v = this.vertices[i];\n key = Math.round(v.x * precision) + '_' + Math.round(v.y * precision) + '_' + Math.round(v.z * precision);\n if (verticesMap[key] === undefined) {\n verticesMap[key] = i;\n unique.push(this.vertices[i]);\n changes[i] = unique.length - 1;\n } else {\n //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n changes[i] = changes[verticesMap[key]];\n }\n }\n\n // if faces are completely degenerate after merging vertices, we\n // have to remove them from the geometry.\n var faceIndicesToRemove = [];\n for (i = 0, il = this.faces.length; i < il; i++) {\n face = this.faces[i];\n face.a = changes[face.a];\n face.b = changes[face.b];\n face.c = changes[face.c];\n indices = [face.a, face.b, face.c];\n\n // if any duplicate vertices are found in a Face3\n // we have to remove the face as nothing can be saved\n for (var n = 0; n < 3; n++) {\n if (indices[n] === indices[(n + 1) % 3]) {\n faceIndicesToRemove.push(i);\n break;\n }\n }\n }\n for (i = faceIndicesToRemove.length - 1; i >= 0; i--) {\n var idx = faceIndicesToRemove[i];\n this.faces.splice(idx, 1);\n for (j = 0, jl = this.faceVertexUvs.length; j < jl; j++) {\n this.faceVertexUvs[j].splice(idx, 1);\n }\n }\n\n // Use unique set of vertices\n\n var diff = this.vertices.length - unique.length;\n this.vertices = unique;\n return diff;\n },\n setFromPoints: function (points) {\n this.vertices = [];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n this.vertices.push(new Vector3(point.x, point.y, point.z || 0));\n }\n return this;\n },\n sortFacesByMaterialIndex: function () {\n var faces = this.faces;\n var length = faces.length;\n\n // tag faces\n\n for (var i = 0; i < length; i++) {\n faces[i]._id = i;\n }\n\n // sort faces\n\n function materialIndexSort(a, b) {\n return a.materialIndex - b.materialIndex;\n }\n faces.sort(materialIndexSort);\n\n // sort uvs\n\n var uvs1 = this.faceVertexUvs[0];\n var uvs2 = this.faceVertexUvs[1];\n var newUvs1, newUvs2;\n if (uvs1 && uvs1.length === length) newUvs1 = [];\n if (uvs2 && uvs2.length === length) newUvs2 = [];\n for (var i = 0; i < length; i++) {\n var id = faces[i]._id;\n if (newUvs1) newUvs1.push(uvs1[id]);\n if (newUvs2) newUvs2.push(uvs2[id]);\n }\n if (newUvs1) this.faceVertexUvs[0] = newUvs1;\n if (newUvs2) this.faceVertexUvs[1] = newUvs2;\n },\n toJSON: function () {\n var data = {\n metadata: {\n version: 4.5,\n type: 'Geometry',\n generator: 'Geometry.toJSON'\n }\n };\n\n // standard Geometry serialization\n\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== '') data.name = this.name;\n if (this.parameters !== undefined) {\n var parameters = this.parameters;\n for (var key in parameters) {\n if (parameters[key] !== undefined) data[key] = parameters[key];\n }\n return data;\n }\n var vertices = [];\n for (var i = 0; i < this.vertices.length; i++) {\n var vertex = this.vertices[i];\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n var faces = [];\n var normals = [];\n var normalsHash = {};\n var colors = [];\n var colorsHash = {};\n var uvs = [];\n var uvsHash = {};\n for (var i = 0; i < this.faces.length; i++) {\n var face = this.faces[i];\n var hasMaterial = true;\n var hasFaceUv = false; // deprecated\n var hasFaceVertexUv = this.faceVertexUvs[0][i] !== undefined;\n var hasFaceNormal = face.normal.length() > 0;\n var hasFaceVertexNormal = face.vertexNormals.length > 0;\n var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n var hasFaceVertexColor = face.vertexColors.length > 0;\n var faceType = 0;\n faceType = setBit(faceType, 0, 0); // isQuad\n faceType = setBit(faceType, 1, hasMaterial);\n faceType = setBit(faceType, 2, hasFaceUv);\n faceType = setBit(faceType, 3, hasFaceVertexUv);\n faceType = setBit(faceType, 4, hasFaceNormal);\n faceType = setBit(faceType, 5, hasFaceVertexNormal);\n faceType = setBit(faceType, 6, hasFaceColor);\n faceType = setBit(faceType, 7, hasFaceVertexColor);\n faces.push(faceType);\n faces.push(face.a, face.b, face.c);\n faces.push(face.materialIndex);\n if (hasFaceVertexUv) {\n var faceVertexUvs = this.faceVertexUvs[0][i];\n faces.push(getUvIndex(faceVertexUvs[0]), getUvIndex(faceVertexUvs[1]), getUvIndex(faceVertexUvs[2]));\n }\n if (hasFaceNormal) {\n faces.push(getNormalIndex(face.normal));\n }\n if (hasFaceVertexNormal) {\n var vertexNormals = face.vertexNormals;\n faces.push(getNormalIndex(vertexNormals[0]), getNormalIndex(vertexNormals[1]), getNormalIndex(vertexNormals[2]));\n }\n if (hasFaceColor) {\n faces.push(getColorIndex(face.color));\n }\n if (hasFaceVertexColor) {\n var vertexColors = face.vertexColors;\n faces.push(getColorIndex(vertexColors[0]), getColorIndex(vertexColors[1]), getColorIndex(vertexColors[2]));\n }\n }\n function setBit(value, position, enabled) {\n return enabled ? value | 1 << position : value & ~(1 << position);\n }\n function getNormalIndex(normal) {\n var hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n if (normalsHash[hash] !== undefined) {\n return normalsHash[hash];\n }\n normalsHash[hash] = normals.length / 3;\n normals.push(normal.x, normal.y, normal.z);\n return normalsHash[hash];\n }\n function getColorIndex(color) {\n var hash = color.r.toString() + color.g.toString() + color.b.toString();\n if (colorsHash[hash] !== undefined) {\n return colorsHash[hash];\n }\n colorsHash[hash] = colors.length;\n colors.push(color.getHex());\n return colorsHash[hash];\n }\n function getUvIndex(uv) {\n var hash = uv.x.toString() + uv.y.toString();\n if (uvsHash[hash] !== undefined) {\n return uvsHash[hash];\n }\n uvsHash[hash] = uvs.length / 2;\n uvs.push(uv.x, uv.y);\n return uvsHash[hash];\n }\n data.data = {};\n data.data.vertices = vertices;\n data.data.normals = normals;\n if (colors.length > 0) data.data.colors = colors;\n if (uvs.length > 0) data.data.uvs = [uvs]; // temporal backward compatibility\n data.data.faces = faces;\n return data;\n },\n clone: function () {\n /*\n // Handle primitives\n \t var parameters = this.parameters;\n \t if ( parameters !== undefined ) {\n \t var values = [];\n \t for ( var key in parameters ) {\n \t values.push( parameters[ key ] );\n \t }\n \t var geometry = Object.create( this.constructor.prototype );\n this.constructor.apply( geometry, values );\n return geometry;\n \t }\n \t return new this.constructor().copy( this );\n */\n\n return new Geometry().copy(this);\n },\n copy: function (source) {\n var i, il, j, jl, k, kl;\n\n // reset\n\n this.vertices = [];\n this.colors = [];\n this.faces = [];\n this.faceVertexUvs = [[]];\n this.morphTargets = [];\n this.morphNormals = [];\n this.skinWeights = [];\n this.skinIndices = [];\n this.lineDistances = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n\n // name\n\n this.name = source.name;\n\n // vertices\n\n var vertices = source.vertices;\n for (i = 0, il = vertices.length; i < il; i++) {\n this.vertices.push(vertices[i].clone());\n }\n\n // colors\n\n var colors = source.colors;\n for (i = 0, il = colors.length; i < il; i++) {\n this.colors.push(colors[i].clone());\n }\n\n // faces\n\n var faces = source.faces;\n for (i = 0, il = faces.length; i < il; i++) {\n this.faces.push(faces[i].clone());\n }\n\n // face vertex uvs\n\n for (i = 0, il = source.faceVertexUvs.length; i < il; i++) {\n var faceVertexUvs = source.faceVertexUvs[i];\n if (this.faceVertexUvs[i] === undefined) {\n this.faceVertexUvs[i] = [];\n }\n for (j = 0, jl = faceVertexUvs.length; j < jl; j++) {\n var uvs = faceVertexUvs[j],\n uvsCopy = [];\n for (k = 0, kl = uvs.length; k < kl; k++) {\n var uv = uvs[k];\n uvsCopy.push(uv.clone());\n }\n this.faceVertexUvs[i].push(uvsCopy);\n }\n }\n\n // morph targets\n\n var morphTargets = source.morphTargets;\n for (i = 0, il = morphTargets.length; i < il; i++) {\n var morphTarget = {};\n morphTarget.name = morphTargets[i].name;\n\n // vertices\n\n if (morphTargets[i].vertices !== undefined) {\n morphTarget.vertices = [];\n for (j = 0, jl = morphTargets[i].vertices.length; j < jl; j++) {\n morphTarget.vertices.push(morphTargets[i].vertices[j].clone());\n }\n }\n\n // normals\n\n if (morphTargets[i].normals !== undefined) {\n morphTarget.normals = [];\n for (j = 0, jl = morphTargets[i].normals.length; j < jl; j++) {\n morphTarget.normals.push(morphTargets[i].normals[j].clone());\n }\n }\n this.morphTargets.push(morphTarget);\n }\n\n // morph normals\n\n var morphNormals = source.morphNormals;\n for (i = 0, il = morphNormals.length; i < il; i++) {\n var morphNormal = {};\n\n // vertex normals\n\n if (morphNormals[i].vertexNormals !== undefined) {\n morphNormal.vertexNormals = [];\n for (j = 0, jl = morphNormals[i].vertexNormals.length; j < jl; j++) {\n var srcVertexNormal = morphNormals[i].vertexNormals[j];\n var destVertexNormal = {};\n destVertexNormal.a = srcVertexNormal.a.clone();\n destVertexNormal.b = srcVertexNormal.b.clone();\n destVertexNormal.c = srcVertexNormal.c.clone();\n morphNormal.vertexNormals.push(destVertexNormal);\n }\n }\n\n // face normals\n\n if (morphNormals[i].faceNormals !== undefined) {\n morphNormal.faceNormals = [];\n for (j = 0, jl = morphNormals[i].faceNormals.length; j < jl; j++) {\n morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone());\n }\n }\n this.morphNormals.push(morphNormal);\n }\n\n // skin weights\n\n var skinWeights = source.skinWeights;\n for (i = 0, il = skinWeights.length; i < il; i++) {\n this.skinWeights.push(skinWeights[i].clone());\n }\n\n // skin indices\n\n var skinIndices = source.skinIndices;\n for (i = 0, il = skinIndices.length; i < il; i++) {\n this.skinIndices.push(skinIndices[i].clone());\n }\n\n // line distances\n\n var lineDistances = source.lineDistances;\n for (i = 0, il = lineDistances.length; i < il; i++) {\n this.lineDistances.push(lineDistances[i]);\n }\n\n // bounding box\n\n var boundingBox = source.boundingBox;\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone();\n }\n\n // bounding sphere\n\n var boundingSphere = source.boundingSphere;\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone();\n }\n\n // update flags\n\n this.elementsNeedUpdate = source.elementsNeedUpdate;\n this.verticesNeedUpdate = source.verticesNeedUpdate;\n this.uvsNeedUpdate = source.uvsNeedUpdate;\n this.normalsNeedUpdate = source.normalsNeedUpdate;\n this.colorsNeedUpdate = source.colorsNeedUpdate;\n this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n this.groupsNeedUpdate = source.groupsNeedUpdate;\n return this;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute(array, itemSize, normalized) {\n if (Array.isArray(array)) {\n throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.');\n }\n this.name = '';\n this.array = array;\n this.itemSize = itemSize;\n this.count = array !== undefined ? array.length / itemSize : 0;\n this.normalized = normalized === true;\n this.dynamic = false;\n this.updateRange = {\n offset: 0,\n count: -1\n };\n this.version = 0;\n}\nObject.defineProperty(BufferAttribute.prototype, 'needsUpdate', {\n set: function (value) {\n if (value === true) this.version++;\n }\n});\nObject.assign(BufferAttribute.prototype, {\n isBufferAttribute: true,\n onUploadCallback: function () {},\n setArray: function (array) {\n if (Array.isArray(array)) {\n throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.');\n }\n this.count = array !== undefined ? array.length / this.itemSize : 0;\n this.array = array;\n return this;\n },\n setDynamic: function (value) {\n this.dynamic = value;\n return this;\n },\n copy: function (source) {\n this.name = source.name;\n this.array = new source.array.constructor(source.array);\n this.itemSize = source.itemSize;\n this.count = source.count;\n this.normalized = source.normalized;\n this.dynamic = source.dynamic;\n return this;\n },\n copyAt: function (index1, attribute, index2) {\n index1 *= this.itemSize;\n index2 *= attribute.itemSize;\n for (var i = 0, l = this.itemSize; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n },\n copyArray: function (array) {\n this.array.set(array);\n return this;\n },\n copyColorsArray: function (colors) {\n var array = this.array,\n offset = 0;\n for (var i = 0, l = colors.length; i < l; i++) {\n var color = colors[i];\n if (color === undefined) {\n console.warn('THREE.BufferAttribute.copyColorsArray(): color is undefined', i);\n color = new Color();\n }\n array[offset++] = color.r;\n array[offset++] = color.g;\n array[offset++] = color.b;\n }\n return this;\n },\n copyVector2sArray: function (vectors) {\n var array = this.array,\n offset = 0;\n for (var i = 0, l = vectors.length; i < l; i++) {\n var vector = vectors[i];\n if (vector === undefined) {\n console.warn('THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i);\n vector = new Vector2();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n }\n return this;\n },\n copyVector3sArray: function (vectors) {\n var array = this.array,\n offset = 0;\n for (var i = 0, l = vectors.length; i < l; i++) {\n var vector = vectors[i];\n if (vector === undefined) {\n console.warn('THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i);\n vector = new Vector3();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n }\n return this;\n },\n copyVector4sArray: function (vectors) {\n var array = this.array,\n offset = 0;\n for (var i = 0, l = vectors.length; i < l; i++) {\n var vector = vectors[i];\n if (vector === undefined) {\n console.warn('THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i);\n vector = new Vector4();\n }\n array[offset++] = vector.x;\n array[offset++] = vector.y;\n array[offset++] = vector.z;\n array[offset++] = vector.w;\n }\n return this;\n },\n set: function (value, offset) {\n if (offset === undefined) offset = 0;\n this.array.set(value, offset);\n return this;\n },\n getX: function (index) {\n return this.array[index * this.itemSize];\n },\n setX: function (index, x) {\n this.array[index * this.itemSize] = x;\n return this;\n },\n getY: function (index) {\n return this.array[index * this.itemSize + 1];\n },\n setY: function (index, y) {\n this.array[index * this.itemSize + 1] = y;\n return this;\n },\n getZ: function (index) {\n return this.array[index * this.itemSize + 2];\n },\n setZ: function (index, z) {\n this.array[index * this.itemSize + 2] = z;\n return this;\n },\n getW: function (index) {\n return this.array[index * this.itemSize + 3];\n },\n setW: function (index, w) {\n this.array[index * this.itemSize + 3] = w;\n return this;\n },\n setXY: function (index, x, y) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n return this;\n },\n setXYZ: function (index, x, y, z) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n return this;\n },\n setXYZW: function (index, x, y, z, w) {\n index *= this.itemSize;\n this.array[index + 0] = x;\n this.array[index + 1] = y;\n this.array[index + 2] = z;\n this.array[index + 3] = w;\n return this;\n },\n onUpload: function (callback) {\n this.onUploadCallback = callback;\n return this;\n },\n clone: function () {\n return new this.constructor(this.array, this.itemSize).copy(this);\n },\n toJSON: function () {\n return {\n itemSize: this.itemSize,\n type: this.array.constructor.name,\n array: Array.prototype.slice.call(this.array),\n normalized: this.normalized\n };\n }\n});\n\n//\n\nfunction Int8BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Int8Array(array), itemSize, normalized);\n}\nInt8BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\nfunction Uint8BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Uint8Array(array), itemSize, normalized);\n}\nUint8BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\nfunction Uint8ClampedBufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Uint8ClampedArray(array), itemSize, normalized);\n}\nUint8ClampedBufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\nfunction Int16BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Int16Array(array), itemSize, normalized);\n}\nInt16BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\nfunction Uint16BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Uint16Array(array), itemSize, normalized);\n}\nUint16BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\nfunction Int32BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Int32Array(array), itemSize, normalized);\n}\nInt32BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\nfunction Uint32BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Uint32Array(array), itemSize, normalized);\n}\nUint32BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\nfunction Float32BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Float32Array(array), itemSize, normalized);\n}\nFloat32BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\nfunction Float64BufferAttribute(array, itemSize, normalized) {\n BufferAttribute.call(this, new Float64Array(array), itemSize, normalized);\n}\nFloat64BufferAttribute.prototype = Object.create(BufferAttribute.prototype);\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n this.vertices = [];\n this.normals = [];\n this.colors = [];\n this.uvs = [];\n this.uvs2 = [];\n this.groups = [];\n this.morphTargets = {};\n this.skinWeights = [];\n this.skinIndices = [];\n\n // this.lineDistances = [];\n\n this.boundingBox = null;\n this.boundingSphere = null;\n\n // update flags\n\n this.verticesNeedUpdate = false;\n this.normalsNeedUpdate = false;\n this.colorsNeedUpdate = false;\n this.uvsNeedUpdate = false;\n this.groupsNeedUpdate = false;\n}\nObject.assign(DirectGeometry.prototype, {\n computeGroups: function (geometry) {\n var group;\n var groups = [];\n var materialIndex = undefined;\n var faces = geometry.faces;\n for (var i = 0; i < faces.length; i++) {\n var face = faces[i];\n\n // materials\n\n if (face.materialIndex !== materialIndex) {\n materialIndex = face.materialIndex;\n if (group !== undefined) {\n group.count = i * 3 - group.start;\n groups.push(group);\n }\n group = {\n start: i * 3,\n materialIndex: materialIndex\n };\n }\n }\n if (group !== undefined) {\n group.count = i * 3 - group.start;\n groups.push(group);\n }\n this.groups = groups;\n },\n fromGeometry: function (geometry) {\n var faces = geometry.faces;\n var vertices = geometry.vertices;\n var faceVertexUvs = geometry.faceVertexUvs;\n var hasFaceVertexUv = faceVertexUvs[0] && faceVertexUvs[0].length > 0;\n var hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0;\n\n // morphs\n\n var morphTargets = geometry.morphTargets;\n var morphTargetsLength = morphTargets.length;\n var morphTargetsPosition;\n if (morphTargetsLength > 0) {\n morphTargetsPosition = [];\n for (var i = 0; i < morphTargetsLength; i++) {\n morphTargetsPosition[i] = {\n name: morphTargets[i].name,\n data: []\n };\n }\n this.morphTargets.position = morphTargetsPosition;\n }\n var morphNormals = geometry.morphNormals;\n var morphNormalsLength = morphNormals.length;\n var morphTargetsNormal;\n if (morphNormalsLength > 0) {\n morphTargetsNormal = [];\n for (var i = 0; i < morphNormalsLength; i++) {\n morphTargetsNormal[i] = {\n name: morphNormals[i].name,\n data: []\n };\n }\n this.morphTargets.normal = morphTargetsNormal;\n }\n\n // skins\n\n var skinIndices = geometry.skinIndices;\n var skinWeights = geometry.skinWeights;\n var hasSkinIndices = skinIndices.length === vertices.length;\n var hasSkinWeights = skinWeights.length === vertices.length;\n\n //\n\n if (vertices.length > 0 && faces.length === 0) {\n console.error('THREE.DirectGeometry: Faceless geometries are not supported.');\n }\n for (var i = 0; i < faces.length; i++) {\n var face = faces[i];\n this.vertices.push(vertices[face.a], vertices[face.b], vertices[face.c]);\n var vertexNormals = face.vertexNormals;\n if (vertexNormals.length === 3) {\n this.normals.push(vertexNormals[0], vertexNormals[1], vertexNormals[2]);\n } else {\n var normal = face.normal;\n this.normals.push(normal, normal, normal);\n }\n var vertexColors = face.vertexColors;\n if (vertexColors.length === 3) {\n this.colors.push(vertexColors[0], vertexColors[1], vertexColors[2]);\n } else {\n var color = face.color;\n this.colors.push(color, color, color);\n }\n if (hasFaceVertexUv === true) {\n var vertexUvs = faceVertexUvs[0][i];\n if (vertexUvs !== undefined) {\n this.uvs.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]);\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i);\n this.uvs.push(new Vector2(), new Vector2(), new Vector2());\n }\n }\n if (hasFaceVertexUv2 === true) {\n var vertexUvs = faceVertexUvs[1][i];\n if (vertexUvs !== undefined) {\n this.uvs2.push(vertexUvs[0], vertexUvs[1], vertexUvs[2]);\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i);\n this.uvs2.push(new Vector2(), new Vector2(), new Vector2());\n }\n }\n\n // morphs\n\n for (var j = 0; j < morphTargetsLength; j++) {\n var morphTarget = morphTargets[j].vertices;\n morphTargetsPosition[j].data.push(morphTarget[face.a], morphTarget[face.b], morphTarget[face.c]);\n }\n for (var j = 0; j < morphNormalsLength; j++) {\n var morphNormal = morphNormals[j].vertexNormals[i];\n morphTargetsNormal[j].data.push(morphNormal.a, morphNormal.b, morphNormal.c);\n }\n\n // skins\n\n if (hasSkinIndices) {\n this.skinIndices.push(skinIndices[face.a], skinIndices[face.b], skinIndices[face.c]);\n }\n if (hasSkinWeights) {\n this.skinWeights.push(skinWeights[face.a], skinWeights[face.b], skinWeights[face.c]);\n }\n }\n this.computeGroups(geometry);\n this.verticesNeedUpdate = geometry.verticesNeedUpdate;\n this.normalsNeedUpdate = geometry.normalsNeedUpdate;\n this.colorsNeedUpdate = geometry.colorsNeedUpdate;\n this.uvsNeedUpdate = geometry.uvsNeedUpdate;\n this.groupsNeedUpdate = geometry.groupsNeedUpdate;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax(array) {\n if (array.length === 0) return -Infinity;\n var max = array[0];\n for (var i = 1, l = array.length; i < l; ++i) {\n if (array[i] > max) max = array[i];\n }\n return max;\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n Object.defineProperty(this, 'id', {\n value: bufferGeometryId += 2\n });\n this.uuid = _Math.generateUUID();\n this.name = '';\n this.type = 'BufferGeometry';\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n this.drawRange = {\n start: 0,\n count: Infinity\n };\n this.userData = {};\n}\nBufferGeometry.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: BufferGeometry,\n isBufferGeometry: true,\n getIndex: function () {\n return this.index;\n },\n setIndex: function (index) {\n if (Array.isArray(index)) {\n this.index = new (arrayMax(index) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n } else {\n this.index = index;\n }\n },\n addAttribute: function (name, attribute) {\n if (!(attribute && attribute.isBufferAttribute) && !(attribute && attribute.isInterleavedBufferAttribute)) {\n console.warn('THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).');\n return this.addAttribute(name, new BufferAttribute(arguments[1], arguments[2]));\n }\n if (name === 'index') {\n console.warn('THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.');\n this.setIndex(attribute);\n return this;\n }\n this.attributes[name] = attribute;\n return this;\n },\n getAttribute: function (name) {\n return this.attributes[name];\n },\n removeAttribute: function (name) {\n delete this.attributes[name];\n return this;\n },\n addGroup: function (start, count, materialIndex) {\n this.groups.push({\n start: start,\n count: count,\n materialIndex: materialIndex !== undefined ? materialIndex : 0\n });\n },\n clearGroups: function () {\n this.groups = [];\n },\n setDrawRange: function (start, count) {\n this.drawRange.start = start;\n this.drawRange.count = count;\n },\n applyMatrix: function (matrix) {\n var position = this.attributes.position;\n if (position !== undefined) {\n matrix.applyToBufferAttribute(position);\n position.needsUpdate = true;\n }\n var normal = this.attributes.normal;\n if (normal !== undefined) {\n var normalMatrix = new Matrix3().getNormalMatrix(matrix);\n normalMatrix.applyToBufferAttribute(normal);\n normal.needsUpdate = true;\n }\n var tangent = this.attributes.tangent;\n if (tangent !== undefined) {\n var normalMatrix = new Matrix3().getNormalMatrix(matrix);\n\n // Tangent is vec4, but the '.w' component is a sign value (+1/-1).\n normalMatrix.applyToBufferAttribute(tangent);\n tangent.needsUpdate = true;\n }\n if (this.boundingBox !== null) {\n this.computeBoundingBox();\n }\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere();\n }\n return this;\n },\n rotateX: function () {\n // rotate geometry around world x-axis\n\n var m1 = new Matrix4();\n return function rotateX(angle) {\n m1.makeRotationX(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n rotateY: function () {\n // rotate geometry around world y-axis\n\n var m1 = new Matrix4();\n return function rotateY(angle) {\n m1.makeRotationY(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n rotateZ: function () {\n // rotate geometry around world z-axis\n\n var m1 = new Matrix4();\n return function rotateZ(angle) {\n m1.makeRotationZ(angle);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n translate: function () {\n // translate geometry\n\n var m1 = new Matrix4();\n return function translate(x, y, z) {\n m1.makeTranslation(x, y, z);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n scale: function () {\n // scale geometry\n\n var m1 = new Matrix4();\n return function scale(x, y, z) {\n m1.makeScale(x, y, z);\n this.applyMatrix(m1);\n return this;\n };\n }(),\n lookAt: function () {\n var obj = new Object3D();\n return function lookAt(vector) {\n obj.lookAt(vector);\n obj.updateMatrix();\n this.applyMatrix(obj.matrix);\n };\n }(),\n center: function () {\n var offset = new Vector3();\n return function center() {\n this.computeBoundingBox();\n this.boundingBox.getCenter(offset).negate();\n this.translate(offset.x, offset.y, offset.z);\n return this;\n };\n }(),\n setFromObject: function (object) {\n // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n var geometry = object.geometry;\n if (object.isPoints || object.isLine) {\n var positions = new Float32BufferAttribute(geometry.vertices.length * 3, 3);\n var colors = new Float32BufferAttribute(geometry.colors.length * 3, 3);\n this.addAttribute('position', positions.copyVector3sArray(geometry.vertices));\n this.addAttribute('color', colors.copyColorsArray(geometry.colors));\n if (geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length) {\n var lineDistances = new Float32BufferAttribute(geometry.lineDistances.length, 1);\n this.addAttribute('lineDistance', lineDistances.copyArray(geometry.lineDistances));\n }\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone();\n }\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone();\n }\n } else if (object.isMesh) {\n if (geometry && geometry.isGeometry) {\n this.fromGeometry(geometry);\n }\n }\n return this;\n },\n setFromPoints: function (points) {\n var position = [];\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n position.push(point.x, point.y, point.z || 0);\n }\n this.addAttribute('position', new Float32BufferAttribute(position, 3));\n return this;\n },\n updateFromObject: function (object) {\n var geometry = object.geometry;\n if (object.isMesh) {\n var direct = geometry.__directGeometry;\n if (geometry.elementsNeedUpdate === true) {\n direct = undefined;\n geometry.elementsNeedUpdate = false;\n }\n if (direct === undefined) {\n return this.fromGeometry(geometry);\n }\n direct.verticesNeedUpdate = geometry.verticesNeedUpdate;\n direct.normalsNeedUpdate = geometry.normalsNeedUpdate;\n direct.colorsNeedUpdate = geometry.colorsNeedUpdate;\n direct.uvsNeedUpdate = geometry.uvsNeedUpdate;\n direct.groupsNeedUpdate = geometry.groupsNeedUpdate;\n geometry.verticesNeedUpdate = false;\n geometry.normalsNeedUpdate = false;\n geometry.colorsNeedUpdate = false;\n geometry.uvsNeedUpdate = false;\n geometry.groupsNeedUpdate = false;\n geometry = direct;\n }\n var attribute;\n if (geometry.verticesNeedUpdate === true) {\n attribute = this.attributes.position;\n if (attribute !== undefined) {\n attribute.copyVector3sArray(geometry.vertices);\n attribute.needsUpdate = true;\n }\n geometry.verticesNeedUpdate = false;\n }\n if (geometry.normalsNeedUpdate === true) {\n attribute = this.attributes.normal;\n if (attribute !== undefined) {\n attribute.copyVector3sArray(geometry.normals);\n attribute.needsUpdate = true;\n }\n geometry.normalsNeedUpdate = false;\n }\n if (geometry.colorsNeedUpdate === true) {\n attribute = this.attributes.color;\n if (attribute !== undefined) {\n attribute.copyColorsArray(geometry.colors);\n attribute.needsUpdate = true;\n }\n geometry.colorsNeedUpdate = false;\n }\n if (geometry.uvsNeedUpdate) {\n attribute = this.attributes.uv;\n if (attribute !== undefined) {\n attribute.copyVector2sArray(geometry.uvs);\n attribute.needsUpdate = true;\n }\n geometry.uvsNeedUpdate = false;\n }\n if (geometry.lineDistancesNeedUpdate) {\n attribute = this.attributes.lineDistance;\n if (attribute !== undefined) {\n attribute.copyArray(geometry.lineDistances);\n attribute.needsUpdate = true;\n }\n geometry.lineDistancesNeedUpdate = false;\n }\n if (geometry.groupsNeedUpdate) {\n geometry.computeGroups(object.geometry);\n this.groups = geometry.groups;\n geometry.groupsNeedUpdate = false;\n }\n return this;\n },\n fromGeometry: function (geometry) {\n geometry.__directGeometry = new DirectGeometry().fromGeometry(geometry);\n return this.fromDirectGeometry(geometry.__directGeometry);\n },\n fromDirectGeometry: function (geometry) {\n var positions = new Float32Array(geometry.vertices.length * 3);\n this.addAttribute('position', new BufferAttribute(positions, 3).copyVector3sArray(geometry.vertices));\n if (geometry.normals.length > 0) {\n var normals = new Float32Array(geometry.normals.length * 3);\n this.addAttribute('normal', new BufferAttribute(normals, 3).copyVector3sArray(geometry.normals));\n }\n if (geometry.colors.length > 0) {\n var colors = new Float32Array(geometry.colors.length * 3);\n this.addAttribute('color', new BufferAttribute(colors, 3).copyColorsArray(geometry.colors));\n }\n if (geometry.uvs.length > 0) {\n var uvs = new Float32Array(geometry.uvs.length * 2);\n this.addAttribute('uv', new BufferAttribute(uvs, 2).copyVector2sArray(geometry.uvs));\n }\n if (geometry.uvs2.length > 0) {\n var uvs2 = new Float32Array(geometry.uvs2.length * 2);\n this.addAttribute('uv2', new BufferAttribute(uvs2, 2).copyVector2sArray(geometry.uvs2));\n }\n\n // groups\n\n this.groups = geometry.groups;\n\n // morphs\n\n for (var name in geometry.morphTargets) {\n var array = [];\n var morphTargets = geometry.morphTargets[name];\n for (var i = 0, l = morphTargets.length; i < l; i++) {\n var morphTarget = morphTargets[i];\n var attribute = new Float32BufferAttribute(morphTarget.data.length * 3, 3);\n attribute.name = morphTarget.name;\n array.push(attribute.copyVector3sArray(morphTarget.data));\n }\n this.morphAttributes[name] = array;\n }\n\n // skinning\n\n if (geometry.skinIndices.length > 0) {\n var skinIndices = new Float32BufferAttribute(geometry.skinIndices.length * 4, 4);\n this.addAttribute('skinIndex', skinIndices.copyVector4sArray(geometry.skinIndices));\n }\n if (geometry.skinWeights.length > 0) {\n var skinWeights = new Float32BufferAttribute(geometry.skinWeights.length * 4, 4);\n this.addAttribute('skinWeight', skinWeights.copyVector4sArray(geometry.skinWeights));\n }\n\n //\n\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone();\n }\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone();\n }\n return this;\n },\n computeBoundingBox: function () {\n var box = new Box3();\n return function computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3();\n }\n var position = this.attributes.position;\n var morphAttributesPosition = this.morphAttributes.position;\n if (position !== undefined) {\n this.boundingBox.setFromBufferAttribute(position);\n\n // process morph attributes if present\n\n if (morphAttributesPosition) {\n for (var i = 0, il = morphAttributesPosition.length; i < il; i++) {\n var morphAttribute = morphAttributesPosition[i];\n box.setFromBufferAttribute(morphAttribute);\n this.boundingBox.expandByPoint(box.min);\n this.boundingBox.expandByPoint(box.max);\n }\n }\n } else {\n this.boundingBox.makeEmpty();\n }\n if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n }\n };\n }(),\n computeBoundingSphere: function () {\n var box = new Box3();\n var boxMorphTargets = new Box3();\n var vector = new Vector3();\n return function computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere();\n }\n var position = this.attributes.position;\n var morphAttributesPosition = this.morphAttributes.position;\n if (position) {\n // first, find the center of the bounding sphere\n\n var center = this.boundingSphere.center;\n box.setFromBufferAttribute(position);\n\n // process morph attributes if present\n\n if (morphAttributesPosition) {\n for (var i = 0, il = morphAttributesPosition.length; i < il; i++) {\n var morphAttribute = morphAttributesPosition[i];\n boxMorphTargets.setFromBufferAttribute(morphAttribute);\n box.expandByPoint(boxMorphTargets.min);\n box.expandByPoint(boxMorphTargets.max);\n }\n }\n box.getCenter(center);\n\n // second, try to find a boundingSphere with a radius smaller than the\n // boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n var maxRadiusSq = 0;\n for (var i = 0, il = position.count; i < il; i++) {\n vector.fromBufferAttribute(position, i);\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(vector));\n }\n\n // process morph attributes if present\n\n if (morphAttributesPosition) {\n for (var i = 0, il = morphAttributesPosition.length; i < il; i++) {\n var morphAttribute = morphAttributesPosition[i];\n for (var j = 0, jl = morphAttribute.count; j < jl; j++) {\n vector.fromBufferAttribute(morphAttribute, j);\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(vector));\n }\n }\n }\n this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n if (isNaN(this.boundingSphere.radius)) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n }\n }\n };\n }(),\n computeFaceNormals: function () {\n\n // backwards compatibility\n },\n computeVertexNormals: function () {\n var index = this.index;\n var attributes = this.attributes;\n if (attributes.position) {\n var positions = attributes.position.array;\n if (attributes.normal === undefined) {\n this.addAttribute('normal', new BufferAttribute(new Float32Array(positions.length), 3));\n } else {\n // reset existing normals to zero\n\n var array = attributes.normal.array;\n for (var i = 0, il = array.length; i < il; i++) {\n array[i] = 0;\n }\n }\n var normals = attributes.normal.array;\n var vA, vB, vC;\n var pA = new Vector3(),\n pB = new Vector3(),\n pC = new Vector3();\n var cb = new Vector3(),\n ab = new Vector3();\n\n // indexed elements\n\n if (index) {\n var indices = index.array;\n for (var i = 0, il = index.count; i < il; i += 3) {\n vA = indices[i + 0] * 3;\n vB = indices[i + 1] * 3;\n vC = indices[i + 2] * 3;\n pA.fromArray(positions, vA);\n pB.fromArray(positions, vB);\n pC.fromArray(positions, vC);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n normals[vA] += cb.x;\n normals[vA + 1] += cb.y;\n normals[vA + 2] += cb.z;\n normals[vB] += cb.x;\n normals[vB + 1] += cb.y;\n normals[vB + 2] += cb.z;\n normals[vC] += cb.x;\n normals[vC + 1] += cb.y;\n normals[vC + 2] += cb.z;\n }\n } else {\n // non-indexed elements (unconnected triangle soup)\n\n for (var i = 0, il = positions.length; i < il; i += 9) {\n pA.fromArray(positions, i);\n pB.fromArray(positions, i + 3);\n pC.fromArray(positions, i + 6);\n cb.subVectors(pC, pB);\n ab.subVectors(pA, pB);\n cb.cross(ab);\n normals[i] = cb.x;\n normals[i + 1] = cb.y;\n normals[i + 2] = cb.z;\n normals[i + 3] = cb.x;\n normals[i + 4] = cb.y;\n normals[i + 5] = cb.z;\n normals[i + 6] = cb.x;\n normals[i + 7] = cb.y;\n normals[i + 8] = cb.z;\n }\n }\n this.normalizeNormals();\n attributes.normal.needsUpdate = true;\n }\n },\n merge: function (geometry, offset) {\n if (!(geometry && geometry.isBufferGeometry)) {\n console.error('THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry);\n return;\n }\n if (offset === undefined) {\n offset = 0;\n console.warn('THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.');\n }\n var attributes = this.attributes;\n for (var key in attributes) {\n if (geometry.attributes[key] === undefined) continue;\n var attribute1 = attributes[key];\n var attributeArray1 = attribute1.array;\n var attribute2 = geometry.attributes[key];\n var attributeArray2 = attribute2.array;\n var attributeOffset = attribute2.itemSize * offset;\n var length = Math.min(attributeArray2.length, attributeArray1.length - attributeOffset);\n for (var i = 0, j = attributeOffset; i < length; i++, j++) {\n attributeArray1[j] = attributeArray2[i];\n }\n }\n return this;\n },\n normalizeNormals: function () {\n var vector = new Vector3();\n return function normalizeNormals() {\n var normals = this.attributes.normal;\n for (var i = 0, il = normals.count; i < il; i++) {\n vector.x = normals.getX(i);\n vector.y = normals.getY(i);\n vector.z = normals.getZ(i);\n vector.normalize();\n normals.setXYZ(i, vector.x, vector.y, vector.z);\n }\n };\n }(),\n toNonIndexed: function () {\n function convertBufferAttribute(attribute, indices) {\n var array = attribute.array;\n var itemSize = attribute.itemSize;\n var array2 = new array.constructor(indices.length * itemSize);\n var index = 0,\n index2 = 0;\n for (var i = 0, l = indices.length; i < l; i++) {\n index = indices[i] * itemSize;\n for (var j = 0; j < itemSize; j++) {\n array2[index2++] = array[index++];\n }\n }\n return new BufferAttribute(array2, itemSize);\n }\n\n //\n\n if (this.index === null) {\n console.warn('THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.');\n return this;\n }\n var geometry2 = new BufferGeometry();\n var indices = this.index.array;\n var attributes = this.attributes;\n\n // attributes\n\n for (var name in attributes) {\n var attribute = attributes[name];\n var newAttribute = convertBufferAttribute(attribute, indices);\n geometry2.addAttribute(name, newAttribute);\n }\n\n // morph attributes\n\n var morphAttributes = this.morphAttributes;\n for (name in morphAttributes) {\n var morphArray = [];\n var morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes\n\n for (var i = 0, il = morphAttribute.length; i < il; i++) {\n var attribute = morphAttribute[i];\n var newAttribute = convertBufferAttribute(attribute, indices);\n morphArray.push(newAttribute);\n }\n geometry2.morphAttributes[name] = morphArray;\n }\n\n // groups\n\n var groups = this.groups;\n for (var i = 0, l = groups.length; i < l; i++) {\n var group = groups[i];\n geometry2.addGroup(group.start, group.count, group.materialIndex);\n }\n return geometry2;\n },\n toJSON: function () {\n var data = {\n metadata: {\n version: 4.5,\n type: 'BufferGeometry',\n generator: 'BufferGeometry.toJSON'\n }\n };\n\n // standard BufferGeometry serialization\n\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== '') data.name = this.name;\n if (Object.keys(this.userData).length > 0) data.userData = this.userData;\n if (this.parameters !== undefined) {\n var parameters = this.parameters;\n for (var key in parameters) {\n if (parameters[key] !== undefined) data[key] = parameters[key];\n }\n return data;\n }\n data.data = {\n attributes: {}\n };\n var index = this.index;\n if (index !== null) {\n data.data.index = {\n type: index.array.constructor.name,\n array: Array.prototype.slice.call(index.array)\n };\n }\n var attributes = this.attributes;\n for (var key in attributes) {\n var attribute = attributes[key];\n var attributeData = attribute.toJSON();\n if (attribute.name !== '') attributeData.name = attribute.name;\n data.data.attributes[key] = attributeData;\n }\n var morphAttributes = {};\n var hasMorphAttributes = false;\n for (var key in this.morphAttributes) {\n var attributeArray = this.morphAttributes[key];\n var array = [];\n for (var i = 0, il = attributeArray.length; i < il; i++) {\n var attribute = attributeArray[i];\n var attributeData = attribute.toJSON();\n if (attribute.name !== '') attributeData.name = attribute.name;\n array.push(attributeData);\n }\n if (array.length > 0) {\n morphAttributes[key] = array;\n hasMorphAttributes = true;\n }\n }\n if (hasMorphAttributes) data.data.morphAttributes = morphAttributes;\n var groups = this.groups;\n if (groups.length > 0) {\n data.data.groups = JSON.parse(JSON.stringify(groups));\n }\n var boundingSphere = this.boundingSphere;\n if (boundingSphere !== null) {\n data.data.boundingSphere = {\n center: boundingSphere.center.toArray(),\n radius: boundingSphere.radius\n };\n }\n return data;\n },\n clone: function () {\n /*\n // Handle primitives\n \t var parameters = this.parameters;\n \t if ( parameters !== undefined ) {\n \t var values = [];\n \t for ( var key in parameters ) {\n \t values.push( parameters[ key ] );\n \t }\n \t var geometry = Object.create( this.constructor.prototype );\n this.constructor.apply( geometry, values );\n return geometry;\n \t }\n \t return new this.constructor().copy( this );\n */\n\n return new BufferGeometry().copy(this);\n },\n copy: function (source) {\n var name, i, l;\n\n // reset\n\n this.index = null;\n this.attributes = {};\n this.morphAttributes = {};\n this.groups = [];\n this.boundingBox = null;\n this.boundingSphere = null;\n\n // name\n\n this.name = source.name;\n\n // index\n\n var index = source.index;\n if (index !== null) {\n this.setIndex(index.clone());\n }\n\n // attributes\n\n var attributes = source.attributes;\n for (name in attributes) {\n var attribute = attributes[name];\n this.addAttribute(name, attribute.clone());\n }\n\n // morph attributes\n\n var morphAttributes = source.morphAttributes;\n for (name in morphAttributes) {\n var array = [];\n var morphAttribute = morphAttributes[name]; // morphAttribute: array of Float32BufferAttributes\n\n for (i = 0, l = morphAttribute.length; i < l; i++) {\n array.push(morphAttribute[i].clone());\n }\n this.morphAttributes[name] = array;\n }\n\n // groups\n\n var groups = source.groups;\n for (i = 0, l = groups.length; i < l; i++) {\n var group = groups[i];\n this.addGroup(group.start, group.count, group.materialIndex);\n }\n\n // bounding box\n\n var boundingBox = source.boundingBox;\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone();\n }\n\n // bounding sphere\n\n var boundingSphere = source.boundingSphere;\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone();\n }\n\n // draw range\n\n this.drawRange.start = source.drawRange.start;\n this.drawRange.count = source.drawRange.count;\n\n // user data\n\n this.userData = source.userData;\n return this;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) {\n Geometry.call(this);\n this.type = 'BoxGeometry';\n this.parameters = {\n width: width,\n height: height,\n depth: depth,\n widthSegments: widthSegments,\n heightSegments: heightSegments,\n depthSegments: depthSegments\n };\n this.fromBufferGeometry(new BoxBufferGeometry(width, height, depth, widthSegments, heightSegments, depthSegments));\n this.mergeVertices();\n}\nBoxGeometry.prototype = Object.create(Geometry.prototype);\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry(width, height, depth, widthSegments, heightSegments, depthSegments) {\n BufferGeometry.call(this);\n this.type = 'BoxBufferGeometry';\n this.parameters = {\n width: width,\n height: height,\n depth: depth,\n widthSegments: widthSegments,\n heightSegments: heightSegments,\n depthSegments: depthSegments\n };\n var scope = this;\n width = width || 1;\n height = height || 1;\n depth = depth || 1;\n\n // segments\n\n widthSegments = Math.floor(widthSegments) || 1;\n heightSegments = Math.floor(heightSegments) || 1;\n depthSegments = Math.floor(depthSegments) || 1;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var numberOfVertices = 0;\n var groupStart = 0;\n\n // build each side of the box geometry\n\n buildPlane('z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0); // px\n buildPlane('z', 'y', 'x', 1, -1, depth, height, -width, depthSegments, heightSegments, 1); // nx\n buildPlane('x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2); // py\n buildPlane('x', 'z', 'y', 1, -1, width, depth, -height, widthSegments, depthSegments, 3); // ny\n buildPlane('x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4); // pz\n buildPlane('x', 'y', 'z', -1, -1, width, height, -depth, widthSegments, heightSegments, 5); // nz\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n function buildPlane(u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex) {\n var segmentWidth = width / gridX;\n var segmentHeight = height / gridY;\n var widthHalf = width / 2;\n var heightHalf = height / 2;\n var depthHalf = depth / 2;\n var gridX1 = gridX + 1;\n var gridY1 = gridY + 1;\n var vertexCounter = 0;\n var groupCount = 0;\n var ix, iy;\n var vector = new Vector3();\n\n // generate vertices, normals and uvs\n\n for (iy = 0; iy < gridY1; iy++) {\n var y = iy * segmentHeight - heightHalf;\n for (ix = 0; ix < gridX1; ix++) {\n var x = ix * segmentWidth - widthHalf;\n\n // set values to correct vector component\n\n vector[u] = x * udir;\n vector[v] = y * vdir;\n vector[w] = depthHalf;\n\n // now apply vector to vertex buffer\n\n vertices.push(vector.x, vector.y, vector.z);\n\n // set values to correct vector component\n\n vector[u] = 0;\n vector[v] = 0;\n vector[w] = depth > 0 ? 1 : -1;\n\n // now apply vector to normal buffer\n\n normals.push(vector.x, vector.y, vector.z);\n\n // uvs\n\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n\n // counters\n\n vertexCounter += 1;\n }\n }\n\n // indices\n\n // 1. you need three indices to draw a single face\n // 2. a single segment consists of two faces\n // 3. so we need to generate six (2*3) indices per segment\n\n for (iy = 0; iy < gridY; iy++) {\n for (ix = 0; ix < gridX; ix++) {\n var a = numberOfVertices + ix + gridX1 * iy;\n var b = numberOfVertices + ix + gridX1 * (iy + 1);\n var c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n var d = numberOfVertices + (ix + 1) + gridX1 * iy;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n\n // increase counter\n\n groupCount += 6;\n }\n }\n\n // add a group to the geometry. this will ensure multi material support\n\n scope.addGroup(groupStart, groupCount, materialIndex);\n\n // calculate new start value for groups\n\n groupStart += groupCount;\n\n // update total number of vertices\n\n numberOfVertices += vertexCounter;\n }\n}\nBoxBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry(width, height, widthSegments, heightSegments) {\n Geometry.call(this);\n this.type = 'PlaneGeometry';\n this.parameters = {\n width: width,\n height: height,\n widthSegments: widthSegments,\n heightSegments: heightSegments\n };\n this.fromBufferGeometry(new PlaneBufferGeometry(width, height, widthSegments, heightSegments));\n this.mergeVertices();\n}\nPlaneGeometry.prototype = Object.create(Geometry.prototype);\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry(width, height, widthSegments, heightSegments) {\n BufferGeometry.call(this);\n this.type = 'PlaneBufferGeometry';\n this.parameters = {\n width: width,\n height: height,\n widthSegments: widthSegments,\n heightSegments: heightSegments\n };\n width = width || 1;\n height = height || 1;\n var width_half = width / 2;\n var height_half = height / 2;\n var gridX = Math.floor(widthSegments) || 1;\n var gridY = Math.floor(heightSegments) || 1;\n var gridX1 = gridX + 1;\n var gridY1 = gridY + 1;\n var segment_width = width / gridX;\n var segment_height = height / gridY;\n var ix, iy;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // generate vertices, normals and uvs\n\n for (iy = 0; iy < gridY1; iy++) {\n var y = iy * segment_height - height_half;\n for (ix = 0; ix < gridX1; ix++) {\n var x = ix * segment_width - width_half;\n vertices.push(x, -y, 0);\n normals.push(0, 0, 1);\n uvs.push(ix / gridX);\n uvs.push(1 - iy / gridY);\n }\n }\n\n // indices\n\n for (iy = 0; iy < gridY; iy++) {\n for (ix = 0; ix < gridX; ix++) {\n var a = ix + gridX1 * iy;\n var b = ix + gridX1 * (iy + 1);\n var c = ix + 1 + gridX1 * (iy + 1);\n var d = ix + 1 + gridX1 * iy;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nPlaneBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\nfunction Material() {\n Object.defineProperty(this, 'id', {\n value: materialId++\n });\n this.uuid = _Math.generateUUID();\n this.name = '';\n this.type = 'Material';\n this.fog = true;\n this.lights = true;\n this.blending = NormalBlending;\n this.side = FrontSide;\n this.flatShading = false;\n this.vertexTangents = false;\n this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n this.opacity = 1;\n this.transparent = false;\n this.blendSrc = SrcAlphaFactor;\n this.blendDst = OneMinusSrcAlphaFactor;\n this.blendEquation = AddEquation;\n this.blendSrcAlpha = null;\n this.blendDstAlpha = null;\n this.blendEquationAlpha = null;\n this.depthFunc = LessEqualDepth;\n this.depthTest = true;\n this.depthWrite = true;\n this.clippingPlanes = null;\n this.clipIntersection = false;\n this.clipShadows = false;\n this.shadowSide = null;\n this.colorWrite = true;\n this.precision = null; // override the renderer's default precision for this material\n\n this.polygonOffset = false;\n this.polygonOffsetFactor = 0;\n this.polygonOffsetUnits = 0;\n this.dithering = false;\n this.alphaTest = 0;\n this.premultipliedAlpha = false;\n this.visible = true;\n this.userData = {};\n this.needsUpdate = true;\n}\nMaterial.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: Material,\n isMaterial: true,\n onBeforeCompile: function () {},\n setValues: function (values) {\n if (values === undefined) return;\n for (var key in values) {\n var newValue = values[key];\n if (newValue === undefined) {\n console.warn(\"THREE.Material: '\" + key + \"' parameter is undefined.\");\n continue;\n }\n\n // for backward compatability if shading is set in the constructor\n if (key === 'shading') {\n console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n this.flatShading = newValue === FlatShading ? true : false;\n continue;\n }\n var currentValue = this[key];\n if (currentValue === undefined) {\n console.warn(\"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\");\n continue;\n }\n if (currentValue && currentValue.isColor) {\n currentValue.set(newValue);\n } else if (currentValue && currentValue.isVector3 && newValue && newValue.isVector3) {\n currentValue.copy(newValue);\n } else {\n this[key] = newValue;\n }\n }\n },\n toJSON: function (meta) {\n var isRoot = meta === undefined || typeof meta === 'string';\n if (isRoot) {\n meta = {\n textures: {},\n images: {}\n };\n }\n var data = {\n metadata: {\n version: 4.5,\n type: 'Material',\n generator: 'Material.toJSON'\n }\n };\n\n // standard Material serialization\n data.uuid = this.uuid;\n data.type = this.type;\n if (this.name !== '') data.name = this.name;\n if (this.color && this.color.isColor) data.color = this.color.getHex();\n if (this.roughness !== undefined) data.roughness = this.roughness;\n if (this.metalness !== undefined) data.metalness = this.metalness;\n if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex();\n if (this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity;\n if (this.specular && this.specular.isColor) data.specular = this.specular.getHex();\n if (this.shininess !== undefined) data.shininess = this.shininess;\n if (this.clearCoat !== undefined) data.clearCoat = this.clearCoat;\n if (this.clearCoatRoughness !== undefined) data.clearCoatRoughness = this.clearCoatRoughness;\n if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid;\n if (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid;\n if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n if (this.lightMap && this.lightMap.isTexture) data.lightMap = this.lightMap.toJSON(meta).uuid;\n if (this.aoMap && this.aoMap.isTexture) {\n data.aoMap = this.aoMap.toJSON(meta).uuid;\n data.aoMapIntensity = this.aoMapIntensity;\n }\n if (this.bumpMap && this.bumpMap.isTexture) {\n data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n data.bumpScale = this.bumpScale;\n }\n if (this.normalMap && this.normalMap.isTexture) {\n data.normalMap = this.normalMap.toJSON(meta).uuid;\n data.normalMapType = this.normalMapType;\n data.normalScale = this.normalScale.toArray();\n }\n if (this.displacementMap && this.displacementMap.isTexture) {\n data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n data.displacementScale = this.displacementScale;\n data.displacementBias = this.displacementBias;\n }\n if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid;\n if (this.envMap && this.envMap.isTexture) {\n data.envMap = this.envMap.toJSON(meta).uuid;\n data.reflectivity = this.reflectivity; // Scale behind envMap\n\n if (this.combine !== undefined) data.combine = this.combine;\n if (this.envMapIntensity !== undefined) data.envMapIntensity = this.envMapIntensity;\n }\n if (this.gradientMap && this.gradientMap.isTexture) {\n data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n }\n if (this.size !== undefined) data.size = this.size;\n if (this.sizeAttenuation !== undefined) data.sizeAttenuation = this.sizeAttenuation;\n if (this.blending !== NormalBlending) data.blending = this.blending;\n if (this.flatShading === true) data.flatShading = this.flatShading;\n if (this.side !== FrontSide) data.side = this.side;\n if (this.vertexColors !== NoColors) data.vertexColors = this.vertexColors;\n if (this.opacity < 1) data.opacity = this.opacity;\n if (this.transparent === true) data.transparent = this.transparent;\n data.depthFunc = this.depthFunc;\n data.depthTest = this.depthTest;\n data.depthWrite = this.depthWrite;\n\n // rotation (SpriteMaterial)\n if (this.rotation !== 0) data.rotation = this.rotation;\n if (this.polygonOffset === true) data.polygonOffset = true;\n if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor;\n if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits;\n if (this.linewidth !== 1) data.linewidth = this.linewidth;\n if (this.dashSize !== undefined) data.dashSize = this.dashSize;\n if (this.gapSize !== undefined) data.gapSize = this.gapSize;\n if (this.scale !== undefined) data.scale = this.scale;\n if (this.dithering === true) data.dithering = true;\n if (this.alphaTest > 0) data.alphaTest = this.alphaTest;\n if (this.premultipliedAlpha === true) data.premultipliedAlpha = this.premultipliedAlpha;\n if (this.wireframe === true) data.wireframe = this.wireframe;\n if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth;\n if (this.wireframeLinecap !== 'round') data.wireframeLinecap = this.wireframeLinecap;\n if (this.wireframeLinejoin !== 'round') data.wireframeLinejoin = this.wireframeLinejoin;\n if (this.morphTargets === true) data.morphTargets = true;\n if (this.skinning === true) data.skinning = true;\n if (this.visible === false) data.visible = false;\n if (JSON.stringify(this.userData) !== '{}') data.userData = this.userData;\n\n // TODO: Copied from Object3D.toJSON\n\n function extractFromCache(cache) {\n var values = [];\n for (var key in cache) {\n var data = cache[key];\n delete data.metadata;\n values.push(data);\n }\n return values;\n }\n if (isRoot) {\n var textures = extractFromCache(meta.textures);\n var images = extractFromCache(meta.images);\n if (textures.length > 0) data.textures = textures;\n if (images.length > 0) data.images = images;\n }\n return data;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (source) {\n this.name = source.name;\n this.fog = source.fog;\n this.lights = source.lights;\n this.blending = source.blending;\n this.side = source.side;\n this.flatShading = source.flatShading;\n this.vertexColors = source.vertexColors;\n this.opacity = source.opacity;\n this.transparent = source.transparent;\n this.blendSrc = source.blendSrc;\n this.blendDst = source.blendDst;\n this.blendEquation = source.blendEquation;\n this.blendSrcAlpha = source.blendSrcAlpha;\n this.blendDstAlpha = source.blendDstAlpha;\n this.blendEquationAlpha = source.blendEquationAlpha;\n this.depthFunc = source.depthFunc;\n this.depthTest = source.depthTest;\n this.depthWrite = source.depthWrite;\n this.colorWrite = source.colorWrite;\n this.precision = source.precision;\n this.polygonOffset = source.polygonOffset;\n this.polygonOffsetFactor = source.polygonOffsetFactor;\n this.polygonOffsetUnits = source.polygonOffsetUnits;\n this.dithering = source.dithering;\n this.alphaTest = source.alphaTest;\n this.premultipliedAlpha = source.premultipliedAlpha;\n this.visible = source.visible;\n this.userData = JSON.parse(JSON.stringify(source.userData));\n this.clipShadows = source.clipShadows;\n this.clipIntersection = source.clipIntersection;\n var srcPlanes = source.clippingPlanes,\n dstPlanes = null;\n if (srcPlanes !== null) {\n var n = srcPlanes.length;\n dstPlanes = new Array(n);\n for (var i = 0; i !== n; ++i) dstPlanes[i] = srcPlanes[i].clone();\n }\n this.clippingPlanes = dstPlanes;\n this.shadowSide = source.shadowSide;\n return this;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n});\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial(parameters) {\n Material.call(this);\n this.type = 'ShaderMaterial';\n this.defines = {};\n this.uniforms = {};\n this.vertexShader = default_vertex;\n this.fragmentShader = default_fragment;\n this.linewidth = 1;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false; // set to use scene fog\n this.lights = false; // set to use scene lights\n this.clipping = false; // set to use user-defined clipping planes\n\n this.skinning = false; // set to use skinning attribute streams\n this.morphTargets = false; // set to use morph targets\n this.morphNormals = false; // set to use morph normals\n\n this.extensions = {\n derivatives: false,\n // set to use derivatives\n fragDepth: false,\n // set to use fragment depth values\n drawBuffers: false,\n // set to use draw buffers\n shaderTextureLOD: false // set to use shader texture LOD\n };\n\n // When rendered geometry doesn't include these attributes but the material does,\n // use these default values in WebGL. This avoids errors when buffer data is missing.\n this.defaultAttributeValues = {\n 'color': [1, 1, 1],\n 'uv': [0, 0],\n 'uv2': [0, 0]\n };\n this.index0AttributeName = undefined;\n this.uniformsNeedUpdate = false;\n if (parameters !== undefined) {\n if (parameters.attributes !== undefined) {\n console.error('THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.');\n }\n this.setValues(parameters);\n }\n}\nShaderMaterial.prototype = Object.create(Material.prototype);\nShaderMaterial.prototype.constructor = ShaderMaterial;\nShaderMaterial.prototype.isShaderMaterial = true;\nShaderMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.fragmentShader = source.fragmentShader;\n this.vertexShader = source.vertexShader;\n this.uniforms = cloneUniforms(source.uniforms);\n this.defines = Object.assign({}, source.defines);\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.lights = source.lights;\n this.clipping = source.clipping;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n this.extensions = source.extensions;\n return this;\n};\nShaderMaterial.prototype.toJSON = function (meta) {\n var data = Material.prototype.toJSON.call(this, meta);\n data.uniforms = {};\n for (var name in this.uniforms) {\n var uniform = this.uniforms[name];\n var value = uniform.value;\n if (value && value.isTexture) {\n data.uniforms[name] = {\n type: 't',\n value: value.toJSON(meta).uuid\n };\n } else if (value && value.isColor) {\n data.uniforms[name] = {\n type: 'c',\n value: value.getHex()\n };\n } else if (value && value.isVector2) {\n data.uniforms[name] = {\n type: 'v2',\n value: value.toArray()\n };\n } else if (value && value.isVector3) {\n data.uniforms[name] = {\n type: 'v3',\n value: value.toArray()\n };\n } else if (value && value.isVector4) {\n data.uniforms[name] = {\n type: 'v4',\n value: value.toArray()\n };\n } else if (value && value.isMatrix3) {\n data.uniforms[name] = {\n type: 'm3',\n value: value.toArray()\n };\n } else if (value && value.isMatrix4) {\n data.uniforms[name] = {\n type: 'm4',\n value: value.toArray()\n };\n } else {\n data.uniforms[name] = {\n value: value\n };\n\n // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n }\n }\n\n if (Object.keys(this.defines).length > 0) data.defines = this.defines;\n data.vertexShader = this.vertexShader;\n data.fragmentShader = this.fragmentShader;\n var extensions = {};\n for (var key in this.extensions) {\n if (this.extensions[key] === true) extensions[key] = true;\n }\n if (Object.keys(extensions).length > 0) data.extensions = extensions;\n return data;\n};\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray(origin, direction) {\n this.origin = origin !== undefined ? origin : new Vector3();\n this.direction = direction !== undefined ? direction : new Vector3();\n}\nObject.assign(Ray.prototype, {\n set: function (origin, direction) {\n this.origin.copy(origin);\n this.direction.copy(direction);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (ray) {\n this.origin.copy(ray.origin);\n this.direction.copy(ray.direction);\n return this;\n },\n at: function (t, target) {\n if (target === undefined) {\n console.warn('THREE.Ray: .at() target is now required');\n target = new Vector3();\n }\n return target.copy(this.direction).multiplyScalar(t).add(this.origin);\n },\n lookAt: function (v) {\n this.direction.copy(v).sub(this.origin).normalize();\n return this;\n },\n recast: function () {\n var v1 = new Vector3();\n return function recast(t) {\n this.origin.copy(this.at(t, v1));\n return this;\n };\n }(),\n closestPointToPoint: function (point, target) {\n if (target === undefined) {\n console.warn('THREE.Ray: .closestPointToPoint() target is now required');\n target = new Vector3();\n }\n target.subVectors(point, this.origin);\n var directionDistance = target.dot(this.direction);\n if (directionDistance < 0) {\n return target.copy(this.origin);\n }\n return target.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n },\n distanceToPoint: function (point) {\n return Math.sqrt(this.distanceSqToPoint(point));\n },\n distanceSqToPoint: function () {\n var v1 = new Vector3();\n return function distanceSqToPoint(point) {\n var directionDistance = v1.subVectors(point, this.origin).dot(this.direction);\n\n // point behind the ray\n\n if (directionDistance < 0) {\n return this.origin.distanceToSquared(point);\n }\n v1.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n return v1.distanceToSquared(point);\n };\n }(),\n distanceSqToSegment: function () {\n var segCenter = new Vector3();\n var segDir = new Vector3();\n var diff = new Vector3();\n return function distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n // It returns the min distance between the ray and the segment\n // defined by v0 and v1\n // It can also set two optional targets :\n // - The closest point on the ray\n // - The closest point on the segment\n\n segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n segDir.copy(v1).sub(v0).normalize();\n diff.copy(this.origin).sub(segCenter);\n var segExtent = v0.distanceTo(v1) * 0.5;\n var a01 = -this.direction.dot(segDir);\n var b0 = diff.dot(this.direction);\n var b1 = -diff.dot(segDir);\n var c = diff.lengthSq();\n var det = Math.abs(1 - a01 * a01);\n var s0, s1, sqrDist, extDet;\n if (det > 0) {\n // The ray and segment are not parallel.\n\n s0 = a01 * b1 - b0;\n s1 = a01 * b0 - b1;\n extDet = segExtent * det;\n if (s0 >= 0) {\n if (s1 >= -extDet) {\n if (s1 <= extDet) {\n // region 0\n // Minimum at interior points of ray and segment.\n\n var invDet = 1 / det;\n s0 *= invDet;\n s1 *= invDet;\n sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n } else {\n // region 1\n\n s1 = segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n // region 5\n\n s1 = -segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n } else {\n if (s1 <= -extDet) {\n // region 4\n\n s0 = Math.max(0, -(-a01 * segExtent + b0));\n s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n } else if (s1 <= extDet) {\n // region 3\n\n s0 = 0;\n s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = s1 * (s1 + 2 * b1) + c;\n } else {\n // region 2\n\n s0 = Math.max(0, -(a01 * segExtent + b0));\n s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n }\n } else {\n // Ray and segment are parallel.\n\n s1 = a01 > 0 ? -segExtent : segExtent;\n s0 = Math.max(0, -(a01 * s1 + b0));\n sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n }\n if (optionalPointOnRay) {\n optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n }\n if (optionalPointOnSegment) {\n optionalPointOnSegment.copy(segDir).multiplyScalar(s1).add(segCenter);\n }\n return sqrDist;\n };\n }(),\n intersectSphere: function () {\n var v1 = new Vector3();\n return function intersectSphere(sphere, target) {\n v1.subVectors(sphere.center, this.origin);\n var tca = v1.dot(this.direction);\n var d2 = v1.dot(v1) - tca * tca;\n var radius2 = sphere.radius * sphere.radius;\n if (d2 > radius2) return null;\n var thc = Math.sqrt(radius2 - d2);\n\n // t0 = first intersect point - entrance on front of sphere\n var t0 = tca - thc;\n\n // t1 = second intersect point - exit point on back of sphere\n var t1 = tca + thc;\n\n // test to see if both t0 and t1 are behind the ray - if so, return null\n if (t0 < 0 && t1 < 0) return null;\n\n // test to see if t0 is behind the ray:\n // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n // in order to always return an intersect point that is in front of the ray.\n if (t0 < 0) return this.at(t1, target);\n\n // else t0 is in front of the ray, so return the first collision point scaled by t0\n return this.at(t0, target);\n };\n }(),\n intersectsSphere: function (sphere) {\n return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n },\n distanceToPlane: function (plane) {\n var denominator = plane.normal.dot(this.direction);\n if (denominator === 0) {\n // line is coplanar, return origin\n if (plane.distanceToPoint(this.origin) === 0) {\n return 0;\n }\n\n // Null is preferable to undefined since undefined means.... it is undefined\n\n return null;\n }\n var t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n\n // Return if the ray never intersects the plane\n\n return t >= 0 ? t : null;\n },\n intersectPlane: function (plane, target) {\n var t = this.distanceToPlane(plane);\n if (t === null) {\n return null;\n }\n return this.at(t, target);\n },\n intersectsPlane: function (plane) {\n // check if the ray lies on the plane first\n\n var distToPoint = plane.distanceToPoint(this.origin);\n if (distToPoint === 0) {\n return true;\n }\n var denominator = plane.normal.dot(this.direction);\n if (denominator * distToPoint < 0) {\n return true;\n }\n\n // ray origin is behind the plane (and is pointing behind it)\n\n return false;\n },\n intersectBox: function (box, target) {\n var tmin, tmax, tymin, tymax, tzmin, tzmax;\n var invdirx = 1 / this.direction.x,\n invdiry = 1 / this.direction.y,\n invdirz = 1 / this.direction.z;\n var origin = this.origin;\n if (invdirx >= 0) {\n tmin = (box.min.x - origin.x) * invdirx;\n tmax = (box.max.x - origin.x) * invdirx;\n } else {\n tmin = (box.max.x - origin.x) * invdirx;\n tmax = (box.min.x - origin.x) * invdirx;\n }\n if (invdiry >= 0) {\n tymin = (box.min.y - origin.y) * invdiry;\n tymax = (box.max.y - origin.y) * invdiry;\n } else {\n tymin = (box.max.y - origin.y) * invdiry;\n tymax = (box.min.y - origin.y) * invdiry;\n }\n if (tmin > tymax || tymin > tmax) return null;\n\n // These lines also handle the case where tmin or tmax is NaN\n // (result of 0 * Infinity). x !== x returns true if x is NaN\n\n if (tymin > tmin || tmin !== tmin) tmin = tymin;\n if (tymax < tmax || tmax !== tmax) tmax = tymax;\n if (invdirz >= 0) {\n tzmin = (box.min.z - origin.z) * invdirz;\n tzmax = (box.max.z - origin.z) * invdirz;\n } else {\n tzmin = (box.max.z - origin.z) * invdirz;\n tzmax = (box.min.z - origin.z) * invdirz;\n }\n if (tmin > tzmax || tzmin > tmax) return null;\n if (tzmin > tmin || tmin !== tmin) tmin = tzmin;\n if (tzmax < tmax || tmax !== tmax) tmax = tzmax;\n\n //return point closest to the ray (positive side)\n\n if (tmax < 0) return null;\n return this.at(tmin >= 0 ? tmin : tmax, target);\n },\n intersectsBox: function () {\n var v = new Vector3();\n return function intersectsBox(box) {\n return this.intersectBox(box, v) !== null;\n };\n }(),\n intersectTriangle: function () {\n // Compute the offset origin, edges, and normal.\n var diff = new Vector3();\n var edge1 = new Vector3();\n var edge2 = new Vector3();\n var normal = new Vector3();\n return function intersectTriangle(a, b, c, backfaceCulling, target) {\n // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n edge1.subVectors(b, a);\n edge2.subVectors(c, a);\n normal.crossVectors(edge1, edge2);\n\n // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n var DdN = this.direction.dot(normal);\n var sign;\n if (DdN > 0) {\n if (backfaceCulling) return null;\n sign = 1;\n } else if (DdN < 0) {\n sign = -1;\n DdN = -DdN;\n } else {\n return null;\n }\n diff.subVectors(this.origin, a);\n var DdQxE2 = sign * this.direction.dot(edge2.crossVectors(diff, edge2));\n\n // b1 < 0, no intersection\n if (DdQxE2 < 0) {\n return null;\n }\n var DdE1xQ = sign * this.direction.dot(edge1.cross(diff));\n\n // b2 < 0, no intersection\n if (DdE1xQ < 0) {\n return null;\n }\n\n // b1+b2 > 1, no intersection\n if (DdQxE2 + DdE1xQ > DdN) {\n return null;\n }\n\n // Line intersects triangle, check if ray does.\n var QdN = -sign * diff.dot(normal);\n\n // t < 0, no intersection\n if (QdN < 0) {\n return null;\n }\n\n // Ray intersects triangle.\n return this.at(QdN / DdN, target);\n };\n }(),\n applyMatrix4: function (matrix4) {\n this.origin.applyMatrix4(matrix4);\n this.direction.transformDirection(matrix4);\n return this;\n },\n equals: function (ray) {\n return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle(a, b, c) {\n this.a = a !== undefined ? a : new Vector3();\n this.b = b !== undefined ? b : new Vector3();\n this.c = c !== undefined ? c : new Vector3();\n}\nObject.assign(Triangle, {\n getNormal: function () {\n var v0 = new Vector3();\n return function getNormal(a, b, c, target) {\n if (target === undefined) {\n console.warn('THREE.Triangle: .getNormal() target is now required');\n target = new Vector3();\n }\n target.subVectors(c, b);\n v0.subVectors(a, b);\n target.cross(v0);\n var targetLengthSq = target.lengthSq();\n if (targetLengthSq > 0) {\n return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n }\n return target.set(0, 0, 0);\n };\n }(),\n // static/instance method to calculate barycentric coordinates\n // based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n getBarycoord: function () {\n var v0 = new Vector3();\n var v1 = new Vector3();\n var v2 = new Vector3();\n return function getBarycoord(point, a, b, c, target) {\n v0.subVectors(c, a);\n v1.subVectors(b, a);\n v2.subVectors(point, a);\n var dot00 = v0.dot(v0);\n var dot01 = v0.dot(v1);\n var dot02 = v0.dot(v2);\n var dot11 = v1.dot(v1);\n var dot12 = v1.dot(v2);\n var denom = dot00 * dot11 - dot01 * dot01;\n if (target === undefined) {\n console.warn('THREE.Triangle: .getBarycoord() target is now required');\n target = new Vector3();\n }\n\n // collinear or singular triangle\n if (denom === 0) {\n // arbitrary location outside of triangle?\n // not sure if this is the best idea, maybe should be returning undefined\n return target.set(-2, -1, -1);\n }\n var invDenom = 1 / denom;\n var u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n var v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n\n // barycentric coordinates must always sum to 1\n return target.set(1 - u - v, v, u);\n };\n }(),\n containsPoint: function () {\n var v1 = new Vector3();\n return function containsPoint(point, a, b, c) {\n Triangle.getBarycoord(point, a, b, c, v1);\n return v1.x >= 0 && v1.y >= 0 && v1.x + v1.y <= 1;\n };\n }(),\n getUV: function () {\n var barycoord = new Vector3();\n return function getUV(point, p1, p2, p3, uv1, uv2, uv3, target) {\n this.getBarycoord(point, p1, p2, p3, barycoord);\n target.set(0, 0);\n target.addScaledVector(uv1, barycoord.x);\n target.addScaledVector(uv2, barycoord.y);\n target.addScaledVector(uv3, barycoord.z);\n return target;\n };\n }(),\n isFrontFacing: function () {\n var v0 = new Vector3();\n var v1 = new Vector3();\n return function isFrontFacing(a, b, c, direction) {\n v0.subVectors(c, b);\n v1.subVectors(a, b);\n\n // strictly front facing\n return v0.cross(v1).dot(direction) < 0 ? true : false;\n };\n }()\n});\nObject.assign(Triangle.prototype, {\n set: function (a, b, c) {\n this.a.copy(a);\n this.b.copy(b);\n this.c.copy(c);\n return this;\n },\n setFromPointsAndIndices: function (points, i0, i1, i2) {\n this.a.copy(points[i0]);\n this.b.copy(points[i1]);\n this.c.copy(points[i2]);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (triangle) {\n this.a.copy(triangle.a);\n this.b.copy(triangle.b);\n this.c.copy(triangle.c);\n return this;\n },\n getArea: function () {\n var v0 = new Vector3();\n var v1 = new Vector3();\n return function getArea() {\n v0.subVectors(this.c, this.b);\n v1.subVectors(this.a, this.b);\n return v0.cross(v1).length() * 0.5;\n };\n }(),\n getMidpoint: function (target) {\n if (target === undefined) {\n console.warn('THREE.Triangle: .getMidpoint() target is now required');\n target = new Vector3();\n }\n return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n },\n getNormal: function (target) {\n return Triangle.getNormal(this.a, this.b, this.c, target);\n },\n getPlane: function (target) {\n if (target === undefined) {\n console.warn('THREE.Triangle: .getPlane() target is now required');\n target = new Vector3();\n }\n return target.setFromCoplanarPoints(this.a, this.b, this.c);\n },\n getBarycoord: function (point, target) {\n return Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n },\n getUV: function (point, uv1, uv2, uv3, target) {\n return Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target);\n },\n containsPoint: function (point) {\n return Triangle.containsPoint(point, this.a, this.b, this.c);\n },\n isFrontFacing: function (direction) {\n return Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n },\n intersectsBox: function (box) {\n return box.intersectsTriangle(this);\n },\n closestPointToPoint: function () {\n var vab = new Vector3();\n var vac = new Vector3();\n var vbc = new Vector3();\n var vap = new Vector3();\n var vbp = new Vector3();\n var vcp = new Vector3();\n return function closestPointToPoint(p, target) {\n if (target === undefined) {\n console.warn('THREE.Triangle: .closestPointToPoint() target is now required');\n target = new Vector3();\n }\n var a = this.a,\n b = this.b,\n c = this.c;\n var v, w;\n\n // algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n // under the accompanying license; see chapter 5.1.5 for detailed explanation.\n // basically, we're distinguishing which of the voronoi regions of the triangle\n // the point lies in with the minimum amount of redundant computation.\n\n vab.subVectors(b, a);\n vac.subVectors(c, a);\n vap.subVectors(p, a);\n var d1 = vab.dot(vap);\n var d2 = vac.dot(vap);\n if (d1 <= 0 && d2 <= 0) {\n // vertex region of A; barycentric coords (1, 0, 0)\n return target.copy(a);\n }\n vbp.subVectors(p, b);\n var d3 = vab.dot(vbp);\n var d4 = vac.dot(vbp);\n if (d3 >= 0 && d4 <= d3) {\n // vertex region of B; barycentric coords (0, 1, 0)\n return target.copy(b);\n }\n var vc = d1 * d4 - d3 * d2;\n if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n v = d1 / (d1 - d3);\n // edge region of AB; barycentric coords (1-v, v, 0)\n return target.copy(a).addScaledVector(vab, v);\n }\n vcp.subVectors(p, c);\n var d5 = vab.dot(vcp);\n var d6 = vac.dot(vcp);\n if (d6 >= 0 && d5 <= d6) {\n // vertex region of C; barycentric coords (0, 0, 1)\n return target.copy(c);\n }\n var vb = d5 * d2 - d1 * d6;\n if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n w = d2 / (d2 - d6);\n // edge region of AC; barycentric coords (1-w, 0, w)\n return target.copy(a).addScaledVector(vac, w);\n }\n var va = d3 * d6 - d5 * d4;\n if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n vbc.subVectors(c, b);\n w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n // edge region of BC; barycentric coords (0, 1-w, w)\n return target.copy(b).addScaledVector(vbc, w); // edge region of BC\n }\n\n // face region\n var denom = 1 / (va + vb + vc);\n // u = va * denom\n v = vb * denom;\n w = vc * denom;\n return target.copy(a).addScaledVector(vab, v).addScaledVector(vac, w);\n };\n }(),\n equals: function (triangle) {\n return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshBasicMaterial';\n this.color = new Color(0xffffff); // emissive\n\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1.0;\n this.aoMap = null;\n this.aoMapIntensity = 1.0;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = 'round';\n this.wireframeLinejoin = 'round';\n this.skinning = false;\n this.morphTargets = false;\n this.lights = false;\n this.setValues(parameters);\n}\nMeshBasicMaterial.prototype = Object.create(Material.prototype);\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\nMeshBasicMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh(geometry, material) {\n Object3D.call(this);\n this.type = 'Mesh';\n this.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n this.material = material !== undefined ? material : new MeshBasicMaterial({\n color: Math.random() * 0xffffff\n });\n this.drawMode = TrianglesDrawMode;\n this.updateMorphTargets();\n}\nMesh.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Mesh,\n isMesh: true,\n setDrawMode: function (value) {\n this.drawMode = value;\n },\n copy: function (source) {\n Object3D.prototype.copy.call(this, source);\n this.drawMode = source.drawMode;\n if (source.morphTargetInfluences !== undefined) {\n this.morphTargetInfluences = source.morphTargetInfluences.slice();\n }\n if (source.morphTargetDictionary !== undefined) {\n this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n }\n return this;\n },\n updateMorphTargets: function () {\n var geometry = this.geometry;\n var m, ml, name;\n if (geometry.isBufferGeometry) {\n var morphAttributes = geometry.morphAttributes;\n var keys = Object.keys(morphAttributes);\n if (keys.length > 0) {\n var morphAttribute = morphAttributes[keys[0]];\n if (morphAttribute !== undefined) {\n this.morphTargetInfluences = [];\n this.morphTargetDictionary = {};\n for (m = 0, ml = morphAttribute.length; m < ml; m++) {\n name = morphAttribute[m].name || String(m);\n this.morphTargetInfluences.push(0);\n this.morphTargetDictionary[name] = m;\n }\n }\n }\n } else {\n var morphTargets = geometry.morphTargets;\n if (morphTargets !== undefined && morphTargets.length > 0) {\n console.error('THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n }\n }\n },\n raycast: function () {\n var inverseMatrix = new Matrix4();\n var ray = new Ray();\n var sphere = new Sphere();\n var vA = new Vector3();\n var vB = new Vector3();\n var vC = new Vector3();\n var tempA = new Vector3();\n var tempB = new Vector3();\n var tempC = new Vector3();\n var morphA = new Vector3();\n var morphB = new Vector3();\n var morphC = new Vector3();\n var uvA = new Vector2();\n var uvB = new Vector2();\n var uvC = new Vector2();\n var intersectionPoint = new Vector3();\n var intersectionPointWorld = new Vector3();\n function checkIntersection(object, material, raycaster, ray, pA, pB, pC, point) {\n var intersect;\n if (material.side === BackSide) {\n intersect = ray.intersectTriangle(pC, pB, pA, true, point);\n } else {\n intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n }\n if (intersect === null) return null;\n intersectionPointWorld.copy(point);\n intersectionPointWorld.applyMatrix4(object.matrixWorld);\n var distance = raycaster.ray.origin.distanceTo(intersectionPointWorld);\n if (distance < raycaster.near || distance > raycaster.far) return null;\n return {\n distance: distance,\n point: intersectionPointWorld.clone(),\n object: object\n };\n }\n function checkBufferGeometryIntersection(object, material, raycaster, ray, position, morphPosition, uv, a, b, c) {\n vA.fromBufferAttribute(position, a);\n vB.fromBufferAttribute(position, b);\n vC.fromBufferAttribute(position, c);\n var morphInfluences = object.morphTargetInfluences;\n if (material.morphTargets && morphPosition && morphInfluences) {\n morphA.set(0, 0, 0);\n morphB.set(0, 0, 0);\n morphC.set(0, 0, 0);\n for (var i = 0, il = morphPosition.length; i < il; i++) {\n var influence = morphInfluences[i];\n var morphAttribute = morphPosition[i];\n if (influence === 0) continue;\n tempA.fromBufferAttribute(morphAttribute, a);\n tempB.fromBufferAttribute(morphAttribute, b);\n tempC.fromBufferAttribute(morphAttribute, c);\n morphA.addScaledVector(tempA.sub(vA), influence);\n morphB.addScaledVector(tempB.sub(vB), influence);\n morphC.addScaledVector(tempC.sub(vC), influence);\n }\n vA.add(morphA);\n vB.add(morphB);\n vC.add(morphC);\n }\n var intersection = checkIntersection(object, material, raycaster, ray, vA, vB, vC, intersectionPoint);\n if (intersection) {\n if (uv) {\n uvA.fromBufferAttribute(uv, a);\n uvB.fromBufferAttribute(uv, b);\n uvC.fromBufferAttribute(uv, c);\n intersection.uv = Triangle.getUV(intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2());\n }\n var face = new Face3(a, b, c);\n Triangle.getNormal(vA, vB, vC, face.normal);\n intersection.face = face;\n }\n return intersection;\n }\n return function raycast(raycaster, intersects) {\n var geometry = this.geometry;\n var material = this.material;\n var matrixWorld = this.matrixWorld;\n if (material === undefined) return;\n\n // Checking boundingSphere distance to ray\n\n if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n sphere.copy(geometry.boundingSphere);\n sphere.applyMatrix4(matrixWorld);\n if (raycaster.ray.intersectsSphere(sphere) === false) return;\n\n //\n\n inverseMatrix.getInverse(matrixWorld);\n ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n\n // Check boundingBox before continuing\n\n if (geometry.boundingBox !== null) {\n if (ray.intersectsBox(geometry.boundingBox) === false) return;\n }\n var intersection;\n if (geometry.isBufferGeometry) {\n var a, b, c;\n var index = geometry.index;\n var position = geometry.attributes.position;\n var morphPosition = geometry.morphAttributes.position;\n var uv = geometry.attributes.uv;\n var groups = geometry.groups;\n var drawRange = geometry.drawRange;\n var i, j, il, jl;\n var group, groupMaterial;\n var start, end;\n if (index !== null) {\n // indexed buffer geometry\n\n if (Array.isArray(material)) {\n for (i = 0, il = groups.length; i < il; i++) {\n group = groups[i];\n groupMaterial = material[group.materialIndex];\n start = Math.max(group.start, drawRange.start);\n end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n for (j = start, jl = end; j < jl; j += 3) {\n a = index.getX(j);\n b = index.getX(j + 1);\n c = index.getX(j + 2);\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3); // triangle number in indexed buffer semantics\n intersection.face.materialIndex = group.materialIndex;\n intersects.push(intersection);\n }\n }\n }\n } else {\n start = Math.max(0, drawRange.start);\n end = Math.min(index.count, drawRange.start + drawRange.count);\n for (i = start, il = end; i < il; i += 3) {\n a = index.getX(i);\n b = index.getX(i + 1);\n c = index.getX(i + 2);\n intersection = checkBufferGeometryIntersection(this, material, raycaster, ray, position, morphPosition, uv, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3); // triangle number in indexed buffer semantics\n intersects.push(intersection);\n }\n }\n }\n } else if (position !== undefined) {\n // non-indexed buffer geometry\n\n if (Array.isArray(material)) {\n for (i = 0, il = groups.length; i < il; i++) {\n group = groups[i];\n groupMaterial = material[group.materialIndex];\n start = Math.max(group.start, drawRange.start);\n end = Math.min(group.start + group.count, drawRange.start + drawRange.count);\n for (j = start, jl = end; j < jl; j += 3) {\n a = j;\n b = j + 1;\n c = j + 2;\n intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(j / 3); // triangle number in non-indexed buffer semantics\n intersection.face.materialIndex = group.materialIndex;\n intersects.push(intersection);\n }\n }\n }\n } else {\n start = Math.max(0, drawRange.start);\n end = Math.min(position.count, drawRange.start + drawRange.count);\n for (i = start, il = end; i < il; i += 3) {\n a = i;\n b = i + 1;\n c = i + 2;\n intersection = checkBufferGeometryIntersection(this, material, raycaster, ray, position, morphPosition, uv, a, b, c);\n if (intersection) {\n intersection.faceIndex = Math.floor(i / 3); // triangle number in non-indexed buffer semantics\n intersects.push(intersection);\n }\n }\n }\n }\n } else if (geometry.isGeometry) {\n var fvA, fvB, fvC;\n var isMultiMaterial = Array.isArray(material);\n var vertices = geometry.vertices;\n var faces = geometry.faces;\n var uvs;\n var faceVertexUvs = geometry.faceVertexUvs[0];\n if (faceVertexUvs.length > 0) uvs = faceVertexUvs;\n for (var f = 0, fl = faces.length; f < fl; f++) {\n var face = faces[f];\n var faceMaterial = isMultiMaterial ? material[face.materialIndex] : material;\n if (faceMaterial === undefined) continue;\n fvA = vertices[face.a];\n fvB = vertices[face.b];\n fvC = vertices[face.c];\n intersection = checkIntersection(this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint);\n if (intersection) {\n if (uvs && uvs[f]) {\n var uvs_f = uvs[f];\n uvA.copy(uvs_f[0]);\n uvB.copy(uvs_f[1]);\n uvC.copy(uvs_f[2]);\n intersection.uv = Triangle.getUV(intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2());\n }\n intersection.face = face;\n intersection.faceIndex = f;\n intersects.push(intersection);\n }\n }\n }\n };\n }(),\n clone: function () {\n return new this.constructor(this.geometry, this.material).copy(this);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground(renderer, state, objects, premultipliedAlpha) {\n var clearColor = new Color(0x000000);\n var clearAlpha = 0;\n var planeMesh;\n var boxMesh;\n // Store the current background texture and its `version`\n // so we can recompile the material accordingly.\n var currentBackground = null;\n var currentBackgroundVersion = 0;\n function render(renderList, scene, camera, forceClear) {\n var background = scene.background;\n\n // Ignore background in AR\n // TODO: Reconsider this.\n\n var vr = renderer.vr;\n var session = vr.getSession && vr.getSession();\n if (session && session.environmentBlendMode === 'additive') {\n background = null;\n }\n if (background === null) {\n setClear(clearColor, clearAlpha);\n currentBackground = null;\n currentBackgroundVersion = 0;\n } else if (background && background.isColor) {\n setClear(background, 1);\n forceClear = true;\n currentBackground = null;\n currentBackgroundVersion = 0;\n }\n if (renderer.autoClear || forceClear) {\n renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n }\n if (background && (background.isCubeTexture || background.isWebGLRenderTargetCube)) {\n if (boxMesh === undefined) {\n boxMesh = new Mesh(new BoxBufferGeometry(1, 1, 1), new ShaderMaterial({\n type: 'BackgroundCubeMaterial',\n uniforms: cloneUniforms(ShaderLib.cube.uniforms),\n vertexShader: ShaderLib.cube.vertexShader,\n fragmentShader: ShaderLib.cube.fragmentShader,\n side: BackSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n boxMesh.geometry.removeAttribute('normal');\n boxMesh.geometry.removeAttribute('uv');\n boxMesh.onBeforeRender = function (renderer, scene, camera) {\n this.matrixWorld.copyPosition(camera.matrixWorld);\n };\n\n // enable code injection for non-built-in material\n Object.defineProperty(boxMesh.material, 'map', {\n get: function () {\n return this.uniforms.tCube.value;\n }\n });\n objects.update(boxMesh);\n }\n var texture = background.isWebGLRenderTargetCube ? background.texture : background;\n boxMesh.material.uniforms.tCube.value = texture;\n boxMesh.material.uniforms.tFlip.value = background.isWebGLRenderTargetCube ? 1 : -1;\n if (currentBackground !== background || currentBackgroundVersion !== texture.version) {\n boxMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = texture.version;\n }\n\n // push to the pre-sorted opaque render list\n renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n } else if (background && background.isTexture) {\n if (planeMesh === undefined) {\n planeMesh = new Mesh(new PlaneBufferGeometry(2, 2), new ShaderMaterial({\n type: 'BackgroundMaterial',\n uniforms: cloneUniforms(ShaderLib.background.uniforms),\n vertexShader: ShaderLib.background.vertexShader,\n fragmentShader: ShaderLib.background.fragmentShader,\n side: FrontSide,\n depthTest: false,\n depthWrite: false,\n fog: false\n }));\n planeMesh.geometry.removeAttribute('normal');\n\n // enable code injection for non-built-in material\n Object.defineProperty(planeMesh.material, 'map', {\n get: function () {\n return this.uniforms.t2D.value;\n }\n });\n objects.update(planeMesh);\n }\n planeMesh.material.uniforms.t2D.value = background;\n if (background.matrixAutoUpdate === true) {\n background.updateMatrix();\n }\n planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n if (currentBackground !== background || currentBackgroundVersion !== background.version) {\n planeMesh.material.needsUpdate = true;\n currentBackground = background;\n currentBackgroundVersion = background.version;\n }\n\n // push to the pre-sorted opaque render list\n renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n }\n }\n function setClear(color, alpha) {\n state.buffers.color.setClear(color.r, color.g, color.b, alpha, premultipliedAlpha);\n }\n return {\n getClearColor: function () {\n return clearColor;\n },\n setClearColor: function (color, alpha) {\n clearColor.set(color);\n clearAlpha = alpha !== undefined ? alpha : 1;\n setClear(clearColor, clearAlpha);\n },\n getClearAlpha: function () {\n return clearAlpha;\n },\n setClearAlpha: function (alpha) {\n clearAlpha = alpha;\n setClear(clearColor, clearAlpha);\n },\n render: render\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n var mode;\n function setMode(value) {\n mode = value;\n }\n function render(start, count) {\n gl.drawArrays(mode, start, count);\n info.update(count, mode);\n }\n function renderInstances(geometry, start, count) {\n var extension;\n if (capabilities.isWebGL2) {\n extension = gl;\n } else {\n extension = extensions.get('ANGLE_instanced_arrays');\n if (extension === null) {\n console.error('THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');\n return;\n }\n }\n extension[capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE'](mode, start, count, geometry.maxInstancedCount);\n info.update(count, mode, geometry.maxInstancedCount);\n }\n\n //\n\n this.setMode = setMode;\n this.render = render;\n this.renderInstances = renderInstances;\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities(gl, extensions, parameters) {\n var maxAnisotropy;\n function getMaxAnisotropy() {\n if (maxAnisotropy !== undefined) return maxAnisotropy;\n var extension = extensions.get('EXT_texture_filter_anisotropic');\n if (extension !== null) {\n maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n } else {\n maxAnisotropy = 0;\n }\n return maxAnisotropy;\n }\n function getMaxPrecision(precision) {\n if (precision === 'highp') {\n if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && gl.getShaderPrecisionFormat(35632, 36338).precision > 0) {\n return 'highp';\n }\n precision = 'mediump';\n }\n if (precision === 'mediump') {\n if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && gl.getShaderPrecisionFormat(35632, 36337).precision > 0) {\n return 'mediump';\n }\n }\n return 'lowp';\n }\n var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n var precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n var maxPrecision = getMaxPrecision(precision);\n if (maxPrecision !== precision) {\n console.warn('THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.');\n precision = maxPrecision;\n }\n var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n var maxTextures = gl.getParameter(34930);\n var maxVertexTextures = gl.getParameter(35660);\n var maxTextureSize = gl.getParameter(3379);\n var maxCubemapSize = gl.getParameter(34076);\n var maxAttributes = gl.getParameter(34921);\n var maxVertexUniforms = gl.getParameter(36347);\n var maxVaryings = gl.getParameter(36348);\n var maxFragmentUniforms = gl.getParameter(36349);\n var vertexTextures = maxVertexTextures > 0;\n var floatFragmentTextures = isWebGL2 || !!extensions.get('OES_texture_float');\n var floatVertexTextures = vertexTextures && floatFragmentTextures;\n var maxSamples = isWebGL2 ? gl.getParameter(36183) : 0;\n return {\n isWebGL2: isWebGL2,\n getMaxAnisotropy: getMaxAnisotropy,\n getMaxPrecision: getMaxPrecision,\n precision: precision,\n logarithmicDepthBuffer: logarithmicDepthBuffer,\n maxTextures: maxTextures,\n maxVertexTextures: maxVertexTextures,\n maxTextureSize: maxTextureSize,\n maxCubemapSize: maxCubemapSize,\n maxAttributes: maxAttributes,\n maxVertexUniforms: maxVertexUniforms,\n maxVaryings: maxVaryings,\n maxFragmentUniforms: maxFragmentUniforms,\n vertexTextures: vertexTextures,\n floatFragmentTextures: floatFragmentTextures,\n floatVertexTextures: floatVertexTextures,\n maxSamples: maxSamples\n };\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n var scope = this,\n globalState = null,\n numGlobalPlanes = 0,\n localClippingEnabled = false,\n renderingShadows = false,\n plane = new Plane(),\n viewNormalMatrix = new Matrix3(),\n uniform = {\n value: null,\n needsUpdate: false\n };\n this.uniform = uniform;\n this.numPlanes = 0;\n this.numIntersection = 0;\n this.init = function (planes, enableLocalClipping, camera) {\n var enabled = planes.length !== 0 || enableLocalClipping ||\n // enable state of previous frame - the clipping code has to\n // run another frame in order to reset the state:\n numGlobalPlanes !== 0 || localClippingEnabled;\n localClippingEnabled = enableLocalClipping;\n globalState = projectPlanes(planes, camera, 0);\n numGlobalPlanes = planes.length;\n return enabled;\n };\n this.beginShadows = function () {\n renderingShadows = true;\n projectPlanes(null);\n };\n this.endShadows = function () {\n renderingShadows = false;\n resetGlobalState();\n };\n this.setState = function (planes, clipIntersection, clipShadows, camera, cache, fromCache) {\n if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n // there's no local clipping\n\n if (renderingShadows) {\n // there's no global clipping\n\n projectPlanes(null);\n } else {\n resetGlobalState();\n }\n } else {\n var nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n lGlobal = nGlobal * 4,\n dstArray = cache.clippingState || null;\n uniform.value = dstArray; // ensure unique state\n\n dstArray = projectPlanes(planes, camera, lGlobal, fromCache);\n for (var i = 0; i !== lGlobal; ++i) {\n dstArray[i] = globalState[i];\n }\n cache.clippingState = dstArray;\n this.numIntersection = clipIntersection ? this.numPlanes : 0;\n this.numPlanes += nGlobal;\n }\n };\n function resetGlobalState() {\n if (uniform.value !== globalState) {\n uniform.value = globalState;\n uniform.needsUpdate = numGlobalPlanes > 0;\n }\n scope.numPlanes = numGlobalPlanes;\n scope.numIntersection = 0;\n }\n function projectPlanes(planes, camera, dstOffset, skipTransform) {\n var nPlanes = planes !== null ? planes.length : 0,\n dstArray = null;\n if (nPlanes !== 0) {\n dstArray = uniform.value;\n if (skipTransform !== true || dstArray === null) {\n var flatSize = dstOffset + nPlanes * 4,\n viewMatrix = camera.matrixWorldInverse;\n viewNormalMatrix.getNormalMatrix(viewMatrix);\n if (dstArray === null || dstArray.length < flatSize) {\n dstArray = new Float32Array(flatSize);\n }\n for (var i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n plane.normal.toArray(dstArray, i4);\n dstArray[i4 + 3] = plane.constant;\n }\n }\n uniform.value = dstArray;\n uniform.needsUpdate = true;\n }\n scope.numPlanes = nPlanes;\n return dstArray;\n }\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions(gl) {\n var extensions = {};\n return {\n get: function (name) {\n if (extensions[name] !== undefined) {\n return extensions[name];\n }\n var extension;\n switch (name) {\n case 'WEBGL_depth_texture':\n extension = gl.getExtension('WEBGL_depth_texture') || gl.getExtension('MOZ_WEBGL_depth_texture') || gl.getExtension('WEBKIT_WEBGL_depth_texture');\n break;\n case 'EXT_texture_filter_anisotropic':\n extension = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic');\n break;\n case 'WEBGL_compressed_texture_s3tc':\n extension = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');\n break;\n case 'WEBGL_compressed_texture_pvrtc':\n extension = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');\n break;\n default:\n extension = gl.getExtension(name);\n }\n if (extension === null) {\n console.warn('THREE.WebGLRenderer: ' + name + ' extension not supported.');\n }\n extensions[name] = extension;\n return extension;\n }\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries(gl, attributes, info) {\n var geometries = {};\n var wireframeAttributes = {};\n function onGeometryDispose(event) {\n var geometry = event.target;\n var buffergeometry = geometries[geometry.id];\n if (buffergeometry.index !== null) {\n attributes.remove(buffergeometry.index);\n }\n for (var name in buffergeometry.attributes) {\n attributes.remove(buffergeometry.attributes[name]);\n }\n geometry.removeEventListener('dispose', onGeometryDispose);\n delete geometries[geometry.id];\n var attribute = wireframeAttributes[buffergeometry.id];\n if (attribute) {\n attributes.remove(attribute);\n delete wireframeAttributes[buffergeometry.id];\n }\n\n //\n\n info.memory.geometries--;\n }\n function get(object, geometry) {\n var buffergeometry = geometries[geometry.id];\n if (buffergeometry) return buffergeometry;\n geometry.addEventListener('dispose', onGeometryDispose);\n if (geometry.isBufferGeometry) {\n buffergeometry = geometry;\n } else if (geometry.isGeometry) {\n if (geometry._bufferGeometry === undefined) {\n geometry._bufferGeometry = new BufferGeometry().setFromObject(object);\n }\n buffergeometry = geometry._bufferGeometry;\n }\n geometries[geometry.id] = buffergeometry;\n info.memory.geometries++;\n return buffergeometry;\n }\n function update(geometry) {\n var index = geometry.index;\n var geometryAttributes = geometry.attributes;\n if (index !== null) {\n attributes.update(index, 34963);\n }\n for (var name in geometryAttributes) {\n attributes.update(geometryAttributes[name], 34962);\n }\n\n // morph targets\n\n var morphAttributes = geometry.morphAttributes;\n for (var name in morphAttributes) {\n var array = morphAttributes[name];\n for (var i = 0, l = array.length; i < l; i++) {\n attributes.update(array[i], 34962);\n }\n }\n }\n function getWireframeAttribute(geometry) {\n var attribute = wireframeAttributes[geometry.id];\n if (attribute) return attribute;\n var indices = [];\n var geometryIndex = geometry.index;\n var geometryAttributes = geometry.attributes;\n\n // console.time( 'wireframe' );\n\n if (geometryIndex !== null) {\n var array = geometryIndex.array;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var a = array[i + 0];\n var b = array[i + 1];\n var c = array[i + 2];\n indices.push(a, b, b, c, c, a);\n }\n } else {\n var array = geometryAttributes.position.array;\n for (var i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n var a = i + 0;\n var b = i + 1;\n var c = i + 2;\n indices.push(a, b, b, c, c, a);\n }\n }\n\n // console.timeEnd( 'wireframe' );\n\n attribute = new (arrayMax(indices) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n attributes.update(attribute, 34963);\n wireframeAttributes[geometry.id] = attribute;\n return attribute;\n }\n return {\n get: get,\n update: update,\n getWireframeAttribute: getWireframeAttribute\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n var mode;\n function setMode(value) {\n mode = value;\n }\n var type, bytesPerElement;\n function setIndex(value) {\n type = value.type;\n bytesPerElement = value.bytesPerElement;\n }\n function render(start, count) {\n gl.drawElements(mode, count, type, start * bytesPerElement);\n info.update(count, mode);\n }\n function renderInstances(geometry, start, count) {\n var extension;\n if (capabilities.isWebGL2) {\n extension = gl;\n } else {\n var extension = extensions.get('ANGLE_instanced_arrays');\n if (extension === null) {\n console.error('THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');\n return;\n }\n }\n extension[capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE'](mode, count, type, start * bytesPerElement, geometry.maxInstancedCount);\n info.update(count, mode, geometry.maxInstancedCount);\n }\n\n //\n\n this.setMode = setMode;\n this.setIndex = setIndex;\n this.render = render;\n this.renderInstances = renderInstances;\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo(gl) {\n var memory = {\n geometries: 0,\n textures: 0\n };\n var render = {\n frame: 0,\n calls: 0,\n triangles: 0,\n points: 0,\n lines: 0\n };\n function update(count, mode, instanceCount) {\n instanceCount = instanceCount || 1;\n render.calls++;\n switch (mode) {\n case 4:\n render.triangles += instanceCount * (count / 3);\n break;\n case 5:\n case 6:\n render.triangles += instanceCount * (count - 2);\n break;\n case 1:\n render.lines += instanceCount * (count / 2);\n break;\n case 3:\n render.lines += instanceCount * (count - 1);\n break;\n case 2:\n render.lines += instanceCount * count;\n break;\n case 0:\n render.points += instanceCount * count;\n break;\n default:\n console.error('THREE.WebGLInfo: Unknown draw mode:', mode);\n break;\n }\n }\n function reset() {\n render.frame++;\n render.calls = 0;\n render.triangles = 0;\n render.points = 0;\n render.lines = 0;\n }\n return {\n memory: memory,\n render: render,\n programs: null,\n autoReset: true,\n reset: reset,\n update: update\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort(a, b) {\n return Math.abs(b[1]) - Math.abs(a[1]);\n}\nfunction WebGLMorphtargets(gl) {\n var influencesList = {};\n var morphInfluences = new Float32Array(8);\n function update(object, geometry, material, program) {\n var objectInfluences = object.morphTargetInfluences;\n var length = objectInfluences.length;\n var influences = influencesList[geometry.id];\n if (influences === undefined) {\n // initialise list\n\n influences = [];\n for (var i = 0; i < length; i++) {\n influences[i] = [i, 0];\n }\n influencesList[geometry.id] = influences;\n }\n var morphTargets = material.morphTargets && geometry.morphAttributes.position;\n var morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n // Remove current morphAttributes\n\n for (var i = 0; i < length; i++) {\n var influence = influences[i];\n if (influence[1] !== 0) {\n if (morphTargets) geometry.removeAttribute('morphTarget' + i);\n if (morphNormals) geometry.removeAttribute('morphNormal' + i);\n }\n }\n\n // Collect influences\n\n for (var i = 0; i < length; i++) {\n var influence = influences[i];\n influence[0] = i;\n influence[1] = objectInfluences[i];\n }\n influences.sort(absNumericalSort);\n\n // Add morphAttributes\n\n for (var i = 0; i < 8; i++) {\n var influence = influences[i];\n if (influence) {\n var index = influence[0];\n var value = influence[1];\n if (value) {\n if (morphTargets) geometry.addAttribute('morphTarget' + i, morphTargets[index]);\n if (morphNormals) geometry.addAttribute('morphNormal' + i, morphNormals[index]);\n morphInfluences[i] = value;\n continue;\n }\n }\n morphInfluences[i] = 0;\n }\n program.getUniforms().setValue(gl, 'morphTargetInfluences', morphInfluences);\n }\n return {\n update: update\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects(geometries, info) {\n var updateList = {};\n function update(object) {\n var frame = info.render.frame;\n var geometry = object.geometry;\n var buffergeometry = geometries.get(object, geometry);\n\n // Update once per frame\n\n if (updateList[buffergeometry.id] !== frame) {\n if (geometry.isGeometry) {\n buffergeometry.updateFromObject(object);\n }\n geometries.update(buffergeometry);\n updateList[buffergeometry.id] = frame;\n }\n return buffergeometry;\n }\n function dispose() {\n updateList = {};\n }\n return {\n update: update,\n dispose: dispose\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n images = images !== undefined ? images : [];\n mapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n format = format !== undefined ? format : RGBFormat;\n Texture.call(this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.flipY = false;\n}\nCubeTexture.prototype = Object.create(Texture.prototype);\nCubeTexture.prototype.constructor = CubeTexture;\nCubeTexture.prototype.isCubeTexture = true;\nObject.defineProperty(CubeTexture.prototype, 'images', {\n get: function () {\n return this.image;\n },\n set: function (value) {\n this.image = value;\n }\n});\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray(data, width, height, depth) {\n Texture.call(this, null);\n this.image = {\n data: data,\n width: width,\n height: height,\n depth: depth\n };\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n}\nDataTexture2DArray.prototype = Object.create(Texture.prototype);\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D(data, width, height, depth) {\n // We're going to add .setXXX() methods for setting properties later.\n // Users can still set in DataTexture3D directly.\n //\n //\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n // \ttexture.anisotropy = 16;\n //\n // See #14839\n\n Texture.call(this, null);\n this.image = {\n data: data,\n width: width,\n height: height,\n depth: depth\n };\n this.magFilter = NearestFilter;\n this.minFilter = NearestFilter;\n this.wrapR = ClampToEdgeWrapping;\n this.generateMipmaps = false;\n this.flipY = false;\n}\nDataTexture3D.prototype = Object.create(Texture.prototype);\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array(16);\nvar mat3array = new Float32Array(9);\nvar mat2array = new Float32Array(4);\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten(array, nBlocks, blockSize) {\n var firstElem = array[0];\n if (firstElem <= 0 || firstElem > 0) return array;\n // unoptimized: ! isNaN( firstElem )\n // see http://jacksondunstan.com/articles/983\n\n var n = nBlocks * blockSize,\n r = arrayCacheF32[n];\n if (r === undefined) {\n r = new Float32Array(n);\n arrayCacheF32[n] = r;\n }\n if (nBlocks !== 0) {\n firstElem.toArray(r, 0);\n for (var i = 1, offset = 0; i !== nBlocks; ++i) {\n offset += blockSize;\n array[i].toArray(r, offset);\n }\n }\n return r;\n}\nfunction arraysEqual(a, b) {\n if (a.length !== b.length) return false;\n for (var i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\nfunction copyArray(a, b) {\n for (var i = 0, l = b.length; i < l; i++) {\n a[i] = b[i];\n }\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits(textures, n) {\n var r = arrayCacheI32[n];\n if (r === undefined) {\n r = new Int32Array(n);\n arrayCacheI32[n] = r;\n }\n for (var i = 0; i !== n; ++i) r[i] = textures.allocateTextureUnit();\n return r;\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f(gl, v) {\n var cache = this.cache;\n if (cache[0] === v) return;\n gl.uniform1f(this.addr, v);\n cache[0] = v;\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f(gl, v) {\n var cache = this.cache;\n if (v.x !== undefined) {\n if (cache[0] !== v.x || cache[1] !== v.y) {\n gl.uniform2f(this.addr, v.x, v.y);\n cache[0] = v.x;\n cache[1] = v.y;\n }\n } else {\n if (arraysEqual(cache, v)) return;\n gl.uniform2fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV3f(gl, v) {\n var cache = this.cache;\n if (v.x !== undefined) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z) {\n gl.uniform3f(this.addr, v.x, v.y, v.z);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n }\n } else if (v.r !== undefined) {\n if (cache[0] !== v.r || cache[1] !== v.g || cache[2] !== v.b) {\n gl.uniform3f(this.addr, v.r, v.g, v.b);\n cache[0] = v.r;\n cache[1] = v.g;\n cache[2] = v.b;\n }\n } else {\n if (arraysEqual(cache, v)) return;\n gl.uniform3fv(this.addr, v);\n copyArray(cache, v);\n }\n}\nfunction setValueV4f(gl, v) {\n var cache = this.cache;\n if (v.x !== undefined) {\n if (cache[0] !== v.x || cache[1] !== v.y || cache[2] !== v.z || cache[3] !== v.w) {\n gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n cache[0] = v.x;\n cache[1] = v.y;\n cache[2] = v.z;\n cache[3] = v.w;\n }\n } else {\n if (arraysEqual(cache, v)) return;\n gl.uniform4fv(this.addr, v);\n copyArray(cache, v);\n }\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2(gl, v) {\n var cache = this.cache;\n var elements = v.elements;\n if (elements === undefined) {\n if (arraysEqual(cache, v)) return;\n gl.uniformMatrix2fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements)) return;\n mat2array.set(elements);\n gl.uniformMatrix2fv(this.addr, false, mat2array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM3(gl, v) {\n var cache = this.cache;\n var elements = v.elements;\n if (elements === undefined) {\n if (arraysEqual(cache, v)) return;\n gl.uniformMatrix3fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements)) return;\n mat3array.set(elements);\n gl.uniformMatrix3fv(this.addr, false, mat3array);\n copyArray(cache, elements);\n }\n}\nfunction setValueM4(gl, v) {\n var cache = this.cache;\n var elements = v.elements;\n if (elements === undefined) {\n if (arraysEqual(cache, v)) return;\n gl.uniformMatrix4fv(this.addr, false, v);\n copyArray(cache, v);\n } else {\n if (arraysEqual(cache, elements)) return;\n mat4array.set(elements);\n gl.uniformMatrix4fv(this.addr, false, mat4array);\n copyArray(cache, elements);\n }\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1(gl, v, textures) {\n var cache = this.cache;\n var unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTexture2D(v || emptyTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, textures) {\n var cache = this.cache;\n var unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture2DArray(v || emptyTexture2dArray, unit);\n}\nfunction setValueT3D1(gl, v, textures) {\n var cache = this.cache;\n var unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.setTexture3D(v || emptyTexture3d, unit);\n}\nfunction setValueT6(gl, v, textures) {\n var cache = this.cache;\n var unit = textures.allocateTextureUnit();\n if (cache[0] !== unit) {\n gl.uniform1i(this.addr, unit);\n cache[0] = unit;\n }\n textures.safeSetTextureCube(v || emptyCubeTexture, unit);\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i(gl, v) {\n var cache = this.cache;\n if (cache[0] === v) return;\n gl.uniform1i(this.addr, v);\n cache[0] = v;\n}\nfunction setValueV2i(gl, v) {\n var cache = this.cache;\n if (arraysEqual(cache, v)) return;\n gl.uniform2iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV3i(gl, v) {\n var cache = this.cache;\n if (arraysEqual(cache, v)) return;\n gl.uniform3iv(this.addr, v);\n copyArray(cache, v);\n}\nfunction setValueV4i(gl, v) {\n var cache = this.cache;\n if (arraysEqual(cache, v)) return;\n gl.uniform4iv(this.addr, v);\n copyArray(cache, v);\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter(type) {\n switch (type) {\n case 0x1406:\n return setValueV1f;\n // FLOAT\n case 0x8b50:\n return setValueV2f;\n // _VEC2\n case 0x8b51:\n return setValueV3f;\n // _VEC3\n case 0x8b52:\n return setValueV4f;\n // _VEC4\n\n case 0x8b5a:\n return setValueM2;\n // _MAT2\n case 0x8b5b:\n return setValueM3;\n // _MAT3\n case 0x8b5c:\n return setValueM4;\n // _MAT4\n\n case 0x8b5e:\n case 0x8d66:\n return setValueT1;\n // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n case 0x8b5f:\n return setValueT3D1;\n // SAMPLER_3D\n case 0x8b60:\n return setValueT6;\n // SAMPLER_CUBE\n case 0x8DC1:\n return setValueT2DArray1;\n // SAMPLER_2D_ARRAY\n\n case 0x1404:\n case 0x8b56:\n return setValueV1i;\n // INT, BOOL\n case 0x8b53:\n case 0x8b57:\n return setValueV2i;\n // _VEC2\n case 0x8b54:\n case 0x8b58:\n return setValueV3i;\n // _VEC3\n case 0x8b55:\n case 0x8b59:\n return setValueV4i;\n // _VEC4\n }\n}\n\n// Array of scalars\nfunction setValueV1fArray(gl, v) {\n gl.uniform1fv(this.addr, v);\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray(gl, v) {\n gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n gl.uniform4iv(this.addr, v);\n}\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray(gl, v) {\n var data = flatten(v, this.size, 2);\n gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n var data = flatten(v, this.size, 3);\n gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n var data = flatten(v, this.size, 4);\n gl.uniform4fv(this.addr, data);\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array(gl, v) {\n var data = flatten(v, this.size, 4);\n gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n var data = flatten(v, this.size, 9);\n gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n var data = flatten(v, this.size, 16);\n gl.uniformMatrix4fv(this.addr, false, data);\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array(gl, v, textures) {\n var n = v.length;\n var units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (var i = 0; i !== n; ++i) {\n textures.safeSetTexture2D(v[i] || emptyTexture, units[i]);\n }\n}\nfunction setValueT6Array(gl, v, textures) {\n var n = v.length;\n var units = allocTexUnits(textures, n);\n gl.uniform1iv(this.addr, units);\n for (var i = 0; i !== n; ++i) {\n textures.safeSetTextureCube(v[i] || emptyCubeTexture, units[i]);\n }\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter(type) {\n switch (type) {\n case 0x1406:\n return setValueV1fArray;\n // FLOAT\n case 0x8b50:\n return setValueV2fArray;\n // _VEC2\n case 0x8b51:\n return setValueV3fArray;\n // _VEC3\n case 0x8b52:\n return setValueV4fArray;\n // _VEC4\n\n case 0x8b5a:\n return setValueM2Array;\n // _MAT2\n case 0x8b5b:\n return setValueM3Array;\n // _MAT3\n case 0x8b5c:\n return setValueM4Array;\n // _MAT4\n\n case 0x8b5e:\n return setValueT1Array;\n // SAMPLER_2D\n case 0x8b60:\n return setValueT6Array;\n // SAMPLER_CUBE\n\n case 0x1404:\n case 0x8b56:\n return setValueV1iArray;\n // INT, BOOL\n case 0x8b53:\n case 0x8b57:\n return setValueV2iArray;\n // _VEC2\n case 0x8b54:\n case 0x8b58:\n return setValueV3iArray;\n // _VEC3\n case 0x8b55:\n case 0x8b59:\n return setValueV4iArray;\n // _VEC4\n }\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.setValue = getSingularSetter(activeInfo.type);\n\n // this.path = activeInfo.name; // DEBUG\n}\n\nfunction PureArrayUniform(id, activeInfo, addr) {\n this.id = id;\n this.addr = addr;\n this.cache = [];\n this.size = activeInfo.size;\n this.setValue = getPureArraySetter(activeInfo.type);\n\n // this.path = activeInfo.name; // DEBUG\n}\n\nPureArrayUniform.prototype.updateCache = function (data) {\n var cache = this.cache;\n if (data instanceof Float32Array && cache.length !== data.length) {\n this.cache = new Float32Array(data.length);\n }\n copyArray(cache, data);\n};\nfunction StructuredUniform(id) {\n this.id = id;\n this.seq = [];\n this.map = {};\n}\nStructuredUniform.prototype.setValue = function (gl, value, textures) {\n var seq = this.seq;\n for (var i = 0, n = seq.length; i !== n; ++i) {\n var u = seq[i];\n u.setValue(gl, value[u.id], textures);\n }\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform(container, uniformObject) {\n container.seq.push(uniformObject);\n container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n var path = activeInfo.name,\n pathLength = path.length;\n\n // reset RegExp object, because of the early exit of a previous run\n RePathPart.lastIndex = 0;\n while (true) {\n var match = RePathPart.exec(path),\n matchEnd = RePathPart.lastIndex,\n id = match[1],\n idIsIndex = match[2] === ']',\n subscript = match[3];\n if (idIsIndex) id = id | 0; // convert to integer\n\n if (subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength) {\n // bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n addUniform(container, subscript === undefined ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n break;\n } else {\n // step into inner node / create it in case it doesn't exist\n\n var map = container.map,\n next = map[id];\n if (next === undefined) {\n next = new StructuredUniform(id);\n addUniform(container, next);\n }\n container = next;\n }\n }\n}\n\n// Root Container\n\nfunction WebGLUniforms(gl, program) {\n this.seq = [];\n this.map = {};\n var n = gl.getProgramParameter(program, 35718);\n for (var i = 0; i < n; ++i) {\n var info = gl.getActiveUniform(program, i),\n addr = gl.getUniformLocation(program, info.name);\n parseUniform(info, addr, this);\n }\n}\nWebGLUniforms.prototype.setValue = function (gl, name, value, textures) {\n var u = this.map[name];\n if (u !== undefined) u.setValue(gl, value, textures);\n};\nWebGLUniforms.prototype.setOptional = function (gl, object, name) {\n var v = object[name];\n if (v !== undefined) this.setValue(gl, name, v);\n};\n\n// Static interface\n\nWebGLUniforms.upload = function (gl, seq, values, textures) {\n for (var i = 0, n = seq.length; i !== n; ++i) {\n var u = seq[i],\n v = values[u.id];\n if (v.needsUpdate !== false) {\n // note: always updating when .needsUpdate is undefined\n u.setValue(gl, v.value, textures);\n }\n }\n};\nWebGLUniforms.seqWithValue = function (seq, values) {\n var r = [];\n for (var i = 0, n = seq.length; i !== n; ++i) {\n var u = seq[i];\n if (u.id in values) r.push(u);\n }\n return r;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers(string) {\n var lines = string.split('\\n');\n for (var i = 0; i < lines.length; i++) {\n lines[i] = i + 1 + ': ' + lines[i];\n }\n return lines.join('\\n');\n}\nfunction WebGLShader(gl, type, string, debug) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, string);\n gl.compileShader(shader);\n if (debug === true) {\n if (gl.getShaderParameter(shader, 35713) === false) {\n console.error('THREE.WebGLShader: Shader couldn\\'t compile.');\n }\n if (gl.getShaderInfoLog(shader) !== '') {\n console.warn('THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog(shader), addLineNumbers(string));\n }\n }\n\n // --enable-privileged-webgl-extension\n // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n return shader;\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\nfunction getEncodingComponents(encoding) {\n switch (encoding) {\n case LinearEncoding:\n return ['Linear', '( value )'];\n case sRGBEncoding:\n return ['sRGB', '( value )'];\n case RGBEEncoding:\n return ['RGBE', '( value )'];\n case RGBM7Encoding:\n return ['RGBM', '( value, 7.0 )'];\n case RGBM16Encoding:\n return ['RGBM', '( value, 16.0 )'];\n case RGBDEncoding:\n return ['RGBD', '( value, 256.0 )'];\n case GammaEncoding:\n return ['Gamma', '( value, float( GAMMA_FACTOR ) )'];\n default:\n throw new Error('unsupported encoding: ' + encoding);\n }\n}\nfunction getTexelDecodingFunction(functionName, encoding) {\n var components = getEncodingComponents(encoding);\n return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[0] + 'ToLinear' + components[1] + '; }';\n}\nfunction getTexelEncodingFunction(functionName, encoding) {\n var components = getEncodingComponents(encoding);\n return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[0] + components[1] + '; }';\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n var toneMappingName;\n switch (toneMapping) {\n case LinearToneMapping:\n toneMappingName = 'Linear';\n break;\n case ReinhardToneMapping:\n toneMappingName = 'Reinhard';\n break;\n case Uncharted2ToneMapping:\n toneMappingName = 'Uncharted2';\n break;\n case CineonToneMapping:\n toneMappingName = 'OptimizedCineon';\n break;\n case ACESFilmicToneMapping:\n toneMappingName = 'ACESFilmic';\n break;\n default:\n throw new Error('unsupported toneMapping: ' + toneMapping);\n }\n return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n}\nfunction generateExtensions(extensions, parameters, rendererExtensions) {\n extensions = extensions || {};\n var chunks = [extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap && !parameters.objectSpaceNormalMap || parameters.flatShading ? '#extension GL_OES_standard_derivatives : enable' : '', (extensions.fragDepth || parameters.logarithmicDepthBuffer) && rendererExtensions.get('EXT_frag_depth') ? '#extension GL_EXT_frag_depth : enable' : '', extensions.drawBuffers && rendererExtensions.get('WEBGL_draw_buffers') ? '#extension GL_EXT_draw_buffers : require' : '', (extensions.shaderTextureLOD || parameters.envMap) && rendererExtensions.get('EXT_shader_texture_lod') ? '#extension GL_EXT_shader_texture_lod : enable' : ''];\n return chunks.filter(filterEmptyLine).join('\\n');\n}\nfunction generateDefines(defines) {\n var chunks = [];\n for (var name in defines) {\n var value = defines[name];\n if (value === false) continue;\n chunks.push('#define ' + name + ' ' + value);\n }\n return chunks.join('\\n');\n}\nfunction fetchAttributeLocations(gl, program) {\n var attributes = {};\n var n = gl.getProgramParameter(program, 35721);\n for (var i = 0; i < n; i++) {\n var info = gl.getActiveAttrib(program, i);\n var name = info.name;\n\n // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n attributes[name] = gl.getAttribLocation(program, name);\n }\n return attributes;\n}\nfunction filterEmptyLine(string) {\n return string !== '';\n}\nfunction replaceLightNums(string, parameters) {\n return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nfunction parseIncludes(string) {\n var pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n function replace(match, include) {\n var replace = ShaderChunk[include];\n if (replace === undefined) {\n throw new Error('Can not resolve #include <' + include + '>');\n }\n return parseIncludes(replace);\n }\n return string.replace(pattern, replace);\n}\nfunction unrollLoops(string) {\n var pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n function replace(match, start, end, snippet) {\n var unroll = '';\n for (var i = parseInt(start); i < parseInt(end); i++) {\n unroll += snippet.replace(/\\[ i \\]/g, '[ ' + i + ' ]');\n }\n return unroll;\n }\n return string.replace(pattern, replace);\n}\nfunction WebGLProgram(renderer, extensions, code, material, shader, parameters, capabilities, textures) {\n var gl = renderer.context;\n var defines = material.defines;\n var vertexShader = shader.vertexShader;\n var fragmentShader = shader.fragmentShader;\n var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n if (parameters.shadowMapType === PCFShadowMap) {\n shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n }\n var envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n var envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n if (parameters.envMap) {\n switch (material.envMap.mapping) {\n case CubeReflectionMapping:\n case CubeRefractionMapping:\n envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n break;\n case CubeUVReflectionMapping:\n case CubeUVRefractionMapping:\n envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n break;\n case EquirectangularReflectionMapping:\n case EquirectangularRefractionMapping:\n envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n break;\n case SphericalReflectionMapping:\n envMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n break;\n }\n switch (material.envMap.mapping) {\n case CubeRefractionMapping:\n case EquirectangularRefractionMapping:\n envMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n break;\n }\n switch (material.combine) {\n case MultiplyOperation:\n envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n break;\n case MixOperation:\n envMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n break;\n case AddOperation:\n envMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n break;\n }\n }\n var gammaFactorDefine = renderer.gammaFactor > 0 ? renderer.gammaFactor : 1.0;\n\n // console.log( 'building new program ' );\n\n //\n\n var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions(material.extensions, parameters, extensions);\n var customDefines = generateDefines(defines);\n\n //\n\n var program = gl.createProgram();\n var prefixVertex, prefixFragment;\n if (material.isRawShaderMaterial) {\n prefixVertex = [customDefines].filter(filterEmptyLine).join('\\n');\n if (prefixVertex.length > 0) {\n prefixVertex += '\\n';\n }\n prefixFragment = [customExtensions, customDefines].filter(filterEmptyLine).join('\\n');\n if (prefixFragment.length > 0) {\n prefixFragment += '\\n';\n }\n } else {\n prefixVertex = ['precision ' + parameters.precision + ' float;', 'precision ' + parameters.precision + ' int;', '#define SHADER_NAME ' + shader.name, customDefines, parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', '#define GAMMA_FACTOR ' + gammaFactorDefine, '#define MAX_BONES ' + parameters.maxBones, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors ? '#define USE_COLOR' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.skinning ? '#define USE_SKINNING' : '', parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && (capabilities.isWebGL2 || extensions.get('EXT_frag_depth')) ? '#define USE_LOGDEPTHBUF_EXT' : '', 'uniform mat4 modelMatrix;', 'uniform mat4 modelViewMatrix;', 'uniform mat4 projectionMatrix;', 'uniform mat4 viewMatrix;', 'uniform mat3 normalMatrix;', 'uniform vec3 cameraPosition;', 'attribute vec3 position;', 'attribute vec3 normal;', 'attribute vec2 uv;', '#ifdef USE_TANGENT', '\tattribute vec4 tangent;', '#endif', '#ifdef USE_COLOR', '\tattribute vec3 color;', '#endif', '#ifdef USE_MORPHTARGETS', '\tattribute vec3 morphTarget0;', '\tattribute vec3 morphTarget1;', '\tattribute vec3 morphTarget2;', '\tattribute vec3 morphTarget3;', '\t#ifdef USE_MORPHNORMALS', '\t\tattribute vec3 morphNormal0;', '\t\tattribute vec3 morphNormal1;', '\t\tattribute vec3 morphNormal2;', '\t\tattribute vec3 morphNormal3;', '\t#else', '\t\tattribute vec3 morphTarget4;', '\t\tattribute vec3 morphTarget5;', '\t\tattribute vec3 morphTarget6;', '\t\tattribute vec3 morphTarget7;', '\t#endif', '#endif', '#ifdef USE_SKINNING', '\tattribute vec4 skinIndex;', '\tattribute vec4 skinWeight;', '#endif', '\\n'].filter(filterEmptyLine).join('\\n');\n prefixFragment = [customExtensions, 'precision ' + parameters.precision + ' float;', 'precision ' + parameters.precision + ' int;', '#define SHADER_NAME ' + shader.name, customDefines, parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + (parameters.alphaTest % 1 ? '' : '.0') : '',\n // add '.0' if integer\n\n '#define GAMMA_FACTOR ' + gammaFactorDefine, parameters.useFog && parameters.fog ? '#define USE_FOG' : '', parameters.useFog && parameters.fogExp ? '#define FOG_EXP2' : '', parameters.map ? '#define USE_MAP' : '', parameters.matcap ? '#define USE_MATCAP' : '', parameters.envMap ? '#define USE_ENVMAP' : '', parameters.envMap ? '#define ' + envMapTypeDefine : '', parameters.envMap ? '#define ' + envMapModeDefine : '', parameters.envMap ? '#define ' + envMapBlendingDefine : '', parameters.lightMap ? '#define USE_LIGHTMAP' : '', parameters.aoMap ? '#define USE_AOMAP' : '', parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', parameters.bumpMap ? '#define USE_BUMPMAP' : '', parameters.normalMap ? '#define USE_NORMALMAP' : '', parameters.normalMap && parameters.objectSpaceNormalMap ? '#define OBJECTSPACE_NORMALMAP' : '', parameters.specularMap ? '#define USE_SPECULARMAP' : '', parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', parameters.alphaMap ? '#define USE_ALPHAMAP' : '', parameters.vertexTangents ? '#define USE_TANGENT' : '', parameters.vertexColors ? '#define USE_COLOR' : '', parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', parameters.flatShading ? '#define FLAT_SHADED' : '', parameters.doubleSided ? '#define DOUBLE_SIDED' : '', parameters.flipSided ? '#define FLIP_SIDED' : '', parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', parameters.logarithmicDepthBuffer && (capabilities.isWebGL2 || extensions.get('EXT_frag_depth')) ? '#define USE_LOGDEPTHBUF_EXT' : '', parameters.envMap && (capabilities.isWebGL2 || extensions.get('EXT_shader_texture_lod')) ? '#define TEXTURE_LOD_EXT' : '', 'uniform mat4 viewMatrix;', 'uniform vec3 cameraPosition;', parameters.toneMapping !== NoToneMapping ? '#define TONE_MAPPING' : '', parameters.toneMapping !== NoToneMapping ? ShaderChunk['tonemapping_pars_fragment'] : '',\n // this code is required here because it is used by the toneMapping() function defined below\n parameters.toneMapping !== NoToneMapping ? getToneMappingFunction('toneMapping', parameters.toneMapping) : '', parameters.dithering ? '#define DITHERING' : '', parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ? ShaderChunk['encodings_pars_fragment'] : '',\n // this code is required here because it is used by the various encoding/decoding function defined below\n parameters.mapEncoding ? getTexelDecodingFunction('mapTexelToLinear', parameters.mapEncoding) : '', parameters.matcapEncoding ? getTexelDecodingFunction('matcapTexelToLinear', parameters.matcapEncoding) : '', parameters.envMapEncoding ? getTexelDecodingFunction('envMapTexelToLinear', parameters.envMapEncoding) : '', parameters.emissiveMapEncoding ? getTexelDecodingFunction('emissiveMapTexelToLinear', parameters.emissiveMapEncoding) : '', parameters.outputEncoding ? getTexelEncodingFunction('linearToOutputTexel', parameters.outputEncoding) : '', parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', '\\n'].filter(filterEmptyLine).join('\\n');\n }\n vertexShader = parseIncludes(vertexShader);\n vertexShader = replaceLightNums(vertexShader, parameters);\n vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n fragmentShader = parseIncludes(fragmentShader);\n fragmentShader = replaceLightNums(fragmentShader, parameters);\n fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n vertexShader = unrollLoops(vertexShader);\n fragmentShader = unrollLoops(fragmentShader);\n if (capabilities.isWebGL2 && !material.isRawShaderMaterial) {\n var isGLSL3ShaderMaterial = false;\n var versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n if (material.isShaderMaterial && vertexShader.match(versionRegex) !== null && fragmentShader.match(versionRegex) !== null) {\n isGLSL3ShaderMaterial = true;\n vertexShader = vertexShader.replace(versionRegex, '');\n fragmentShader = fragmentShader.replace(versionRegex, '');\n }\n\n // GLSL 3.0 conversion\n prefixVertex = ['#version 300 es\\n', '#define attribute in', '#define varying out', '#define texture2D texture'].join('\\n') + '\\n' + prefixVertex;\n prefixFragment = ['#version 300 es\\n', '#define varying in', isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', '#define gl_FragDepthEXT gl_FragDepth', '#define texture2D texture', '#define textureCube texture', '#define texture2DProj textureProj', '#define texture2DLodEXT textureLod', '#define texture2DProjLodEXT textureProjLod', '#define textureCubeLodEXT textureLod', '#define texture2DGradEXT textureGrad', '#define texture2DProjGradEXT textureProjGrad', '#define textureCubeGradEXT textureGrad'].join('\\n') + '\\n' + prefixFragment;\n }\n var vertexGlsl = prefixVertex + vertexShader;\n var fragmentGlsl = prefixFragment + fragmentShader;\n\n // console.log( '*VERTEX*', vertexGlsl );\n // console.log( '*FRAGMENT*', fragmentGlsl );\n\n var glVertexShader = WebGLShader(gl, 35633, vertexGlsl, renderer.debug.checkShaderErrors);\n var glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl, renderer.debug.checkShaderErrors);\n gl.attachShader(program, glVertexShader);\n gl.attachShader(program, glFragmentShader);\n\n // Force a particular attribute to index 0.\n\n if (material.index0AttributeName !== undefined) {\n gl.bindAttribLocation(program, 0, material.index0AttributeName);\n } else if (parameters.morphTargets === true) {\n // programs with morphTargets displace position out of attribute 0\n gl.bindAttribLocation(program, 0, 'position');\n }\n gl.linkProgram(program);\n\n // check for link errors\n if (renderer.debug.checkShaderErrors) {\n var programLog = gl.getProgramInfoLog(program).trim();\n var vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n var fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n var runnable = true;\n var haveDiagnostics = true;\n\n // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n if (gl.getProgramParameter(program, 35714) === false) {\n runnable = false;\n console.error('THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter(program, 35715), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog);\n } else if (programLog !== '') {\n console.warn('THREE.WebGLProgram: gl.getProgramInfoLog()', programLog);\n } else if (vertexLog === '' || fragmentLog === '') {\n haveDiagnostics = false;\n }\n if (haveDiagnostics) {\n this.diagnostics = {\n runnable: runnable,\n material: material,\n programLog: programLog,\n vertexShader: {\n log: vertexLog,\n prefix: prefixVertex\n },\n fragmentShader: {\n log: fragmentLog,\n prefix: prefixFragment\n }\n };\n }\n }\n\n // clean up\n\n gl.deleteShader(glVertexShader);\n gl.deleteShader(glFragmentShader);\n\n // set up caching for uniform locations\n\n var cachedUniforms;\n this.getUniforms = function () {\n if (cachedUniforms === undefined) {\n cachedUniforms = new WebGLUniforms(gl, program, textures);\n }\n return cachedUniforms;\n };\n\n // set up caching for attribute locations\n\n var cachedAttributes;\n this.getAttributes = function () {\n if (cachedAttributes === undefined) {\n cachedAttributes = fetchAttributeLocations(gl, program);\n }\n return cachedAttributes;\n };\n\n // free resource\n\n this.destroy = function () {\n gl.deleteProgram(program);\n this.program = undefined;\n };\n\n // DEPRECATED\n\n Object.defineProperties(this, {\n uniforms: {\n get: function () {\n console.warn('THREE.WebGLProgram: .uniforms is now .getUniforms().');\n return this.getUniforms();\n }\n },\n attributes: {\n get: function () {\n console.warn('THREE.WebGLProgram: .attributes is now .getAttributes().');\n return this.getAttributes();\n }\n }\n });\n\n //\n\n this.name = shader.name;\n this.id = programIdCount++;\n this.code = code;\n this.usedTimes = 1;\n this.program = program;\n this.vertexShader = glVertexShader;\n this.fragmentShader = glFragmentShader;\n return this;\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms(renderer, extensions, capabilities, textures) {\n var programs = [];\n var shaderIDs = {\n MeshDepthMaterial: 'depth',\n MeshDistanceMaterial: 'distanceRGBA',\n MeshNormalMaterial: 'normal',\n MeshBasicMaterial: 'basic',\n MeshLambertMaterial: 'lambert',\n MeshPhongMaterial: 'phong',\n MeshToonMaterial: 'phong',\n MeshStandardMaterial: 'physical',\n MeshPhysicalMaterial: 'physical',\n MeshMatcapMaterial: 'matcap',\n LineBasicMaterial: 'basic',\n LineDashedMaterial: 'dashed',\n PointsMaterial: 'points',\n ShadowMaterial: 'shadow',\n SpriteMaterial: 'sprite'\n };\n var parameterNames = [\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\", \"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\", \"roughnessMap\", \"metalnessMap\", \"gradientMap\", \"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"fog\", \"useFog\", \"fogExp\", \"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\", \"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\", \"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\", \"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\", \"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights', \"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"];\n function allocateBones(object) {\n var skeleton = object.skeleton;\n var bones = skeleton.bones;\n if (capabilities.floatVertexTextures) {\n return 1024;\n } else {\n // default for when object is not specified\n // ( for example when prebuilding shader to be used with multiple objects )\n //\n // - leave some extra space for other uniforms\n // - limit here is ANGLE's 254 max uniform vectors\n // (up to 54 should be safe)\n\n var nVertexUniforms = capabilities.maxVertexUniforms;\n var nVertexMatrices = Math.floor((nVertexUniforms - 20) / 4);\n var maxBones = Math.min(nVertexMatrices, bones.length);\n if (maxBones < bones.length) {\n console.warn('THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.');\n return 0;\n }\n return maxBones;\n }\n }\n function getTextureEncodingFromMap(map, gammaOverrideLinear) {\n var encoding;\n if (!map) {\n encoding = LinearEncoding;\n } else if (map.isTexture) {\n encoding = map.encoding;\n } else if (map.isWebGLRenderTarget) {\n console.warn(\"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\");\n encoding = map.texture.encoding;\n }\n\n // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n if (encoding === LinearEncoding && gammaOverrideLinear) {\n encoding = GammaEncoding;\n }\n return encoding;\n }\n this.getParameters = function (material, lights, shadows, fog, nClipPlanes, nClipIntersection, object) {\n var shaderID = shaderIDs[material.type];\n\n // heuristics to create shader parameters according to lights in the scene\n // (not to blow over maxLights budget)\n\n var maxBones = object.isSkinnedMesh ? allocateBones(object) : 0;\n var precision = capabilities.precision;\n if (material.precision !== null) {\n precision = capabilities.getMaxPrecision(material.precision);\n if (precision !== material.precision) {\n console.warn('THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.');\n }\n }\n var currentRenderTarget = renderer.getRenderTarget();\n var parameters = {\n shaderID: shaderID,\n precision: precision,\n supportsVertexTextures: capabilities.vertexTextures,\n outputEncoding: getTextureEncodingFromMap(!currentRenderTarget ? null : currentRenderTarget.texture, renderer.gammaOutput),\n map: !!material.map,\n mapEncoding: getTextureEncodingFromMap(material.map, renderer.gammaInput),\n matcap: !!material.matcap,\n matcapEncoding: getTextureEncodingFromMap(material.matcap, renderer.gammaInput),\n envMap: !!material.envMap,\n envMapMode: material.envMap && material.envMap.mapping,\n envMapEncoding: getTextureEncodingFromMap(material.envMap, renderer.gammaInput),\n envMapCubeUV: !!material.envMap && (material.envMap.mapping === CubeUVReflectionMapping || material.envMap.mapping === CubeUVRefractionMapping),\n lightMap: !!material.lightMap,\n aoMap: !!material.aoMap,\n emissiveMap: !!material.emissiveMap,\n emissiveMapEncoding: getTextureEncodingFromMap(material.emissiveMap, renderer.gammaInput),\n bumpMap: !!material.bumpMap,\n normalMap: !!material.normalMap,\n objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n displacementMap: !!material.displacementMap,\n roughnessMap: !!material.roughnessMap,\n metalnessMap: !!material.metalnessMap,\n specularMap: !!material.specularMap,\n alphaMap: !!material.alphaMap,\n gradientMap: !!material.gradientMap,\n combine: material.combine,\n vertexTangents: material.normalMap && material.vertexTangents,\n vertexColors: material.vertexColors,\n fog: !!fog,\n useFog: material.fog,\n fogExp: fog && fog.isFogExp2,\n flatShading: material.flatShading,\n sizeAttenuation: material.sizeAttenuation,\n logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n skinning: material.skinning && maxBones > 0,\n maxBones: maxBones,\n useVertexTexture: capabilities.floatVertexTextures,\n morphTargets: material.morphTargets,\n morphNormals: material.morphNormals,\n maxMorphTargets: renderer.maxMorphTargets,\n maxMorphNormals: renderer.maxMorphNormals,\n numDirLights: lights.directional.length,\n numPointLights: lights.point.length,\n numSpotLights: lights.spot.length,\n numRectAreaLights: lights.rectArea.length,\n numHemiLights: lights.hemi.length,\n numClippingPlanes: nClipPlanes,\n numClipIntersection: nClipIntersection,\n dithering: material.dithering,\n shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n shadowMapType: renderer.shadowMap.type,\n toneMapping: renderer.toneMapping,\n physicallyCorrectLights: renderer.physicallyCorrectLights,\n premultipliedAlpha: material.premultipliedAlpha,\n alphaTest: material.alphaTest,\n doubleSided: material.side === DoubleSide,\n flipSided: material.side === BackSide,\n depthPacking: material.depthPacking !== undefined ? material.depthPacking : false\n };\n return parameters;\n };\n this.getProgramCode = function (material, parameters) {\n var array = [];\n if (parameters.shaderID) {\n array.push(parameters.shaderID);\n } else {\n array.push(material.fragmentShader);\n array.push(material.vertexShader);\n }\n if (material.defines !== undefined) {\n for (var name in material.defines) {\n array.push(name);\n array.push(material.defines[name]);\n }\n }\n for (var i = 0; i < parameterNames.length; i++) {\n array.push(parameters[parameterNames[i]]);\n }\n array.push(material.onBeforeCompile.toString());\n array.push(renderer.gammaOutput);\n array.push(renderer.gammaFactor);\n return array.join();\n };\n this.acquireProgram = function (material, shader, parameters, code) {\n var program;\n\n // Check if code has been already compiled\n for (var p = 0, pl = programs.length; p < pl; p++) {\n var programInfo = programs[p];\n if (programInfo.code === code) {\n program = programInfo;\n ++program.usedTimes;\n break;\n }\n }\n if (program === undefined) {\n program = new WebGLProgram(renderer, extensions, code, material, shader, parameters, capabilities, textures);\n programs.push(program);\n }\n return program;\n };\n this.releaseProgram = function (program) {\n if (--program.usedTimes === 0) {\n // Remove from unordered set\n var i = programs.indexOf(program);\n programs[i] = programs[programs.length - 1];\n programs.pop();\n\n // Free WebGL resources\n program.destroy();\n }\n };\n\n // Exposed for resource monitoring & error feedback via renderer.info:\n this.programs = programs;\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n var properties = new WeakMap();\n function get(object) {\n var map = properties.get(object);\n if (map === undefined) {\n map = {};\n properties.set(object, map);\n }\n return map;\n }\n function remove(object) {\n properties.delete(object);\n }\n function update(object, key, value) {\n properties.get(object)[key] = value;\n }\n function dispose() {\n properties = new WeakMap();\n }\n return {\n get: get,\n remove: remove,\n update: update,\n dispose: dispose\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.program !== b.program) {\n return a.program.id - b.program.id;\n } else if (a.material.id !== b.material.id) {\n return a.material.id - b.material.id;\n } else if (a.z !== b.z) {\n return a.z - b.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction reversePainterSortStable(a, b) {\n if (a.groupOrder !== b.groupOrder) {\n return a.groupOrder - b.groupOrder;\n } else if (a.renderOrder !== b.renderOrder) {\n return a.renderOrder - b.renderOrder;\n } else if (a.z !== b.z) {\n return b.z - a.z;\n } else {\n return a.id - b.id;\n }\n}\nfunction WebGLRenderList() {\n var renderItems = [];\n var renderItemsIndex = 0;\n var opaque = [];\n var transparent = [];\n var defaultProgram = {\n id: -1\n };\n function init() {\n renderItemsIndex = 0;\n opaque.length = 0;\n transparent.length = 0;\n }\n function getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n var renderItem = renderItems[renderItemsIndex];\n if (renderItem === undefined) {\n renderItem = {\n id: object.id,\n object: object,\n geometry: geometry,\n material: material,\n program: material.program || defaultProgram,\n groupOrder: groupOrder,\n renderOrder: object.renderOrder,\n z: z,\n group: group\n };\n renderItems[renderItemsIndex] = renderItem;\n } else {\n renderItem.id = object.id;\n renderItem.object = object;\n renderItem.geometry = geometry;\n renderItem.material = material;\n renderItem.program = material.program || defaultProgram;\n renderItem.groupOrder = groupOrder;\n renderItem.renderOrder = object.renderOrder;\n renderItem.z = z;\n renderItem.group = group;\n }\n renderItemsIndex++;\n return renderItem;\n }\n function push(object, geometry, material, groupOrder, z, group) {\n var renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n (material.transparent === true ? transparent : opaque).push(renderItem);\n }\n function unshift(object, geometry, material, groupOrder, z, group) {\n var renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n (material.transparent === true ? transparent : opaque).unshift(renderItem);\n }\n function sort() {\n if (opaque.length > 1) opaque.sort(painterSortStable);\n if (transparent.length > 1) transparent.sort(reversePainterSortStable);\n }\n return {\n opaque: opaque,\n transparent: transparent,\n init: init,\n push: push,\n unshift: unshift,\n sort: sort\n };\n}\nfunction WebGLRenderLists() {\n var lists = {};\n function onSceneDispose(event) {\n var scene = event.target;\n scene.removeEventListener('dispose', onSceneDispose);\n delete lists[scene.id];\n }\n function get(scene, camera) {\n var cameras = lists[scene.id];\n var list;\n if (cameras === undefined) {\n list = new WebGLRenderList();\n lists[scene.id] = {};\n lists[scene.id][camera.id] = list;\n scene.addEventListener('dispose', onSceneDispose);\n } else {\n list = cameras[camera.id];\n if (list === undefined) {\n list = new WebGLRenderList();\n cameras[camera.id] = list;\n }\n }\n return list;\n }\n function dispose() {\n lists = {};\n }\n return {\n get: get,\n dispose: dispose\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n var lights = {};\n return {\n get: function (light) {\n if (lights[light.id] !== undefined) {\n return lights[light.id];\n }\n var uniforms;\n switch (light.type) {\n case 'DirectionalLight':\n uniforms = {\n direction: new Vector3(),\n color: new Color(),\n shadow: false,\n shadowBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case 'SpotLight':\n uniforms = {\n position: new Vector3(),\n direction: new Vector3(),\n color: new Color(),\n distance: 0,\n coneCos: 0,\n penumbraCos: 0,\n decay: 0,\n shadow: false,\n shadowBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2()\n };\n break;\n case 'PointLight':\n uniforms = {\n position: new Vector3(),\n color: new Color(),\n distance: 0,\n decay: 0,\n shadow: false,\n shadowBias: 0,\n shadowRadius: 1,\n shadowMapSize: new Vector2(),\n shadowCameraNear: 1,\n shadowCameraFar: 1000\n };\n break;\n case 'HemisphereLight':\n uniforms = {\n direction: new Vector3(),\n skyColor: new Color(),\n groundColor: new Color()\n };\n break;\n case 'RectAreaLight':\n uniforms = {\n color: new Color(),\n position: new Vector3(),\n halfWidth: new Vector3(),\n halfHeight: new Vector3()\n // TODO (abelnation): set RectAreaLight shadow uniforms\n };\n\n break;\n }\n lights[light.id] = uniforms;\n return uniforms;\n }\n };\n}\nvar count = 0;\nfunction WebGLLights() {\n var cache = new UniformsCache();\n var state = {\n id: count++,\n hash: {\n stateID: -1,\n directionalLength: -1,\n pointLength: -1,\n spotLength: -1,\n rectAreaLength: -1,\n hemiLength: -1,\n shadowsLength: -1\n },\n ambient: [0, 0, 0],\n probe: [],\n directional: [],\n directionalShadowMap: [],\n directionalShadowMatrix: [],\n spot: [],\n spotShadowMap: [],\n spotShadowMatrix: [],\n rectArea: [],\n point: [],\n pointShadowMap: [],\n pointShadowMatrix: [],\n hemi: []\n };\n for (var i = 0; i < 9; i++) state.probe.push(new Vector3());\n var vector3 = new Vector3();\n var matrix4 = new Matrix4();\n var matrix42 = new Matrix4();\n function setup(lights, shadows, camera) {\n var r = 0,\n g = 0,\n b = 0;\n for (var i = 0; i < 9; i++) state.probe[i].set(0, 0, 0);\n var directionalLength = 0;\n var pointLength = 0;\n var spotLength = 0;\n var rectAreaLength = 0;\n var hemiLength = 0;\n var viewMatrix = camera.matrixWorldInverse;\n for (var i = 0, l = lights.length; i < l; i++) {\n var light = lights[i];\n var color = light.color;\n var intensity = light.intensity;\n var distance = light.distance;\n var shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n if (light.isAmbientLight) {\n r += color.r * intensity;\n g += color.g * intensity;\n b += color.b * intensity;\n } else if (light.isLightProbe) {\n for (var j = 0; j < 9; j++) {\n state.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n }\n } else if (light.isDirectionalLight) {\n var uniforms = cache.get(light);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity);\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n uniforms.shadow = light.castShadow;\n if (light.castShadow) {\n var shadow = light.shadow;\n uniforms.shadowBias = shadow.bias;\n uniforms.shadowRadius = shadow.radius;\n uniforms.shadowMapSize = shadow.mapSize;\n }\n state.directionalShadowMap[directionalLength] = shadowMap;\n state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n state.directional[directionalLength] = uniforms;\n directionalLength++;\n } else if (light.isSpotLight) {\n var uniforms = cache.get(light);\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n uniforms.color.copy(color).multiplyScalar(intensity);\n uniforms.distance = distance;\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n vector3.setFromMatrixPosition(light.target.matrixWorld);\n uniforms.direction.sub(vector3);\n uniforms.direction.transformDirection(viewMatrix);\n uniforms.coneCos = Math.cos(light.angle);\n uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n uniforms.decay = light.decay;\n uniforms.shadow = light.castShadow;\n if (light.castShadow) {\n var shadow = light.shadow;\n uniforms.shadowBias = shadow.bias;\n uniforms.shadowRadius = shadow.radius;\n uniforms.shadowMapSize = shadow.mapSize;\n }\n state.spotShadowMap[spotLength] = shadowMap;\n state.spotShadowMatrix[spotLength] = light.shadow.matrix;\n state.spot[spotLength] = uniforms;\n spotLength++;\n } else if (light.isRectAreaLight) {\n var uniforms = cache.get(light);\n\n // (a) intensity is the total visible light emitted\n //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n // (b) intensity is the brightness of the light\n uniforms.color.copy(color).multiplyScalar(intensity);\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n\n // extract local rotation of light to derive width/height half vectors\n matrix42.identity();\n matrix4.copy(light.matrixWorld);\n matrix4.premultiply(viewMatrix);\n matrix42.extractRotation(matrix4);\n uniforms.halfWidth.set(light.width * 0.5, 0.0, 0.0);\n uniforms.halfHeight.set(0.0, light.height * 0.5, 0.0);\n uniforms.halfWidth.applyMatrix4(matrix42);\n uniforms.halfHeight.applyMatrix4(matrix42);\n\n // TODO (abelnation): RectAreaLight distance?\n // uniforms.distance = distance;\n\n state.rectArea[rectAreaLength] = uniforms;\n rectAreaLength++;\n } else if (light.isPointLight) {\n var uniforms = cache.get(light);\n uniforms.position.setFromMatrixPosition(light.matrixWorld);\n uniforms.position.applyMatrix4(viewMatrix);\n uniforms.color.copy(light.color).multiplyScalar(light.intensity);\n uniforms.distance = light.distance;\n uniforms.decay = light.decay;\n uniforms.shadow = light.castShadow;\n if (light.castShadow) {\n var shadow = light.shadow;\n uniforms.shadowBias = shadow.bias;\n uniforms.shadowRadius = shadow.radius;\n uniforms.shadowMapSize = shadow.mapSize;\n uniforms.shadowCameraNear = shadow.camera.near;\n uniforms.shadowCameraFar = shadow.camera.far;\n }\n state.pointShadowMap[pointLength] = shadowMap;\n state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n state.point[pointLength] = uniforms;\n pointLength++;\n } else if (light.isHemisphereLight) {\n var uniforms = cache.get(light);\n uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n uniforms.direction.transformDirection(viewMatrix);\n uniforms.direction.normalize();\n uniforms.skyColor.copy(light.color).multiplyScalar(intensity);\n uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity);\n state.hemi[hemiLength] = uniforms;\n hemiLength++;\n }\n }\n state.ambient[0] = r;\n state.ambient[1] = g;\n state.ambient[2] = b;\n state.directional.length = directionalLength;\n state.spot.length = spotLength;\n state.rectArea.length = rectAreaLength;\n state.point.length = pointLength;\n state.hemi.length = hemiLength;\n state.hash.stateID = state.id;\n state.hash.directionalLength = directionalLength;\n state.hash.pointLength = pointLength;\n state.hash.spotLength = spotLength;\n state.hash.rectAreaLength = rectAreaLength;\n state.hash.hemiLength = hemiLength;\n state.hash.shadowsLength = shadows.length;\n }\n return {\n setup: setup,\n state: state\n };\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n var lights = new WebGLLights();\n var lightsArray = [];\n var shadowsArray = [];\n function init() {\n lightsArray.length = 0;\n shadowsArray.length = 0;\n }\n function pushLight(light) {\n lightsArray.push(light);\n }\n function pushShadow(shadowLight) {\n shadowsArray.push(shadowLight);\n }\n function setupLights(camera) {\n lights.setup(lightsArray, shadowsArray, camera);\n }\n var state = {\n lightsArray: lightsArray,\n shadowsArray: shadowsArray,\n lights: lights\n };\n return {\n init: init,\n state: state,\n setupLights: setupLights,\n pushLight: pushLight,\n pushShadow: pushShadow\n };\n}\nfunction WebGLRenderStates() {\n var renderStates = {};\n function onSceneDispose(event) {\n var scene = event.target;\n scene.removeEventListener('dispose', onSceneDispose);\n delete renderStates[scene.id];\n }\n function get(scene, camera) {\n var renderState;\n if (renderStates[scene.id] === undefined) {\n renderState = new WebGLRenderState();\n renderStates[scene.id] = {};\n renderStates[scene.id][camera.id] = renderState;\n scene.addEventListener('dispose', onSceneDispose);\n } else {\n if (renderStates[scene.id][camera.id] === undefined) {\n renderState = new WebGLRenderState();\n renderStates[scene.id][camera.id] = renderState;\n } else {\n renderState = renderStates[scene.id][camera.id];\n }\n }\n return renderState;\n }\n function dispose() {\n renderStates = {};\n }\n return {\n get: get,\n dispose: dispose\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshDepthMaterial';\n this.depthPacking = BasicDepthPacking;\n this.skinning = false;\n this.morphTargets = false;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.lights = false;\n this.setValues(parameters);\n}\nMeshDepthMaterial.prototype = Object.create(Material.prototype);\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\nMeshDepthMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.depthPacking = source.depthPacking;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n return this;\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshDistanceMaterial';\n this.referencePosition = new Vector3();\n this.nearDistance = 1;\n this.farDistance = 1000;\n this.skinning = false;\n this.morphTargets = false;\n this.map = null;\n this.alphaMap = null;\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.fog = false;\n this.lights = false;\n this.setValues(parameters);\n}\nMeshDistanceMaterial.prototype = Object.create(Material.prototype);\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\nMeshDistanceMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.referencePosition.copy(source.referencePosition);\n this.nearDistance = source.nearDistance;\n this.farDistance = source.farDistance;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.map = source.map;\n this.alphaMap = source.alphaMap;\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n return this;\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap(_renderer, _objects, maxTextureSize) {\n var _frustum = new Frustum(),\n _projScreenMatrix = new Matrix4(),\n _shadowMapSize = new Vector2(),\n _maxShadowMapSize = new Vector2(maxTextureSize, maxTextureSize),\n _lookTarget = new Vector3(),\n _lightPositionWorld = new Vector3(),\n _MorphingFlag = 1,\n _SkinningFlag = 2,\n _NumberOfMaterialVariants = (_MorphingFlag | _SkinningFlag) + 1,\n _depthMaterials = new Array(_NumberOfMaterialVariants),\n _distanceMaterials = new Array(_NumberOfMaterialVariants),\n _materialCache = {};\n var shadowSide = {\n 0: BackSide,\n 1: FrontSide,\n 2: DoubleSide\n };\n var cubeDirections = [new Vector3(1, 0, 0), new Vector3(-1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1), new Vector3(0, 1, 0), new Vector3(0, -1, 0)];\n var cubeUps = [new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, -1)];\n var cube2DViewPorts = [new Vector4(), new Vector4(), new Vector4(), new Vector4(), new Vector4(), new Vector4()];\n\n // init\n\n for (var i = 0; i !== _NumberOfMaterialVariants; ++i) {\n var useMorphing = (i & _MorphingFlag) !== 0;\n var useSkinning = (i & _SkinningFlag) !== 0;\n var depthMaterial = new MeshDepthMaterial({\n depthPacking: RGBADepthPacking,\n morphTargets: useMorphing,\n skinning: useSkinning\n });\n _depthMaterials[i] = depthMaterial;\n\n //\n\n var distanceMaterial = new MeshDistanceMaterial({\n morphTargets: useMorphing,\n skinning: useSkinning\n });\n _distanceMaterials[i] = distanceMaterial;\n }\n\n //\n\n var scope = this;\n this.enabled = false;\n this.autoUpdate = true;\n this.needsUpdate = false;\n this.type = PCFShadowMap;\n this.render = function (lights, scene, camera) {\n if (scope.enabled === false) return;\n if (scope.autoUpdate === false && scope.needsUpdate === false) return;\n if (lights.length === 0) return;\n var currentRenderTarget = _renderer.getRenderTarget();\n var activeCubeFace = _renderer.getActiveCubeFace();\n var activeMipMapLevel = _renderer.getActiveMipMapLevel();\n var _state = _renderer.state;\n\n // Set GL state for depth map.\n _state.setBlending(NoBlending);\n _state.buffers.color.setClear(1, 1, 1, 1);\n _state.buffers.depth.setTest(true);\n _state.setScissorTest(false);\n\n // render depth map\n\n var faceCount;\n for (var i = 0, il = lights.length; i < il; i++) {\n var light = lights[i];\n var shadow = light.shadow;\n var isPointLight = light && light.isPointLight;\n if (shadow === undefined) {\n console.warn('THREE.WebGLShadowMap:', light, 'has no shadow.');\n continue;\n }\n var shadowCamera = shadow.camera;\n _shadowMapSize.copy(shadow.mapSize);\n _shadowMapSize.min(_maxShadowMapSize);\n if (isPointLight) {\n var vpWidth = _shadowMapSize.x;\n var vpHeight = _shadowMapSize.y;\n\n // These viewports map a cube-map onto a 2D texture with the\n // following orientation:\n //\n // xzXZ\n // y Y\n //\n // X - Positive x direction\n // x - Negative x direction\n // Y - Positive y direction\n // y - Negative y direction\n // Z - Positive z direction\n // z - Negative z direction\n\n // positive X\n cube2DViewPorts[0].set(vpWidth * 2, vpHeight, vpWidth, vpHeight);\n // negative X\n cube2DViewPorts[1].set(0, vpHeight, vpWidth, vpHeight);\n // positive Z\n cube2DViewPorts[2].set(vpWidth * 3, vpHeight, vpWidth, vpHeight);\n // negative Z\n cube2DViewPorts[3].set(vpWidth, vpHeight, vpWidth, vpHeight);\n // positive Y\n cube2DViewPorts[4].set(vpWidth * 3, 0, vpWidth, vpHeight);\n // negative Y\n cube2DViewPorts[5].set(vpWidth, 0, vpWidth, vpHeight);\n _shadowMapSize.x *= 4.0;\n _shadowMapSize.y *= 2.0;\n }\n if (shadow.map === null) {\n var pars = {\n minFilter: NearestFilter,\n magFilter: NearestFilter,\n format: RGBAFormat\n };\n shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n shadow.map.texture.name = light.name + \".shadowMap\";\n shadowCamera.updateProjectionMatrix();\n }\n if (shadow.isSpotLightShadow) {\n shadow.update(light);\n }\n var shadowMap = shadow.map;\n var shadowMatrix = shadow.matrix;\n _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n shadowCamera.position.copy(_lightPositionWorld);\n if (isPointLight) {\n faceCount = 6;\n\n // for point lights we set the shadow matrix to be a translation-only matrix\n // equal to inverse of the light's position\n\n shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n } else {\n faceCount = 1;\n _lookTarget.setFromMatrixPosition(light.target.matrixWorld);\n shadowCamera.lookAt(_lookTarget);\n shadowCamera.updateMatrixWorld();\n\n // compute shadow matrix\n\n shadowMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n shadowMatrix.multiply(shadowCamera.projectionMatrix);\n shadowMatrix.multiply(shadowCamera.matrixWorldInverse);\n }\n _renderer.setRenderTarget(shadowMap);\n _renderer.clear();\n\n // render shadow map for each cube face (if omni-directional) or\n // run a single pass if not\n\n for (var face = 0; face < faceCount; face++) {\n if (isPointLight) {\n _lookTarget.copy(shadowCamera.position);\n _lookTarget.add(cubeDirections[face]);\n shadowCamera.up.copy(cubeUps[face]);\n shadowCamera.lookAt(_lookTarget);\n shadowCamera.updateMatrixWorld();\n var vpDimensions = cube2DViewPorts[face];\n _state.viewport(vpDimensions);\n }\n\n // update camera matrices and frustum\n\n _projScreenMatrix.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n _frustum.setFromMatrix(_projScreenMatrix);\n\n // set object matrices & frustum culling\n\n renderObject(scene, camera, shadowCamera, isPointLight);\n }\n }\n scope.needsUpdate = false;\n _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipMapLevel);\n };\n function getDepthMaterial(object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar) {\n var geometry = object.geometry;\n var result = null;\n var materialVariants = _depthMaterials;\n var customMaterial = object.customDepthMaterial;\n if (isPointLight) {\n materialVariants = _distanceMaterials;\n customMaterial = object.customDistanceMaterial;\n }\n if (!customMaterial) {\n var useMorphing = false;\n if (material.morphTargets) {\n if (geometry && geometry.isBufferGeometry) {\n useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n } else if (geometry && geometry.isGeometry) {\n useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n }\n }\n if (object.isSkinnedMesh && material.skinning === false) {\n console.warn('THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object);\n }\n var useSkinning = object.isSkinnedMesh && material.skinning;\n var variantIndex = 0;\n if (useMorphing) variantIndex |= _MorphingFlag;\n if (useSkinning) variantIndex |= _SkinningFlag;\n result = materialVariants[variantIndex];\n } else {\n result = customMaterial;\n }\n if (_renderer.localClippingEnabled && material.clipShadows === true && material.clippingPlanes.length !== 0) {\n // in this case we need a unique material instance reflecting the\n // appropriate state\n\n var keyA = result.uuid,\n keyB = material.uuid;\n var materialsForVariant = _materialCache[keyA];\n if (materialsForVariant === undefined) {\n materialsForVariant = {};\n _materialCache[keyA] = materialsForVariant;\n }\n var cachedMaterial = materialsForVariant[keyB];\n if (cachedMaterial === undefined) {\n cachedMaterial = result.clone();\n materialsForVariant[keyB] = cachedMaterial;\n }\n result = cachedMaterial;\n }\n result.visible = material.visible;\n result.wireframe = material.wireframe;\n result.side = material.shadowSide != null ? material.shadowSide : shadowSide[material.side];\n result.clipShadows = material.clipShadows;\n result.clippingPlanes = material.clippingPlanes;\n result.clipIntersection = material.clipIntersection;\n result.wireframeLinewidth = material.wireframeLinewidth;\n result.linewidth = material.linewidth;\n if (isPointLight && result.isMeshDistanceMaterial) {\n result.referencePosition.copy(lightPositionWorld);\n result.nearDistance = shadowCameraNear;\n result.farDistance = shadowCameraFar;\n }\n return result;\n }\n function renderObject(object, camera, shadowCamera, isPointLight) {\n if (object.visible === false) return;\n var visible = object.layers.test(camera.layers);\n if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n if (object.castShadow && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n var geometry = _objects.update(object);\n var material = object.material;\n if (Array.isArray(material)) {\n var groups = geometry.groups;\n for (var k = 0, kl = groups.length; k < kl; k++) {\n var group = groups[k];\n var groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n var depthMaterial = getDepthMaterial(object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n }\n }\n } else if (material.visible) {\n var depthMaterial = getDepthMaterial(object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far);\n _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n }\n }\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n renderObject(children[i], camera, shadowCamera, isPointLight);\n }\n }\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState(gl, extensions, utils, capabilities) {\n function ColorBuffer() {\n var locked = false;\n var color = new Vector4();\n var currentColorMask = null;\n var currentColorClear = new Vector4(0, 0, 0, 0);\n return {\n setMask: function (colorMask) {\n if (currentColorMask !== colorMask && !locked) {\n gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n currentColorMask = colorMask;\n }\n },\n setLocked: function (lock) {\n locked = lock;\n },\n setClear: function (r, g, b, a, premultipliedAlpha) {\n if (premultipliedAlpha === true) {\n r *= a;\n g *= a;\n b *= a;\n }\n color.set(r, g, b, a);\n if (currentColorClear.equals(color) === false) {\n gl.clearColor(r, g, b, a);\n currentColorClear.copy(color);\n }\n },\n reset: function () {\n locked = false;\n currentColorMask = null;\n currentColorClear.set(-1, 0, 0, 0); // set to invalid state\n }\n };\n }\n\n function DepthBuffer() {\n var locked = false;\n var currentDepthMask = null;\n var currentDepthFunc = null;\n var currentDepthClear = null;\n return {\n setTest: function (depthTest) {\n if (depthTest) {\n enable(2929);\n } else {\n disable(2929);\n }\n },\n setMask: function (depthMask) {\n if (currentDepthMask !== depthMask && !locked) {\n gl.depthMask(depthMask);\n currentDepthMask = depthMask;\n }\n },\n setFunc: function (depthFunc) {\n if (currentDepthFunc !== depthFunc) {\n if (depthFunc) {\n switch (depthFunc) {\n case NeverDepth:\n gl.depthFunc(512);\n break;\n case AlwaysDepth:\n gl.depthFunc(519);\n break;\n case LessDepth:\n gl.depthFunc(513);\n break;\n case LessEqualDepth:\n gl.depthFunc(515);\n break;\n case EqualDepth:\n gl.depthFunc(514);\n break;\n case GreaterEqualDepth:\n gl.depthFunc(518);\n break;\n case GreaterDepth:\n gl.depthFunc(516);\n break;\n case NotEqualDepth:\n gl.depthFunc(517);\n break;\n default:\n gl.depthFunc(515);\n }\n } else {\n gl.depthFunc(515);\n }\n currentDepthFunc = depthFunc;\n }\n },\n setLocked: function (lock) {\n locked = lock;\n },\n setClear: function (depth) {\n if (currentDepthClear !== depth) {\n gl.clearDepth(depth);\n currentDepthClear = depth;\n }\n },\n reset: function () {\n locked = false;\n currentDepthMask = null;\n currentDepthFunc = null;\n currentDepthClear = null;\n }\n };\n }\n function StencilBuffer() {\n var locked = false;\n var currentStencilMask = null;\n var currentStencilFunc = null;\n var currentStencilRef = null;\n var currentStencilFuncMask = null;\n var currentStencilFail = null;\n var currentStencilZFail = null;\n var currentStencilZPass = null;\n var currentStencilClear = null;\n return {\n setTest: function (stencilTest) {\n if (stencilTest) {\n enable(2960);\n } else {\n disable(2960);\n }\n },\n setMask: function (stencilMask) {\n if (currentStencilMask !== stencilMask && !locked) {\n gl.stencilMask(stencilMask);\n currentStencilMask = stencilMask;\n }\n },\n setFunc: function (stencilFunc, stencilRef, stencilMask) {\n if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n currentStencilFunc = stencilFunc;\n currentStencilRef = stencilRef;\n currentStencilFuncMask = stencilMask;\n }\n },\n setOp: function (stencilFail, stencilZFail, stencilZPass) {\n if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n currentStencilFail = stencilFail;\n currentStencilZFail = stencilZFail;\n currentStencilZPass = stencilZPass;\n }\n },\n setLocked: function (lock) {\n locked = lock;\n },\n setClear: function (stencil) {\n if (currentStencilClear !== stencil) {\n gl.clearStencil(stencil);\n currentStencilClear = stencil;\n }\n },\n reset: function () {\n locked = false;\n currentStencilMask = null;\n currentStencilFunc = null;\n currentStencilRef = null;\n currentStencilFuncMask = null;\n currentStencilFail = null;\n currentStencilZFail = null;\n currentStencilZPass = null;\n currentStencilClear = null;\n }\n };\n }\n\n //\n\n var colorBuffer = new ColorBuffer();\n var depthBuffer = new DepthBuffer();\n var stencilBuffer = new StencilBuffer();\n var maxVertexAttributes = gl.getParameter(34921);\n var newAttributes = new Uint8Array(maxVertexAttributes);\n var enabledAttributes = new Uint8Array(maxVertexAttributes);\n var attributeDivisors = new Uint8Array(maxVertexAttributes);\n var enabledCapabilities = {};\n var compressedTextureFormats = null;\n var currentProgram = null;\n var currentBlendingEnabled = null;\n var currentBlending = null;\n var currentBlendEquation = null;\n var currentBlendSrc = null;\n var currentBlendDst = null;\n var currentBlendEquationAlpha = null;\n var currentBlendSrcAlpha = null;\n var currentBlendDstAlpha = null;\n var currentPremultipledAlpha = false;\n var currentFlipSided = null;\n var currentCullFace = null;\n var currentLineWidth = null;\n var currentPolygonOffsetFactor = null;\n var currentPolygonOffsetUnits = null;\n var maxTextures = gl.getParameter(35661);\n var lineWidthAvailable = false;\n var version = 0;\n var glVersion = gl.getParameter(7938);\n if (glVersion.indexOf('WebGL') !== -1) {\n version = parseFloat(/^WebGL\\ ([0-9])/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 1.0;\n } else if (glVersion.indexOf('OpenGL ES') !== -1) {\n version = parseFloat(/^OpenGL\\ ES\\ ([0-9])/.exec(glVersion)[1]);\n lineWidthAvailable = version >= 2.0;\n }\n var currentTextureSlot = null;\n var currentBoundTextures = {};\n var currentScissor = new Vector4();\n var currentViewport = new Vector4();\n function createTexture(type, target, count) {\n var data = new Uint8Array(4); // 4 is required to match default unpack alignment of 4.\n var texture = gl.createTexture();\n gl.bindTexture(type, texture);\n gl.texParameteri(type, 10241, 9728);\n gl.texParameteri(type, 10240, 9728);\n for (var i = 0; i < count; i++) {\n gl.texImage2D(target + i, 0, 6408, 1, 1, 0, 6408, 5121, data);\n }\n return texture;\n }\n var emptyTextures = {};\n emptyTextures[3553] = createTexture(3553, 3553, 1);\n emptyTextures[34067] = createTexture(34067, 34069, 6);\n\n // init\n\n colorBuffer.setClear(0, 0, 0, 1);\n depthBuffer.setClear(1);\n stencilBuffer.setClear(0);\n enable(2929);\n depthBuffer.setFunc(LessEqualDepth);\n setFlipSided(false);\n setCullFace(CullFaceBack);\n enable(2884);\n setBlending(NoBlending);\n\n //\n\n function initAttributes() {\n for (var i = 0, l = newAttributes.length; i < l; i++) {\n newAttributes[i] = 0;\n }\n }\n function enableAttribute(attribute) {\n enableAttributeAndDivisor(attribute, 0);\n }\n function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n newAttributes[attribute] = 1;\n if (enabledAttributes[attribute] === 0) {\n gl.enableVertexAttribArray(attribute);\n enabledAttributes[attribute] = 1;\n }\n if (attributeDivisors[attribute] !== meshPerAttribute) {\n var extension = capabilities.isWebGL2 ? gl : extensions.get('ANGLE_instanced_arrays');\n extension[capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE'](attribute, meshPerAttribute);\n attributeDivisors[attribute] = meshPerAttribute;\n }\n }\n function disableUnusedAttributes() {\n for (var i = 0, l = enabledAttributes.length; i !== l; ++i) {\n if (enabledAttributes[i] !== newAttributes[i]) {\n gl.disableVertexAttribArray(i);\n enabledAttributes[i] = 0;\n }\n }\n }\n function enable(id) {\n if (enabledCapabilities[id] !== true) {\n gl.enable(id);\n enabledCapabilities[id] = true;\n }\n }\n function disable(id) {\n if (enabledCapabilities[id] !== false) {\n gl.disable(id);\n enabledCapabilities[id] = false;\n }\n }\n function getCompressedTextureFormats() {\n if (compressedTextureFormats === null) {\n compressedTextureFormats = [];\n if (extensions.get('WEBGL_compressed_texture_pvrtc') || extensions.get('WEBGL_compressed_texture_s3tc') || extensions.get('WEBGL_compressed_texture_etc1') || extensions.get('WEBGL_compressed_texture_astc')) {\n var formats = gl.getParameter(34467);\n for (var i = 0; i < formats.length; i++) {\n compressedTextureFormats.push(formats[i]);\n }\n }\n }\n return compressedTextureFormats;\n }\n function useProgram(program) {\n if (currentProgram !== program) {\n gl.useProgram(program);\n currentProgram = program;\n return true;\n }\n return false;\n }\n function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n if (blending === NoBlending) {\n if (currentBlendingEnabled) {\n disable(3042);\n currentBlendingEnabled = false;\n }\n return;\n }\n if (!currentBlendingEnabled) {\n enable(3042);\n currentBlendingEnabled = true;\n }\n if (blending !== CustomBlending) {\n if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n gl.blendEquation(32774);\n currentBlendEquation = AddEquation;\n currentBlendEquationAlpha = AddEquation;\n }\n if (premultipliedAlpha) {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(1, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(1, 1);\n break;\n case SubtractiveBlending:\n gl.blendFuncSeparate(0, 0, 769, 771);\n break;\n case MultiplyBlending:\n gl.blendFuncSeparate(0, 768, 0, 770);\n break;\n default:\n console.error('THREE.WebGLState: Invalid blending: ', blending);\n break;\n }\n } else {\n switch (blending) {\n case NormalBlending:\n gl.blendFuncSeparate(770, 771, 1, 771);\n break;\n case AdditiveBlending:\n gl.blendFunc(770, 1);\n break;\n case SubtractiveBlending:\n gl.blendFunc(0, 769);\n break;\n case MultiplyBlending:\n gl.blendFunc(0, 768);\n break;\n default:\n console.error('THREE.WebGLState: Invalid blending: ', blending);\n break;\n }\n }\n currentBlendSrc = null;\n currentBlendDst = null;\n currentBlendSrcAlpha = null;\n currentBlendDstAlpha = null;\n currentBlending = blending;\n currentPremultipledAlpha = premultipliedAlpha;\n }\n return;\n }\n\n // custom blending\n\n blendEquationAlpha = blendEquationAlpha || blendEquation;\n blendSrcAlpha = blendSrcAlpha || blendSrc;\n blendDstAlpha = blendDstAlpha || blendDst;\n if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n gl.blendEquationSeparate(utils.convert(blendEquation), utils.convert(blendEquationAlpha));\n currentBlendEquation = blendEquation;\n currentBlendEquationAlpha = blendEquationAlpha;\n }\n if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n gl.blendFuncSeparate(utils.convert(blendSrc), utils.convert(blendDst), utils.convert(blendSrcAlpha), utils.convert(blendDstAlpha));\n currentBlendSrc = blendSrc;\n currentBlendDst = blendDst;\n currentBlendSrcAlpha = blendSrcAlpha;\n currentBlendDstAlpha = blendDstAlpha;\n }\n currentBlending = blending;\n currentPremultipledAlpha = null;\n }\n function setMaterial(material, frontFaceCW) {\n material.side === DoubleSide ? disable(2884) : enable(2884);\n var flipSided = material.side === BackSide;\n if (frontFaceCW) flipSided = !flipSided;\n setFlipSided(flipSided);\n material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n depthBuffer.setFunc(material.depthFunc);\n depthBuffer.setTest(material.depthTest);\n depthBuffer.setMask(material.depthWrite);\n colorBuffer.setMask(material.colorWrite);\n setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n }\n\n //\n\n function setFlipSided(flipSided) {\n if (currentFlipSided !== flipSided) {\n if (flipSided) {\n gl.frontFace(2304);\n } else {\n gl.frontFace(2305);\n }\n currentFlipSided = flipSided;\n }\n }\n function setCullFace(cullFace) {\n if (cullFace !== CullFaceNone) {\n enable(2884);\n if (cullFace !== currentCullFace) {\n if (cullFace === CullFaceBack) {\n gl.cullFace(1029);\n } else if (cullFace === CullFaceFront) {\n gl.cullFace(1028);\n } else {\n gl.cullFace(1032);\n }\n }\n } else {\n disable(2884);\n }\n currentCullFace = cullFace;\n }\n function setLineWidth(width) {\n if (width !== currentLineWidth) {\n if (lineWidthAvailable) gl.lineWidth(width);\n currentLineWidth = width;\n }\n }\n function setPolygonOffset(polygonOffset, factor, units) {\n if (polygonOffset) {\n enable(32823);\n if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n gl.polygonOffset(factor, units);\n currentPolygonOffsetFactor = factor;\n currentPolygonOffsetUnits = units;\n }\n } else {\n disable(32823);\n }\n }\n function setScissorTest(scissorTest) {\n if (scissorTest) {\n enable(3089);\n } else {\n disable(3089);\n }\n }\n\n // texture\n\n function activeTexture(webglSlot) {\n if (webglSlot === undefined) webglSlot = 33984 + maxTextures - 1;\n if (currentTextureSlot !== webglSlot) {\n gl.activeTexture(webglSlot);\n currentTextureSlot = webglSlot;\n }\n }\n function bindTexture(webglType, webglTexture) {\n if (currentTextureSlot === null) {\n activeTexture();\n }\n var boundTexture = currentBoundTextures[currentTextureSlot];\n if (boundTexture === undefined) {\n boundTexture = {\n type: undefined,\n texture: undefined\n };\n currentBoundTextures[currentTextureSlot] = boundTexture;\n }\n if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n boundTexture.type = webglType;\n boundTexture.texture = webglTexture;\n }\n }\n function compressedTexImage2D() {\n try {\n gl.compressedTexImage2D.apply(gl, arguments);\n } catch (error) {\n console.error('THREE.WebGLState:', error);\n }\n }\n function texImage2D() {\n try {\n gl.texImage2D.apply(gl, arguments);\n } catch (error) {\n console.error('THREE.WebGLState:', error);\n }\n }\n function texImage3D() {\n try {\n gl.texImage3D.apply(gl, arguments);\n } catch (error) {\n console.error('THREE.WebGLState:', error);\n }\n }\n\n //\n\n function scissor(scissor) {\n if (currentScissor.equals(scissor) === false) {\n gl.scissor(scissor.x, scissor.y, scissor.z, scissor.w);\n currentScissor.copy(scissor);\n }\n }\n function viewport(viewport) {\n if (currentViewport.equals(viewport) === false) {\n gl.viewport(viewport.x, viewport.y, viewport.z, viewport.w);\n currentViewport.copy(viewport);\n }\n }\n\n //\n\n function reset() {\n for (var i = 0; i < enabledAttributes.length; i++) {\n if (enabledAttributes[i] === 1) {\n gl.disableVertexAttribArray(i);\n enabledAttributes[i] = 0;\n }\n }\n enabledCapabilities = {};\n compressedTextureFormats = null;\n currentTextureSlot = null;\n currentBoundTextures = {};\n currentProgram = null;\n currentBlending = null;\n currentFlipSided = null;\n currentCullFace = null;\n colorBuffer.reset();\n depthBuffer.reset();\n stencilBuffer.reset();\n }\n return {\n buffers: {\n color: colorBuffer,\n depth: depthBuffer,\n stencil: stencilBuffer\n },\n initAttributes: initAttributes,\n enableAttribute: enableAttribute,\n enableAttributeAndDivisor: enableAttributeAndDivisor,\n disableUnusedAttributes: disableUnusedAttributes,\n enable: enable,\n disable: disable,\n getCompressedTextureFormats: getCompressedTextureFormats,\n useProgram: useProgram,\n setBlending: setBlending,\n setMaterial: setMaterial,\n setFlipSided: setFlipSided,\n setCullFace: setCullFace,\n setLineWidth: setLineWidth,\n setPolygonOffset: setPolygonOffset,\n setScissorTest: setScissorTest,\n activeTexture: activeTexture,\n bindTexture: bindTexture,\n compressedTexImage2D: compressedTexImage2D,\n texImage2D: texImage2D,\n texImage3D: texImage3D,\n scissor: scissor,\n viewport: viewport,\n reset: reset\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n var _videoTextures = {};\n var _canvas;\n\n //\n\n var useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined';\n function createCanvas(width, height) {\n // Use OffscreenCanvas when available. Specially needed in web workers\n\n return useOffscreenCanvas ? new OffscreenCanvas(width, height) : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');\n }\n function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n var scale = 1;\n\n // handle case if texture exceeds max size\n\n if (image.width > maxSize || image.height > maxSize) {\n scale = maxSize / Math.max(image.width, image.height);\n }\n\n // only perform resize if necessary\n\n if (scale < 1 || needsPowerOfTwo === true) {\n // only perform resize for certain image types\n\n if (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor;\n var width = floor(scale * image.width);\n var height = floor(scale * image.height);\n if (_canvas === undefined) _canvas = createCanvas(width, height);\n\n // cube textures can't reuse the same canvas\n\n var canvas = needsNewCanvas ? createCanvas(width, height) : _canvas;\n canvas.width = width;\n canvas.height = height;\n var context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, width, height);\n console.warn('THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').');\n return canvas;\n } else {\n if ('data' in image) {\n console.warn('THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').');\n }\n return image;\n }\n }\n return image;\n }\n function isPowerOfTwo(image) {\n return _Math.isPowerOfTwo(image.width) && _Math.isPowerOfTwo(image.height);\n }\n function textureNeedsPowerOfTwo(texture) {\n if (capabilities.isWebGL2) return false;\n return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function textureNeedsGenerateMipmaps(texture, supportsMips) {\n return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n }\n function generateMipmap(target, texture, width, height) {\n _gl.generateMipmap(target);\n var textureProperties = properties.get(texture);\n\n // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n textureProperties.__maxMipLevel = Math.log(Math.max(width, height)) * Math.LOG2E;\n }\n function getInternalFormat(glFormat, glType) {\n if (!capabilities.isWebGL2) return glFormat;\n var internalFormat = glFormat;\n if (glFormat === 6403) {\n if (glType === 5126) internalFormat = 33326;\n if (glType === 5131) internalFormat = 33325;\n if (glType === 5121) internalFormat = 33321;\n }\n if (glFormat === 6407) {\n if (glType === 5126) internalFormat = 34837;\n if (glType === 5131) internalFormat = 34843;\n if (glType === 5121) internalFormat = 32849;\n }\n if (glFormat === 6408) {\n if (glType === 5126) internalFormat = 34836;\n if (glType === 5131) internalFormat = 34842;\n if (glType === 5121) internalFormat = 32856;\n }\n if (internalFormat === 33325 || internalFormat === 33326 || internalFormat === 34842 || internalFormat === 34836) {\n extensions.get('EXT_color_buffer_float');\n } else if (internalFormat === 34843 || internalFormat === 34837) {\n console.warn('THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.');\n }\n return internalFormat;\n }\n\n // Fallback filters for non-power-of-2 textures\n\n function filterFallback(f) {\n if (f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter) {\n return 9728;\n }\n return 9729;\n }\n\n //\n\n function onTextureDispose(event) {\n var texture = event.target;\n texture.removeEventListener('dispose', onTextureDispose);\n deallocateTexture(texture);\n if (texture.isVideoTexture) {\n delete _videoTextures[texture.id];\n }\n info.memory.textures--;\n }\n function onRenderTargetDispose(event) {\n var renderTarget = event.target;\n renderTarget.removeEventListener('dispose', onRenderTargetDispose);\n deallocateRenderTarget(renderTarget);\n info.memory.textures--;\n }\n\n //\n\n function deallocateTexture(texture) {\n var textureProperties = properties.get(texture);\n if (textureProperties.__webglInit === undefined) return;\n _gl.deleteTexture(textureProperties.__webglTexture);\n properties.remove(texture);\n }\n function deallocateRenderTarget(renderTarget) {\n var renderTargetProperties = properties.get(renderTarget);\n var textureProperties = properties.get(renderTarget.texture);\n if (!renderTarget) return;\n if (textureProperties.__webglTexture !== undefined) {\n _gl.deleteTexture(textureProperties.__webglTexture);\n }\n if (renderTarget.depthTexture) {\n renderTarget.depthTexture.dispose();\n }\n if (renderTarget.isWebGLRenderTargetCube) {\n for (var i = 0; i < 6; i++) {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n }\n } else {\n _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n }\n properties.remove(renderTarget.texture);\n properties.remove(renderTarget);\n }\n\n //\n\n var textureUnits = 0;\n function resetTextureUnits() {\n textureUnits = 0;\n }\n function allocateTextureUnit() {\n var textureUnit = textureUnits;\n if (textureUnit >= capabilities.maxTextures) {\n console.warn('THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures);\n }\n textureUnits += 1;\n return textureUnit;\n }\n\n //\n\n function setTexture2D(texture, slot) {\n var textureProperties = properties.get(texture);\n if (texture.isVideoTexture) updateVideoTexture(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n var image = texture.image;\n if (image === undefined) {\n console.warn('THREE.WebGLRenderer: Texture marked for update but image is undefined');\n } else if (image.complete === false) {\n console.warn('THREE.WebGLRenderer: Texture marked for update but image is incomplete');\n } else {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(3553, textureProperties.__webglTexture);\n }\n function setTexture2DArray(texture, slot) {\n var textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(35866, textureProperties.__webglTexture);\n }\n function setTexture3D(texture, slot) {\n var textureProperties = properties.get(texture);\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n uploadTexture(textureProperties, texture, slot);\n return;\n }\n state.activeTexture(33984 + slot);\n state.bindTexture(32879, textureProperties.__webglTexture);\n }\n function setTextureCube(texture, slot) {\n var textureProperties = properties.get(texture);\n if (texture.image.length === 6) {\n if (texture.version > 0 && textureProperties.__version !== texture.version) {\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n var isCompressed = texture && texture.isCompressedTexture;\n var isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n var cubeImage = [];\n for (var i = 0; i < 6; i++) {\n if (!isCompressed && !isDataTexture) {\n cubeImage[i] = resizeImage(texture.image[i], false, true, capabilities.maxCubemapSize);\n } else {\n cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n }\n }\n var image = cubeImage[0],\n supportsMips = isPowerOfTwo(image) || capabilities.isWebGL2,\n glFormat = utils.convert(texture.format),\n glType = utils.convert(texture.type),\n glInternalFormat = getInternalFormat(glFormat, glType);\n setTextureParameters(34067, texture, supportsMips);\n for (var i = 0; i < 6; i++) {\n if (!isCompressed) {\n if (isDataTexture) {\n state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n } else {\n state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n }\n } else {\n var mipmap,\n mipmaps = cubeImage[i].mipmaps;\n for (var j = 0, jl = mipmaps.length; j < jl; j++) {\n mipmap = mipmaps[j];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (state.getCompressedTextureFormats().indexOf(glFormat) > -1) {\n state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n } else {\n console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()');\n }\n } else {\n state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n }\n }\n if (!isCompressed) {\n textureProperties.__maxMipLevel = 0;\n } else {\n textureProperties.__maxMipLevel = mipmaps.length - 1;\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n // We assume images for cube map have the same size.\n generateMipmap(34067, texture, image.width, image.height);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate) texture.onUpdate(texture);\n } else {\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, textureProperties.__webglTexture);\n }\n }\n }\n function setTextureCubeDynamic(texture, slot) {\n state.activeTexture(33984 + slot);\n state.bindTexture(34067, properties.get(texture).__webglTexture);\n }\n function setTextureParameters(textureType, texture, supportsMips) {\n var extension;\n if (supportsMips) {\n _gl.texParameteri(textureType, 10242, utils.convert(texture.wrapS));\n _gl.texParameteri(textureType, 10243, utils.convert(texture.wrapT));\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, utils.convert(texture.wrapR));\n }\n _gl.texParameteri(textureType, 10240, utils.convert(texture.magFilter));\n _gl.texParameteri(textureType, 10241, utils.convert(texture.minFilter));\n } else {\n _gl.texParameteri(textureType, 10242, 33071);\n _gl.texParameteri(textureType, 10243, 33071);\n if (textureType === 32879 || textureType === 35866) {\n _gl.texParameteri(textureType, 32882, 33071);\n }\n if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.');\n }\n _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter));\n _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter));\n if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n console.warn('THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.');\n }\n }\n extension = extensions.get('EXT_texture_filter_anisotropic');\n if (extension) {\n if (texture.type === FloatType && extensions.get('OES_texture_float_linear') === null) return;\n if (texture.type === HalfFloatType && (capabilities.isWebGL2 || extensions.get('OES_texture_half_float_linear')) === null) return;\n if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n properties.get(texture).__currentAnisotropy = texture.anisotropy;\n }\n }\n }\n function initTexture(textureProperties, texture) {\n if (textureProperties.__webglInit === undefined) {\n textureProperties.__webglInit = true;\n texture.addEventListener('dispose', onTextureDispose);\n textureProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n }\n }\n function uploadTexture(textureProperties, texture, slot) {\n var textureType = 3553;\n if (texture.isDataTexture2DArray) textureType = 35866;\n if (texture.isDataTexture3D) textureType = 32879;\n initTexture(textureProperties, texture);\n state.activeTexture(33984 + slot);\n state.bindTexture(textureType, textureProperties.__webglTexture);\n _gl.pixelStorei(37440, texture.flipY);\n _gl.pixelStorei(37441, texture.premultiplyAlpha);\n _gl.pixelStorei(3317, texture.unpackAlignment);\n var needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo(texture.image) === false;\n var image = resizeImage(texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize);\n var supportsMips = isPowerOfTwo(image) || capabilities.isWebGL2,\n glFormat = utils.convert(texture.format),\n glType = utils.convert(texture.type),\n glInternalFormat = getInternalFormat(glFormat, glType);\n setTextureParameters(textureType, texture, supportsMips);\n var mipmap,\n mipmaps = texture.mipmaps;\n if (texture.isDepthTexture) {\n // populate depth texture with dummy data\n\n glInternalFormat = 6402;\n if (texture.type === FloatType) {\n if (!capabilities.isWebGL2) throw new Error('Float Depth Texture only supported in WebGL2.0');\n glInternalFormat = 36012;\n } else if (capabilities.isWebGL2) {\n // WebGL 2.0 requires signed internalformat for glTexImage2D\n glInternalFormat = 33189;\n }\n if (texture.format === DepthFormat && glInternalFormat === 6402) {\n // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n console.warn('THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.');\n texture.type = UnsignedShortType;\n glType = utils.convert(texture.type);\n }\n }\n\n // Depth stencil textures need the DEPTH_STENCIL internal format\n // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n if (texture.format === DepthStencilFormat) {\n glInternalFormat = 34041;\n\n // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n if (texture.type !== UnsignedInt248Type) {\n console.warn('THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.');\n texture.type = UnsignedInt248Type;\n glType = utils.convert(texture.type);\n }\n }\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n } else if (texture.isDataTexture) {\n // use manually created mipmaps if available\n // if there are no manual mipmaps\n // set 0 level mipmap and then use GL to generate other mipmap levels\n\n if (mipmaps.length > 0 && supportsMips) {\n for (var i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n texture.generateMipmaps = false;\n textureProperties.__maxMipLevel = mipmaps.length - 1;\n } else {\n state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n textureProperties.__maxMipLevel = 0;\n }\n } else if (texture.isCompressedTexture) {\n for (var i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n if (texture.format !== RGBAFormat && texture.format !== RGBFormat) {\n if (state.getCompressedTextureFormats().indexOf(glFormat) > -1) {\n state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n } else {\n console.warn('THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()');\n }\n } else {\n state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n }\n }\n textureProperties.__maxMipLevel = mipmaps.length - 1;\n } else if (texture.isDataTexture2DArray) {\n state.texImage3D(35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n textureProperties.__maxMipLevel = 0;\n } else if (texture.isDataTexture3D) {\n state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n textureProperties.__maxMipLevel = 0;\n } else {\n // regular Texture (image, video, canvas)\n\n // use manually created mipmaps if available\n // if there are no manual mipmaps\n // set 0 level mipmap and then use GL to generate other mipmap levels\n\n if (mipmaps.length > 0 && supportsMips) {\n for (var i = 0, il = mipmaps.length; i < il; i++) {\n mipmap = mipmaps[i];\n state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap);\n }\n texture.generateMipmaps = false;\n textureProperties.__maxMipLevel = mipmaps.length - 1;\n } else {\n state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image);\n textureProperties.__maxMipLevel = 0;\n }\n }\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n generateMipmap(3553, texture, image.width, image.height);\n }\n textureProperties.__version = texture.version;\n if (texture.onUpdate) texture.onUpdate(texture);\n }\n\n // Render targets\n\n // Setup storage for target texture and bind it to correct framebuffer\n function setupFrameBufferTexture(framebuffer, renderTarget, attachment, textureTarget) {\n var glFormat = utils.convert(renderTarget.texture.format);\n var glType = utils.convert(renderTarget.texture.type);\n var glInternalFormat = getInternalFormat(glFormat, glType);\n state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n _gl.bindFramebuffer(36160, framebuffer);\n _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(renderTarget.texture).__webglTexture, 0);\n _gl.bindFramebuffer(36160, null);\n }\n\n // Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n _gl.bindRenderbuffer(36161, renderbuffer);\n if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n if (isMultisample) {\n var samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, 33189, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, 33189, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer);\n } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n if (isMultisample) {\n var samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, 34041, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height);\n }\n _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer);\n } else {\n var glFormat = utils.convert(renderTarget.texture.format);\n var glType = utils.convert(renderTarget.texture.type);\n var glInternalFormat = getInternalFormat(glFormat, glType);\n if (isMultisample) {\n var samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n } else {\n _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n }\n }\n _gl.bindRenderbuffer(36161, null);\n }\n\n // Setup resources for a Depth Texture for a FBO (needs an extension)\n function setupDepthTexture(framebuffer, renderTarget) {\n var isCube = renderTarget && renderTarget.isWebGLRenderTargetCube;\n if (isCube) throw new Error('Depth Texture with cube render targets is not supported');\n _gl.bindFramebuffer(36160, framebuffer);\n if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n throw new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n }\n\n // upload an empty depth texture with framebuffer size\n if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n renderTarget.depthTexture.image.width = renderTarget.width;\n renderTarget.depthTexture.image.height = renderTarget.height;\n renderTarget.depthTexture.needsUpdate = true;\n }\n setTexture2D(renderTarget.depthTexture, 0);\n var webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n if (renderTarget.depthTexture.format === DepthFormat) {\n _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0);\n } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0);\n } else {\n throw new Error('Unknown depthTexture format');\n }\n }\n\n // Setup GL resources for a non-texture depth buffer\n function setupDepthRenderbuffer(renderTarget) {\n var renderTargetProperties = properties.get(renderTarget);\n var isCube = renderTarget.isWebGLRenderTargetCube === true;\n if (renderTarget.depthTexture) {\n if (isCube) throw new Error('target.depthTexture not supported in Cube render targets');\n setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n } else {\n if (isCube) {\n renderTargetProperties.__webglDepthbuffer = [];\n for (var i = 0; i < 6; i++) {\n _gl.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]);\n renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget);\n }\n } else {\n _gl.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget);\n }\n }\n _gl.bindFramebuffer(36160, null);\n }\n\n // Set up GL resources for the render target\n function setupRenderTarget(renderTarget) {\n var renderTargetProperties = properties.get(renderTarget);\n var textureProperties = properties.get(renderTarget.texture);\n renderTarget.addEventListener('dispose', onRenderTargetDispose);\n textureProperties.__webglTexture = _gl.createTexture();\n info.memory.textures++;\n var isCube = renderTarget.isWebGLRenderTargetCube === true;\n var isMultisample = renderTarget.isWebGLMultisampleRenderTarget === true;\n var supportsMips = isPowerOfTwo(renderTarget) || capabilities.isWebGL2;\n\n // Setup framebuffer\n\n if (isCube) {\n renderTargetProperties.__webglFramebuffer = [];\n for (var i = 0; i < 6; i++) {\n renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n }\n } else {\n renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n if (isMultisample) {\n if (capabilities.isWebGL2) {\n renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n _gl.bindRenderbuffer(36161, renderTargetProperties.__webglColorRenderbuffer);\n var glFormat = utils.convert(renderTarget.texture.format);\n var glType = utils.convert(renderTarget.texture.type);\n var glInternalFormat = getInternalFormat(glFormat, glType);\n var samples = getRenderTargetSamples(renderTarget);\n _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n _gl.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n _gl.framebufferRenderbuffer(36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer);\n _gl.bindRenderbuffer(36161, null);\n if (renderTarget.depthBuffer) {\n renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n }\n _gl.bindFramebuffer(36160, null);\n } else {\n console.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.');\n }\n }\n }\n\n // Setup color buffer\n\n if (isCube) {\n state.bindTexture(34067, textureProperties.__webglTexture);\n setTextureParameters(34067, renderTarget.texture, supportsMips);\n for (var i = 0; i < 6; i++) {\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, 36064, 34069 + i);\n }\n if (textureNeedsGenerateMipmaps(renderTarget.texture, supportsMips)) {\n generateMipmap(34067, renderTarget.texture, renderTarget.width, renderTarget.height);\n }\n state.bindTexture(34067, null);\n } else {\n state.bindTexture(3553, textureProperties.__webglTexture);\n setTextureParameters(3553, renderTarget.texture, supportsMips);\n setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553);\n if (textureNeedsGenerateMipmaps(renderTarget.texture, supportsMips)) {\n generateMipmap(3553, renderTarget.texture, renderTarget.width, renderTarget.height);\n }\n state.bindTexture(3553, null);\n }\n\n // Setup depth and stencil buffers\n\n if (renderTarget.depthBuffer) {\n setupDepthRenderbuffer(renderTarget);\n }\n }\n function updateRenderTargetMipmap(renderTarget) {\n var texture = renderTarget.texture;\n var supportsMips = isPowerOfTwo(renderTarget) || capabilities.isWebGL2;\n if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553;\n var webglTexture = properties.get(texture).__webglTexture;\n state.bindTexture(target, webglTexture);\n generateMipmap(target, texture, renderTarget.width, renderTarget.height);\n state.bindTexture(target, null);\n }\n }\n function updateMultisampleRenderTarget(renderTarget) {\n if (renderTarget.isWebGLMultisampleRenderTarget) {\n if (capabilities.isWebGL2) {\n var renderTargetProperties = properties.get(renderTarget);\n _gl.bindFramebuffer(36008, renderTargetProperties.__webglMultisampledFramebuffer);\n _gl.bindFramebuffer(36009, renderTargetProperties.__webglFramebuffer);\n var width = renderTarget.width;\n var height = renderTarget.height;\n var mask = 16384;\n if (renderTarget.depthBuffer) mask |= 256;\n if (renderTarget.stencilBuffer) mask |= 1024;\n _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, 9728);\n } else {\n console.warn('THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.');\n }\n }\n }\n function getRenderTargetSamples(renderTarget) {\n return capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ? Math.min(capabilities.maxSamples, renderTarget.samples) : 0;\n }\n function updateVideoTexture(texture) {\n var id = texture.id;\n var frame = info.render.frame;\n\n // Check the last frame we updated the VideoTexture\n\n if (_videoTextures[id] !== frame) {\n _videoTextures[id] = frame;\n texture.update();\n }\n }\n\n // backwards compatibility\n\n var warnedTexture2D = false;\n var warnedTextureCube = false;\n function safeSetTexture2D(texture, slot) {\n if (texture && texture.isWebGLRenderTarget) {\n if (warnedTexture2D === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\");\n warnedTexture2D = true;\n }\n texture = texture.texture;\n }\n setTexture2D(texture, slot);\n }\n function safeSetTextureCube(texture, slot) {\n if (texture && texture.isWebGLRenderTargetCube) {\n if (warnedTextureCube === false) {\n console.warn(\"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\");\n warnedTextureCube = true;\n }\n texture = texture.texture;\n }\n\n // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n // TODO: unify these code paths\n if (texture && texture.isCubeTexture || Array.isArray(texture.image) && texture.image.length === 6) {\n // CompressedTexture can have Array in image :/\n\n // this function alone should take care of cube textures\n setTextureCube(texture, slot);\n } else {\n // assumed: texture property of THREE.WebGLRenderTargetCube\n setTextureCubeDynamic(texture, slot);\n }\n }\n\n //\n\n this.allocateTextureUnit = allocateTextureUnit;\n this.resetTextureUnits = resetTextureUnits;\n this.setTexture2D = setTexture2D;\n this.setTexture2DArray = setTexture2DArray;\n this.setTexture3D = setTexture3D;\n this.setTextureCube = setTextureCube;\n this.setTextureCubeDynamic = setTextureCubeDynamic;\n this.setupRenderTarget = setupRenderTarget;\n this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n this.safeSetTexture2D = safeSetTexture2D;\n this.safeSetTextureCube = safeSetTextureCube;\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils(gl, extensions, capabilities) {\n function convert(p) {\n var extension;\n if (p === RepeatWrapping) return 10497;\n if (p === ClampToEdgeWrapping) return 33071;\n if (p === MirroredRepeatWrapping) return 33648;\n if (p === NearestFilter) return 9728;\n if (p === NearestMipMapNearestFilter) return 9984;\n if (p === NearestMipMapLinearFilter) return 9986;\n if (p === LinearFilter) return 9729;\n if (p === LinearMipMapNearestFilter) return 9985;\n if (p === LinearMipMapLinearFilter) return 9987;\n if (p === UnsignedByteType) return 5121;\n if (p === UnsignedShort4444Type) return 32819;\n if (p === UnsignedShort5551Type) return 32820;\n if (p === UnsignedShort565Type) return 33635;\n if (p === ByteType) return 5120;\n if (p === ShortType) return 5122;\n if (p === UnsignedShortType) return 5123;\n if (p === IntType) return 5124;\n if (p === UnsignedIntType) return 5125;\n if (p === FloatType) return 5126;\n if (p === HalfFloatType) {\n if (capabilities.isWebGL2) return 5131;\n extension = extensions.get('OES_texture_half_float');\n if (extension !== null) return extension.HALF_FLOAT_OES;\n }\n if (p === AlphaFormat) return 6406;\n if (p === RGBFormat) return 6407;\n if (p === RGBAFormat) return 6408;\n if (p === LuminanceFormat) return 6409;\n if (p === LuminanceAlphaFormat) return 6410;\n if (p === DepthFormat) return 6402;\n if (p === DepthStencilFormat) return 34041;\n if (p === RedFormat) return 6403;\n if (p === AddEquation) return 32774;\n if (p === SubtractEquation) return 32778;\n if (p === ReverseSubtractEquation) return 32779;\n if (p === ZeroFactor) return 0;\n if (p === OneFactor) return 1;\n if (p === SrcColorFactor) return 768;\n if (p === OneMinusSrcColorFactor) return 769;\n if (p === SrcAlphaFactor) return 770;\n if (p === OneMinusSrcAlphaFactor) return 771;\n if (p === DstAlphaFactor) return 772;\n if (p === OneMinusDstAlphaFactor) return 773;\n if (p === DstColorFactor) return 774;\n if (p === OneMinusDstColorFactor) return 775;\n if (p === SrcAlphaSaturateFactor) return 776;\n if (p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\n extension = extensions.get('WEBGL_compressed_texture_s3tc');\n if (extension !== null) {\n if (p === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n if (p === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n if (p === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n }\n }\n if (p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format) {\n extension = extensions.get('WEBGL_compressed_texture_pvrtc');\n if (extension !== null) {\n if (p === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n if (p === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n if (p === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n if (p === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n }\n }\n if (p === RGB_ETC1_Format) {\n extension = extensions.get('WEBGL_compressed_texture_etc1');\n if (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n }\n if (p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format) {\n extension = extensions.get('WEBGL_compressed_texture_astc');\n if (extension !== null) {\n return p;\n }\n }\n if (p === MinEquation || p === MaxEquation) {\n if (capabilities.isWebGL2) {\n if (p === MinEquation) return 32775;\n if (p === MaxEquation) return 32776;\n }\n extension = extensions.get('EXT_blend_minmax');\n if (extension !== null) {\n if (p === MinEquation) return extension.MIN_EXT;\n if (p === MaxEquation) return extension.MAX_EXT;\n }\n }\n if (p === UnsignedInt248Type) {\n if (capabilities.isWebGL2) return 34042;\n extension = extensions.get('WEBGL_depth_texture');\n if (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL;\n }\n return 0;\n }\n return {\n convert: convert\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n Object3D.call(this);\n this.type = 'Group';\n}\nGroup.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Group,\n isGroup: true\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n Object3D.call(this);\n this.type = 'Camera';\n this.matrixWorldInverse = new Matrix4();\n this.projectionMatrix = new Matrix4();\n this.projectionMatrixInverse = new Matrix4();\n}\nCamera.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Camera,\n isCamera: true,\n copy: function (source, recursive) {\n Object3D.prototype.copy.call(this, source, recursive);\n this.matrixWorldInverse.copy(source.matrixWorldInverse);\n this.projectionMatrix.copy(source.projectionMatrix);\n this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n return this;\n },\n getWorldDirection: function (target) {\n if (target === undefined) {\n console.warn('THREE.Camera: .getWorldDirection() target is now required');\n target = new Vector3();\n }\n this.updateMatrixWorld(true);\n var e = this.matrixWorld.elements;\n return target.set(-e[8], -e[9], -e[10]).normalize();\n },\n updateMatrixWorld: function (force) {\n Object3D.prototype.updateMatrixWorld.call(this, force);\n this.matrixWorldInverse.getInverse(this.matrixWorld);\n },\n clone: function () {\n return new this.constructor().copy(this);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera(fov, aspect, near, far) {\n Camera.call(this);\n this.type = 'PerspectiveCamera';\n this.fov = fov !== undefined ? fov : 50;\n this.zoom = 1;\n this.near = near !== undefined ? near : 0.1;\n this.far = far !== undefined ? far : 2000;\n this.focus = 10;\n this.aspect = aspect !== undefined ? aspect : 1;\n this.view = null;\n this.filmGauge = 35; // width of the film (default in millimeters)\n this.filmOffset = 0; // horizontal film offset (same unit as gauge)\n\n this.updateProjectionMatrix();\n}\nPerspectiveCamera.prototype = Object.assign(Object.create(Camera.prototype), {\n constructor: PerspectiveCamera,\n isPerspectiveCamera: true,\n copy: function (source, recursive) {\n Camera.prototype.copy.call(this, source, recursive);\n this.fov = source.fov;\n this.zoom = source.zoom;\n this.near = source.near;\n this.far = source.far;\n this.focus = source.focus;\n this.aspect = source.aspect;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n this.filmGauge = source.filmGauge;\n this.filmOffset = source.filmOffset;\n return this;\n },\n /**\n * Sets the FOV by focal length in respect to the current .filmGauge.\n *\n * The default film gauge is 35, so that the focal length can be specified for\n * a 35mm (full frame) camera.\n *\n * Values for focal length and film gauge must have the same unit.\n */\n setFocalLength: function (focalLength) {\n // see http://www.bobatkins.com/photography/technical/field_of_view.html\n var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n this.fov = _Math.RAD2DEG * 2 * Math.atan(vExtentSlope);\n this.updateProjectionMatrix();\n },\n /**\n * Calculates the focal length from the current .fov and .filmGauge.\n */\n getFocalLength: function () {\n var vExtentSlope = Math.tan(_Math.DEG2RAD * 0.5 * this.fov);\n return 0.5 * this.getFilmHeight() / vExtentSlope;\n },\n getEffectiveFOV: function () {\n return _Math.RAD2DEG * 2 * Math.atan(Math.tan(_Math.DEG2RAD * 0.5 * this.fov) / this.zoom);\n },\n getFilmWidth: function () {\n // film not completely covered in portrait format (aspect < 1)\n return this.filmGauge * Math.min(this.aspect, 1);\n },\n getFilmHeight: function () {\n // film not completely covered in landscape format (aspect > 1)\n return this.filmGauge / Math.max(this.aspect, 1);\n },\n /**\n * Sets an offset in a larger frustum. This is useful for multi-window or\n * multi-monitor/multi-machine setups.\n *\n * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n * the monitors are in grid like this\n *\n * +---+---+---+\n * | A | B | C |\n * +---+---+---+\n * | D | E | F |\n * +---+---+---+\n *\n * then for each monitor you would call it like this\n *\n * var w = 1920;\n * var h = 1080;\n * var fullWidth = w * 3;\n * var fullHeight = h * 2;\n *\n * --A--\n * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n * --B--\n * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n * --C--\n * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n * --D--\n * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n * --E--\n * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n * --F--\n * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n *\n * Note there is no reason monitors have to be the same size or in a grid.\n */\n setViewOffset: function (fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n },\n clearViewOffset: function () {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n },\n updateProjectionMatrix: function () {\n var near = this.near,\n top = near * Math.tan(_Math.DEG2RAD * 0.5 * this.fov) / this.zoom,\n height = 2 * top,\n width = this.aspect * height,\n left = -0.5 * width,\n view = this.view;\n if (this.view !== null && this.view.enabled) {\n var fullWidth = view.fullWidth,\n fullHeight = view.fullHeight;\n left += view.offsetX * width / fullWidth;\n top -= view.offsetY * height / fullHeight;\n width *= view.width / fullWidth;\n height *= view.height / fullHeight;\n }\n var skew = this.filmOffset;\n if (skew !== 0) left += near * skew / this.getFilmWidth();\n this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n this.projectionMatrixInverse.getInverse(this.projectionMatrix);\n },\n toJSON: function (meta) {\n var data = Object3D.prototype.toJSON.call(this, meta);\n data.object.fov = this.fov;\n data.object.zoom = this.zoom;\n data.object.near = this.near;\n data.object.far = this.far;\n data.object.focus = this.focus;\n data.object.aspect = this.aspect;\n if (this.view !== null) data.object.view = Object.assign({}, this.view);\n data.object.filmGauge = this.filmGauge;\n data.object.filmOffset = this.filmOffset;\n return data;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera(array) {\n PerspectiveCamera.call(this);\n this.cameras = array || [];\n}\nArrayCamera.prototype = Object.assign(Object.create(PerspectiveCamera.prototype), {\n constructor: ArrayCamera,\n isArrayCamera: true\n});\n\n/**\n * @author jsantell / https://www.jsantell.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar cameraLPos = new Vector3();\nvar cameraRPos = new Vector3();\n\n/**\n * Assumes 2 cameras that are parallel and share an X-axis, and that\n * the cameras' projection and world matrices have already been set.\n * And that near and far planes are identical for both cameras.\n * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n */\nfunction setProjectionFromUnion(camera, cameraL, cameraR) {\n cameraLPos.setFromMatrixPosition(cameraL.matrixWorld);\n cameraRPos.setFromMatrixPosition(cameraR.matrixWorld);\n var ipd = cameraLPos.distanceTo(cameraRPos);\n var projL = cameraL.projectionMatrix.elements;\n var projR = cameraR.projectionMatrix.elements;\n\n // VR systems will have identical far and near planes, and\n // most likely identical top and bottom frustum extents.\n // Use the left camera for these values.\n var near = projL[14] / (projL[10] - 1);\n var far = projL[14] / (projL[10] + 1);\n var topFov = (projL[9] + 1) / projL[5];\n var bottomFov = (projL[9] - 1) / projL[5];\n var leftFov = (projL[8] - 1) / projL[0];\n var rightFov = (projR[8] + 1) / projR[0];\n var left = near * leftFov;\n var right = near * rightFov;\n\n // Calculate the new camera's position offset from the\n // left camera. xOffset should be roughly half `ipd`.\n var zOffset = ipd / (-leftFov + rightFov);\n var xOffset = zOffset * -leftFov;\n\n // TODO: Better way to apply this offset?\n cameraL.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n camera.translateX(xOffset);\n camera.translateZ(zOffset);\n camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n camera.matrixWorldInverse.getInverse(camera.matrixWorld);\n\n // Find the union of the frustum values of the cameras and scale\n // the values so that the near plane's position does not change in world space,\n // although must now be relative to the new union camera.\n var near2 = near + zOffset;\n var far2 = far + zOffset;\n var left2 = left - xOffset;\n var right2 = right + (ipd - xOffset);\n var top2 = topFov * far / far2 * near2;\n var bottom2 = bottomFov * far / far2 * near2;\n camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager(renderer) {\n var renderWidth, renderHeight;\n var scope = this;\n var device = null;\n var frameData = null;\n var poseTarget = null;\n var controllers = [];\n var standingMatrix = new Matrix4();\n var standingMatrixInverse = new Matrix4();\n var framebufferScaleFactor = 1.0;\n var referenceSpaceType = 'local-floor';\n if (typeof window !== 'undefined' && 'VRFrameData' in window) {\n frameData = new window.VRFrameData();\n window.addEventListener('vrdisplaypresentchange', onVRDisplayPresentChange, false);\n }\n var matrixWorldInverse = new Matrix4();\n var tempQuaternion = new Quaternion();\n var tempPosition = new Vector3();\n var cameraL = new PerspectiveCamera();\n cameraL.viewport = new Vector4();\n cameraL.layers.enable(1);\n var cameraR = new PerspectiveCamera();\n cameraR.viewport = new Vector4();\n cameraR.layers.enable(2);\n var cameraVR = new ArrayCamera([cameraL, cameraR]);\n cameraVR.layers.enable(1);\n cameraVR.layers.enable(2);\n\n //\n\n function isPresenting() {\n return device !== null && device.isPresenting === true;\n }\n var currentSize = new Vector2(),\n currentPixelRatio;\n function onVRDisplayPresentChange() {\n if (isPresenting()) {\n var eyeParameters = device.getEyeParameters('left');\n renderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor;\n renderHeight = eyeParameters.renderHeight * framebufferScaleFactor;\n currentPixelRatio = renderer.getPixelRatio();\n renderer.getSize(currentSize);\n renderer.setDrawingBufferSize(renderWidth, renderHeight, 1);\n cameraL.viewport.set(0, 0, renderWidth / 2, renderHeight);\n cameraR.viewport.set(renderWidth / 2, 0, renderWidth / 2, renderHeight);\n animation.start();\n } else {\n if (scope.enabled) {\n renderer.setDrawingBufferSize(currentSize.width, currentSize.height, currentPixelRatio);\n }\n animation.stop();\n }\n }\n\n //\n\n var triggers = [];\n function findGamepad(id) {\n var gamepads = navigator.getGamepads && navigator.getGamepads();\n for (var i = 0, j = 0, l = gamepads.length; i < l; i++) {\n var gamepad = gamepads[i];\n if (gamepad && (gamepad.id === 'Daydream Controller' || gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith('Oculus Touch') || gamepad.id.startsWith('Spatial Controller'))) {\n if (j === id) return gamepad;\n j++;\n }\n }\n }\n function updateControllers() {\n for (var i = 0; i < controllers.length; i++) {\n var controller = controllers[i];\n var gamepad = findGamepad(i);\n if (gamepad !== undefined && gamepad.pose !== undefined) {\n if (gamepad.pose === null) return;\n\n // Pose\n\n var pose = gamepad.pose;\n if (pose.hasPosition === false) controller.position.set(0.2, -0.6, -0.05);\n if (pose.position !== null) controller.position.fromArray(pose.position);\n if (pose.orientation !== null) controller.quaternion.fromArray(pose.orientation);\n controller.matrix.compose(controller.position, controller.quaternion, controller.scale);\n controller.matrix.premultiply(standingMatrix);\n controller.matrix.decompose(controller.position, controller.quaternion, controller.scale);\n controller.matrixWorldNeedsUpdate = true;\n controller.visible = true;\n\n // Trigger\n\n var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n if (triggers[i] === undefined) triggers[i] = false;\n if (triggers[i] !== gamepad.buttons[buttonId].pressed) {\n triggers[i] = gamepad.buttons[buttonId].pressed;\n if (triggers[i] === true) {\n controller.dispatchEvent({\n type: 'selectstart'\n });\n } else {\n controller.dispatchEvent({\n type: 'selectend'\n });\n controller.dispatchEvent({\n type: 'select'\n });\n }\n }\n } else {\n controller.visible = false;\n }\n }\n }\n function updateViewportFromBounds(viewport, bounds) {\n if (bounds !== null && bounds.length === 4) {\n viewport.set(bounds[0] * renderWidth, bounds[1] * renderHeight, bounds[2] * renderWidth, bounds[3] * renderHeight);\n }\n }\n\n //\n\n this.enabled = false;\n this.getController = function (id) {\n var controller = controllers[id];\n if (controller === undefined) {\n controller = new Group();\n controller.matrixAutoUpdate = false;\n controller.visible = false;\n controllers[id] = controller;\n }\n return controller;\n };\n this.getDevice = function () {\n return device;\n };\n this.setDevice = function (value) {\n if (value !== undefined) device = value;\n animation.setContext(value);\n };\n this.setFramebufferScaleFactor = function (value) {\n framebufferScaleFactor = value;\n };\n this.setReferenceSpaceType = function (value) {\n referenceSpaceType = value;\n };\n this.setPoseTarget = function (object) {\n if (object !== undefined) poseTarget = object;\n };\n this.getCamera = function (camera) {\n var userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0;\n if (isPresenting() === false) {\n camera.position.set(0, userHeight, 0);\n camera.rotation.set(0, 0, 0);\n return camera;\n }\n device.depthNear = camera.near;\n device.depthFar = camera.far;\n device.getFrameData(frameData);\n\n //\n\n if (referenceSpaceType === 'local-floor') {\n var stageParameters = device.stageParameters;\n if (stageParameters) {\n standingMatrix.fromArray(stageParameters.sittingToStandingTransform);\n } else {\n standingMatrix.makeTranslation(0, userHeight, 0);\n }\n }\n var pose = frameData.pose;\n var poseObject = poseTarget !== null ? poseTarget : camera;\n\n // We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n poseObject.matrix.copy(standingMatrix);\n poseObject.matrix.decompose(poseObject.position, poseObject.quaternion, poseObject.scale);\n if (pose.orientation !== null) {\n tempQuaternion.fromArray(pose.orientation);\n poseObject.quaternion.multiply(tempQuaternion);\n }\n if (pose.position !== null) {\n tempQuaternion.setFromRotationMatrix(standingMatrix);\n tempPosition.fromArray(pose.position);\n tempPosition.applyQuaternion(tempQuaternion);\n poseObject.position.add(tempPosition);\n }\n poseObject.updateMatrixWorld();\n\n //\n\n cameraL.near = camera.near;\n cameraR.near = camera.near;\n cameraL.far = camera.far;\n cameraR.far = camera.far;\n cameraL.matrixWorldInverse.fromArray(frameData.leftViewMatrix);\n cameraR.matrixWorldInverse.fromArray(frameData.rightViewMatrix);\n\n // TODO (mrdoob) Double check this code\n\n standingMatrixInverse.getInverse(standingMatrix);\n if (referenceSpaceType === 'local-floor') {\n cameraL.matrixWorldInverse.multiply(standingMatrixInverse);\n cameraR.matrixWorldInverse.multiply(standingMatrixInverse);\n }\n var parent = poseObject.parent;\n if (parent !== null) {\n matrixWorldInverse.getInverse(parent.matrixWorld);\n cameraL.matrixWorldInverse.multiply(matrixWorldInverse);\n cameraR.matrixWorldInverse.multiply(matrixWorldInverse);\n }\n\n // envMap and Mirror needs camera.matrixWorld\n\n cameraL.matrixWorld.getInverse(cameraL.matrixWorldInverse);\n cameraR.matrixWorld.getInverse(cameraR.matrixWorldInverse);\n cameraL.projectionMatrix.fromArray(frameData.leftProjectionMatrix);\n cameraR.projectionMatrix.fromArray(frameData.rightProjectionMatrix);\n setProjectionFromUnion(cameraVR, cameraL, cameraR);\n\n //\n\n var layers = device.getLayers();\n if (layers.length) {\n var layer = layers[0];\n updateViewportFromBounds(cameraL.viewport, layer.leftBounds);\n updateViewportFromBounds(cameraR.viewport, layer.rightBounds);\n }\n updateControllers();\n return cameraVR;\n };\n this.getStandingMatrix = function () {\n return standingMatrix;\n };\n this.isPresenting = isPresenting;\n\n // Animation Loop\n\n var animation = new WebGLAnimation();\n this.setAnimationLoop = function (callback) {\n animation.setAnimationLoop(callback);\n if (isPresenting()) animation.start();\n };\n this.submitFrame = function () {\n if (isPresenting()) device.submitFrame();\n };\n this.dispose = function () {\n if (typeof window !== 'undefined') {\n window.removeEventListener('vrdisplaypresentchange', onVRDisplayPresentChange);\n }\n };\n\n // DEPRECATED\n\n this.setFrameOfReferenceType = function () {\n console.warn('THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.');\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager(renderer) {\n var gl = renderer.context;\n var session = null;\n var referenceSpace = null;\n var referenceSpaceType = 'local-floor';\n var pose = null;\n var controllers = [];\n var inputSources = [];\n function isPresenting() {\n return session !== null && referenceSpace !== null;\n }\n\n //\n\n var cameraL = new PerspectiveCamera();\n cameraL.layers.enable(1);\n cameraL.viewport = new Vector4();\n var cameraR = new PerspectiveCamera();\n cameraR.layers.enable(2);\n cameraR.viewport = new Vector4();\n var cameraVR = new ArrayCamera([cameraL, cameraR]);\n cameraVR.layers.enable(1);\n cameraVR.layers.enable(2);\n\n //\n\n this.enabled = false;\n this.getController = function (id) {\n var controller = controllers[id];\n if (controller === undefined) {\n controller = new Group();\n controller.matrixAutoUpdate = false;\n controller.visible = false;\n controllers[id] = controller;\n }\n return controller;\n };\n\n //\n\n function onSessionEvent(event) {\n for (var i = 0; i < controllers.length; i++) {\n if (inputSources[i] === event.inputSource) {\n controllers[i].dispatchEvent({\n type: event.type\n });\n }\n }\n }\n function onSessionEnd() {\n renderer.setFramebuffer(null);\n renderer.setRenderTarget(renderer.getRenderTarget()); // Hack #15830\n animation.stop();\n }\n function onRequestReferenceSpace(value) {\n referenceSpace = value;\n animation.setContext(session);\n animation.start();\n }\n this.setFramebufferScaleFactor = function (value) {};\n this.setReferenceSpaceType = function (value) {\n referenceSpaceType = value;\n };\n this.getSession = function () {\n return session;\n };\n this.setSession = function (value) {\n session = value;\n if (session !== null) {\n session.addEventListener('select', onSessionEvent);\n session.addEventListener('selectstart', onSessionEvent);\n session.addEventListener('selectend', onSessionEvent);\n session.addEventListener('end', onSessionEnd);\n session.updateRenderState({\n baseLayer: new XRWebGLLayer(session, gl)\n });\n session.requestReferenceSpace(referenceSpaceType).then(onRequestReferenceSpace);\n\n //\n\n inputSources = session.inputSources;\n session.addEventListener('inputsourceschange', function () {\n inputSources = session.inputSources;\n console.log(inputSources);\n for (var i = 0; i < controllers.length; i++) {\n var controller = controllers[i];\n controller.userData.inputSource = inputSources[i];\n }\n });\n }\n };\n function updateCamera(camera, parent) {\n if (parent === null) {\n camera.matrixWorld.copy(camera.matrix);\n } else {\n camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n }\n camera.matrixWorldInverse.getInverse(camera.matrixWorld);\n }\n this.getCamera = function (camera) {\n if (isPresenting()) {\n var parent = camera.parent;\n var cameras = cameraVR.cameras;\n updateCamera(cameraVR, parent);\n for (var i = 0; i < cameras.length; i++) {\n updateCamera(cameras[i], parent);\n }\n\n // update camera and its children\n\n camera.matrixWorld.copy(cameraVR.matrixWorld);\n var children = camera.children;\n for (var i = 0, l = children.length; i < l; i++) {\n children[i].updateMatrixWorld(true);\n }\n setProjectionFromUnion(cameraVR, cameraL, cameraR);\n return cameraVR;\n }\n return camera;\n };\n this.isPresenting = isPresenting;\n\n // Animation Loop\n\n var onAnimationFrameCallback = null;\n function onAnimationFrame(time, frame) {\n pose = frame.getViewerPose(referenceSpace);\n if (pose !== null) {\n var views = pose.views;\n var baseLayer = session.renderState.baseLayer;\n renderer.setFramebuffer(baseLayer.framebuffer);\n for (var i = 0; i < views.length; i++) {\n var view = views[i];\n var viewport = baseLayer.getViewport(view);\n var viewMatrix = view.transform.inverse.matrix;\n var camera = cameraVR.cameras[i];\n camera.matrix.fromArray(viewMatrix).getInverse(camera.matrix);\n camera.projectionMatrix.fromArray(view.projectionMatrix);\n camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n if (i === 0) {\n cameraVR.matrix.copy(camera.matrix);\n }\n }\n }\n\n //\n\n for (var i = 0; i < controllers.length; i++) {\n var controller = controllers[i];\n var inputSource = inputSources[i];\n if (inputSource) {\n var inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n if (inputPose !== null) {\n controller.matrix.fromArray(inputPose.transform.matrix);\n controller.matrix.decompose(controller.position, controller.rotation, controller.scale);\n controller.visible = true;\n continue;\n }\n }\n controller.visible = false;\n }\n if (onAnimationFrameCallback) onAnimationFrameCallback(time);\n }\n var animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n this.setAnimationLoop = function (callback) {\n onAnimationFrameCallback = callback;\n };\n this.dispose = function () {};\n\n // DEPRECATED\n\n this.getStandingMatrix = function () {\n console.warn('THREE.WebXRManager: getStandingMatrix() is no longer needed.');\n return new Matrix4();\n };\n this.getDevice = function () {\n console.warn('THREE.WebXRManager: getDevice() has been deprecated.');\n };\n this.setDevice = function () {\n console.warn('THREE.WebXRManager: setDevice() has been deprecated.');\n };\n this.setFrameOfReferenceType = function () {\n console.warn('THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.');\n };\n this.submitFrame = function () {};\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer(parameters) {\n console.log('THREE.WebGLRenderer', REVISION);\n parameters = parameters || {};\n var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'),\n _context = parameters.context !== undefined ? parameters.context : null,\n _alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n _depth = parameters.depth !== undefined ? parameters.depth : true,\n _stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n _antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n var currentRenderList = null;\n var currentRenderState = null;\n\n // public properties\n\n this.domElement = _canvas;\n this.context = null;\n\n // Debug configuration container\n this.debug = {\n /**\n * Enables error checking and reporting when shader programs are being compiled\n * @type {boolean}\n */\n checkShaderErrors: true\n };\n\n // clearing\n\n this.autoClear = true;\n this.autoClearColor = true;\n this.autoClearDepth = true;\n this.autoClearStencil = true;\n\n // scene graph\n\n this.sortObjects = true;\n\n // user-defined clipping\n\n this.clippingPlanes = [];\n this.localClippingEnabled = false;\n\n // physically based shading\n\n this.gammaFactor = 2.0; // for backwards compatibility\n this.gammaInput = false;\n this.gammaOutput = false;\n\n // physical lights\n\n this.physicallyCorrectLights = false;\n\n // tone mapping\n\n this.toneMapping = LinearToneMapping;\n this.toneMappingExposure = 1.0;\n this.toneMappingWhitePoint = 1.0;\n\n // morphs\n\n this.maxMorphTargets = 8;\n this.maxMorphNormals = 4;\n\n // internal properties\n\n var _this = this,\n _isContextLost = false,\n // internal state cache\n\n _framebuffer = null,\n _currentActiveCubeFace = 0,\n _currentActiveMipmapLevel = 0,\n _currentRenderTarget = null,\n _currentFramebuffer = null,\n _currentMaterialId = -1,\n // geometry and program caching\n\n _currentGeometryProgram = {\n geometry: null,\n program: null,\n wireframe: false\n },\n _currentCamera = null,\n _currentArrayCamera = null,\n _currentViewport = new Vector4(),\n _currentScissor = new Vector4(),\n _currentScissorTest = null,\n //\n\n _width = _canvas.width,\n _height = _canvas.height,\n _pixelRatio = 1,\n _viewport = new Vector4(0, 0, _width, _height),\n _scissor = new Vector4(0, 0, _width, _height),\n _scissorTest = false,\n // frustum\n\n _frustum = new Frustum(),\n // clipping\n\n _clipping = new WebGLClipping(),\n _clippingEnabled = false,\n _localClippingEnabled = false,\n // camera matrices cache\n\n _projScreenMatrix = new Matrix4(),\n _vector3 = new Vector3();\n function getTargetPixelRatio() {\n return _currentRenderTarget === null ? _pixelRatio : 1;\n }\n\n // initialize\n\n var _gl;\n try {\n var contextAttributes = {\n alpha: _alpha,\n depth: _depth,\n stencil: _stencil,\n antialias: _antialias,\n premultipliedAlpha: _premultipliedAlpha,\n preserveDrawingBuffer: _preserveDrawingBuffer,\n powerPreference: _powerPreference,\n failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,\n xrCompatible: true\n };\n\n // event listeners must be registered before WebGL context is created, see #12753\n\n _canvas.addEventListener('webglcontextlost', onContextLost, false);\n _canvas.addEventListener('webglcontextrestored', onContextRestore, false);\n _gl = _context || _canvas.getContext('webgl', contextAttributes) || _canvas.getContext('experimental-webgl', contextAttributes);\n if (_gl === null) {\n if (_canvas.getContext('webgl') !== null) {\n throw new Error('Error creating WebGL context with your selected attributes.');\n } else {\n throw new Error('Error creating WebGL context.');\n }\n }\n\n // Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n if (_gl.getShaderPrecisionFormat === undefined) {\n _gl.getShaderPrecisionFormat = function () {\n return {\n 'rangeMin': 1,\n 'rangeMax': 1,\n 'precision': 1\n };\n };\n }\n } catch (error) {\n console.error('THREE.WebGLRenderer: ' + error.message);\n throw error;\n }\n var extensions, capabilities, state, info;\n var properties, textures, attributes, geometries, objects;\n var programCache, renderLists, renderStates;\n var background, morphtargets, bufferRenderer, indexedBufferRenderer;\n var utils;\n function initGLContext() {\n extensions = new WebGLExtensions(_gl);\n capabilities = new WebGLCapabilities(_gl, extensions, parameters);\n if (!capabilities.isWebGL2) {\n extensions.get('WEBGL_depth_texture');\n extensions.get('OES_texture_float');\n extensions.get('OES_texture_half_float');\n extensions.get('OES_texture_half_float_linear');\n extensions.get('OES_standard_derivatives');\n extensions.get('OES_element_index_uint');\n extensions.get('ANGLE_instanced_arrays');\n }\n extensions.get('OES_texture_float_linear');\n utils = new WebGLUtils(_gl, extensions, capabilities);\n state = new WebGLState(_gl, extensions, utils, capabilities);\n state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio));\n state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio));\n info = new WebGLInfo(_gl);\n properties = new WebGLProperties();\n textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n attributes = new WebGLAttributes(_gl);\n geometries = new WebGLGeometries(_gl, attributes, info);\n objects = new WebGLObjects(geometries, info);\n morphtargets = new WebGLMorphtargets(_gl);\n programCache = new WebGLPrograms(_this, extensions, capabilities, textures);\n renderLists = new WebGLRenderLists();\n renderStates = new WebGLRenderStates();\n background = new WebGLBackground(_this, state, objects, _premultipliedAlpha);\n bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n info.programs = programCache.programs;\n _this.context = _gl;\n _this.capabilities = capabilities;\n _this.extensions = extensions;\n _this.properties = properties;\n _this.renderLists = renderLists;\n _this.state = state;\n _this.info = info;\n }\n initGLContext();\n\n // vr\n\n var vr = typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ? new WebXRManager(_this) : new WebVRManager(_this);\n this.vr = vr;\n\n // shadow map\n\n var shadowMap = new WebGLShadowMap(_this, objects, capabilities.maxTextureSize);\n this.shadowMap = shadowMap;\n\n // API\n\n this.getContext = function () {\n return _gl;\n };\n this.getContextAttributes = function () {\n return _gl.getContextAttributes();\n };\n this.forceContextLoss = function () {\n var extension = extensions.get('WEBGL_lose_context');\n if (extension) extension.loseContext();\n };\n this.forceContextRestore = function () {\n var extension = extensions.get('WEBGL_lose_context');\n if (extension) extension.restoreContext();\n };\n this.getPixelRatio = function () {\n return _pixelRatio;\n };\n this.setPixelRatio = function (value) {\n if (value === undefined) return;\n _pixelRatio = value;\n this.setSize(_width, _height, false);\n };\n this.getSize = function (target) {\n if (target === undefined) {\n console.warn('WebGLRenderer: .getsize() now requires a Vector2 as an argument');\n target = new Vector2();\n }\n return target.set(_width, _height);\n };\n this.setSize = function (width, height, updateStyle) {\n if (vr.isPresenting()) {\n console.warn('THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.');\n return;\n }\n _width = width;\n _height = height;\n _canvas.width = width * _pixelRatio;\n _canvas.height = height * _pixelRatio;\n if (updateStyle !== false) {\n _canvas.style.width = width + 'px';\n _canvas.style.height = height + 'px';\n }\n this.setViewport(0, 0, width, height);\n };\n this.getDrawingBufferSize = function (target) {\n if (target === undefined) {\n console.warn('WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument');\n target = new Vector2();\n }\n return target.set(_width * _pixelRatio, _height * _pixelRatio);\n };\n this.setDrawingBufferSize = function (width, height, pixelRatio) {\n _width = width;\n _height = height;\n _pixelRatio = pixelRatio;\n _canvas.width = width * pixelRatio;\n _canvas.height = height * pixelRatio;\n this.setViewport(0, 0, width, height);\n };\n this.getCurrentViewport = function (target) {\n if (target === undefined) {\n console.warn('WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument');\n target = new Vector4();\n }\n return target.copy(_currentViewport);\n };\n this.getViewport = function (target) {\n return target.copy(_viewport);\n };\n this.setViewport = function (x, y, width, height) {\n if (x.isVector4) {\n _viewport.set(x.x, x.y, x.z, x.w);\n } else {\n _viewport.set(x, y, width, height);\n }\n state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio));\n };\n this.getScissor = function (target) {\n return target.copy(_scissor);\n };\n this.setScissor = function (x, y, width, height) {\n if (x.isVector4) {\n _scissor.set(x.x, x.y, x.z, x.w);\n } else {\n _scissor.set(x, y, width, height);\n }\n state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio));\n };\n this.getScissorTest = function () {\n return _scissorTest;\n };\n this.setScissorTest = function (boolean) {\n state.setScissorTest(_scissorTest = boolean);\n };\n\n // Clearing\n\n this.getClearColor = function () {\n return background.getClearColor();\n };\n this.setClearColor = function () {\n background.setClearColor.apply(background, arguments);\n };\n this.getClearAlpha = function () {\n return background.getClearAlpha();\n };\n this.setClearAlpha = function () {\n background.setClearAlpha.apply(background, arguments);\n };\n this.clear = function (color, depth, stencil) {\n var bits = 0;\n if (color === undefined || color) bits |= 16384;\n if (depth === undefined || depth) bits |= 256;\n if (stencil === undefined || stencil) bits |= 1024;\n _gl.clear(bits);\n };\n this.clearColor = function () {\n this.clear(true, false, false);\n };\n this.clearDepth = function () {\n this.clear(false, true, false);\n };\n this.clearStencil = function () {\n this.clear(false, false, true);\n };\n\n //\n\n this.dispose = function () {\n _canvas.removeEventListener('webglcontextlost', onContextLost, false);\n _canvas.removeEventListener('webglcontextrestored', onContextRestore, false);\n renderLists.dispose();\n renderStates.dispose();\n properties.dispose();\n objects.dispose();\n vr.dispose();\n animation.stop();\n };\n\n // Events\n\n function onContextLost(event) {\n event.preventDefault();\n console.log('THREE.WebGLRenderer: Context Lost.');\n _isContextLost = true;\n }\n function onContextRestore( /* event */\n ) {\n console.log('THREE.WebGLRenderer: Context Restored.');\n _isContextLost = false;\n initGLContext();\n }\n function onMaterialDispose(event) {\n var material = event.target;\n material.removeEventListener('dispose', onMaterialDispose);\n deallocateMaterial(material);\n }\n\n // Buffer deallocation\n\n function deallocateMaterial(material) {\n releaseMaterialProgramReference(material);\n properties.remove(material);\n }\n function releaseMaterialProgramReference(material) {\n var programInfo = properties.get(material).program;\n material.program = undefined;\n if (programInfo !== undefined) {\n programCache.releaseProgram(programInfo);\n }\n }\n\n // Buffer rendering\n\n function renderObjectImmediate(object, program) {\n object.render(function (object) {\n _this.renderBufferImmediate(object, program);\n });\n }\n this.renderBufferImmediate = function (object, program) {\n state.initAttributes();\n var buffers = properties.get(object);\n if (object.hasPositions && !buffers.position) buffers.position = _gl.createBuffer();\n if (object.hasNormals && !buffers.normal) buffers.normal = _gl.createBuffer();\n if (object.hasUvs && !buffers.uv) buffers.uv = _gl.createBuffer();\n if (object.hasColors && !buffers.color) buffers.color = _gl.createBuffer();\n var programAttributes = program.getAttributes();\n if (object.hasPositions) {\n _gl.bindBuffer(34962, buffers.position);\n _gl.bufferData(34962, object.positionArray, 35048);\n state.enableAttribute(programAttributes.position);\n _gl.vertexAttribPointer(programAttributes.position, 3, 5126, false, 0, 0);\n }\n if (object.hasNormals) {\n _gl.bindBuffer(34962, buffers.normal);\n _gl.bufferData(34962, object.normalArray, 35048);\n state.enableAttribute(programAttributes.normal);\n _gl.vertexAttribPointer(programAttributes.normal, 3, 5126, false, 0, 0);\n }\n if (object.hasUvs) {\n _gl.bindBuffer(34962, buffers.uv);\n _gl.bufferData(34962, object.uvArray, 35048);\n state.enableAttribute(programAttributes.uv);\n _gl.vertexAttribPointer(programAttributes.uv, 2, 5126, false, 0, 0);\n }\n if (object.hasColors) {\n _gl.bindBuffer(34962, buffers.color);\n _gl.bufferData(34962, object.colorArray, 35048);\n state.enableAttribute(programAttributes.color);\n _gl.vertexAttribPointer(programAttributes.color, 3, 5126, false, 0, 0);\n }\n state.disableUnusedAttributes();\n _gl.drawArrays(4, 0, object.count);\n object.count = 0;\n };\n this.renderBufferDirect = function (camera, fog, geometry, material, object, group) {\n var frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n state.setMaterial(material, frontFaceCW);\n var program = setProgram(camera, fog, material, object);\n var updateBuffers = false;\n if (_currentGeometryProgram.geometry !== geometry.id || _currentGeometryProgram.program !== program.id || _currentGeometryProgram.wireframe !== (material.wireframe === true)) {\n _currentGeometryProgram.geometry = geometry.id;\n _currentGeometryProgram.program = program.id;\n _currentGeometryProgram.wireframe = material.wireframe === true;\n updateBuffers = true;\n }\n if (object.morphTargetInfluences) {\n morphtargets.update(object, geometry, material, program);\n updateBuffers = true;\n }\n\n //\n\n var index = geometry.index;\n var position = geometry.attributes.position;\n var rangeFactor = 1;\n if (material.wireframe === true) {\n index = geometries.getWireframeAttribute(geometry);\n rangeFactor = 2;\n }\n var attribute;\n var renderer = bufferRenderer;\n if (index !== null) {\n attribute = attributes.get(index);\n renderer = indexedBufferRenderer;\n renderer.setIndex(attribute);\n }\n if (updateBuffers) {\n setupVertexAttributes(material, program, geometry);\n if (index !== null) {\n _gl.bindBuffer(34963, attribute.buffer);\n }\n }\n\n //\n\n var dataCount = Infinity;\n if (index !== null) {\n dataCount = index.count;\n } else if (position !== undefined) {\n dataCount = position.count;\n }\n var rangeStart = geometry.drawRange.start * rangeFactor;\n var rangeCount = geometry.drawRange.count * rangeFactor;\n var groupStart = group !== null ? group.start * rangeFactor : 0;\n var groupCount = group !== null ? group.count * rangeFactor : Infinity;\n var drawStart = Math.max(rangeStart, groupStart);\n var drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n var drawCount = Math.max(0, drawEnd - drawStart + 1);\n if (drawCount === 0) return;\n\n //\n\n if (object.isMesh) {\n if (material.wireframe === true) {\n state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n renderer.setMode(1);\n } else {\n switch (object.drawMode) {\n case TrianglesDrawMode:\n renderer.setMode(4);\n break;\n case TriangleStripDrawMode:\n renderer.setMode(5);\n break;\n case TriangleFanDrawMode:\n renderer.setMode(6);\n break;\n }\n }\n } else if (object.isLine) {\n var lineWidth = material.linewidth;\n if (lineWidth === undefined) lineWidth = 1; // Not using Line*Material\n\n state.setLineWidth(lineWidth * getTargetPixelRatio());\n if (object.isLineSegments) {\n renderer.setMode(1);\n } else if (object.isLineLoop) {\n renderer.setMode(2);\n } else {\n renderer.setMode(3);\n }\n } else if (object.isPoints) {\n renderer.setMode(0);\n } else if (object.isSprite) {\n renderer.setMode(4);\n }\n if (geometry && geometry.isInstancedBufferGeometry) {\n if (geometry.maxInstancedCount > 0) {\n renderer.renderInstances(geometry, drawStart, drawCount);\n }\n } else {\n renderer.render(drawStart, drawCount);\n }\n };\n function setupVertexAttributes(material, program, geometry) {\n if (geometry && geometry.isInstancedBufferGeometry && !capabilities.isWebGL2) {\n if (extensions.get('ANGLE_instanced_arrays') === null) {\n console.error('THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.');\n return;\n }\n }\n state.initAttributes();\n var geometryAttributes = geometry.attributes;\n var programAttributes = program.getAttributes();\n var materialDefaultAttributeValues = material.defaultAttributeValues;\n for (var name in programAttributes) {\n var programAttribute = programAttributes[name];\n if (programAttribute >= 0) {\n var geometryAttribute = geometryAttributes[name];\n if (geometryAttribute !== undefined) {\n var normalized = geometryAttribute.normalized;\n var size = geometryAttribute.itemSize;\n var attribute = attributes.get(geometryAttribute);\n\n // TODO Attribute may not be available on context restore\n\n if (attribute === undefined) continue;\n var buffer = attribute.buffer;\n var type = attribute.type;\n var bytesPerElement = attribute.bytesPerElement;\n if (geometryAttribute.isInterleavedBufferAttribute) {\n var data = geometryAttribute.data;\n var stride = data.stride;\n var offset = geometryAttribute.offset;\n if (data && data.isInstancedInterleavedBuffer) {\n state.enableAttributeAndDivisor(programAttribute, data.meshPerAttribute);\n if (geometry.maxInstancedCount === undefined) {\n geometry.maxInstancedCount = data.meshPerAttribute * data.count;\n }\n } else {\n state.enableAttribute(programAttribute);\n }\n _gl.bindBuffer(34962, buffer);\n _gl.vertexAttribPointer(programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement);\n } else {\n if (geometryAttribute.isInstancedBufferAttribute) {\n state.enableAttributeAndDivisor(programAttribute, geometryAttribute.meshPerAttribute);\n if (geometry.maxInstancedCount === undefined) {\n geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n }\n } else {\n state.enableAttribute(programAttribute);\n }\n _gl.bindBuffer(34962, buffer);\n _gl.vertexAttribPointer(programAttribute, size, type, normalized, 0, 0);\n }\n } else if (materialDefaultAttributeValues !== undefined) {\n var value = materialDefaultAttributeValues[name];\n if (value !== undefined) {\n switch (value.length) {\n case 2:\n _gl.vertexAttrib2fv(programAttribute, value);\n break;\n case 3:\n _gl.vertexAttrib3fv(programAttribute, value);\n break;\n case 4:\n _gl.vertexAttrib4fv(programAttribute, value);\n break;\n default:\n _gl.vertexAttrib1fv(programAttribute, value);\n }\n }\n }\n }\n }\n state.disableUnusedAttributes();\n }\n\n // Compile\n\n this.compile = function (scene, camera) {\n currentRenderState = renderStates.get(scene, camera);\n currentRenderState.init();\n scene.traverse(function (object) {\n if (object.isLight) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n }\n });\n currentRenderState.setupLights(camera);\n scene.traverse(function (object) {\n if (object.material) {\n if (Array.isArray(object.material)) {\n for (var i = 0; i < object.material.length; i++) {\n initMaterial(object.material[i], scene.fog, object);\n }\n } else {\n initMaterial(object.material, scene.fog, object);\n }\n }\n });\n };\n\n // Animation Loop\n\n var onAnimationFrameCallback = null;\n function onAnimationFrame(time) {\n if (vr.isPresenting()) return;\n if (onAnimationFrameCallback) onAnimationFrameCallback(time);\n }\n var animation = new WebGLAnimation();\n animation.setAnimationLoop(onAnimationFrame);\n if (typeof window !== 'undefined') animation.setContext(window);\n this.setAnimationLoop = function (callback) {\n onAnimationFrameCallback = callback;\n vr.setAnimationLoop(callback);\n animation.start();\n };\n\n // Rendering\n\n this.render = function (scene, camera) {\n var renderTarget, forceClear;\n if (arguments[2] !== undefined) {\n console.warn('THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.');\n renderTarget = arguments[2];\n }\n if (arguments[3] !== undefined) {\n console.warn('THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.');\n forceClear = arguments[3];\n }\n if (!(camera && camera.isCamera)) {\n console.error('THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.');\n return;\n }\n if (_isContextLost) return;\n\n // reset caching for this frame\n\n _currentGeometryProgram.geometry = null;\n _currentGeometryProgram.program = null;\n _currentGeometryProgram.wireframe = false;\n _currentMaterialId = -1;\n _currentCamera = null;\n\n // update scene graph\n\n if (scene.autoUpdate === true) scene.updateMatrixWorld();\n\n // update camera matrices and frustum\n\n if (camera.parent === null) camera.updateMatrixWorld();\n if (vr.enabled) {\n camera = vr.getCamera(camera);\n }\n\n //\n\n currentRenderState = renderStates.get(scene, camera);\n currentRenderState.init();\n scene.onBeforeRender(_this, scene, camera, renderTarget || _currentRenderTarget);\n _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n _frustum.setFromMatrix(_projScreenMatrix);\n _localClippingEnabled = this.localClippingEnabled;\n _clippingEnabled = _clipping.init(this.clippingPlanes, _localClippingEnabled, camera);\n currentRenderList = renderLists.get(scene, camera);\n currentRenderList.init();\n projectObject(scene, camera, 0, _this.sortObjects);\n if (_this.sortObjects === true) {\n currentRenderList.sort();\n }\n\n //\n\n if (_clippingEnabled) _clipping.beginShadows();\n var shadowsArray = currentRenderState.state.shadowsArray;\n shadowMap.render(shadowsArray, scene, camera);\n currentRenderState.setupLights(camera);\n if (_clippingEnabled) _clipping.endShadows();\n\n //\n\n if (this.info.autoReset) this.info.reset();\n if (renderTarget !== undefined) {\n this.setRenderTarget(renderTarget);\n }\n\n //\n\n background.render(currentRenderList, scene, camera, forceClear);\n\n // render scene\n\n var opaqueObjects = currentRenderList.opaque;\n var transparentObjects = currentRenderList.transparent;\n if (scene.overrideMaterial) {\n var overrideMaterial = scene.overrideMaterial;\n if (opaqueObjects.length) renderObjects(opaqueObjects, scene, camera, overrideMaterial);\n if (transparentObjects.length) renderObjects(transparentObjects, scene, camera, overrideMaterial);\n } else {\n // opaque pass (front-to-back order)\n\n if (opaqueObjects.length) renderObjects(opaqueObjects, scene, camera);\n\n // transparent pass (back-to-front order)\n\n if (transparentObjects.length) renderObjects(transparentObjects, scene, camera);\n }\n\n //\n\n scene.onAfterRender(_this, scene, camera);\n\n //\n\n if (_currentRenderTarget !== null) {\n // Generate mipmap if we're using any kind of mipmap filtering\n\n textures.updateRenderTargetMipmap(_currentRenderTarget);\n\n // resolve multisample renderbuffers to a single-sample texture if necessary\n\n textures.updateMultisampleRenderTarget(_currentRenderTarget);\n }\n\n // Ensure depth buffer writing is enabled so it can be cleared on next render\n\n state.buffers.depth.setTest(true);\n state.buffers.depth.setMask(true);\n state.buffers.color.setMask(true);\n state.setPolygonOffset(false);\n if (vr.enabled) {\n vr.submitFrame();\n }\n\n // _gl.finish();\n\n currentRenderList = null;\n currentRenderState = null;\n };\n function projectObject(object, camera, groupOrder, sortObjects) {\n if (object.visible === false) return;\n var visible = object.layers.test(camera.layers);\n if (visible) {\n if (object.isGroup) {\n groupOrder = object.renderOrder;\n } else if (object.isLight) {\n currentRenderState.pushLight(object);\n if (object.castShadow) {\n currentRenderState.pushShadow(object);\n }\n } else if (object.isSprite) {\n if (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n }\n var geometry = objects.update(object);\n var material = object.material;\n if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n } else if (object.isImmediateRenderObject) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n }\n currentRenderList.push(object, null, object.material, groupOrder, _vector3.z, null);\n } else if (object.isMesh || object.isLine || object.isPoints) {\n if (object.isSkinnedMesh) {\n object.skeleton.update();\n }\n if (!object.frustumCulled || _frustum.intersectsObject(object)) {\n if (sortObjects) {\n _vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix);\n }\n var geometry = objects.update(object);\n var material = object.material;\n if (Array.isArray(material)) {\n var groups = geometry.groups;\n for (var i = 0, l = groups.length; i < l; i++) {\n var group = groups[i];\n var groupMaterial = material[group.materialIndex];\n if (groupMaterial && groupMaterial.visible) {\n currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector3.z, group);\n }\n }\n } else if (material.visible) {\n currentRenderList.push(object, geometry, material, groupOrder, _vector3.z, null);\n }\n }\n }\n }\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n projectObject(children[i], camera, groupOrder, sortObjects);\n }\n }\n function renderObjects(renderList, scene, camera, overrideMaterial) {\n for (var i = 0, l = renderList.length; i < l; i++) {\n var renderItem = renderList[i];\n var object = renderItem.object;\n var geometry = renderItem.geometry;\n var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n var group = renderItem.group;\n if (camera.isArrayCamera) {\n _currentArrayCamera = camera;\n var cameras = camera.cameras;\n for (var j = 0, jl = cameras.length; j < jl; j++) {\n var camera2 = cameras[j];\n if (object.layers.test(camera2.layers)) {\n state.viewport(_currentViewport.copy(camera2.viewport));\n currentRenderState.setupLights(camera2);\n renderObject(object, scene, camera2, geometry, material, group);\n }\n }\n } else {\n _currentArrayCamera = null;\n renderObject(object, scene, camera, geometry, material, group);\n }\n }\n }\n function renderObject(object, scene, camera, geometry, material, group) {\n object.onBeforeRender(_this, scene, camera, geometry, material, group);\n currentRenderState = renderStates.get(scene, _currentArrayCamera || camera);\n object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n if (object.isImmediateRenderObject) {\n state.setMaterial(material);\n var program = setProgram(camera, scene.fog, material, object);\n _currentGeometryProgram.geometry = null;\n _currentGeometryProgram.program = null;\n _currentGeometryProgram.wireframe = false;\n renderObjectImmediate(object, program);\n } else {\n _this.renderBufferDirect(camera, scene.fog, geometry, material, object, group);\n }\n object.onAfterRender(_this, scene, camera, geometry, material, group);\n currentRenderState = renderStates.get(scene, _currentArrayCamera || camera);\n }\n function initMaterial(material, fog, object) {\n var materialProperties = properties.get(material);\n var lights = currentRenderState.state.lights;\n var shadowsArray = currentRenderState.state.shadowsArray;\n var lightsHash = materialProperties.lightsHash;\n var lightsStateHash = lights.state.hash;\n var parameters = programCache.getParameters(material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object);\n var code = programCache.getProgramCode(material, parameters);\n var program = materialProperties.program;\n var programChange = true;\n if (program === undefined) {\n // new material\n material.addEventListener('dispose', onMaterialDispose);\n } else if (program.code !== code) {\n // changed glsl or parameters\n releaseMaterialProgramReference(material);\n } else if (lightsHash.stateID !== lightsStateHash.stateID || lightsHash.directionalLength !== lightsStateHash.directionalLength || lightsHash.pointLength !== lightsStateHash.pointLength || lightsHash.spotLength !== lightsStateHash.spotLength || lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || lightsHash.hemiLength !== lightsStateHash.hemiLength || lightsHash.shadowsLength !== lightsStateHash.shadowsLength) {\n lightsHash.stateID = lightsStateHash.stateID;\n lightsHash.directionalLength = lightsStateHash.directionalLength;\n lightsHash.pointLength = lightsStateHash.pointLength;\n lightsHash.spotLength = lightsStateHash.spotLength;\n lightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n lightsHash.hemiLength = lightsStateHash.hemiLength;\n lightsHash.shadowsLength = lightsStateHash.shadowsLength;\n programChange = false;\n } else if (parameters.shaderID !== undefined) {\n // same glsl and uniform list\n return;\n } else {\n // only rebuild uniform list\n programChange = false;\n }\n if (programChange) {\n if (parameters.shaderID) {\n var shader = ShaderLib[parameters.shaderID];\n materialProperties.shader = {\n name: material.type,\n uniforms: cloneUniforms(shader.uniforms),\n vertexShader: shader.vertexShader,\n fragmentShader: shader.fragmentShader\n };\n } else {\n materialProperties.shader = {\n name: material.type,\n uniforms: material.uniforms,\n vertexShader: material.vertexShader,\n fragmentShader: material.fragmentShader\n };\n }\n material.onBeforeCompile(materialProperties.shader, _this);\n\n // Computing code again as onBeforeCompile may have changed the shaders\n code = programCache.getProgramCode(material, parameters);\n program = programCache.acquireProgram(material, materialProperties.shader, parameters, code);\n materialProperties.program = program;\n material.program = program;\n }\n var programAttributes = program.getAttributes();\n if (material.morphTargets) {\n material.numSupportedMorphTargets = 0;\n for (var i = 0; i < _this.maxMorphTargets; i++) {\n if (programAttributes['morphTarget' + i] >= 0) {\n material.numSupportedMorphTargets++;\n }\n }\n }\n if (material.morphNormals) {\n material.numSupportedMorphNormals = 0;\n for (var i = 0; i < _this.maxMorphNormals; i++) {\n if (programAttributes['morphNormal' + i] >= 0) {\n material.numSupportedMorphNormals++;\n }\n }\n }\n var uniforms = materialProperties.shader.uniforms;\n if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n materialProperties.numClippingPlanes = _clipping.numPlanes;\n materialProperties.numIntersection = _clipping.numIntersection;\n uniforms.clippingPlanes = _clipping.uniform;\n }\n materialProperties.fog = fog;\n\n // store the light setup it was created for\n if (lightsHash === undefined) {\n materialProperties.lightsHash = lightsHash = {};\n }\n lightsHash.stateID = lightsStateHash.stateID;\n lightsHash.directionalLength = lightsStateHash.directionalLength;\n lightsHash.pointLength = lightsStateHash.pointLength;\n lightsHash.spotLength = lightsStateHash.spotLength;\n lightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n lightsHash.hemiLength = lightsStateHash.hemiLength;\n lightsHash.shadowsLength = lightsStateHash.shadowsLength;\n if (material.lights) {\n // wire up the material to this renderer's lighting state\n\n uniforms.ambientLightColor.value = lights.state.ambient;\n uniforms.lightProbe.value = lights.state.probe;\n uniforms.directionalLights.value = lights.state.directional;\n uniforms.spotLights.value = lights.state.spot;\n uniforms.rectAreaLights.value = lights.state.rectArea;\n uniforms.pointLights.value = lights.state.point;\n uniforms.hemisphereLights.value = lights.state.hemi;\n uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n // TODO (abelnation): add area lights shadow info to uniforms\n }\n\n var progUniforms = materialProperties.program.getUniforms(),\n uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n materialProperties.uniformsList = uniformsList;\n }\n function setProgram(camera, fog, material, object) {\n textures.resetTextureUnits();\n var materialProperties = properties.get(material);\n var lights = currentRenderState.state.lights;\n var lightsHash = materialProperties.lightsHash;\n var lightsStateHash = lights.state.hash;\n if (_clippingEnabled) {\n if (_localClippingEnabled || camera !== _currentCamera) {\n var useCache = camera === _currentCamera && material.id === _currentMaterialId;\n\n // we might want to call this function with some ClippingGroup\n // object instead of the material, once it becomes feasible\n // (#8465, #8379)\n _clipping.setState(material.clippingPlanes, material.clipIntersection, material.clipShadows, camera, materialProperties, useCache);\n }\n }\n if (material.needsUpdate === false) {\n if (materialProperties.program === undefined) {\n material.needsUpdate = true;\n } else if (material.fog && materialProperties.fog !== fog) {\n material.needsUpdate = true;\n } else if (material.lights && (lightsHash.stateID !== lightsStateHash.stateID || lightsHash.directionalLength !== lightsStateHash.directionalLength || lightsHash.pointLength !== lightsStateHash.pointLength || lightsHash.spotLength !== lightsStateHash.spotLength || lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || lightsHash.hemiLength !== lightsStateHash.hemiLength || lightsHash.shadowsLength !== lightsStateHash.shadowsLength)) {\n material.needsUpdate = true;\n } else if (materialProperties.numClippingPlanes !== undefined && (materialProperties.numClippingPlanes !== _clipping.numPlanes || materialProperties.numIntersection !== _clipping.numIntersection)) {\n material.needsUpdate = true;\n }\n }\n if (material.needsUpdate) {\n initMaterial(material, fog, object);\n material.needsUpdate = false;\n }\n var refreshProgram = false;\n var refreshMaterial = false;\n var refreshLights = false;\n var program = materialProperties.program,\n p_uniforms = program.getUniforms(),\n m_uniforms = materialProperties.shader.uniforms;\n if (state.useProgram(program.program)) {\n refreshProgram = true;\n refreshMaterial = true;\n refreshLights = true;\n }\n if (material.id !== _currentMaterialId) {\n _currentMaterialId = material.id;\n refreshMaterial = true;\n }\n if (refreshProgram || _currentCamera !== camera) {\n p_uniforms.setValue(_gl, 'projectionMatrix', camera.projectionMatrix);\n if (capabilities.logarithmicDepthBuffer) {\n p_uniforms.setValue(_gl, 'logDepthBufFC', 2.0 / (Math.log(camera.far + 1.0) / Math.LN2));\n }\n if (_currentCamera !== camera) {\n _currentCamera = camera;\n\n // lighting uniforms depend on the camera so enforce an update\n // now, in case this material supports lights - or later, when\n // the next material that does gets activated:\n\n refreshMaterial = true; // set to true on material change\n refreshLights = true; // remains set until update done\n }\n\n // load material specific uniforms\n // (shader material also gets them for the sake of genericity)\n\n if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.envMap) {\n var uCamPos = p_uniforms.map.cameraPosition;\n if (uCamPos !== undefined) {\n uCamPos.setValue(_gl, _vector3.setFromMatrixPosition(camera.matrixWorld));\n }\n }\n if (material.isMeshPhongMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.skinning) {\n p_uniforms.setValue(_gl, 'viewMatrix', camera.matrixWorldInverse);\n }\n }\n\n // skinning uniforms must be set even if material didn't change\n // auto-setting of texture unit for bone texture must go before other textures\n // not sure why, but otherwise weird things happen\n\n if (material.skinning) {\n p_uniforms.setOptional(_gl, object, 'bindMatrix');\n p_uniforms.setOptional(_gl, object, 'bindMatrixInverse');\n var skeleton = object.skeleton;\n if (skeleton) {\n var bones = skeleton.bones;\n if (capabilities.floatVertexTextures) {\n if (skeleton.boneTexture === undefined) {\n // layout (1 matrix = 4 pixels)\n // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n var size = Math.sqrt(bones.length * 4); // 4 pixels needed for 1 matrix\n size = _Math.ceilPowerOfTwo(size);\n size = Math.max(size, 4);\n var boneMatrices = new Float32Array(size * size * 4); // 4 floats per RGBA pixel\n boneMatrices.set(skeleton.boneMatrices); // copy current values\n\n var boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n boneTexture.needsUpdate = true;\n skeleton.boneMatrices = boneMatrices;\n skeleton.boneTexture = boneTexture;\n skeleton.boneTextureSize = size;\n }\n p_uniforms.setValue(_gl, 'boneTexture', skeleton.boneTexture, textures);\n p_uniforms.setValue(_gl, 'boneTextureSize', skeleton.boneTextureSize);\n } else {\n p_uniforms.setOptional(_gl, skeleton, 'boneMatrices');\n }\n }\n }\n if (refreshMaterial) {\n p_uniforms.setValue(_gl, 'toneMappingExposure', _this.toneMappingExposure);\n p_uniforms.setValue(_gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint);\n if (material.lights) {\n // the current material requires lighting info\n\n // note: all lighting uniforms are always set correctly\n // they simply reference the renderer's state for their\n // values\n //\n // use the current material's .needsUpdate flags to set\n // the GL state when required\n\n markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n }\n\n // refresh uniforms common to several materials\n\n if (fog && material.fog) {\n refreshUniformsFog(m_uniforms, fog);\n }\n if (material.isMeshBasicMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n } else if (material.isMeshLambertMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n refreshUniformsLambert(m_uniforms, material);\n } else if (material.isMeshPhongMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n if (material.isMeshToonMaterial) {\n refreshUniformsToon(m_uniforms, material);\n } else {\n refreshUniformsPhong(m_uniforms, material);\n }\n } else if (material.isMeshStandardMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n if (material.isMeshPhysicalMaterial) {\n refreshUniformsPhysical(m_uniforms, material);\n } else {\n refreshUniformsStandard(m_uniforms, material);\n }\n } else if (material.isMeshMatcapMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n refreshUniformsMatcap(m_uniforms, material);\n } else if (material.isMeshDepthMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n refreshUniformsDepth(m_uniforms, material);\n } else if (material.isMeshDistanceMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n refreshUniformsDistance(m_uniforms, material);\n } else if (material.isMeshNormalMaterial) {\n refreshUniformsCommon(m_uniforms, material);\n refreshUniformsNormal(m_uniforms, material);\n } else if (material.isLineBasicMaterial) {\n refreshUniformsLine(m_uniforms, material);\n if (material.isLineDashedMaterial) {\n refreshUniformsDash(m_uniforms, material);\n }\n } else if (material.isPointsMaterial) {\n refreshUniformsPoints(m_uniforms, material);\n } else if (material.isSpriteMaterial) {\n refreshUniformsSprites(m_uniforms, material);\n } else if (material.isShadowMaterial) {\n m_uniforms.color.value.copy(material.color);\n m_uniforms.opacity.value = material.opacity;\n }\n\n // RectAreaLight Texture\n // TODO (mrdoob): Find a nicer implementation\n\n if (m_uniforms.ltc_1 !== undefined) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n if (m_uniforms.ltc_2 !== undefined) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n }\n if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n material.uniformsNeedUpdate = false;\n }\n if (material.isSpriteMaterial) {\n p_uniforms.setValue(_gl, 'center', object.center);\n }\n\n // common matrices\n\n p_uniforms.setValue(_gl, 'modelViewMatrix', object.modelViewMatrix);\n p_uniforms.setValue(_gl, 'normalMatrix', object.normalMatrix);\n p_uniforms.setValue(_gl, 'modelMatrix', object.matrixWorld);\n return program;\n }\n\n // Uniforms (refresh uniforms objects)\n\n function refreshUniformsCommon(uniforms, material) {\n uniforms.opacity.value = material.opacity;\n if (material.color) {\n uniforms.diffuse.value.copy(material.color);\n }\n if (material.emissive) {\n uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n }\n if (material.map) {\n uniforms.map.value = material.map;\n }\n if (material.alphaMap) {\n uniforms.alphaMap.value = material.alphaMap;\n }\n if (material.specularMap) {\n uniforms.specularMap.value = material.specularMap;\n }\n if (material.envMap) {\n uniforms.envMap.value = material.envMap;\n\n // don't flip CubeTexture envMaps, flip everything else:\n // WebGLRenderTargetCube will be flipped for backwards compatibility\n // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? -1 : 1;\n uniforms.reflectivity.value = material.reflectivity;\n uniforms.refractionRatio.value = material.refractionRatio;\n uniforms.maxMipLevel.value = properties.get(material.envMap).__maxMipLevel;\n }\n if (material.lightMap) {\n uniforms.lightMap.value = material.lightMap;\n uniforms.lightMapIntensity.value = material.lightMapIntensity;\n }\n if (material.aoMap) {\n uniforms.aoMap.value = material.aoMap;\n uniforms.aoMapIntensity.value = material.aoMapIntensity;\n }\n\n // uv repeat and offset setting priorities\n // 1. color map\n // 2. specular map\n // 3. normal map\n // 4. bump map\n // 5. alpha map\n // 6. emissive map\n\n var uvScaleMap;\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.specularMap) {\n uvScaleMap = material.specularMap;\n } else if (material.displacementMap) {\n uvScaleMap = material.displacementMap;\n } else if (material.normalMap) {\n uvScaleMap = material.normalMap;\n } else if (material.bumpMap) {\n uvScaleMap = material.bumpMap;\n } else if (material.roughnessMap) {\n uvScaleMap = material.roughnessMap;\n } else if (material.metalnessMap) {\n uvScaleMap = material.metalnessMap;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n } else if (material.emissiveMap) {\n uvScaleMap = material.emissiveMap;\n }\n if (uvScaleMap !== undefined) {\n // backwards compatibility\n if (uvScaleMap.isWebGLRenderTarget) {\n uvScaleMap = uvScaleMap.texture;\n }\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n }\n function refreshUniformsLine(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n }\n function refreshUniformsDash(uniforms, material) {\n uniforms.dashSize.value = material.dashSize;\n uniforms.totalSize.value = material.dashSize + material.gapSize;\n uniforms.scale.value = material.scale;\n }\n function refreshUniformsPoints(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.size.value = material.size * _pixelRatio;\n uniforms.scale.value = _height * 0.5;\n uniforms.map.value = material.map;\n if (material.map !== null) {\n if (material.map.matrixAutoUpdate === true) {\n material.map.updateMatrix();\n }\n uniforms.uvTransform.value.copy(material.map.matrix);\n }\n }\n function refreshUniformsSprites(uniforms, material) {\n uniforms.diffuse.value.copy(material.color);\n uniforms.opacity.value = material.opacity;\n uniforms.rotation.value = material.rotation;\n uniforms.map.value = material.map;\n if (material.map !== null) {\n if (material.map.matrixAutoUpdate === true) {\n material.map.updateMatrix();\n }\n uniforms.uvTransform.value.copy(material.map.matrix);\n }\n }\n function refreshUniformsFog(uniforms, fog) {\n uniforms.fogColor.value.copy(fog.color);\n if (fog.isFog) {\n uniforms.fogNear.value = fog.near;\n uniforms.fogFar.value = fog.far;\n } else if (fog.isFogExp2) {\n uniforms.fogDensity.value = fog.density;\n }\n }\n function refreshUniformsLambert(uniforms, material) {\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n }\n function refreshUniformsPhong(uniforms, material) {\n uniforms.specular.value.copy(material.specular);\n uniforms.shininess.value = Math.max(material.shininess, 1e-4); // to prevent pow( 0.0, 0.0 )\n\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide) uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide) uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsToon(uniforms, material) {\n refreshUniformsPhong(uniforms, material);\n if (material.gradientMap) {\n uniforms.gradientMap.value = material.gradientMap;\n }\n }\n function refreshUniformsStandard(uniforms, material) {\n uniforms.roughness.value = material.roughness;\n uniforms.metalness.value = material.metalness;\n if (material.roughnessMap) {\n uniforms.roughnessMap.value = material.roughnessMap;\n }\n if (material.metalnessMap) {\n uniforms.metalnessMap.value = material.metalnessMap;\n }\n if (material.emissiveMap) {\n uniforms.emissiveMap.value = material.emissiveMap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide) uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide) uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n if (material.envMap) {\n //uniforms.envMap.value = material.envMap; // part of uniforms common\n uniforms.envMapIntensity.value = material.envMapIntensity;\n }\n }\n function refreshUniformsPhysical(uniforms, material) {\n refreshUniformsStandard(uniforms, material);\n uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n uniforms.clearCoat.value = material.clearCoat;\n uniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n }\n function refreshUniformsMatcap(uniforms, material) {\n if (material.matcap) {\n uniforms.matcap.value = material.matcap;\n }\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide) uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide) uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDepth(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n function refreshUniformsDistance(uniforms, material) {\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n uniforms.referencePosition.value.copy(material.referencePosition);\n uniforms.nearDistance.value = material.nearDistance;\n uniforms.farDistance.value = material.farDistance;\n }\n function refreshUniformsNormal(uniforms, material) {\n if (material.bumpMap) {\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.bumpScale.value = material.bumpScale;\n if (material.side === BackSide) uniforms.bumpScale.value *= -1;\n }\n if (material.normalMap) {\n uniforms.normalMap.value = material.normalMap;\n uniforms.normalScale.value.copy(material.normalScale);\n if (material.side === BackSide) uniforms.normalScale.value.negate();\n }\n if (material.displacementMap) {\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n }\n }\n\n // If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n function markUniformsLightsNeedsUpdate(uniforms, value) {\n uniforms.ambientLightColor.needsUpdate = value;\n uniforms.lightProbe.needsUpdate = value;\n uniforms.directionalLights.needsUpdate = value;\n uniforms.pointLights.needsUpdate = value;\n uniforms.spotLights.needsUpdate = value;\n uniforms.rectAreaLights.needsUpdate = value;\n uniforms.hemisphereLights.needsUpdate = value;\n }\n\n //\n this.setFramebuffer = function (value) {\n if (_framebuffer !== value) _gl.bindFramebuffer(36160, value);\n _framebuffer = value;\n };\n this.getActiveCubeFace = function () {\n return _currentActiveCubeFace;\n };\n this.getActiveMipMapLevel = function () {\n return _currentActiveMipmapLevel;\n };\n this.getRenderTarget = function () {\n return _currentRenderTarget;\n };\n this.setRenderTarget = function (renderTarget, activeCubeFace, activeMipMapLevel) {\n _currentRenderTarget = renderTarget;\n _currentActiveCubeFace = activeCubeFace;\n _currentActiveMipmapLevel = activeMipMapLevel;\n if (renderTarget && properties.get(renderTarget).__webglFramebuffer === undefined) {\n textures.setupRenderTarget(renderTarget);\n }\n var framebuffer = _framebuffer;\n var isCube = false;\n if (renderTarget) {\n var __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLRenderTargetCube) {\n framebuffer = __webglFramebuffer[activeCubeFace || 0];\n isCube = true;\n } else if (renderTarget.isWebGLMultisampleRenderTarget) {\n framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n } else {\n framebuffer = __webglFramebuffer;\n }\n _currentViewport.copy(renderTarget.viewport);\n _currentScissor.copy(renderTarget.scissor);\n _currentScissorTest = renderTarget.scissorTest;\n } else {\n _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio);\n _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio);\n _currentScissorTest = _scissorTest;\n }\n if (_currentFramebuffer !== framebuffer) {\n _gl.bindFramebuffer(36160, framebuffer);\n _currentFramebuffer = framebuffer;\n }\n state.viewport(_currentViewport);\n state.scissor(_currentScissor);\n state.setScissorTest(_currentScissorTest);\n if (isCube) {\n var textureProperties = properties.get(renderTarget.texture);\n _gl.framebufferTexture2D(36160, 36064, 34069 + (activeCubeFace || 0), textureProperties.__webglTexture, activeMipMapLevel || 0);\n }\n };\n this.readRenderTargetPixels = function (renderTarget, x, y, width, height, buffer, activeCubeFaceIndex) {\n if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.');\n return;\n }\n var framebuffer = properties.get(renderTarget).__webglFramebuffer;\n if (renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined) {\n framebuffer = framebuffer[activeCubeFaceIndex];\n }\n if (framebuffer) {\n var restore = false;\n if (framebuffer !== _currentFramebuffer) {\n _gl.bindFramebuffer(36160, framebuffer);\n restore = true;\n }\n try {\n var texture = renderTarget.texture;\n var textureFormat = texture.format;\n var textureType = texture.type;\n if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(35739)) {\n console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.');\n return;\n }\n if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(35738) &&\n // IE11, Edge and Chrome Mac < 52 (#9513)\n !(textureType === FloatType && (capabilities.isWebGL2 || extensions.get('OES_texture_float') || extensions.get('WEBGL_color_buffer_float'))) &&\n // Chrome Mac >= 52 and Firefox\n !(textureType === HalfFloatType && (capabilities.isWebGL2 ? extensions.get('EXT_color_buffer_float') : extensions.get('EXT_color_buffer_half_float')))) {\n console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.');\n return;\n }\n if (_gl.checkFramebufferStatus(36160) === 36053) {\n // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n if (x >= 0 && x <= renderTarget.width - width && y >= 0 && y <= renderTarget.height - height) {\n _gl.readPixels(x, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n }\n } else {\n console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.');\n }\n } finally {\n if (restore) {\n _gl.bindFramebuffer(36160, _currentFramebuffer);\n }\n }\n }\n };\n this.copyFramebufferToTexture = function (position, texture, level) {\n var width = texture.image.width;\n var height = texture.image.height;\n var glFormat = utils.convert(texture.format);\n textures.setTexture2D(texture, 0);\n _gl.copyTexImage2D(3553, level || 0, glFormat, position.x, position.y, width, height, 0);\n };\n this.copyTextureToTexture = function (position, srcTexture, dstTexture, level) {\n var width = srcTexture.image.width;\n var height = srcTexture.image.height;\n var glFormat = utils.convert(dstTexture.format);\n var glType = utils.convert(dstTexture.type);\n textures.setTexture2D(dstTexture, 0);\n if (srcTexture.isDataTexture) {\n _gl.texSubImage2D(3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n } else {\n _gl.texSubImage2D(3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image);\n }\n };\n\n /*\n if ( typeof __THREE_DEVTOOLS__ !== undefined ) {\n \t__THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } );\n }\n */\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2(color, density) {\n this.name = '';\n this.color = new Color(color);\n this.density = density !== undefined ? density : 0.00025;\n}\nObject.assign(FogExp2.prototype, {\n isFogExp2: true,\n clone: function () {\n return new FogExp2(this.color, this.density);\n },\n toJSON: function /* meta */\n () {\n return {\n type: 'FogExp2',\n color: this.color.getHex(),\n density: this.density\n };\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog(color, near, far) {\n this.name = '';\n this.color = new Color(color);\n this.near = near !== undefined ? near : 1;\n this.far = far !== undefined ? far : 1000;\n}\nObject.assign(Fog.prototype, {\n isFog: true,\n clone: function () {\n return new Fog(this.color, this.near, this.far);\n },\n toJSON: function /* meta */\n () {\n return {\n type: 'Fog',\n color: this.color.getHex(),\n near: this.near,\n far: this.far\n };\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n Object3D.call(this);\n this.type = 'Scene';\n this.background = null;\n this.fog = null;\n this.overrideMaterial = null;\n this.autoUpdate = true; // checked by the renderer\n\n /*\n if ( typeof __THREE_DEVTOOLS__ !== undefined ) {\n \t__THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } );\n }\n */\n}\n\nScene.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Scene,\n isScene: true,\n copy: function (source, recursive) {\n Object3D.prototype.copy.call(this, source, recursive);\n if (source.background !== null) this.background = source.background.clone();\n if (source.fog !== null) this.fog = source.fog.clone();\n if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone();\n this.autoUpdate = source.autoUpdate;\n this.matrixAutoUpdate = source.matrixAutoUpdate;\n return this;\n },\n toJSON: function (meta) {\n var data = Object3D.prototype.toJSON.call(this, meta);\n if (this.background !== null) data.object.background = this.background.toJSON(meta);\n if (this.fog !== null) data.object.fog = this.fog.toJSON();\n return data;\n },\n dispose: function () {\n this.dispatchEvent({\n type: 'dispose'\n });\n }\n});\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer(array, stride) {\n this.array = array;\n this.stride = stride;\n this.count = array !== undefined ? array.length / stride : 0;\n this.dynamic = false;\n this.updateRange = {\n offset: 0,\n count: -1\n };\n this.version = 0;\n}\nObject.defineProperty(InterleavedBuffer.prototype, 'needsUpdate', {\n set: function (value) {\n if (value === true) this.version++;\n }\n});\nObject.assign(InterleavedBuffer.prototype, {\n isInterleavedBuffer: true,\n onUploadCallback: function () {},\n setArray: function (array) {\n if (Array.isArray(array)) {\n throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.');\n }\n this.count = array !== undefined ? array.length / this.stride : 0;\n this.array = array;\n return this;\n },\n setDynamic: function (value) {\n this.dynamic = value;\n return this;\n },\n copy: function (source) {\n this.array = new source.array.constructor(source.array);\n this.count = source.count;\n this.stride = source.stride;\n this.dynamic = source.dynamic;\n return this;\n },\n copyAt: function (index1, attribute, index2) {\n index1 *= this.stride;\n index2 *= attribute.stride;\n for (var i = 0, l = this.stride; i < l; i++) {\n this.array[index1 + i] = attribute.array[index2 + i];\n }\n return this;\n },\n set: function (value, offset) {\n if (offset === undefined) offset = 0;\n this.array.set(value, offset);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n onUpload: function (callback) {\n this.onUploadCallback = callback;\n return this;\n }\n});\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute(interleavedBuffer, itemSize, offset, normalized) {\n this.data = interleavedBuffer;\n this.itemSize = itemSize;\n this.offset = offset;\n this.normalized = normalized === true;\n}\nObject.defineProperties(InterleavedBufferAttribute.prototype, {\n count: {\n get: function () {\n return this.data.count;\n }\n },\n array: {\n get: function () {\n return this.data.array;\n }\n }\n});\nObject.assign(InterleavedBufferAttribute.prototype, {\n isInterleavedBufferAttribute: true,\n setX: function (index, x) {\n this.data.array[index * this.data.stride + this.offset] = x;\n return this;\n },\n setY: function (index, y) {\n this.data.array[index * this.data.stride + this.offset + 1] = y;\n return this;\n },\n setZ: function (index, z) {\n this.data.array[index * this.data.stride + this.offset + 2] = z;\n return this;\n },\n setW: function (index, w) {\n this.data.array[index * this.data.stride + this.offset + 3] = w;\n return this;\n },\n getX: function (index) {\n return this.data.array[index * this.data.stride + this.offset];\n },\n getY: function (index) {\n return this.data.array[index * this.data.stride + this.offset + 1];\n },\n getZ: function (index) {\n return this.data.array[index * this.data.stride + this.offset + 2];\n },\n getW: function (index) {\n return this.data.array[index * this.data.stride + this.offset + 3];\n },\n setXY: function (index, x, y) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n return this;\n },\n setXYZ: function (index, x, y, z) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n return this;\n },\n setXYZW: function (index, x, y, z, w) {\n index = index * this.data.stride + this.offset;\n this.data.array[index + 0] = x;\n this.data.array[index + 1] = y;\n this.data.array[index + 2] = z;\n this.data.array[index + 3] = w;\n return this;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial(parameters) {\n Material.call(this);\n this.type = 'SpriteMaterial';\n this.color = new Color(0xffffff);\n this.map = null;\n this.rotation = 0;\n this.sizeAttenuation = true;\n this.lights = false;\n this.transparent = true;\n this.setValues(parameters);\n}\nSpriteMaterial.prototype = Object.create(Material.prototype);\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\nSpriteMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.map = source.map;\n this.rotation = source.rotation;\n this.sizeAttenuation = source.sizeAttenuation;\n return this;\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar geometry;\nfunction Sprite(material) {\n Object3D.call(this);\n this.type = 'Sprite';\n if (geometry === undefined) {\n geometry = new BufferGeometry();\n var float32Array = new Float32Array([-0.5, -0.5, 0, 0, 0, 0.5, -0.5, 0, 1, 0, 0.5, 0.5, 0, 1, 1, -0.5, 0.5, 0, 0, 1]);\n var interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n geometry.setIndex([0, 1, 2, 0, 2, 3]);\n geometry.addAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n geometry.addAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n }\n this.geometry = geometry;\n this.material = material !== undefined ? material : new SpriteMaterial();\n this.center = new Vector2(0.5, 0.5);\n}\nSprite.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Sprite,\n isSprite: true,\n raycast: function () {\n var intersectPoint = new Vector3();\n var worldScale = new Vector3();\n var mvPosition = new Vector3();\n var alignedPosition = new Vector2();\n var rotatedPosition = new Vector2();\n var viewWorldMatrix = new Matrix4();\n var vA = new Vector3();\n var vB = new Vector3();\n var vC = new Vector3();\n var uvA = new Vector2();\n var uvB = new Vector2();\n var uvC = new Vector2();\n function transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n // compute position in camera space\n alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n\n // to check if rotation is not zero\n if (sin !== undefined) {\n rotatedPosition.x = cos * alignedPosition.x - sin * alignedPosition.y;\n rotatedPosition.y = sin * alignedPosition.x + cos * alignedPosition.y;\n } else {\n rotatedPosition.copy(alignedPosition);\n }\n vertexPosition.copy(mvPosition);\n vertexPosition.x += rotatedPosition.x;\n vertexPosition.y += rotatedPosition.y;\n\n // transform to world space\n vertexPosition.applyMatrix4(viewWorldMatrix);\n }\n return function raycast(raycaster, intersects) {\n worldScale.setFromMatrixScale(this.matrixWorld);\n viewWorldMatrix.getInverse(this.modelViewMatrix).premultiply(this.matrixWorld);\n mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n var rotation = this.material.rotation;\n var sin, cos;\n if (rotation !== 0) {\n cos = Math.cos(rotation);\n sin = Math.sin(rotation);\n }\n var center = this.center;\n transformVertex(vA.set(-0.5, -0.5, 0), mvPosition, center, worldScale, sin, cos);\n transformVertex(vB.set(0.5, -0.5, 0), mvPosition, center, worldScale, sin, cos);\n transformVertex(vC.set(0.5, 0.5, 0), mvPosition, center, worldScale, sin, cos);\n uvA.set(0, 0);\n uvB.set(1, 0);\n uvC.set(1, 1);\n\n // check first triangle\n var intersect = raycaster.ray.intersectTriangle(vA, vB, vC, false, intersectPoint);\n if (intersect === null) {\n // check second triangle\n transformVertex(vB.set(-0.5, 0.5, 0), mvPosition, center, worldScale, sin, cos);\n uvB.set(0, 1);\n intersect = raycaster.ray.intersectTriangle(vA, vC, vB, false, intersectPoint);\n if (intersect === null) {\n return;\n }\n }\n var distance = raycaster.ray.origin.distanceTo(intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far) return;\n intersects.push({\n distance: distance,\n point: intersectPoint.clone(),\n uv: Triangle.getUV(intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2()),\n face: null,\n object: this\n });\n };\n }(),\n clone: function () {\n return new this.constructor(this.material).copy(this);\n },\n copy: function (source) {\n Object3D.prototype.copy.call(this, source);\n if (source.center !== undefined) this.center.copy(source.center);\n return this;\n }\n});\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n Object3D.call(this);\n this.type = 'LOD';\n Object.defineProperties(this, {\n levels: {\n enumerable: true,\n value: []\n }\n });\n}\nLOD.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: LOD,\n isLOD: true,\n copy: function (source) {\n Object3D.prototype.copy.call(this, source, false);\n var levels = source.levels;\n for (var i = 0, l = levels.length; i < l; i++) {\n var level = levels[i];\n this.addLevel(level.object.clone(), level.distance);\n }\n return this;\n },\n addLevel: function (object, distance) {\n if (distance === undefined) distance = 0;\n distance = Math.abs(distance);\n var levels = this.levels;\n for (var l = 0; l < levels.length; l++) {\n if (distance < levels[l].distance) {\n break;\n }\n }\n levels.splice(l, 0, {\n distance: distance,\n object: object\n });\n this.add(object);\n return this;\n },\n getObjectForDistance: function (distance) {\n var levels = this.levels;\n for (var i = 1, l = levels.length; i < l; i++) {\n if (distance < levels[i].distance) {\n break;\n }\n }\n return levels[i - 1].object;\n },\n raycast: function () {\n var matrixPosition = new Vector3();\n return function raycast(raycaster, intersects) {\n matrixPosition.setFromMatrixPosition(this.matrixWorld);\n var distance = raycaster.ray.origin.distanceTo(matrixPosition);\n this.getObjectForDistance(distance).raycast(raycaster, intersects);\n };\n }(),\n update: function () {\n var v1 = new Vector3();\n var v2 = new Vector3();\n return function update(camera) {\n var levels = this.levels;\n if (levels.length > 1) {\n v1.setFromMatrixPosition(camera.matrixWorld);\n v2.setFromMatrixPosition(this.matrixWorld);\n var distance = v1.distanceTo(v2);\n levels[0].object.visible = true;\n for (var i = 1, l = levels.length; i < l; i++) {\n if (distance >= levels[i].distance) {\n levels[i - 1].object.visible = false;\n levels[i].object.visible = true;\n } else {\n break;\n }\n }\n for (; i < l; i++) {\n levels[i].object.visible = false;\n }\n }\n };\n }(),\n toJSON: function (meta) {\n var data = Object3D.prototype.toJSON.call(this, meta);\n data.object.levels = [];\n var levels = this.levels;\n for (var i = 0, l = levels.length; i < l; i++) {\n var level = levels[i];\n data.object.levels.push({\n object: level.object.uuid,\n distance: level.distance\n });\n }\n return data;\n }\n});\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh(geometry, material) {\n if (geometry && geometry.isGeometry) {\n console.error('THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.');\n }\n Mesh.call(this, geometry, material);\n this.type = 'SkinnedMesh';\n this.bindMode = 'attached';\n this.bindMatrix = new Matrix4();\n this.bindMatrixInverse = new Matrix4();\n}\nSkinnedMesh.prototype = Object.assign(Object.create(Mesh.prototype), {\n constructor: SkinnedMesh,\n isSkinnedMesh: true,\n bind: function (skeleton, bindMatrix) {\n this.skeleton = skeleton;\n if (bindMatrix === undefined) {\n this.updateMatrixWorld(true);\n this.skeleton.calculateInverses();\n bindMatrix = this.matrixWorld;\n }\n this.bindMatrix.copy(bindMatrix);\n this.bindMatrixInverse.getInverse(bindMatrix);\n },\n pose: function () {\n this.skeleton.pose();\n },\n normalizeSkinWeights: function () {\n var vector = new Vector4();\n var skinWeight = this.geometry.attributes.skinWeight;\n for (var i = 0, l = skinWeight.count; i < l; i++) {\n vector.x = skinWeight.getX(i);\n vector.y = skinWeight.getY(i);\n vector.z = skinWeight.getZ(i);\n vector.w = skinWeight.getW(i);\n var scale = 1.0 / vector.manhattanLength();\n if (scale !== Infinity) {\n vector.multiplyScalar(scale);\n } else {\n vector.set(1, 0, 0, 0); // do something reasonable\n }\n\n skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n }\n },\n updateMatrixWorld: function (force) {\n Mesh.prototype.updateMatrixWorld.call(this, force);\n if (this.bindMode === 'attached') {\n this.bindMatrixInverse.getInverse(this.matrixWorld);\n } else if (this.bindMode === 'detached') {\n this.bindMatrixInverse.getInverse(this.bindMatrix);\n } else {\n console.warn('THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode);\n }\n },\n clone: function () {\n return new this.constructor(this.geometry, this.material).copy(this);\n }\n});\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton(bones, boneInverses) {\n // copy the bone array\n\n bones = bones || [];\n this.bones = bones.slice(0);\n this.boneMatrices = new Float32Array(this.bones.length * 16);\n\n // use the supplied bone inverses or calculate the inverses\n\n if (boneInverses === undefined) {\n this.calculateInverses();\n } else {\n if (this.bones.length === boneInverses.length) {\n this.boneInverses = boneInverses.slice(0);\n } else {\n console.warn('THREE.Skeleton boneInverses is the wrong length.');\n this.boneInverses = [];\n for (var i = 0, il = this.bones.length; i < il; i++) {\n this.boneInverses.push(new Matrix4());\n }\n }\n }\n}\nObject.assign(Skeleton.prototype, {\n calculateInverses: function () {\n this.boneInverses = [];\n for (var i = 0, il = this.bones.length; i < il; i++) {\n var inverse = new Matrix4();\n if (this.bones[i]) {\n inverse.getInverse(this.bones[i].matrixWorld);\n }\n this.boneInverses.push(inverse);\n }\n },\n pose: function () {\n var bone, i, il;\n\n // recover the bind-time world matrices\n\n for (i = 0, il = this.bones.length; i < il; i++) {\n bone = this.bones[i];\n if (bone) {\n bone.matrixWorld.getInverse(this.boneInverses[i]);\n }\n }\n\n // compute the local matrices, positions, rotations and scales\n\n for (i = 0, il = this.bones.length; i < il; i++) {\n bone = this.bones[i];\n if (bone) {\n if (bone.parent && bone.parent.isBone) {\n bone.matrix.getInverse(bone.parent.matrixWorld);\n bone.matrix.multiply(bone.matrixWorld);\n } else {\n bone.matrix.copy(bone.matrixWorld);\n }\n bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n }\n }\n },\n update: function () {\n var offsetMatrix = new Matrix4();\n var identityMatrix = new Matrix4();\n return function update() {\n var bones = this.bones;\n var boneInverses = this.boneInverses;\n var boneMatrices = this.boneMatrices;\n var boneTexture = this.boneTexture;\n\n // flatten bone matrices to array\n\n for (var i = 0, il = bones.length; i < il; i++) {\n // compute the offset between the current and the original transform\n\n var matrix = bones[i] ? bones[i].matrixWorld : identityMatrix;\n offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n offsetMatrix.toArray(boneMatrices, i * 16);\n }\n if (boneTexture !== undefined) {\n boneTexture.needsUpdate = true;\n }\n };\n }(),\n clone: function () {\n return new Skeleton(this.bones, this.boneInverses);\n },\n getBoneByName: function (name) {\n for (var i = 0, il = this.bones.length; i < il; i++) {\n var bone = this.bones[i];\n if (bone.name === name) {\n return bone;\n }\n }\n return undefined;\n }\n});\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n Object3D.call(this);\n this.type = 'Bone';\n}\nBone.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Bone,\n isBone: true\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial(parameters) {\n Material.call(this);\n this.type = 'LineBasicMaterial';\n this.color = new Color(0xffffff);\n this.linewidth = 1;\n this.linecap = 'round';\n this.linejoin = 'round';\n this.lights = false;\n this.setValues(parameters);\n}\nLineBasicMaterial.prototype = Object.create(Material.prototype);\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\nLineBasicMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.linewidth = source.linewidth;\n this.linecap = source.linecap;\n this.linejoin = source.linejoin;\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line(geometry, material, mode) {\n if (mode === 1) {\n console.error('THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.');\n }\n Object3D.call(this);\n this.type = 'Line';\n this.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n this.material = material !== undefined ? material : new LineBasicMaterial({\n color: Math.random() * 0xffffff\n });\n}\nLine.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Line,\n isLine: true,\n computeLineDistances: function () {\n var start = new Vector3();\n var end = new Vector3();\n return function computeLineDistances() {\n var geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n // we assume non-indexed geometry\n\n if (geometry.index === null) {\n var positionAttribute = geometry.attributes.position;\n var lineDistances = [0];\n for (var i = 1, l = positionAttribute.count; i < l; i++) {\n start.fromBufferAttribute(positionAttribute, i - 1);\n end.fromBufferAttribute(positionAttribute, i);\n lineDistances[i] = lineDistances[i - 1];\n lineDistances[i] += start.distanceTo(end);\n }\n geometry.addAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn('THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.');\n }\n } else if (geometry.isGeometry) {\n var vertices = geometry.vertices;\n var lineDistances = geometry.lineDistances;\n lineDistances[0] = 0;\n for (var i = 1, l = vertices.length; i < l; i++) {\n lineDistances[i] = lineDistances[i - 1];\n lineDistances[i] += vertices[i - 1].distanceTo(vertices[i]);\n }\n }\n return this;\n };\n }(),\n raycast: function () {\n var inverseMatrix = new Matrix4();\n var ray = new Ray();\n var sphere = new Sphere();\n return function raycast(raycaster, intersects) {\n var precision = raycaster.linePrecision;\n var geometry = this.geometry;\n var matrixWorld = this.matrixWorld;\n\n // Checking boundingSphere distance to ray\n\n if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n sphere.copy(geometry.boundingSphere);\n sphere.applyMatrix4(matrixWorld);\n sphere.radius += precision;\n if (raycaster.ray.intersectsSphere(sphere) === false) return;\n\n //\n\n inverseMatrix.getInverse(matrixWorld);\n ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n var localPrecision = precision / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n var localPrecisionSq = localPrecision * localPrecision;\n var vStart = new Vector3();\n var vEnd = new Vector3();\n var interSegment = new Vector3();\n var interRay = new Vector3();\n var step = this && this.isLineSegments ? 2 : 1;\n if (geometry.isBufferGeometry) {\n var index = geometry.index;\n var attributes = geometry.attributes;\n var positions = attributes.position.array;\n if (index !== null) {\n var indices = index.array;\n for (var i = 0, l = indices.length - 1; i < l; i += step) {\n var a = indices[i];\n var b = indices[i + 1];\n vStart.fromArray(positions, a * 3);\n vEnd.fromArray(positions, b * 3);\n var distSq = ray.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localPrecisionSq) continue;\n interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation\n\n var distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far) continue;\n intersects.push({\n distance: distance,\n // What do we want? intersection point on the ray or on the segment??\n // point: raycaster.ray.at( distance ),\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n } else {\n for (var i = 0, l = positions.length / 3 - 1; i < l; i += step) {\n vStart.fromArray(positions, 3 * i);\n vEnd.fromArray(positions, 3 * i + 3);\n var distSq = ray.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n if (distSq > localPrecisionSq) continue;\n interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation\n\n var distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far) continue;\n intersects.push({\n distance: distance,\n // What do we want? intersection point on the ray or on the segment??\n // point: raycaster.ray.at( distance ),\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n }\n } else if (geometry.isGeometry) {\n var vertices = geometry.vertices;\n var nbVertices = vertices.length;\n for (var i = 0; i < nbVertices - 1; i += step) {\n var distSq = ray.distanceSqToSegment(vertices[i], vertices[i + 1], interRay, interSegment);\n if (distSq > localPrecisionSq) continue;\n interRay.applyMatrix4(this.matrixWorld); //Move back to world space for distance calculation\n\n var distance = raycaster.ray.origin.distanceTo(interRay);\n if (distance < raycaster.near || distance > raycaster.far) continue;\n intersects.push({\n distance: distance,\n // What do we want? intersection point on the ray or on the segment??\n // point: raycaster.ray.at( distance ),\n point: interSegment.clone().applyMatrix4(this.matrixWorld),\n index: i,\n face: null,\n faceIndex: null,\n object: this\n });\n }\n }\n };\n }(),\n clone: function () {\n return new this.constructor(this.geometry, this.material).copy(this);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments(geometry, material) {\n Line.call(this, geometry, material);\n this.type = 'LineSegments';\n}\nLineSegments.prototype = Object.assign(Object.create(Line.prototype), {\n constructor: LineSegments,\n isLineSegments: true,\n computeLineDistances: function () {\n var start = new Vector3();\n var end = new Vector3();\n return function computeLineDistances() {\n var geometry = this.geometry;\n if (geometry.isBufferGeometry) {\n // we assume non-indexed geometry\n\n if (geometry.index === null) {\n var positionAttribute = geometry.attributes.position;\n var lineDistances = [];\n for (var i = 0, l = positionAttribute.count; i < l; i += 2) {\n start.fromBufferAttribute(positionAttribute, i);\n end.fromBufferAttribute(positionAttribute, i + 1);\n lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n lineDistances[i + 1] = lineDistances[i] + start.distanceTo(end);\n }\n geometry.addAttribute('lineDistance', new Float32BufferAttribute(lineDistances, 1));\n } else {\n console.warn('THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.');\n }\n } else if (geometry.isGeometry) {\n var vertices = geometry.vertices;\n var lineDistances = geometry.lineDistances;\n for (var i = 0, l = vertices.length; i < l; i += 2) {\n start.copy(vertices[i]);\n end.copy(vertices[i + 1]);\n lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n lineDistances[i + 1] = lineDistances[i] + start.distanceTo(end);\n }\n }\n return this;\n };\n }()\n});\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop(geometry, material) {\n Line.call(this, geometry, material);\n this.type = 'LineLoop';\n}\nLineLoop.prototype = Object.assign(Object.create(Line.prototype), {\n constructor: LineLoop,\n isLineLoop: true\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial(parameters) {\n Material.call(this);\n this.type = 'PointsMaterial';\n this.color = new Color(0xffffff);\n this.map = null;\n this.size = 1;\n this.sizeAttenuation = true;\n this.morphTargets = false;\n this.lights = false;\n this.setValues(parameters);\n}\nPointsMaterial.prototype = Object.create(Material.prototype);\nPointsMaterial.prototype.constructor = PointsMaterial;\nPointsMaterial.prototype.isPointsMaterial = true;\nPointsMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.map = source.map;\n this.size = source.size;\n this.sizeAttenuation = source.sizeAttenuation;\n this.morphTargets = source.morphTargets;\n return this;\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points(geometry, material) {\n Object3D.call(this);\n this.type = 'Points';\n this.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n this.material = material !== undefined ? material : new PointsMaterial({\n color: Math.random() * 0xffffff\n });\n}\nPoints.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Points,\n isPoints: true,\n raycast: function () {\n var inverseMatrix = new Matrix4();\n var ray = new Ray();\n var sphere = new Sphere();\n return function raycast(raycaster, intersects) {\n var object = this;\n var geometry = this.geometry;\n var matrixWorld = this.matrixWorld;\n var threshold = raycaster.params.Points.threshold;\n\n // Checking boundingSphere distance to ray\n\n if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n sphere.copy(geometry.boundingSphere);\n sphere.applyMatrix4(matrixWorld);\n sphere.radius += threshold;\n if (raycaster.ray.intersectsSphere(sphere) === false) return;\n\n //\n\n inverseMatrix.getInverse(matrixWorld);\n ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);\n var localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n var localThresholdSq = localThreshold * localThreshold;\n var position = new Vector3();\n var intersectPoint = new Vector3();\n function testPoint(point, index) {\n var rayPointDistanceSq = ray.distanceSqToPoint(point);\n if (rayPointDistanceSq < localThresholdSq) {\n ray.closestPointToPoint(point, intersectPoint);\n intersectPoint.applyMatrix4(matrixWorld);\n var distance = raycaster.ray.origin.distanceTo(intersectPoint);\n if (distance < raycaster.near || distance > raycaster.far) return;\n intersects.push({\n distance: distance,\n distanceToRay: Math.sqrt(rayPointDistanceSq),\n point: intersectPoint.clone(),\n index: index,\n face: null,\n object: object\n });\n }\n }\n if (geometry.isBufferGeometry) {\n var index = geometry.index;\n var attributes = geometry.attributes;\n var positions = attributes.position.array;\n if (index !== null) {\n var indices = index.array;\n for (var i = 0, il = indices.length; i < il; i++) {\n var a = indices[i];\n position.fromArray(positions, a * 3);\n testPoint(position, a);\n }\n } else {\n for (var i = 0, l = positions.length / 3; i < l; i++) {\n position.fromArray(positions, i * 3);\n testPoint(position, i);\n }\n }\n } else {\n var vertices = geometry.vertices;\n for (var i = 0, l = vertices.length; i < l; i++) {\n testPoint(vertices[i], i);\n }\n }\n };\n }(),\n clone: function () {\n return new this.constructor(this.geometry, this.material).copy(this);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n Texture.call(this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.format = format !== undefined ? format : RGBFormat;\n this.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n this.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n this.generateMipmaps = false;\n}\nVideoTexture.prototype = Object.assign(Object.create(Texture.prototype), {\n constructor: VideoTexture,\n isVideoTexture: true,\n update: function () {\n var video = this.image;\n if (video.readyState >= video.HAVE_CURRENT_DATA) {\n this.needsUpdate = true;\n }\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n this.image = {\n width: width,\n height: height\n };\n this.mipmaps = mipmaps;\n\n // no flipping for cube textures\n // (also flipping doesn't work for compressed textures )\n\n this.flipY = false;\n\n // can't generate mipmaps for compressed textures\n // mips must be embedded in DDS files\n\n this.generateMipmaps = false;\n}\nCompressedTexture.prototype = Object.create(Texture.prototype);\nCompressedTexture.prototype.constructor = CompressedTexture;\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n Texture.call(this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.needsUpdate = true;\n}\nCanvasTexture.prototype = Object.create(Texture.prototype);\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n format = format !== undefined ? format : DepthFormat;\n if (format !== DepthFormat && format !== DepthStencilFormat) {\n throw new Error('DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat');\n }\n if (type === undefined && format === DepthFormat) type = UnsignedShortType;\n if (type === undefined && format === DepthStencilFormat) type = UnsignedInt248Type;\n Texture.call(this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n this.image = {\n width: width,\n height: height\n };\n this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n this.flipY = false;\n this.generateMipmaps = false;\n}\nDepthTexture.prototype = Object.create(Texture.prototype);\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry(geometry) {\n BufferGeometry.call(this);\n this.type = 'WireframeGeometry';\n\n // buffer\n\n var vertices = [];\n\n // helper variables\n\n var i, j, l, o, ol;\n var edge = [0, 0],\n edges = {},\n e,\n edge1,\n edge2;\n var key,\n keys = ['a', 'b', 'c'];\n var vertex;\n\n // different logic for Geometry and BufferGeometry\n\n if (geometry && geometry.isGeometry) {\n // create a data structure that contains all edges without duplicates\n\n var faces = geometry.faces;\n for (i = 0, l = faces.length; i < l; i++) {\n var face = faces[i];\n for (j = 0; j < 3; j++) {\n edge1 = face[keys[j]];\n edge2 = face[keys[(j + 1) % 3]];\n edge[0] = Math.min(edge1, edge2); // sorting prevents duplicates\n edge[1] = Math.max(edge1, edge2);\n key = edge[0] + ',' + edge[1];\n if (edges[key] === undefined) {\n edges[key] = {\n index1: edge[0],\n index2: edge[1]\n };\n }\n }\n }\n\n // generate vertices\n\n for (key in edges) {\n e = edges[key];\n vertex = geometry.vertices[e.index1];\n vertices.push(vertex.x, vertex.y, vertex.z);\n vertex = geometry.vertices[e.index2];\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n } else if (geometry && geometry.isBufferGeometry) {\n var position, indices, groups;\n var group, start, count;\n var index1, index2;\n vertex = new Vector3();\n if (geometry.index !== null) {\n // indexed BufferGeometry\n\n position = geometry.attributes.position;\n indices = geometry.index;\n groups = geometry.groups;\n if (groups.length === 0) {\n groups = [{\n start: 0,\n count: indices.count,\n materialIndex: 0\n }];\n }\n\n // create a data structure that contains all eges without duplicates\n\n for (o = 0, ol = groups.length; o < ol; ++o) {\n group = groups[o];\n start = group.start;\n count = group.count;\n for (i = start, l = start + count; i < l; i += 3) {\n for (j = 0; j < 3; j++) {\n edge1 = indices.getX(i + j);\n edge2 = indices.getX(i + (j + 1) % 3);\n edge[0] = Math.min(edge1, edge2); // sorting prevents duplicates\n edge[1] = Math.max(edge1, edge2);\n key = edge[0] + ',' + edge[1];\n if (edges[key] === undefined) {\n edges[key] = {\n index1: edge[0],\n index2: edge[1]\n };\n }\n }\n }\n }\n\n // generate vertices\n\n for (key in edges) {\n e = edges[key];\n vertex.fromBufferAttribute(position, e.index1);\n vertices.push(vertex.x, vertex.y, vertex.z);\n vertex.fromBufferAttribute(position, e.index2);\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n } else {\n // non-indexed BufferGeometry\n\n position = geometry.attributes.position;\n for (i = 0, l = position.count / 3; i < l; i++) {\n for (j = 0; j < 3; j++) {\n // three edges per triangle, an edge is represented as (index1, index2)\n // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n index1 = 3 * i + j;\n vertex.fromBufferAttribute(position, index1);\n vertices.push(vertex.x, vertex.y, vertex.z);\n index2 = 3 * i + (j + 1) % 3;\n vertex.fromBufferAttribute(position, index2);\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n }\n }\n }\n\n // build geometry\n\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n}\nWireframeGeometry.prototype = Object.create(BufferGeometry.prototype);\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry(func, slices, stacks) {\n Geometry.call(this);\n this.type = 'ParametricGeometry';\n this.parameters = {\n func: func,\n slices: slices,\n stacks: stacks\n };\n this.fromBufferGeometry(new ParametricBufferGeometry(func, slices, stacks));\n this.mergeVertices();\n}\nParametricGeometry.prototype = Object.create(Geometry.prototype);\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry(func, slices, stacks) {\n BufferGeometry.call(this);\n this.type = 'ParametricBufferGeometry';\n this.parameters = {\n func: func,\n slices: slices,\n stacks: stacks\n };\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n var EPS = 0.00001;\n var normal = new Vector3();\n var p0 = new Vector3(),\n p1 = new Vector3();\n var pu = new Vector3(),\n pv = new Vector3();\n var i, j;\n if (func.length < 3) {\n console.error('THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.');\n }\n\n // generate vertices, normals and uvs\n\n var sliceCount = slices + 1;\n for (i = 0; i <= stacks; i++) {\n var v = i / stacks;\n for (j = 0; j <= slices; j++) {\n var u = j / slices;\n\n // vertex\n\n func(u, v, p0);\n vertices.push(p0.x, p0.y, p0.z);\n\n // normal\n\n // approximate tangent vectors via finite differences\n\n if (u - EPS >= 0) {\n func(u - EPS, v, p1);\n pu.subVectors(p0, p1);\n } else {\n func(u + EPS, v, p1);\n pu.subVectors(p1, p0);\n }\n if (v - EPS >= 0) {\n func(u, v - EPS, p1);\n pv.subVectors(p0, p1);\n } else {\n func(u, v + EPS, p1);\n pv.subVectors(p1, p0);\n }\n\n // cross product of tangent vectors returns surface normal\n\n normal.crossVectors(pu, pv).normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // uv\n\n uvs.push(u, v);\n }\n }\n\n // generate indices\n\n for (i = 0; i < stacks; i++) {\n for (j = 0; j < slices; j++) {\n var a = i * sliceCount + j;\n var b = i * sliceCount + j + 1;\n var c = (i + 1) * sliceCount + j + 1;\n var d = (i + 1) * sliceCount + j;\n\n // faces one and two\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nParametricBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry(vertices, indices, radius, detail) {\n Geometry.call(this);\n this.type = 'PolyhedronGeometry';\n this.parameters = {\n vertices: vertices,\n indices: indices,\n radius: radius,\n detail: detail\n };\n this.fromBufferGeometry(new PolyhedronBufferGeometry(vertices, indices, radius, detail));\n this.mergeVertices();\n}\nPolyhedronGeometry.prototype = Object.create(Geometry.prototype);\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry(vertices, indices, radius, detail) {\n BufferGeometry.call(this);\n this.type = 'PolyhedronBufferGeometry';\n this.parameters = {\n vertices: vertices,\n indices: indices,\n radius: radius,\n detail: detail\n };\n radius = radius || 1;\n detail = detail || 0;\n\n // default buffer data\n\n var vertexBuffer = [];\n var uvBuffer = [];\n\n // the subdivision creates the vertex buffer data\n\n subdivide(detail);\n\n // all vertices should lie on a conceptual sphere with a given radius\n\n appplyRadius(radius);\n\n // finally, create the uv data\n\n generateUVs();\n\n // build non-indexed geometry\n\n this.addAttribute('position', new Float32BufferAttribute(vertexBuffer, 3));\n this.addAttribute('normal', new Float32BufferAttribute(vertexBuffer.slice(), 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvBuffer, 2));\n if (detail === 0) {\n this.computeVertexNormals(); // flat normals\n } else {\n this.normalizeNormals(); // smooth normals\n }\n\n // helper functions\n\n function subdivide(detail) {\n var a = new Vector3();\n var b = new Vector3();\n var c = new Vector3();\n\n // iterate over all faces and apply a subdivison with the given detail value\n\n for (var i = 0; i < indices.length; i += 3) {\n // get the vertices of the face\n\n getVertexByIndex(indices[i + 0], a);\n getVertexByIndex(indices[i + 1], b);\n getVertexByIndex(indices[i + 2], c);\n\n // perform subdivision\n\n subdivideFace(a, b, c, detail);\n }\n }\n function subdivideFace(a, b, c, detail) {\n var cols = Math.pow(2, detail);\n\n // we use this multidimensional array as a data structure for creating the subdivision\n\n var v = [];\n var i, j;\n\n // construct all of the vertices for this subdivision\n\n for (i = 0; i <= cols; i++) {\n v[i] = [];\n var aj = a.clone().lerp(c, i / cols);\n var bj = b.clone().lerp(c, i / cols);\n var rows = cols - i;\n for (j = 0; j <= rows; j++) {\n if (j === 0 && i === cols) {\n v[i][j] = aj;\n } else {\n v[i][j] = aj.clone().lerp(bj, j / rows);\n }\n }\n }\n\n // construct all of the faces\n\n for (i = 0; i < cols; i++) {\n for (j = 0; j < 2 * (cols - i) - 1; j++) {\n var k = Math.floor(j / 2);\n if (j % 2 === 0) {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k]);\n pushVertex(v[i][k]);\n } else {\n pushVertex(v[i][k + 1]);\n pushVertex(v[i + 1][k + 1]);\n pushVertex(v[i + 1][k]);\n }\n }\n }\n }\n function appplyRadius(radius) {\n var vertex = new Vector3();\n\n // iterate over the entire buffer and apply the radius to each vertex\n\n for (var i = 0; i < vertexBuffer.length; i += 3) {\n vertex.x = vertexBuffer[i + 0];\n vertex.y = vertexBuffer[i + 1];\n vertex.z = vertexBuffer[i + 2];\n vertex.normalize().multiplyScalar(radius);\n vertexBuffer[i + 0] = vertex.x;\n vertexBuffer[i + 1] = vertex.y;\n vertexBuffer[i + 2] = vertex.z;\n }\n }\n function generateUVs() {\n var vertex = new Vector3();\n for (var i = 0; i < vertexBuffer.length; i += 3) {\n vertex.x = vertexBuffer[i + 0];\n vertex.y = vertexBuffer[i + 1];\n vertex.z = vertexBuffer[i + 2];\n var u = azimuth(vertex) / 2 / Math.PI + 0.5;\n var v = inclination(vertex) / Math.PI + 0.5;\n uvBuffer.push(u, 1 - v);\n }\n correctUVs();\n correctSeam();\n }\n function correctSeam() {\n // handle case when face straddles the seam, see #3269\n\n for (var i = 0; i < uvBuffer.length; i += 6) {\n // uv data of a single face\n\n var x0 = uvBuffer[i + 0];\n var x1 = uvBuffer[i + 2];\n var x2 = uvBuffer[i + 4];\n var max = Math.max(x0, x1, x2);\n var min = Math.min(x0, x1, x2);\n\n // 0.9 is somewhat arbitrary\n\n if (max > 0.9 && min < 0.1) {\n if (x0 < 0.2) uvBuffer[i + 0] += 1;\n if (x1 < 0.2) uvBuffer[i + 2] += 1;\n if (x2 < 0.2) uvBuffer[i + 4] += 1;\n }\n }\n }\n function pushVertex(vertex) {\n vertexBuffer.push(vertex.x, vertex.y, vertex.z);\n }\n function getVertexByIndex(index, vertex) {\n var stride = index * 3;\n vertex.x = vertices[stride + 0];\n vertex.y = vertices[stride + 1];\n vertex.z = vertices[stride + 2];\n }\n function correctUVs() {\n var a = new Vector3();\n var b = new Vector3();\n var c = new Vector3();\n var centroid = new Vector3();\n var uvA = new Vector2();\n var uvB = new Vector2();\n var uvC = new Vector2();\n for (var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n centroid.copy(a).add(b).add(c).divideScalar(3);\n var azi = azimuth(centroid);\n correctUV(uvA, j + 0, a, azi);\n correctUV(uvB, j + 2, b, azi);\n correctUV(uvC, j + 4, c, azi);\n }\n }\n function correctUV(uv, stride, vector, azimuth) {\n if (azimuth < 0 && uv.x === 1) {\n uvBuffer[stride] = uv.x - 1;\n }\n if (vector.x === 0 && vector.z === 0) {\n uvBuffer[stride] = azimuth / 2 / Math.PI + 0.5;\n }\n }\n\n // Angle around the Y axis, counter-clockwise when looking from above.\n\n function azimuth(vector) {\n return Math.atan2(vector.z, -vector.x);\n }\n\n // Angle above the XZ plane.\n\n function inclination(vector) {\n return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n }\n}\nPolyhedronBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry(radius, detail) {\n Geometry.call(this);\n this.type = 'TetrahedronGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n this.fromBufferGeometry(new TetrahedronBufferGeometry(radius, detail));\n this.mergeVertices();\n}\nTetrahedronGeometry.prototype = Object.create(Geometry.prototype);\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry(radius, detail) {\n var vertices = [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1];\n var indices = [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1];\n PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail);\n this.type = 'TetrahedronBufferGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n}\nTetrahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype);\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry(radius, detail) {\n Geometry.call(this);\n this.type = 'OctahedronGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n this.fromBufferGeometry(new OctahedronBufferGeometry(radius, detail));\n this.mergeVertices();\n}\nOctahedronGeometry.prototype = Object.create(Geometry.prototype);\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry(radius, detail) {\n var vertices = [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1];\n var indices = [0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2];\n PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail);\n this.type = 'OctahedronBufferGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n}\nOctahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype);\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry(radius, detail) {\n Geometry.call(this);\n this.type = 'IcosahedronGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n this.fromBufferGeometry(new IcosahedronBufferGeometry(radius, detail));\n this.mergeVertices();\n}\nIcosahedronGeometry.prototype = Object.create(Geometry.prototype);\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry(radius, detail) {\n var t = (1 + Math.sqrt(5)) / 2;\n var vertices = [-1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, 0, 0, -1, t, 0, 1, t, 0, -1, -t, 0, 1, -t, t, 0, -1, t, 0, 1, -t, 0, -1, -t, 0, 1];\n var indices = [0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1];\n PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail);\n this.type = 'IcosahedronBufferGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n}\nIcosahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype);\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry(radius, detail) {\n Geometry.call(this);\n this.type = 'DodecahedronGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n this.fromBufferGeometry(new DodecahedronBufferGeometry(radius, detail));\n this.mergeVertices();\n}\nDodecahedronGeometry.prototype = Object.create(Geometry.prototype);\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry(radius, detail) {\n var t = (1 + Math.sqrt(5)) / 2;\n var r = 1 / t;\n var vertices = [\n // (±1, ±1, ±1)\n -1, -1, -1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1,\n // (0, ±1/φ, ±φ)\n 0, -r, -t, 0, -r, t, 0, r, -t, 0, r, t,\n // (±1/φ, ±φ, 0)\n -r, -t, 0, -r, t, 0, r, -t, 0, r, t, 0,\n // (±φ, 0, ±1/φ)\n -t, 0, -r, t, 0, -r, -t, 0, r, t, 0, r];\n var indices = [3, 11, 7, 3, 7, 15, 3, 15, 13, 7, 19, 17, 7, 17, 6, 7, 6, 15, 17, 4, 8, 17, 8, 10, 17, 10, 6, 8, 0, 16, 8, 16, 2, 8, 2, 10, 0, 12, 1, 0, 1, 18, 0, 18, 16, 6, 10, 2, 6, 2, 13, 6, 13, 15, 2, 16, 18, 2, 18, 3, 2, 3, 13, 18, 1, 9, 18, 9, 11, 18, 11, 3, 4, 14, 12, 4, 12, 0, 4, 0, 8, 11, 9, 5, 11, 5, 19, 11, 19, 7, 19, 5, 14, 19, 14, 4, 19, 4, 17, 1, 12, 14, 1, 14, 5, 1, 5, 9];\n PolyhedronBufferGeometry.call(this, vertices, indices, radius, detail);\n this.type = 'DodecahedronBufferGeometry';\n this.parameters = {\n radius: radius,\n detail: detail\n };\n}\nDodecahedronBufferGeometry.prototype = Object.create(PolyhedronBufferGeometry.prototype);\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry(path, tubularSegments, radius, radialSegments, closed, taper) {\n Geometry.call(this);\n this.type = 'TubeGeometry';\n this.parameters = {\n path: path,\n tubularSegments: tubularSegments,\n radius: radius,\n radialSegments: radialSegments,\n closed: closed\n };\n if (taper !== undefined) console.warn('THREE.TubeGeometry: taper has been removed.');\n var bufferGeometry = new TubeBufferGeometry(path, tubularSegments, radius, radialSegments, closed);\n\n // expose internals\n\n this.tangents = bufferGeometry.tangents;\n this.normals = bufferGeometry.normals;\n this.binormals = bufferGeometry.binormals;\n\n // create geometry\n\n this.fromBufferGeometry(bufferGeometry);\n this.mergeVertices();\n}\nTubeGeometry.prototype = Object.create(Geometry.prototype);\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry(path, tubularSegments, radius, radialSegments, closed) {\n BufferGeometry.call(this);\n this.type = 'TubeBufferGeometry';\n this.parameters = {\n path: path,\n tubularSegments: tubularSegments,\n radius: radius,\n radialSegments: radialSegments,\n closed: closed\n };\n tubularSegments = tubularSegments || 64;\n radius = radius || 1;\n radialSegments = radialSegments || 8;\n closed = closed || false;\n var frames = path.computeFrenetFrames(tubularSegments, closed);\n\n // expose internals\n\n this.tangents = frames.tangents;\n this.normals = frames.normals;\n this.binormals = frames.binormals;\n\n // helper variables\n\n var vertex = new Vector3();\n var normal = new Vector3();\n var uv = new Vector2();\n var P = new Vector3();\n var i, j;\n\n // buffer\n\n var vertices = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n\n // create buffer data\n\n generateBufferData();\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n // functions\n\n function generateBufferData() {\n for (i = 0; i < tubularSegments; i++) {\n generateSegment(i);\n }\n\n // if the geometry is not closed, generate the last row of vertices and normals\n // at the regular position on the given path\n //\n // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n generateSegment(closed === false ? tubularSegments : 0);\n\n // uvs are generated in a separate function.\n // this makes it easy compute correct values for closed geometries\n\n generateUVs();\n\n // finally create faces\n\n generateIndices();\n }\n function generateSegment(i) {\n // we use getPointAt to sample evenly distributed points from the given path\n\n P = path.getPointAt(i / tubularSegments, P);\n\n // retrieve corresponding normal and binormal\n\n var N = frames.normals[i];\n var B = frames.binormals[i];\n\n // generate normals and vertices for the current segment\n\n for (j = 0; j <= radialSegments; j++) {\n var v = j / radialSegments * Math.PI * 2;\n var sin = Math.sin(v);\n var cos = -Math.cos(v);\n\n // normal\n\n normal.x = cos * N.x + sin * B.x;\n normal.y = cos * N.y + sin * B.y;\n normal.z = cos * N.z + sin * B.z;\n normal.normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // vertex\n\n vertex.x = P.x + radius * normal.x;\n vertex.y = P.y + radius * normal.y;\n vertex.z = P.z + radius * normal.z;\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n }\n function generateIndices() {\n for (j = 1; j <= tubularSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n var a = (radialSegments + 1) * (j - 1) + (i - 1);\n var b = (radialSegments + 1) * j + (i - 1);\n var c = (radialSegments + 1) * j + i;\n var d = (radialSegments + 1) * (j - 1) + i;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n }\n function generateUVs() {\n for (i = 0; i <= tubularSegments; i++) {\n for (j = 0; j <= radialSegments; j++) {\n uv.x = i / tubularSegments;\n uv.y = j / radialSegments;\n uvs.push(uv.x, uv.y);\n }\n }\n }\n}\nTubeBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\nTubeBufferGeometry.prototype.toJSON = function () {\n var data = BufferGeometry.prototype.toJSON.call(this);\n data.path = this.parameters.path.toJSON();\n return data;\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry(radius, tube, tubularSegments, radialSegments, p, q, heightScale) {\n Geometry.call(this);\n this.type = 'TorusKnotGeometry';\n this.parameters = {\n radius: radius,\n tube: tube,\n tubularSegments: tubularSegments,\n radialSegments: radialSegments,\n p: p,\n q: q\n };\n if (heightScale !== undefined) console.warn('THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.');\n this.fromBufferGeometry(new TorusKnotBufferGeometry(radius, tube, tubularSegments, radialSegments, p, q));\n this.mergeVertices();\n}\nTorusKnotGeometry.prototype = Object.create(Geometry.prototype);\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry(radius, tube, tubularSegments, radialSegments, p, q) {\n BufferGeometry.call(this);\n this.type = 'TorusKnotBufferGeometry';\n this.parameters = {\n radius: radius,\n tube: tube,\n tubularSegments: tubularSegments,\n radialSegments: radialSegments,\n p: p,\n q: q\n };\n radius = radius || 1;\n tube = tube || 0.4;\n tubularSegments = Math.floor(tubularSegments) || 64;\n radialSegments = Math.floor(radialSegments) || 8;\n p = p || 2;\n q = q || 3;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var i, j;\n var vertex = new Vector3();\n var normal = new Vector3();\n var P1 = new Vector3();\n var P2 = new Vector3();\n var B = new Vector3();\n var T = new Vector3();\n var N = new Vector3();\n\n // generate vertices, normals and uvs\n\n for (i = 0; i <= tubularSegments; ++i) {\n // the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n var u = i / tubularSegments * p * Math.PI * 2;\n\n // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n // these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n calculatePositionOnCurve(u, p, q, radius, P1);\n calculatePositionOnCurve(u + 0.01, p, q, radius, P2);\n\n // calculate orthonormal basis\n\n T.subVectors(P2, P1);\n N.addVectors(P2, P1);\n B.crossVectors(T, N);\n N.crossVectors(B, T);\n\n // normalize B, N. T can be ignored, we don't use it\n\n B.normalize();\n N.normalize();\n for (j = 0; j <= radialSegments; ++j) {\n // now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n // because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n var v = j / radialSegments * Math.PI * 2;\n var cx = -tube * Math.cos(v);\n var cy = tube * Math.sin(v);\n\n // now calculate the final vertex position.\n // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n vertex.x = P1.x + (cx * N.x + cy * B.x);\n vertex.y = P1.y + (cx * N.y + cy * B.y);\n vertex.z = P1.z + (cx * N.z + cy * B.z);\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n normal.subVectors(vertex, P1).normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // uv\n\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n\n // generate indices\n\n for (j = 1; j <= tubularSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n // indices\n\n var a = (radialSegments + 1) * (j - 1) + (i - 1);\n var b = (radialSegments + 1) * j + (i - 1);\n var c = (radialSegments + 1) * j + i;\n var d = (radialSegments + 1) * (j - 1) + i;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n // this function calculates the current position on the torus curve\n\n function calculatePositionOnCurve(u, p, q, radius, position) {\n var cu = Math.cos(u);\n var su = Math.sin(u);\n var quOverP = q / p * u;\n var cs = Math.cos(quOverP);\n position.x = radius * (2 + cs) * 0.5 * cu;\n position.y = radius * (2 + cs) * su * 0.5;\n position.z = radius * Math.sin(quOverP) * 0.5;\n }\n}\nTorusKnotBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry(radius, tube, radialSegments, tubularSegments, arc) {\n Geometry.call(this);\n this.type = 'TorusGeometry';\n this.parameters = {\n radius: radius,\n tube: tube,\n radialSegments: radialSegments,\n tubularSegments: tubularSegments,\n arc: arc\n };\n this.fromBufferGeometry(new TorusBufferGeometry(radius, tube, radialSegments, tubularSegments, arc));\n this.mergeVertices();\n}\nTorusGeometry.prototype = Object.create(Geometry.prototype);\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry(radius, tube, radialSegments, tubularSegments, arc) {\n BufferGeometry.call(this);\n this.type = 'TorusBufferGeometry';\n this.parameters = {\n radius: radius,\n tube: tube,\n radialSegments: radialSegments,\n tubularSegments: tubularSegments,\n arc: arc\n };\n radius = radius || 1;\n tube = tube || 0.4;\n radialSegments = Math.floor(radialSegments) || 8;\n tubularSegments = Math.floor(tubularSegments) || 6;\n arc = arc || Math.PI * 2;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var center = new Vector3();\n var vertex = new Vector3();\n var normal = new Vector3();\n var j, i;\n\n // generate vertices, normals and uvs\n\n for (j = 0; j <= radialSegments; j++) {\n for (i = 0; i <= tubularSegments; i++) {\n var u = i / tubularSegments * arc;\n var v = j / radialSegments * Math.PI * 2;\n\n // vertex\n\n vertex.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n vertex.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n vertex.z = tube * Math.sin(v);\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n center.x = radius * Math.cos(u);\n center.y = radius * Math.sin(u);\n normal.subVectors(vertex, center).normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // uv\n\n uvs.push(i / tubularSegments);\n uvs.push(j / radialSegments);\n }\n }\n\n // generate indices\n\n for (j = 1; j <= radialSegments; j++) {\n for (i = 1; i <= tubularSegments; i++) {\n // indices\n\n var a = (tubularSegments + 1) * j + i - 1;\n var b = (tubularSegments + 1) * (j - 1) + i - 1;\n var c = (tubularSegments + 1) * (j - 1) + i;\n var d = (tubularSegments + 1) * j + i;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nTorusBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.2)\n */\n\nvar Earcut = {\n triangulate: function (data, holeIndices, dim) {\n dim = dim || 2;\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n if (!outerNode) return triangles;\n var minX, minY, maxX, maxY, x, y, invSize;\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n return triangles;\n }\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\n\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n if (clockwise === signedArea(data, start, end, dim) > 0) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n return last;\n}\n\n// eliminate colinear or duplicate points\n\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n var p = start,\n again;\n do {\n again = false;\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\n\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n var stop = ear,\n prev,\n next;\n\n // iterate through ears, slicing them one by one\n\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n removeNode(ear);\n\n // skipping the next vertice leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n continue;\n }\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n\n if (ear === stop) {\n // try filtering points and slicing again\n\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(ear, triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\n\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) {\n return false;\n }\n p = p.next;\n }\n return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n\n var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x,\n minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y,\n maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x,\n maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;\n\n // z-order range for the current triangle bbox;\n\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n // first look for points inside the triangle in increasing z-order\n\n var p = ear.nextZ;\n while (p && p.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.nextZ;\n }\n\n // then look for points in decreasing z-order\n\n p = ear.prevZ;\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\n\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n\n removeNode(p);\n removeNode(p.next);\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n return p;\n}\n\n// try splitting polygon into two and triangulate them independently\n\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\n\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i,\n len,\n start,\n end,\n list;\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n queue.sort(compareX);\n\n // process holes from left to right\n\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n return outerNode;\n}\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\n\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\n\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n if (!m) return null;\n if (hx === qx) return m.prev; // hole touches outer segment; pick lower endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n p = m.next;\n while (p !== stop) {\n if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if ((tan < tanMin || tan === tanMin && p.x > m.x) && locallyInside(p, hole)) {\n m = p;\n tanMin = tan;\n }\n }\n p = p.next;\n }\n return m;\n}\n\n// interlink polygon nodes in z-order\n\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n p.prevZ.nextZ = null;\n p.prevZ = null;\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\n\nfunction sortLinked(list) {\n var i,\n p,\n q,\n e,\n tail,\n numMerges,\n pSize,\n qSize,\n inSize = 1;\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n while (pSize > 0 || qSize > 0 && q) {\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n if (tail) tail.nextZ = e;else list = e;\n e.prevZ = tail;\n tail = e;\n }\n p = q;\n }\n tail.nextZ = null;\n inSize *= 2;\n } while (numMerges > 1);\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\n\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n x = (x | x << 8) & 0x00FF00FF;\n x = (x | x << 4) & 0x0F0F0F0F;\n x = (x | x << 2) & 0x33333333;\n x = (x | x << 1) & 0x55555555;\n y = (y | y << 8) & 0x00FF00FF;\n y = (y | y << 4) & 0x0F0F0F0F;\n y = (y | y << 2) & 0x33333333;\n y = (y | y << 1) & 0x55555555;\n return x | y << 1;\n}\n\n// find the leftmost node of a polygon ring\n\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x) leftmost = p;\n p = p.next;\n } while (p !== start);\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\n\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b);\n}\n\n// signed area of a triangle\n\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\n\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\n\nfunction intersects(p1, q1, p2, q2) {\n if (equals(p1, q1) && equals(p2, q2) || equals(p1, q2) && equals(p2, q1)) return true;\n return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 && area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\n\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) {\n return true;\n }\n p = p.next;\n } while (p !== a);\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\n\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\n\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) {\n inside = !inside;\n }\n p = p.next;\n } while (p !== a);\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\n\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n a.next = b;\n b.prev = a;\n a2.next = an;\n an.prev = a2;\n b2.next = a2;\n a2.prev = b2;\n bp.next = b2;\n b2.prev = bp;\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\n\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n if (!last) {\n p.prev = p;\n p.next = p;\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\nfunction Node(i, x, y) {\n // vertice index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertice nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n // calculate area of the contour polygon\n\n area: function (contour) {\n var n = contour.length;\n var a = 0.0;\n for (var p = n - 1, q = 0; q < n; p = q++) {\n a += contour[p].x * contour[q].y - contour[q].x * contour[p].y;\n }\n return a * 0.5;\n },\n isClockWise: function (pts) {\n return ShapeUtils.area(pts) < 0;\n },\n triangulateShape: function (contour, holes) {\n var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n var holeIndices = []; // array of hole indices\n var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n removeDupEndPts(contour);\n addContour(vertices, contour);\n\n //\n\n var holeIndex = contour.length;\n holes.forEach(removeDupEndPts);\n for (var i = 0; i < holes.length; i++) {\n holeIndices.push(holeIndex);\n holeIndex += holes[i].length;\n addContour(vertices, holes[i]);\n }\n\n //\n\n var triangles = Earcut.triangulate(vertices, holeIndices);\n\n //\n\n for (var i = 0; i < triangles.length; i += 3) {\n faces.push(triangles.slice(i, i + 3));\n }\n return faces;\n }\n};\nfunction removeDupEndPts(points) {\n var l = points.length;\n if (l > 2 && points[l - 1].equals(points[0])) {\n points.pop();\n }\n}\nfunction addContour(vertices, contour) {\n for (var i = 0; i < contour.length; i++) {\n vertices.push(contour[i].x);\n vertices.push(contour[i].y);\n }\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry(shapes, options) {\n Geometry.call(this);\n this.type = 'ExtrudeGeometry';\n this.parameters = {\n shapes: shapes,\n options: options\n };\n this.fromBufferGeometry(new ExtrudeBufferGeometry(shapes, options));\n this.mergeVertices();\n}\nExtrudeGeometry.prototype = Object.create(Geometry.prototype);\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\nExtrudeGeometry.prototype.toJSON = function () {\n var data = Geometry.prototype.toJSON.call(this);\n var shapes = this.parameters.shapes;\n var options = this.parameters.options;\n return toJSON(shapes, options, data);\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry(shapes, options) {\n BufferGeometry.call(this);\n this.type = 'ExtrudeBufferGeometry';\n this.parameters = {\n shapes: shapes,\n options: options\n };\n shapes = Array.isArray(shapes) ? shapes : [shapes];\n var scope = this;\n var verticesArray = [];\n var uvArray = [];\n for (var i = 0, l = shapes.length; i < l; i++) {\n var shape = shapes[i];\n addShape(shape);\n }\n\n // build geometry\n\n this.addAttribute('position', new Float32BufferAttribute(verticesArray, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvArray, 2));\n this.computeVertexNormals();\n\n // functions\n\n function addShape(shape) {\n var placeholder = [];\n\n // options\n\n var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n var steps = options.steps !== undefined ? options.steps : 1;\n var depth = options.depth !== undefined ? options.depth : 100;\n var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n var bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n var extrudePath = options.extrudePath;\n var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n // deprecated options\n\n if (options.amount !== undefined) {\n console.warn('THREE.ExtrudeBufferGeometry: amount has been renamed to depth.');\n depth = options.amount;\n }\n\n //\n\n var extrudePts,\n extrudeByPath = false;\n var splineTube, binormal, normal, position2;\n if (extrudePath) {\n extrudePts = extrudePath.getSpacedPoints(steps);\n extrudeByPath = true;\n bevelEnabled = false; // bevels not supported for path extrusion\n\n // SETUP TNB variables\n\n // TODO1 - have a .isClosed in spline?\n\n splineTube = extrudePath.computeFrenetFrames(steps, false);\n\n // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n binormal = new Vector3();\n normal = new Vector3();\n position2 = new Vector3();\n }\n\n // Safeguards if bevels are not enabled\n\n if (!bevelEnabled) {\n bevelSegments = 0;\n bevelThickness = 0;\n bevelSize = 0;\n bevelOffset = 0;\n }\n\n // Variables initialization\n\n var ahole, h, hl; // looping of holes\n\n var shapePoints = shape.extractPoints(curveSegments);\n var vertices = shapePoints.shape;\n var holes = shapePoints.holes;\n var reverse = !ShapeUtils.isClockWise(vertices);\n if (reverse) {\n vertices = vertices.reverse();\n\n // Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n if (ShapeUtils.isClockWise(ahole)) {\n holes[h] = ahole.reverse();\n }\n }\n }\n var faces = ShapeUtils.triangulateShape(vertices, holes);\n\n /* Vertices */\n\n var contour = vertices; // vertices has all points but contour has only points of circumference\n\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n vertices = vertices.concat(ahole);\n }\n function scalePt2(pt, vec, size) {\n if (!vec) console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n return vec.clone().multiplyScalar(size).add(pt);\n }\n var b,\n bs,\n t,\n z,\n vert,\n vlen = vertices.length,\n face,\n flen = faces.length;\n\n // Find directions for point movement\n\n function getBevelVec(inPt, inPrev, inNext) {\n // computes for inPt the corresponding point inPt' on a new contour\n // shifted by 1 unit (length of normalized vector) to the left\n // if we walk along contour clockwise, this new contour is outside the old one\n //\n // inPt' is the intersection of the two lines parallel to the two\n // adjacent edges of inPt at a distance of 1 unit on the left side.\n\n var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n // good reading for geometry algorithms (here: line-line intersection)\n // http://geomalgorithms.com/a05-_intersect-1.html\n\n var v_prev_x = inPt.x - inPrev.x,\n v_prev_y = inPt.y - inPrev.y;\n var v_next_x = inNext.x - inPt.x,\n v_next_y = inNext.y - inPt.y;\n var v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n\n // check for collinear edges\n var collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n if (Math.abs(collinear0) > Number.EPSILON) {\n // not collinear\n\n // length of vectors for normalizing\n\n var v_prev_len = Math.sqrt(v_prev_lensq);\n var v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n\n // shift adjacent points by unit vectors to the left\n\n var ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n var ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n var ptNextShift_x = inNext.x - v_next_y / v_next_len;\n var ptNextShift_y = inNext.y + v_next_x / v_next_len;\n\n // scaling factor for v_prev to intersection point\n\n var sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n\n // vector from inPt to intersection point\n\n v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n\n // Don't normalize!, otherwise sharp corners become ugly\n // but prevent crazy spikes\n var v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n if (v_trans_lensq <= 2) {\n return new Vector2(v_trans_x, v_trans_y);\n } else {\n shrink_by = Math.sqrt(v_trans_lensq / 2);\n }\n } else {\n // handle special case of collinear edges\n\n var direction_eq = false; // assumes: opposite\n if (v_prev_x > Number.EPSILON) {\n if (v_next_x > Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (v_prev_x < -Number.EPSILON) {\n if (v_next_x < -Number.EPSILON) {\n direction_eq = true;\n }\n } else {\n if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n direction_eq = true;\n }\n }\n }\n if (direction_eq) {\n // console.log(\"Warning: lines are a straight sequence\");\n v_trans_x = -v_prev_y;\n v_trans_y = v_prev_x;\n shrink_by = Math.sqrt(v_prev_lensq);\n } else {\n // console.log(\"Warning: lines are a straight spike\");\n v_trans_x = v_prev_x;\n v_trans_y = v_prev_y;\n shrink_by = Math.sqrt(v_prev_lensq / 2);\n }\n }\n return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n }\n var contourMovements = [];\n for (var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il) j = 0;\n if (k === il) k = 0;\n\n // (j)---(i)---(k)\n // console.log('i,j,k', i, j , k)\n\n contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n }\n var holesMovements = [],\n oneHoleMovements,\n verticesMovements = contourMovements.concat();\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n oneHoleMovements = [];\n for (i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n if (j === il) j = 0;\n if (k === il) k = 0;\n\n // (j)---(i)---(k)\n oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n }\n holesMovements.push(oneHoleMovements);\n verticesMovements = verticesMovements.concat(oneHoleMovements);\n }\n\n // Loop bevelSegments, 1 for the front, 1 for the back\n\n for (b = 0; b < bevelSegments; b++) {\n //for ( b = bevelSegments; b > 0; b -- ) {\n\n t = b / bevelSegments;\n z = bevelThickness * Math.cos(t * Math.PI / 2);\n bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n\n // contract shape\n\n for (i = 0, il = contour.length; i < il; i++) {\n vert = scalePt2(contour[i], contourMovements[i], bs);\n v(vert.x, vert.y, -z);\n }\n\n // expand holes\n\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (i = 0, il = ahole.length; i < il; i++) {\n vert = scalePt2(ahole[i], oneHoleMovements[i], bs);\n v(vert.x, vert.y, -z);\n }\n }\n }\n bs = bevelSize + bevelOffset;\n\n // Back facing vertices\n\n for (i = 0; i < vlen; i++) {\n vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, 0);\n } else {\n // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n position2.copy(extrudePts[0]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n\n // Add stepped vertices...\n // Including front facing vertices\n\n var s;\n for (s = 1; s <= steps; s++) {\n for (i = 0; i < vlen; i++) {\n vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth / steps * s);\n } else {\n // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n position2.copy(extrudePts[s]).add(normal).add(binormal);\n v(position2.x, position2.y, position2.z);\n }\n }\n }\n\n // Add bevel segments planes\n\n //for ( b = 1; b <= bevelSegments; b ++ ) {\n for (b = bevelSegments - 1; b >= 0; b--) {\n t = b / bevelSegments;\n z = bevelThickness * Math.cos(t * Math.PI / 2);\n bs = bevelSize * Math.sin(t * Math.PI / 2) + bevelOffset;\n\n // contract shape\n\n for (i = 0, il = contour.length; i < il; i++) {\n vert = scalePt2(contour[i], contourMovements[i], bs);\n v(vert.x, vert.y, depth + z);\n }\n\n // expand holes\n\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n oneHoleMovements = holesMovements[h];\n for (i = 0, il = ahole.length; i < il; i++) {\n vert = scalePt2(ahole[i], oneHoleMovements[i], bs);\n if (!extrudeByPath) {\n v(vert.x, vert.y, depth + z);\n } else {\n v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n }\n }\n }\n }\n\n /* Faces */\n\n // Top and bottom faces\n\n buildLidFaces();\n\n // Sides faces\n\n buildSideFaces();\n\n ///// Internal functions\n\n function buildLidFaces() {\n var start = verticesArray.length / 3;\n if (bevelEnabled) {\n var layer = 0; // steps + 1\n var offset = vlen * layer;\n\n // Bottom faces\n\n for (i = 0; i < flen; i++) {\n face = faces[i];\n f3(face[2] + offset, face[1] + offset, face[0] + offset);\n }\n layer = steps + bevelSegments * 2;\n offset = vlen * layer;\n\n // Top faces\n\n for (i = 0; i < flen; i++) {\n face = faces[i];\n f3(face[0] + offset, face[1] + offset, face[2] + offset);\n }\n } else {\n // Bottom faces\n\n for (i = 0; i < flen; i++) {\n face = faces[i];\n f3(face[2], face[1], face[0]);\n }\n\n // Top faces\n\n for (i = 0; i < flen; i++) {\n face = faces[i];\n f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n }\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 0);\n }\n\n // Create faces for the z-sides of the shape\n\n function buildSideFaces() {\n var start = verticesArray.length / 3;\n var layeroffset = 0;\n sidewalls(contour, layeroffset);\n layeroffset += contour.length;\n for (h = 0, hl = holes.length; h < hl; h++) {\n ahole = holes[h];\n sidewalls(ahole, layeroffset);\n\n //, true\n layeroffset += ahole.length;\n }\n scope.addGroup(start, verticesArray.length / 3 - start, 1);\n }\n function sidewalls(contour, layeroffset) {\n var j, k;\n i = contour.length;\n while (--i >= 0) {\n j = i;\n k = i - 1;\n if (k < 0) k = contour.length - 1;\n\n //console.log('b', i,j, i-1, k,vertices.length);\n\n var s = 0,\n sl = steps + bevelSegments * 2;\n for (s = 0; s < sl; s++) {\n var slen1 = vlen * s;\n var slen2 = vlen * (s + 1);\n var a = layeroffset + j + slen1,\n b = layeroffset + k + slen1,\n c = layeroffset + k + slen2,\n d = layeroffset + j + slen2;\n f4(a, b, c, d);\n }\n }\n }\n function v(x, y, z) {\n placeholder.push(x);\n placeholder.push(y);\n placeholder.push(z);\n }\n function f3(a, b, c) {\n addVertex(a);\n addVertex(b);\n addVertex(c);\n var nextIndex = verticesArray.length / 3;\n var uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n }\n function f4(a, b, c, d) {\n addVertex(a);\n addVertex(b);\n addVertex(d);\n addVertex(b);\n addVertex(c);\n addVertex(d);\n var nextIndex = verticesArray.length / 3;\n var uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n addUV(uvs[0]);\n addUV(uvs[1]);\n addUV(uvs[3]);\n addUV(uvs[1]);\n addUV(uvs[2]);\n addUV(uvs[3]);\n }\n function addVertex(index) {\n verticesArray.push(placeholder[index * 3 + 0]);\n verticesArray.push(placeholder[index * 3 + 1]);\n verticesArray.push(placeholder[index * 3 + 2]);\n }\n function addUV(vector2) {\n uvArray.push(vector2.x);\n uvArray.push(vector2.y);\n }\n }\n}\nExtrudeBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\nExtrudeBufferGeometry.prototype.toJSON = function () {\n var data = BufferGeometry.prototype.toJSON.call(this);\n var shapes = this.parameters.shapes;\n var options = this.parameters.options;\n return toJSON(shapes, options, data);\n};\n\n//\n\nvar WorldUVGenerator = {\n generateTopUV: function (geometry, vertices, indexA, indexB, indexC) {\n var a_x = vertices[indexA * 3];\n var a_y = vertices[indexA * 3 + 1];\n var b_x = vertices[indexB * 3];\n var b_y = vertices[indexB * 3 + 1];\n var c_x = vertices[indexC * 3];\n var c_y = vertices[indexC * 3 + 1];\n return [new Vector2(a_x, a_y), new Vector2(b_x, b_y), new Vector2(c_x, c_y)];\n },\n generateSideWallUV: function (geometry, vertices, indexA, indexB, indexC, indexD) {\n var a_x = vertices[indexA * 3];\n var a_y = vertices[indexA * 3 + 1];\n var a_z = vertices[indexA * 3 + 2];\n var b_x = vertices[indexB * 3];\n var b_y = vertices[indexB * 3 + 1];\n var b_z = vertices[indexB * 3 + 2];\n var c_x = vertices[indexC * 3];\n var c_y = vertices[indexC * 3 + 1];\n var c_z = vertices[indexC * 3 + 2];\n var d_x = vertices[indexD * 3];\n var d_y = vertices[indexD * 3 + 1];\n var d_z = vertices[indexD * 3 + 2];\n if (Math.abs(a_y - b_y) < 0.01) {\n return [new Vector2(a_x, 1 - a_z), new Vector2(b_x, 1 - b_z), new Vector2(c_x, 1 - c_z), new Vector2(d_x, 1 - d_z)];\n } else {\n return [new Vector2(a_y, 1 - a_z), new Vector2(b_y, 1 - b_z), new Vector2(c_y, 1 - c_z), new Vector2(d_y, 1 - d_z)];\n }\n }\n};\nfunction toJSON(shapes, options, data) {\n //\n\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (var i = 0, l = shapes.length; i < l; i++) {\n var shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n\n //\n\n if (options.extrudePath !== undefined) data.options.extrudePath = options.extrudePath.toJSON();\n return data;\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry(text, parameters) {\n Geometry.call(this);\n this.type = 'TextGeometry';\n this.parameters = {\n text: text,\n parameters: parameters\n };\n this.fromBufferGeometry(new TextBufferGeometry(text, parameters));\n this.mergeVertices();\n}\nTextGeometry.prototype = Object.create(Geometry.prototype);\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry(text, parameters) {\n parameters = parameters || {};\n var font = parameters.font;\n if (!(font && font.isFont)) {\n console.error('THREE.TextGeometry: font parameter is not an instance of THREE.Font.');\n return new Geometry();\n }\n var shapes = font.generateShapes(text, parameters.size);\n\n // translate parameters to ExtrudeGeometry API\n\n parameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n // defaults\n\n if (parameters.bevelThickness === undefined) parameters.bevelThickness = 10;\n if (parameters.bevelSize === undefined) parameters.bevelSize = 8;\n if (parameters.bevelEnabled === undefined) parameters.bevelEnabled = false;\n ExtrudeBufferGeometry.call(this, shapes, parameters);\n this.type = 'TextBufferGeometry';\n}\nTextBufferGeometry.prototype = Object.create(ExtrudeBufferGeometry.prototype);\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength) {\n Geometry.call(this);\n this.type = 'SphereGeometry';\n this.parameters = {\n radius: radius,\n widthSegments: widthSegments,\n heightSegments: heightSegments,\n phiStart: phiStart,\n phiLength: phiLength,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n this.fromBufferGeometry(new SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength));\n this.mergeVertices();\n}\nSphereGeometry.prototype = Object.create(Geometry.prototype);\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength) {\n BufferGeometry.call(this);\n this.type = 'SphereBufferGeometry';\n this.parameters = {\n radius: radius,\n widthSegments: widthSegments,\n heightSegments: heightSegments,\n phiStart: phiStart,\n phiLength: phiLength,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n radius = radius || 1;\n widthSegments = Math.max(3, Math.floor(widthSegments) || 8);\n heightSegments = Math.max(2, Math.floor(heightSegments) || 6);\n phiStart = phiStart !== undefined ? phiStart : 0;\n phiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n thetaStart = thetaStart !== undefined ? thetaStart : 0;\n thetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n var thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n var ix, iy;\n var index = 0;\n var grid = [];\n var vertex = new Vector3();\n var normal = new Vector3();\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // generate vertices, normals and uvs\n\n for (iy = 0; iy <= heightSegments; iy++) {\n var verticesRow = [];\n var v = iy / heightSegments;\n\n // special case for the poles\n\n var uOffset = 0;\n if (iy == 0 && thetaStart == 0) {\n uOffset = 0.5 / widthSegments;\n } else if (iy == heightSegments && thetaEnd == Math.PI) {\n uOffset = -0.5 / widthSegments;\n }\n for (ix = 0; ix <= widthSegments; ix++) {\n var u = ix / widthSegments;\n\n // vertex\n\n vertex.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertex.y = radius * Math.cos(thetaStart + v * thetaLength);\n vertex.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n normal.copy(vertex).normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // uv\n\n uvs.push(u + uOffset, 1 - v);\n verticesRow.push(index++);\n }\n grid.push(verticesRow);\n }\n\n // indices\n\n for (iy = 0; iy < heightSegments; iy++) {\n for (ix = 0; ix < widthSegments; ix++) {\n var a = grid[iy][ix + 1];\n var b = grid[iy][ix];\n var c = grid[iy + 1][ix];\n var d = grid[iy + 1][ix + 1];\n if (iy !== 0 || thetaStart > 0) indices.push(a, b, d);\n if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nSphereBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength) {\n Geometry.call(this);\n this.type = 'RingGeometry';\n this.parameters = {\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n thetaSegments: thetaSegments,\n phiSegments: phiSegments,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n this.fromBufferGeometry(new RingBufferGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength));\n this.mergeVertices();\n}\nRingGeometry.prototype = Object.create(Geometry.prototype);\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry(innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength) {\n BufferGeometry.call(this);\n this.type = 'RingBufferGeometry';\n this.parameters = {\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n thetaSegments: thetaSegments,\n phiSegments: phiSegments,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n innerRadius = innerRadius || 0.5;\n outerRadius = outerRadius || 1;\n thetaStart = thetaStart !== undefined ? thetaStart : 0;\n thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n thetaSegments = thetaSegments !== undefined ? Math.max(3, thetaSegments) : 8;\n phiSegments = phiSegments !== undefined ? Math.max(1, phiSegments) : 1;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // some helper variables\n\n var segment;\n var radius = innerRadius;\n var radiusStep = (outerRadius - innerRadius) / phiSegments;\n var vertex = new Vector3();\n var uv = new Vector2();\n var j, i;\n\n // generate vertices, normals and uvs\n\n for (j = 0; j <= phiSegments; j++) {\n for (i = 0; i <= thetaSegments; i++) {\n // values are generate from the inside of the ring to the outside\n\n segment = thetaStart + i / thetaSegments * thetaLength;\n\n // vertex\n\n vertex.x = radius * Math.cos(segment);\n vertex.y = radius * Math.sin(segment);\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n normals.push(0, 0, 1);\n\n // uv\n\n uv.x = (vertex.x / outerRadius + 1) / 2;\n uv.y = (vertex.y / outerRadius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n\n // increase the radius for next row of vertices\n\n radius += radiusStep;\n }\n\n // indices\n\n for (j = 0; j < phiSegments; j++) {\n var thetaSegmentLevel = j * (thetaSegments + 1);\n for (i = 0; i < thetaSegments; i++) {\n segment = i + thetaSegmentLevel;\n var a = segment;\n var b = segment + thetaSegments + 1;\n var c = segment + thetaSegments + 2;\n var d = segment + 1;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nRingBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry(points, segments, phiStart, phiLength) {\n Geometry.call(this);\n this.type = 'LatheGeometry';\n this.parameters = {\n points: points,\n segments: segments,\n phiStart: phiStart,\n phiLength: phiLength\n };\n this.fromBufferGeometry(new LatheBufferGeometry(points, segments, phiStart, phiLength));\n this.mergeVertices();\n}\nLatheGeometry.prototype = Object.create(Geometry.prototype);\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry(points, segments, phiStart, phiLength) {\n BufferGeometry.call(this);\n this.type = 'LatheBufferGeometry';\n this.parameters = {\n points: points,\n segments: segments,\n phiStart: phiStart,\n phiLength: phiLength\n };\n segments = Math.floor(segments) || 12;\n phiStart = phiStart || 0;\n phiLength = phiLength || Math.PI * 2;\n\n // clamp phiLength so it's in range of [ 0, 2PI ]\n\n phiLength = _Math.clamp(phiLength, 0, Math.PI * 2);\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var uvs = [];\n\n // helper variables\n\n var base;\n var inverseSegments = 1.0 / segments;\n var vertex = new Vector3();\n var uv = new Vector2();\n var i, j;\n\n // generate vertices and uvs\n\n for (i = 0; i <= segments; i++) {\n var phi = phiStart + i * inverseSegments * phiLength;\n var sin = Math.sin(phi);\n var cos = Math.cos(phi);\n for (j = 0; j <= points.length - 1; j++) {\n // vertex\n\n vertex.x = points[j].x * sin;\n vertex.y = points[j].y;\n vertex.z = points[j].x * cos;\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // uv\n\n uv.x = i / segments;\n uv.y = j / (points.length - 1);\n uvs.push(uv.x, uv.y);\n }\n }\n\n // indices\n\n for (i = 0; i < segments; i++) {\n for (j = 0; j < points.length - 1; j++) {\n base = j + i * points.length;\n var a = base;\n var b = base + points.length;\n var c = base + points.length + 1;\n var d = base + 1;\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n // generate normals\n\n this.computeVertexNormals();\n\n // if the geometry is closed, we need to average the normals along the seam.\n // because the corresponding vertices are identical (but still have different UVs).\n\n if (phiLength === Math.PI * 2) {\n var normals = this.attributes.normal.array;\n var n1 = new Vector3();\n var n2 = new Vector3();\n var n = new Vector3();\n\n // this is the buffer offset for the last line of vertices\n\n base = segments * points.length * 3;\n for (i = 0, j = 0; i < points.length; i++, j += 3) {\n // select the normal of the vertex in the first line\n\n n1.x = normals[j + 0];\n n1.y = normals[j + 1];\n n1.z = normals[j + 2];\n\n // select the normal of the vertex in the last line\n\n n2.x = normals[base + j + 0];\n n2.y = normals[base + j + 1];\n n2.z = normals[base + j + 2];\n\n // average normals\n\n n.addVectors(n1, n2).normalize();\n\n // assign the new values to both normals\n\n normals[j + 0] = normals[base + j + 0] = n.x;\n normals[j + 1] = normals[base + j + 1] = n.y;\n normals[j + 2] = normals[base + j + 2] = n.z;\n }\n }\n}\nLatheBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry(shapes, curveSegments) {\n Geometry.call(this);\n this.type = 'ShapeGeometry';\n if (typeof curveSegments === 'object') {\n console.warn('THREE.ShapeGeometry: Options parameter has been removed.');\n curveSegments = curveSegments.curveSegments;\n }\n this.parameters = {\n shapes: shapes,\n curveSegments: curveSegments\n };\n this.fromBufferGeometry(new ShapeBufferGeometry(shapes, curveSegments));\n this.mergeVertices();\n}\nShapeGeometry.prototype = Object.create(Geometry.prototype);\nShapeGeometry.prototype.constructor = ShapeGeometry;\nShapeGeometry.prototype.toJSON = function () {\n var data = Geometry.prototype.toJSON.call(this);\n var shapes = this.parameters.shapes;\n return toJSON$1(shapes, data);\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry(shapes, curveSegments) {\n BufferGeometry.call(this);\n this.type = 'ShapeBufferGeometry';\n this.parameters = {\n shapes: shapes,\n curveSegments: curveSegments\n };\n curveSegments = curveSegments || 12;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var groupStart = 0;\n var groupCount = 0;\n\n // allow single and array values for \"shapes\" parameter\n\n if (Array.isArray(shapes) === false) {\n addShape(shapes);\n } else {\n for (var i = 0; i < shapes.length; i++) {\n addShape(shapes[i]);\n this.addGroup(groupStart, groupCount, i); // enables MultiMaterial support\n\n groupStart += groupCount;\n groupCount = 0;\n }\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n\n // helper functions\n\n function addShape(shape) {\n var i, l, shapeHole;\n var indexOffset = vertices.length / 3;\n var points = shape.extractPoints(curveSegments);\n var shapeVertices = points.shape;\n var shapeHoles = points.holes;\n\n // check direction of vertices\n\n if (ShapeUtils.isClockWise(shapeVertices) === false) {\n shapeVertices = shapeVertices.reverse();\n }\n for (i = 0, l = shapeHoles.length; i < l; i++) {\n shapeHole = shapeHoles[i];\n if (ShapeUtils.isClockWise(shapeHole) === true) {\n shapeHoles[i] = shapeHole.reverse();\n }\n }\n var faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n\n // join vertices of inner and outer paths to a single array\n\n for (i = 0, l = shapeHoles.length; i < l; i++) {\n shapeHole = shapeHoles[i];\n shapeVertices = shapeVertices.concat(shapeHole);\n }\n\n // vertices, normals, uvs\n\n for (i = 0, l = shapeVertices.length; i < l; i++) {\n var vertex = shapeVertices[i];\n vertices.push(vertex.x, vertex.y, 0);\n normals.push(0, 0, 1);\n uvs.push(vertex.x, vertex.y); // world uvs\n }\n\n // incides\n\n for (i = 0, l = faces.length; i < l; i++) {\n var face = faces[i];\n var a = face[0] + indexOffset;\n var b = face[1] + indexOffset;\n var c = face[2] + indexOffset;\n indices.push(a, b, c);\n groupCount += 3;\n }\n }\n}\nShapeBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\nShapeBufferGeometry.prototype.toJSON = function () {\n var data = BufferGeometry.prototype.toJSON.call(this);\n var shapes = this.parameters.shapes;\n return toJSON$1(shapes, data);\n};\n\n//\n\nfunction toJSON$1(shapes, data) {\n data.shapes = [];\n if (Array.isArray(shapes)) {\n for (var i = 0, l = shapes.length; i < l; i++) {\n var shape = shapes[i];\n data.shapes.push(shape.uuid);\n }\n } else {\n data.shapes.push(shapes.uuid);\n }\n return data;\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry(geometry, thresholdAngle) {\n BufferGeometry.call(this);\n this.type = 'EdgesGeometry';\n this.parameters = {\n thresholdAngle: thresholdAngle\n };\n thresholdAngle = thresholdAngle !== undefined ? thresholdAngle : 1;\n\n // buffer\n\n var vertices = [];\n\n // helper variables\n\n var thresholdDot = Math.cos(_Math.DEG2RAD * thresholdAngle);\n var edge = [0, 0],\n edges = {},\n edge1,\n edge2;\n var key,\n keys = ['a', 'b', 'c'];\n\n // prepare source geometry\n\n var geometry2;\n if (geometry.isBufferGeometry) {\n geometry2 = new Geometry();\n geometry2.fromBufferGeometry(geometry);\n } else {\n geometry2 = geometry.clone();\n }\n geometry2.mergeVertices();\n geometry2.computeFaceNormals();\n var sourceVertices = geometry2.vertices;\n var faces = geometry2.faces;\n\n // now create a data structure where each entry represents an edge with its adjoining faces\n\n for (var i = 0, l = faces.length; i < l; i++) {\n var face = faces[i];\n for (var j = 0; j < 3; j++) {\n edge1 = face[keys[j]];\n edge2 = face[keys[(j + 1) % 3]];\n edge[0] = Math.min(edge1, edge2);\n edge[1] = Math.max(edge1, edge2);\n key = edge[0] + ',' + edge[1];\n if (edges[key] === undefined) {\n edges[key] = {\n index1: edge[0],\n index2: edge[1],\n face1: i,\n face2: undefined\n };\n } else {\n edges[key].face2 = i;\n }\n }\n }\n\n // generate vertices\n\n for (key in edges) {\n var e = edges[key];\n\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n if (e.face2 === undefined || faces[e.face1].normal.dot(faces[e.face2].normal) <= thresholdDot) {\n var vertex = sourceVertices[e.index1];\n vertices.push(vertex.x, vertex.y, vertex.z);\n vertex = sourceVertices[e.index2];\n vertices.push(vertex.x, vertex.y, vertex.z);\n }\n }\n\n // build geometry\n\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n}\nEdgesGeometry.prototype = Object.create(BufferGeometry.prototype);\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) {\n Geometry.call(this);\n this.type = 'CylinderGeometry';\n this.parameters = {\n radiusTop: radiusTop,\n radiusBottom: radiusBottom,\n height: height,\n radialSegments: radialSegments,\n heightSegments: heightSegments,\n openEnded: openEnded,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n this.fromBufferGeometry(new CylinderBufferGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength));\n this.mergeVertices();\n}\nCylinderGeometry.prototype = Object.create(Geometry.prototype);\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry(radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) {\n BufferGeometry.call(this);\n this.type = 'CylinderBufferGeometry';\n this.parameters = {\n radiusTop: radiusTop,\n radiusBottom: radiusBottom,\n height: height,\n radialSegments: radialSegments,\n heightSegments: heightSegments,\n openEnded: openEnded,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n var scope = this;\n radiusTop = radiusTop !== undefined ? radiusTop : 1;\n radiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n height = height || 1;\n radialSegments = Math.floor(radialSegments) || 8;\n heightSegments = Math.floor(heightSegments) || 1;\n openEnded = openEnded !== undefined ? openEnded : false;\n thetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var index = 0;\n var indexArray = [];\n var halfHeight = height / 2;\n var groupStart = 0;\n\n // generate geometry\n\n generateTorso();\n if (openEnded === false) {\n if (radiusTop > 0) generateCap(true);\n if (radiusBottom > 0) generateCap(false);\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n function generateTorso() {\n var x, y;\n var normal = new Vector3();\n var vertex = new Vector3();\n var groupCount = 0;\n\n // this will be used to calculate the normal\n var slope = (radiusBottom - radiusTop) / height;\n\n // generate vertices, normals and uvs\n\n for (y = 0; y <= heightSegments; y++) {\n var indexRow = [];\n var v = y / heightSegments;\n\n // calculate the radius of the current row\n\n var radius = v * (radiusBottom - radiusTop) + radiusTop;\n for (x = 0; x <= radialSegments; x++) {\n var u = x / radialSegments;\n var theta = u * thetaLength + thetaStart;\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n // vertex\n\n vertex.x = radius * sinTheta;\n vertex.y = -v * height + halfHeight;\n vertex.z = radius * cosTheta;\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n normal.set(sinTheta, slope, cosTheta).normalize();\n normals.push(normal.x, normal.y, normal.z);\n\n // uv\n\n uvs.push(u, 1 - v);\n\n // save index of vertex in respective row\n\n indexRow.push(index++);\n }\n\n // now save vertices of the row in our index array\n\n indexArray.push(indexRow);\n }\n\n // generate indices\n\n for (x = 0; x < radialSegments; x++) {\n for (y = 0; y < heightSegments; y++) {\n // we use the index array to access the correct indices\n\n var a = indexArray[y][x];\n var b = indexArray[y + 1][x];\n var c = indexArray[y + 1][x + 1];\n var d = indexArray[y][x + 1];\n\n // faces\n\n indices.push(a, b, d);\n indices.push(b, c, d);\n\n // update group counter\n\n groupCount += 6;\n }\n }\n\n // add a group to the geometry. this will ensure multi material support\n\n scope.addGroup(groupStart, groupCount, 0);\n\n // calculate new start value for groups\n\n groupStart += groupCount;\n }\n function generateCap(top) {\n var x, centerIndexStart, centerIndexEnd;\n var uv = new Vector2();\n var vertex = new Vector3();\n var groupCount = 0;\n var radius = top === true ? radiusTop : radiusBottom;\n var sign = top === true ? 1 : -1;\n\n // save the index of the first center vertex\n centerIndexStart = index;\n\n // first we generate the center vertex data of the cap.\n // because the geometry needs one set of uvs per face,\n // we must generate a center vertex per face/segment\n\n for (x = 1; x <= radialSegments; x++) {\n // vertex\n\n vertices.push(0, halfHeight * sign, 0);\n\n // normal\n\n normals.push(0, sign, 0);\n\n // uv\n\n uvs.push(0.5, 0.5);\n\n // increase index\n\n index++;\n }\n\n // save the index of the last center vertex\n\n centerIndexEnd = index;\n\n // now we generate the surrounding vertices, normals and uvs\n\n for (x = 0; x <= radialSegments; x++) {\n var u = x / radialSegments;\n var theta = u * thetaLength + thetaStart;\n var cosTheta = Math.cos(theta);\n var sinTheta = Math.sin(theta);\n\n // vertex\n\n vertex.x = radius * sinTheta;\n vertex.y = halfHeight * sign;\n vertex.z = radius * cosTheta;\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n normals.push(0, sign, 0);\n\n // uv\n\n uv.x = cosTheta * 0.5 + 0.5;\n uv.y = sinTheta * 0.5 * sign + 0.5;\n uvs.push(uv.x, uv.y);\n\n // increase index\n\n index++;\n }\n\n // generate indices\n\n for (x = 0; x < radialSegments; x++) {\n var c = centerIndexStart + x;\n var i = centerIndexEnd + x;\n if (top === true) {\n // face top\n\n indices.push(i, i + 1, c);\n } else {\n // face bottom\n\n indices.push(i + 1, i, c);\n }\n groupCount += 3;\n }\n\n // add a group to the geometry. this will ensure multi material support\n\n scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n\n // calculate new start value for groups\n\n groupStart += groupCount;\n }\n}\nCylinderBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry(radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) {\n CylinderGeometry.call(this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n this.type = 'ConeGeometry';\n this.parameters = {\n radius: radius,\n height: height,\n radialSegments: radialSegments,\n heightSegments: heightSegments,\n openEnded: openEnded,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n}\nConeGeometry.prototype = Object.create(CylinderGeometry.prototype);\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry(radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength) {\n CylinderBufferGeometry.call(this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n this.type = 'ConeBufferGeometry';\n this.parameters = {\n radius: radius,\n height: height,\n radialSegments: radialSegments,\n heightSegments: heightSegments,\n openEnded: openEnded,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n}\nConeBufferGeometry.prototype = Object.create(CylinderBufferGeometry.prototype);\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry(radius, segments, thetaStart, thetaLength) {\n Geometry.call(this);\n this.type = 'CircleGeometry';\n this.parameters = {\n radius: radius,\n segments: segments,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n this.fromBufferGeometry(new CircleBufferGeometry(radius, segments, thetaStart, thetaLength));\n this.mergeVertices();\n}\nCircleGeometry.prototype = Object.create(Geometry.prototype);\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry(radius, segments, thetaStart, thetaLength) {\n BufferGeometry.call(this);\n this.type = 'CircleBufferGeometry';\n this.parameters = {\n radius: radius,\n segments: segments,\n thetaStart: thetaStart,\n thetaLength: thetaLength\n };\n radius = radius || 1;\n segments = segments !== undefined ? Math.max(3, segments) : 8;\n thetaStart = thetaStart !== undefined ? thetaStart : 0;\n thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n // buffers\n\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n\n // helper variables\n\n var i, s;\n var vertex = new Vector3();\n var uv = new Vector2();\n\n // center point\n\n vertices.push(0, 0, 0);\n normals.push(0, 0, 1);\n uvs.push(0.5, 0.5);\n for (s = 0, i = 3; s <= segments; s++, i += 3) {\n var segment = thetaStart + s / segments * thetaLength;\n\n // vertex\n\n vertex.x = radius * Math.cos(segment);\n vertex.y = radius * Math.sin(segment);\n vertices.push(vertex.x, vertex.y, vertex.z);\n\n // normal\n\n normals.push(0, 0, 1);\n\n // uvs\n\n uv.x = (vertices[i] / radius + 1) / 2;\n uv.y = (vertices[i + 1] / radius + 1) / 2;\n uvs.push(uv.x, uv.y);\n }\n\n // indices\n\n for (i = 1; i <= segments; i++) {\n indices.push(i, i + 1, 0);\n }\n\n // build geometry\n\n this.setIndex(indices);\n this.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n this.addAttribute('normal', new Float32BufferAttribute(normals, 3));\n this.addAttribute('uv', new Float32BufferAttribute(uvs, 2));\n}\nCircleBufferGeometry.prototype = Object.create(BufferGeometry.prototype);\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\nvar Geometries = /*#__PURE__*/Object.freeze({\n WireframeGeometry: WireframeGeometry,\n ParametricGeometry: ParametricGeometry,\n ParametricBufferGeometry: ParametricBufferGeometry,\n TetrahedronGeometry: TetrahedronGeometry,\n TetrahedronBufferGeometry: TetrahedronBufferGeometry,\n OctahedronGeometry: OctahedronGeometry,\n OctahedronBufferGeometry: OctahedronBufferGeometry,\n IcosahedronGeometry: IcosahedronGeometry,\n IcosahedronBufferGeometry: IcosahedronBufferGeometry,\n DodecahedronGeometry: DodecahedronGeometry,\n DodecahedronBufferGeometry: DodecahedronBufferGeometry,\n PolyhedronGeometry: PolyhedronGeometry,\n PolyhedronBufferGeometry: PolyhedronBufferGeometry,\n TubeGeometry: TubeGeometry,\n TubeBufferGeometry: TubeBufferGeometry,\n TorusKnotGeometry: TorusKnotGeometry,\n TorusKnotBufferGeometry: TorusKnotBufferGeometry,\n TorusGeometry: TorusGeometry,\n TorusBufferGeometry: TorusBufferGeometry,\n TextGeometry: TextGeometry,\n TextBufferGeometry: TextBufferGeometry,\n SphereGeometry: SphereGeometry,\n SphereBufferGeometry: SphereBufferGeometry,\n RingGeometry: RingGeometry,\n RingBufferGeometry: RingBufferGeometry,\n PlaneGeometry: PlaneGeometry,\n PlaneBufferGeometry: PlaneBufferGeometry,\n LatheGeometry: LatheGeometry,\n LatheBufferGeometry: LatheBufferGeometry,\n ShapeGeometry: ShapeGeometry,\n ShapeBufferGeometry: ShapeBufferGeometry,\n ExtrudeGeometry: ExtrudeGeometry,\n ExtrudeBufferGeometry: ExtrudeBufferGeometry,\n EdgesGeometry: EdgesGeometry,\n ConeGeometry: ConeGeometry,\n ConeBufferGeometry: ConeBufferGeometry,\n CylinderGeometry: CylinderGeometry,\n CylinderBufferGeometry: CylinderBufferGeometry,\n CircleGeometry: CircleGeometry,\n CircleBufferGeometry: CircleBufferGeometry,\n BoxGeometry: BoxGeometry,\n BoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial(parameters) {\n Material.call(this);\n this.type = 'ShadowMaterial';\n this.color = new Color(0x000000);\n this.transparent = true;\n this.setValues(parameters);\n}\nShadowMaterial.prototype = Object.create(Material.prototype);\nShadowMaterial.prototype.constructor = ShadowMaterial;\nShadowMaterial.prototype.isShadowMaterial = true;\nShadowMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial(parameters) {\n ShaderMaterial.call(this, parameters);\n this.type = 'RawShaderMaterial';\n}\nRawShaderMaterial.prototype = Object.create(ShaderMaterial.prototype);\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial(parameters) {\n Material.call(this);\n this.defines = {\n 'STANDARD': ''\n };\n this.type = 'MeshStandardMaterial';\n this.color = new Color(0xffffff); // diffuse\n this.roughness = 0.5;\n this.metalness = 0.5;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1.0;\n this.aoMap = null;\n this.aoMapIntensity = 1.0;\n this.emissive = new Color(0x000000);\n this.emissiveIntensity = 1.0;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.roughnessMap = null;\n this.metalnessMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.envMapIntensity = 1.0;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = 'round';\n this.wireframeLinejoin = 'round';\n this.skinning = false;\n this.morphTargets = false;\n this.morphNormals = false;\n this.setValues(parameters);\n}\nMeshStandardMaterial.prototype = Object.create(Material.prototype);\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\nMeshStandardMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.defines = {\n 'STANDARD': ''\n };\n this.color.copy(source.color);\n this.roughness = source.roughness;\n this.metalness = source.metalness;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.roughnessMap = source.roughnessMap;\n this.metalnessMap = source.metalnessMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.envMapIntensity = source.envMapIntensity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n return this;\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * clearCoat: \n * clearCoatRoughness: \n * }\n */\n\nfunction MeshPhysicalMaterial(parameters) {\n MeshStandardMaterial.call(this);\n this.defines = {\n 'PHYSICAL': ''\n };\n this.type = 'MeshPhysicalMaterial';\n this.reflectivity = 0.5; // maps to F0 = 0.04\n\n this.clearCoat = 0.0;\n this.clearCoatRoughness = 0.0;\n this.setValues(parameters);\n}\nMeshPhysicalMaterial.prototype = Object.create(MeshStandardMaterial.prototype);\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\nMeshPhysicalMaterial.prototype.copy = function (source) {\n MeshStandardMaterial.prototype.copy.call(this, source);\n this.defines = {\n 'PHYSICAL': ''\n };\n this.reflectivity = source.reflectivity;\n this.clearCoat = source.clearCoat;\n this.clearCoatRoughness = source.clearCoatRoughness;\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshPhongMaterial';\n this.color = new Color(0xffffff); // diffuse\n this.specular = new Color(0x111111);\n this.shininess = 30;\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1.0;\n this.aoMap = null;\n this.aoMapIntensity = 1.0;\n this.emissive = new Color(0x000000);\n this.emissiveIntensity = 1.0;\n this.emissiveMap = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = 'round';\n this.wireframeLinejoin = 'round';\n this.skinning = false;\n this.morphTargets = false;\n this.morphNormals = false;\n this.setValues(parameters);\n}\nMeshPhongMaterial.prototype = Object.create(Material.prototype);\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\nMeshPhongMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.specular.copy(source.specular);\n this.shininess = source.shininess;\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n return this;\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * gradientMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshToonMaterial(parameters) {\n MeshPhongMaterial.call(this);\n this.defines = {\n 'TOON': ''\n };\n this.type = 'MeshToonMaterial';\n this.gradientMap = null;\n this.setValues(parameters);\n}\nMeshToonMaterial.prototype = Object.create(MeshPhongMaterial.prototype);\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\nMeshToonMaterial.prototype.copy = function (source) {\n MeshPhongMaterial.prototype.copy.call(this, source);\n this.gradientMap = source.gradientMap;\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshNormalMaterial';\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.fog = false;\n this.lights = false;\n this.skinning = false;\n this.morphTargets = false;\n this.morphNormals = false;\n this.setValues(parameters);\n}\nMeshNormalMaterial.prototype = Object.create(Material.prototype);\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\nMeshNormalMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n return this;\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial(parameters) {\n Material.call(this);\n this.type = 'MeshLambertMaterial';\n this.color = new Color(0xffffff); // diffuse\n\n this.map = null;\n this.lightMap = null;\n this.lightMapIntensity = 1.0;\n this.aoMap = null;\n this.aoMapIntensity = 1.0;\n this.emissive = new Color(0x000000);\n this.emissiveIntensity = 1.0;\n this.emissiveMap = null;\n this.specularMap = null;\n this.alphaMap = null;\n this.envMap = null;\n this.combine = MultiplyOperation;\n this.reflectivity = 1;\n this.refractionRatio = 0.98;\n this.wireframe = false;\n this.wireframeLinewidth = 1;\n this.wireframeLinecap = 'round';\n this.wireframeLinejoin = 'round';\n this.skinning = false;\n this.morphTargets = false;\n this.morphNormals = false;\n this.setValues(parameters);\n}\nMeshLambertMaterial.prototype = Object.create(Material.prototype);\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\nMeshLambertMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.map = source.map;\n this.lightMap = source.lightMap;\n this.lightMapIntensity = source.lightMapIntensity;\n this.aoMap = source.aoMap;\n this.aoMapIntensity = source.aoMapIntensity;\n this.emissive.copy(source.emissive);\n this.emissiveMap = source.emissiveMap;\n this.emissiveIntensity = source.emissiveIntensity;\n this.specularMap = source.specularMap;\n this.alphaMap = source.alphaMap;\n this.envMap = source.envMap;\n this.combine = source.combine;\n this.reflectivity = source.reflectivity;\n this.refractionRatio = source.refractionRatio;\n this.wireframe = source.wireframe;\n this.wireframeLinewidth = source.wireframeLinewidth;\n this.wireframeLinecap = source.wireframeLinecap;\n this.wireframeLinejoin = source.wireframeLinejoin;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n return this;\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial(parameters) {\n Material.call(this);\n this.defines = {\n 'MATCAP': ''\n };\n this.type = 'MeshMatcapMaterial';\n this.color = new Color(0xffffff); // diffuse\n\n this.matcap = null;\n this.map = null;\n this.bumpMap = null;\n this.bumpScale = 1;\n this.normalMap = null;\n this.normalMapType = TangentSpaceNormalMap;\n this.normalScale = new Vector2(1, 1);\n this.displacementMap = null;\n this.displacementScale = 1;\n this.displacementBias = 0;\n this.alphaMap = null;\n this.skinning = false;\n this.morphTargets = false;\n this.morphNormals = false;\n this.lights = false;\n this.setValues(parameters);\n}\nMeshMatcapMaterial.prototype = Object.create(Material.prototype);\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\nMeshMatcapMaterial.prototype.copy = function (source) {\n Material.prototype.copy.call(this, source);\n this.defines = {\n 'MATCAP': ''\n };\n this.color.copy(source.color);\n this.matcap = source.matcap;\n this.map = source.map;\n this.bumpMap = source.bumpMap;\n this.bumpScale = source.bumpScale;\n this.normalMap = source.normalMap;\n this.normalMapType = source.normalMapType;\n this.normalScale.copy(source.normalScale);\n this.displacementMap = source.displacementMap;\n this.displacementScale = source.displacementScale;\n this.displacementBias = source.displacementBias;\n this.alphaMap = source.alphaMap;\n this.skinning = source.skinning;\n this.morphTargets = source.morphTargets;\n this.morphNormals = source.morphNormals;\n return this;\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial(parameters) {\n LineBasicMaterial.call(this);\n this.type = 'LineDashedMaterial';\n this.scale = 1;\n this.dashSize = 3;\n this.gapSize = 1;\n this.setValues(parameters);\n}\nLineDashedMaterial.prototype = Object.create(LineBasicMaterial.prototype);\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\nLineDashedMaterial.prototype.copy = function (source) {\n LineBasicMaterial.prototype.copy.call(this, source);\n this.scale = source.scale;\n this.dashSize = source.dashSize;\n this.gapSize = source.gapSize;\n return this;\n};\nvar Materials = /*#__PURE__*/Object.freeze({\n ShadowMaterial: ShadowMaterial,\n SpriteMaterial: SpriteMaterial,\n RawShaderMaterial: RawShaderMaterial,\n ShaderMaterial: ShaderMaterial,\n PointsMaterial: PointsMaterial,\n MeshPhysicalMaterial: MeshPhysicalMaterial,\n MeshStandardMaterial: MeshStandardMaterial,\n MeshPhongMaterial: MeshPhongMaterial,\n MeshToonMaterial: MeshToonMaterial,\n MeshNormalMaterial: MeshNormalMaterial,\n MeshLambertMaterial: MeshLambertMaterial,\n MeshDepthMaterial: MeshDepthMaterial,\n MeshDistanceMaterial: MeshDistanceMaterial,\n MeshBasicMaterial: MeshBasicMaterial,\n MeshMatcapMaterial: MeshMatcapMaterial,\n LineDashedMaterial: LineDashedMaterial,\n LineBasicMaterial: LineBasicMaterial,\n Material: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n // same as Array.prototype.slice, but also works on typed arrays\n arraySlice: function (array, from, to) {\n if (AnimationUtils.isTypedArray(array)) {\n // in ios9 array.subarray(from, undefined) will return empty array\n // but array.subarray(from) or array.subarray(from, len) is correct\n return new array.constructor(array.subarray(from, to !== undefined ? to : array.length));\n }\n return array.slice(from, to);\n },\n // converts an array to a specific type\n convertArray: function (array, type, forceClone) {\n if (!array ||\n // let 'undefined' and 'null' pass\n !forceClone && array.constructor === type) return array;\n if (typeof type.BYTES_PER_ELEMENT === 'number') {\n return new type(array); // create typed array\n }\n\n return Array.prototype.slice.call(array); // create Array\n },\n\n isTypedArray: function (object) {\n return ArrayBuffer.isView(object) && !(object instanceof DataView);\n },\n // returns an array by which times and values can be sorted\n getKeyframeOrder: function (times) {\n function compareTime(i, j) {\n return times[i] - times[j];\n }\n var n = times.length;\n var result = new Array(n);\n for (var i = 0; i !== n; ++i) result[i] = i;\n result.sort(compareTime);\n return result;\n },\n // uses the array previously returned by 'getKeyframeOrder' to sort data\n sortedArray: function (values, stride, order) {\n var nValues = values.length;\n var result = new values.constructor(nValues);\n for (var i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n var srcOffset = order[i] * stride;\n for (var j = 0; j !== stride; ++j) {\n result[dstOffset++] = values[srcOffset + j];\n }\n }\n return result;\n },\n // function for parsing AOS keyframe formats\n flattenJSON: function (jsonKeys, times, values, valuePropertyName) {\n var i = 1,\n key = jsonKeys[0];\n while (key !== undefined && key[valuePropertyName] === undefined) {\n key = jsonKeys[i++];\n }\n if (key === undefined) return; // no data\n\n var value = key[valuePropertyName];\n if (value === undefined) return; // no data\n\n if (Array.isArray(value)) {\n do {\n value = key[valuePropertyName];\n if (value !== undefined) {\n times.push(key.time);\n values.push.apply(values, value); // push all elements\n }\n\n key = jsonKeys[i++];\n } while (key !== undefined);\n } else if (value.toArray !== undefined) {\n // ...assume THREE.Math-ish\n\n do {\n value = key[valuePropertyName];\n if (value !== undefined) {\n times.push(key.time);\n value.toArray(values, values.length);\n }\n key = jsonKeys[i++];\n } while (key !== undefined);\n } else {\n // otherwise push as-is\n\n do {\n value = key[valuePropertyName];\n if (value !== undefined) {\n times.push(key.time);\n values.push(value);\n }\n key = jsonKeys[i++];\n } while (key !== undefined);\n }\n }\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n this.parameterPositions = parameterPositions;\n this._cachedIndex = 0;\n this.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor(sampleSize);\n this.sampleValues = sampleValues;\n this.valueSize = sampleSize;\n}\nObject.assign(Interpolant.prototype, {\n evaluate: function (t) {\n var pp = this.parameterPositions,\n i1 = this._cachedIndex,\n t1 = pp[i1],\n t0 = pp[i1 - 1];\n validate_interval: {\n seek: {\n var right;\n linear_scan: {\n //- See http://jsperf.com/comparison-to-undefined/3\n //- slower code:\n //-\n //- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n forward_scan: if (!(t < t1)) {\n for (var giveUpAt = i1 + 2;;) {\n if (t1 === undefined) {\n if (t < t0) break forward_scan;\n\n // after end\n\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t, t0);\n }\n if (i1 === giveUpAt) break; // this loop\n\n t0 = t1;\n t1 = pp[++i1];\n if (t < t1) {\n // we have arrived at the sought interval\n break seek;\n }\n }\n\n // prepare binary search on the right side of the index\n right = pp.length;\n break linear_scan;\n }\n\n //- slower code:\n //-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n if (!(t >= t0)) {\n // looping?\n\n var t1global = pp[1];\n if (t < t1global) {\n i1 = 2; // + 1, using the scan for the details\n t0 = t1global;\n }\n\n // linear reverse scan\n\n for (var giveUpAt = i1 - 2;;) {\n if (t0 === undefined) {\n // before start\n\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (i1 === giveUpAt) break; // this loop\n\n t1 = t0;\n t0 = pp[--i1 - 1];\n if (t >= t0) {\n // we have arrived at the sought interval\n break seek;\n }\n }\n\n // prepare binary search on the left side of the index\n right = i1;\n i1 = 0;\n break linear_scan;\n }\n\n // the interval is valid\n\n break validate_interval;\n } // linear scan\n\n // binary search\n\n while (i1 < right) {\n var mid = i1 + right >>> 1;\n if (t < pp[mid]) {\n right = mid;\n } else {\n i1 = mid + 1;\n }\n }\n t1 = pp[i1];\n t0 = pp[i1 - 1];\n\n // check boundary cases, again\n\n if (t0 === undefined) {\n this._cachedIndex = 0;\n return this.beforeStart_(0, t, t1);\n }\n if (t1 === undefined) {\n i1 = pp.length;\n this._cachedIndex = i1;\n return this.afterEnd_(i1 - 1, t0, t);\n }\n } // seek\n\n this._cachedIndex = i1;\n this.intervalChanged_(i1, t0, t1);\n } // validate_interval\n\n return this.interpolate_(i1, t0, t, t1);\n },\n settings: null,\n // optional, subclass-specific settings structure\n // Note: The indirection allows central control of many interpolants.\n\n // --- Protected interface\n\n DefaultSettings_: {},\n getSettings_: function () {\n return this.settings || this.DefaultSettings_;\n },\n copySampleValue_: function (index) {\n // copies a sample value to the result buffer\n\n var result = this.resultBuffer,\n values = this.sampleValues,\n stride = this.valueSize,\n offset = index * stride;\n for (var i = 0; i !== stride; ++i) {\n result[i] = values[offset + i];\n }\n return result;\n },\n // Template methods for derived classes:\n\n interpolate_: function /* i1, t0, t, t1 */\n () {\n throw new Error('call to abstract method');\n // implementations shall return this.resultBuffer\n },\n\n intervalChanged_: function /* i1, t0, t1 */\n () {\n\n // empty\n }\n});\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign(Interpolant.prototype, {\n //( 0, t, t0 ), returns this.resultBuffer\n beforeStart_: Interpolant.prototype.copySampleValue_,\n //( N-1, tN-1, t ), returns this.resultBuffer\n afterEnd_: Interpolant.prototype.copySampleValue_\n});\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n this._weightPrev = -0;\n this._offsetPrev = -0;\n this._weightNext = -0;\n this._offsetNext = -0;\n}\nCubicInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), {\n constructor: CubicInterpolant,\n DefaultSettings_: {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n },\n intervalChanged_: function (i1, t0, t1) {\n var pp = this.parameterPositions,\n iPrev = i1 - 2,\n iNext = i1 + 1,\n tPrev = pp[iPrev],\n tNext = pp[iNext];\n if (tPrev === undefined) {\n switch (this.getSettings_().endingStart) {\n case ZeroSlopeEnding:\n // f'(t0) = 0\n iPrev = i1;\n tPrev = 2 * t0 - t1;\n break;\n case WrapAroundEnding:\n // use the other end of the curve\n iPrev = pp.length - 2;\n tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n break;\n default:\n // ZeroCurvatureEnding\n\n // f''(t0) = 0 a.k.a. Natural Spline\n iPrev = i1;\n tPrev = t1;\n }\n }\n if (tNext === undefined) {\n switch (this.getSettings_().endingEnd) {\n case ZeroSlopeEnding:\n // f'(tN) = 0\n iNext = i1;\n tNext = 2 * t1 - t0;\n break;\n case WrapAroundEnding:\n // use the other end of the curve\n iNext = 1;\n tNext = t1 + pp[1] - pp[0];\n break;\n default:\n // ZeroCurvatureEnding\n\n // f''(tN) = 0, a.k.a. Natural Spline\n iNext = i1 - 1;\n tNext = t0;\n }\n }\n var halfDt = (t1 - t0) * 0.5,\n stride = this.valueSize;\n this._weightPrev = halfDt / (t0 - tPrev);\n this._weightNext = halfDt / (tNext - t1);\n this._offsetPrev = iPrev * stride;\n this._offsetNext = iNext * stride;\n },\n interpolate_: function (i1, t0, t, t1) {\n var result = this.resultBuffer,\n values = this.sampleValues,\n stride = this.valueSize,\n o1 = i1 * stride,\n o0 = o1 - stride,\n oP = this._offsetPrev,\n oN = this._offsetNext,\n wP = this._weightPrev,\n wN = this._weightNext,\n p = (t - t0) / (t1 - t0),\n pp = p * p,\n ppp = pp * p;\n\n // evaluate polynomials\n\n var sP = -wP * ppp + 2 * wP * pp - wP * p;\n var s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p + 1;\n var s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p;\n var sN = wN * ppp - wN * pp;\n\n // combine data linearly\n\n for (var i = 0; i !== stride; ++i) {\n result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n }\n return result;\n }\n});\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n}\nLinearInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), {\n constructor: LinearInterpolant,\n interpolate_: function (i1, t0, t, t1) {\n var result = this.resultBuffer,\n values = this.sampleValues,\n stride = this.valueSize,\n offset1 = i1 * stride,\n offset0 = offset1 - stride,\n weight1 = (t - t0) / (t1 - t0),\n weight0 = 1 - weight1;\n for (var i = 0; i !== stride; ++i) {\n result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n }\n return result;\n }\n});\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n}\nDiscreteInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), {\n constructor: DiscreteInterpolant,\n interpolate_: function (i1 /*, t0, t, t1 */) {\n return this.copySampleValue_(i1 - 1);\n }\n});\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack(name, times, values, interpolation) {\n if (name === undefined) throw new Error('THREE.KeyframeTrack: track name is undefined');\n if (times === undefined || times.length === 0) throw new Error('THREE.KeyframeTrack: no keyframes in track named ' + name);\n this.name = name;\n this.times = AnimationUtils.convertArray(times, this.TimeBufferType);\n this.values = AnimationUtils.convertArray(values, this.ValueBufferType);\n this.setInterpolation(interpolation || this.DefaultInterpolation);\n}\n\n// Static methods\n\nObject.assign(KeyframeTrack, {\n // Serialization (in static context, because of constructor invocation\n // and automatic invocation of .toJSON):\n\n toJSON: function (track) {\n var trackType = track.constructor;\n var json;\n\n // derived classes can define a static toJSON method\n if (trackType.toJSON !== undefined) {\n json = trackType.toJSON(track);\n } else {\n // by default, we assume the data can be serialized as-is\n json = {\n 'name': track.name,\n 'times': AnimationUtils.convertArray(track.times, Array),\n 'values': AnimationUtils.convertArray(track.values, Array)\n };\n var interpolation = track.getInterpolation();\n if (interpolation !== track.DefaultInterpolation) {\n json.interpolation = interpolation;\n }\n }\n json.type = track.ValueTypeName; // mandatory\n\n return json;\n }\n});\nObject.assign(KeyframeTrack.prototype, {\n constructor: KeyframeTrack,\n TimeBufferType: Float32Array,\n ValueBufferType: Float32Array,\n DefaultInterpolation: InterpolateLinear,\n InterpolantFactoryMethodDiscrete: function (result) {\n return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n },\n InterpolantFactoryMethodLinear: function (result) {\n return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n },\n InterpolantFactoryMethodSmooth: function (result) {\n return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n },\n setInterpolation: function (interpolation) {\n var factoryMethod;\n switch (interpolation) {\n case InterpolateDiscrete:\n factoryMethod = this.InterpolantFactoryMethodDiscrete;\n break;\n case InterpolateLinear:\n factoryMethod = this.InterpolantFactoryMethodLinear;\n break;\n case InterpolateSmooth:\n factoryMethod = this.InterpolantFactoryMethodSmooth;\n break;\n }\n if (factoryMethod === undefined) {\n var message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n if (this.createInterpolant === undefined) {\n // fall back to default, unless the default itself is messed up\n if (interpolation !== this.DefaultInterpolation) {\n this.setInterpolation(this.DefaultInterpolation);\n } else {\n throw new Error(message); // fatal, in this case\n }\n }\n\n console.warn('THREE.KeyframeTrack:', message);\n return this;\n }\n this.createInterpolant = factoryMethod;\n return this;\n },\n getInterpolation: function () {\n switch (this.createInterpolant) {\n case this.InterpolantFactoryMethodDiscrete:\n return InterpolateDiscrete;\n case this.InterpolantFactoryMethodLinear:\n return InterpolateLinear;\n case this.InterpolantFactoryMethodSmooth:\n return InterpolateSmooth;\n }\n },\n getValueSize: function () {\n return this.values.length / this.times.length;\n },\n // move all keyframes either forwards or backwards in time\n shift: function (timeOffset) {\n if (timeOffset !== 0.0) {\n var times = this.times;\n for (var i = 0, n = times.length; i !== n; ++i) {\n times[i] += timeOffset;\n }\n }\n return this;\n },\n // scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n scale: function (timeScale) {\n if (timeScale !== 1.0) {\n var times = this.times;\n for (var i = 0, n = times.length; i !== n; ++i) {\n times[i] *= timeScale;\n }\n }\n return this;\n },\n // removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n trim: function (startTime, endTime) {\n var times = this.times,\n nKeys = times.length,\n from = 0,\n to = nKeys - 1;\n while (from !== nKeys && times[from] < startTime) {\n ++from;\n }\n while (to !== -1 && times[to] > endTime) {\n --to;\n }\n ++to; // inclusive -> exclusive bound\n\n if (from !== 0 || to !== nKeys) {\n // empty tracks are forbidden, so keep at least one keyframe\n if (from >= to) to = Math.max(to, 1), from = to - 1;\n var stride = this.getValueSize();\n this.times = AnimationUtils.arraySlice(times, from, to);\n this.values = AnimationUtils.arraySlice(this.values, from * stride, to * stride);\n }\n return this;\n },\n // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n validate: function () {\n var valid = true;\n var valueSize = this.getValueSize();\n if (valueSize - Math.floor(valueSize) !== 0) {\n console.error('THREE.KeyframeTrack: Invalid value size in track.', this);\n valid = false;\n }\n var times = this.times,\n values = this.values,\n nKeys = times.length;\n if (nKeys === 0) {\n console.error('THREE.KeyframeTrack: Track is empty.', this);\n valid = false;\n }\n var prevTime = null;\n for (var i = 0; i !== nKeys; i++) {\n var currTime = times[i];\n if (typeof currTime === 'number' && isNaN(currTime)) {\n console.error('THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime);\n valid = false;\n break;\n }\n if (prevTime !== null && prevTime > currTime) {\n console.error('THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime);\n valid = false;\n break;\n }\n prevTime = currTime;\n }\n if (values !== undefined) {\n if (AnimationUtils.isTypedArray(values)) {\n for (var i = 0, n = values.length; i !== n; ++i) {\n var value = values[i];\n if (isNaN(value)) {\n console.error('THREE.KeyframeTrack: Value is not a valid number.', this, i, value);\n valid = false;\n break;\n }\n }\n }\n }\n return valid;\n },\n // removes equivalent sequential keys as common in morph target sequences\n // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n optimize: function () {\n var times = this.times,\n values = this.values,\n stride = this.getValueSize(),\n smoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n writeIndex = 1,\n lastIndex = times.length - 1;\n for (var i = 1; i < lastIndex; ++i) {\n var keep = false;\n var time = times[i];\n var timeNext = times[i + 1];\n\n // remove adjacent keyframes scheduled at the same time\n\n if (time !== timeNext && (i !== 1 || time !== time[0])) {\n if (!smoothInterpolation) {\n // remove unnecessary keyframes same as their neighbors\n\n var offset = i * stride,\n offsetP = offset - stride,\n offsetN = offset + stride;\n for (var j = 0; j !== stride; ++j) {\n var value = values[offset + j];\n if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n keep = true;\n break;\n }\n }\n } else {\n keep = true;\n }\n }\n\n // in-place compaction\n\n if (keep) {\n if (i !== writeIndex) {\n times[writeIndex] = times[i];\n var readOffset = i * stride,\n writeOffset = writeIndex * stride;\n for (var j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n }\n ++writeIndex;\n }\n }\n\n // flush last keyframe (compaction looks ahead)\n\n if (lastIndex > 0) {\n times[writeIndex] = times[lastIndex];\n for (var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n values[writeOffset + j] = values[readOffset + j];\n }\n ++writeIndex;\n }\n if (writeIndex !== times.length) {\n this.times = AnimationUtils.arraySlice(times, 0, writeIndex);\n this.values = AnimationUtils.arraySlice(values, 0, writeIndex * stride);\n }\n return this;\n },\n clone: function () {\n var times = AnimationUtils.arraySlice(this.times, 0);\n var values = AnimationUtils.arraySlice(this.values, 0);\n var TypedKeyframeTrack = this.constructor;\n var track = new TypedKeyframeTrack(this.name, times, values);\n\n // Interpolant argument to constructor is not saved, so copy the factory method directly.\n track.createInterpolant = this.createInterpolant;\n return track;\n }\n});\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack(name, times, values) {\n KeyframeTrack.call(this, name, times, values);\n}\nBooleanKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: BooleanKeyframeTrack,\n ValueTypeName: 'bool',\n ValueBufferType: Array,\n DefaultInterpolation: InterpolateDiscrete,\n InterpolantFactoryMethodLinear: undefined,\n InterpolantFactoryMethodSmooth: undefined\n\n // Note: Actually this track could have a optimized / compressed\n // representation of a single value and a custom interpolant that\n // computes \"firstValue ^ isOdd( index )\".\n});\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack(name, times, values, interpolation) {\n KeyframeTrack.call(this, name, times, values, interpolation);\n}\nColorKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: ColorKeyframeTrack,\n ValueTypeName: 'color'\n\n // ValueBufferType is inherited\n\n // DefaultInterpolation is inherited\n\n // Note: Very basic implementation and nothing special yet.\n // However, this is the place for color space parameterization.\n});\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack(name, times, values, interpolation) {\n KeyframeTrack.call(this, name, times, values, interpolation);\n}\nNumberKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: NumberKeyframeTrack,\n ValueTypeName: 'number'\n\n // ValueBufferType is inherited\n\n // DefaultInterpolation is inherited\n});\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n}\nQuaternionLinearInterpolant.prototype = Object.assign(Object.create(Interpolant.prototype), {\n constructor: QuaternionLinearInterpolant,\n interpolate_: function (i1, t0, t, t1) {\n var result = this.resultBuffer,\n values = this.sampleValues,\n stride = this.valueSize,\n offset = i1 * stride,\n alpha = (t - t0) / (t1 - t0);\n for (var end = offset + stride; offset !== end; offset += 4) {\n Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n }\n return result;\n }\n});\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack(name, times, values, interpolation) {\n KeyframeTrack.call(this, name, times, values, interpolation);\n}\nQuaternionKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: QuaternionKeyframeTrack,\n ValueTypeName: 'quaternion',\n // ValueBufferType is inherited\n\n DefaultInterpolation: InterpolateLinear,\n InterpolantFactoryMethodLinear: function (result) {\n return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n },\n InterpolantFactoryMethodSmooth: undefined // not yet implemented\n});\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack(name, times, values, interpolation) {\n KeyframeTrack.call(this, name, times, values, interpolation);\n}\nStringKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: StringKeyframeTrack,\n ValueTypeName: 'string',\n ValueBufferType: Array,\n DefaultInterpolation: InterpolateDiscrete,\n InterpolantFactoryMethodLinear: undefined,\n InterpolantFactoryMethodSmooth: undefined\n});\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack(name, times, values, interpolation) {\n KeyframeTrack.call(this, name, times, values, interpolation);\n}\nVectorKeyframeTrack.prototype = Object.assign(Object.create(KeyframeTrack.prototype), {\n constructor: VectorKeyframeTrack,\n ValueTypeName: 'vector'\n\n // ValueBufferType is inherited\n\n // DefaultInterpolation is inherited\n});\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip(name, duration, tracks) {\n this.name = name;\n this.tracks = tracks;\n this.duration = duration !== undefined ? duration : -1;\n this.uuid = _Math.generateUUID();\n\n // this means it should figure out its duration by scanning the tracks\n if (this.duration < 0) {\n this.resetDuration();\n }\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n switch (typeName.toLowerCase()) {\n case 'scalar':\n case 'double':\n case 'float':\n case 'number':\n case 'integer':\n return NumberKeyframeTrack;\n case 'vector':\n case 'vector2':\n case 'vector3':\n case 'vector4':\n return VectorKeyframeTrack;\n case 'color':\n return ColorKeyframeTrack;\n case 'quaternion':\n return QuaternionKeyframeTrack;\n case 'bool':\n case 'boolean':\n return BooleanKeyframeTrack;\n case 'string':\n return StringKeyframeTrack;\n }\n throw new Error('THREE.KeyframeTrack: Unsupported typeName: ' + typeName);\n}\nfunction parseKeyframeTrack(json) {\n if (json.type === undefined) {\n throw new Error('THREE.KeyframeTrack: track type undefined, can not parse');\n }\n var trackType = getTrackTypeForValueTypeName(json.type);\n if (json.times === undefined) {\n var times = [],\n values = [];\n AnimationUtils.flattenJSON(json.keys, times, values, 'value');\n json.times = times;\n json.values = values;\n }\n\n // derived classes can define a static parse method\n if (trackType.parse !== undefined) {\n return trackType.parse(json);\n } else {\n // by default, we assume a constructor compatible with the base\n return new trackType(json.name, json.times, json.values, json.interpolation);\n }\n}\nObject.assign(AnimationClip, {\n parse: function (json) {\n var tracks = [],\n jsonTracks = json.tracks,\n frameTime = 1.0 / (json.fps || 1.0);\n for (var i = 0, n = jsonTracks.length; i !== n; ++i) {\n tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n }\n return new AnimationClip(json.name, json.duration, tracks);\n },\n toJSON: function (clip) {\n var tracks = [],\n clipTracks = clip.tracks;\n var json = {\n 'name': clip.name,\n 'duration': clip.duration,\n 'tracks': tracks,\n 'uuid': clip.uuid\n };\n for (var i = 0, n = clipTracks.length; i !== n; ++i) {\n tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n }\n return json;\n },\n CreateFromMorphTargetSequence: function (name, morphTargetSequence, fps, noLoop) {\n var numMorphTargets = morphTargetSequence.length;\n var tracks = [];\n for (var i = 0; i < numMorphTargets; i++) {\n var times = [];\n var values = [];\n times.push((i + numMorphTargets - 1) % numMorphTargets, i, (i + 1) % numMorphTargets);\n values.push(0, 1, 0);\n var order = AnimationUtils.getKeyframeOrder(times);\n times = AnimationUtils.sortedArray(times, 1, order);\n values = AnimationUtils.sortedArray(values, 1, order);\n\n // if there is a key at the first frame, duplicate it as the\n // last frame as well for perfect loop.\n if (!noLoop && times[0] === 0) {\n times.push(numMorphTargets);\n values.push(values[0]);\n }\n tracks.push(new NumberKeyframeTrack('.morphTargetInfluences[' + morphTargetSequence[i].name + ']', times, values).scale(1.0 / fps));\n }\n return new AnimationClip(name, -1, tracks);\n },\n findByName: function (objectOrClipArray, name) {\n var clipArray = objectOrClipArray;\n if (!Array.isArray(objectOrClipArray)) {\n var o = objectOrClipArray;\n clipArray = o.geometry && o.geometry.animations || o.animations;\n }\n for (var i = 0; i < clipArray.length; i++) {\n if (clipArray[i].name === name) {\n return clipArray[i];\n }\n }\n return null;\n },\n CreateClipsFromMorphTargetSequences: function (morphTargets, fps, noLoop) {\n var animationToMorphTargets = {};\n\n // tested with https://regex101.com/ on trick sequences\n // such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n var pattern = /^([\\w-]*?)([\\d]+)$/;\n\n // sort morph target names into animation groups based\n // patterns like Walk_001, Walk_002, Run_001, Run_002\n for (var i = 0, il = morphTargets.length; i < il; i++) {\n var morphTarget = morphTargets[i];\n var parts = morphTarget.name.match(pattern);\n if (parts && parts.length > 1) {\n var name = parts[1];\n var animationMorphTargets = animationToMorphTargets[name];\n if (!animationMorphTargets) {\n animationToMorphTargets[name] = animationMorphTargets = [];\n }\n animationMorphTargets.push(morphTarget);\n }\n }\n var clips = [];\n for (var name in animationToMorphTargets) {\n clips.push(AnimationClip.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n }\n return clips;\n },\n // parse the animation.hierarchy format\n parseAnimation: function (animation, bones) {\n if (!animation) {\n console.error('THREE.AnimationClip: No animation in JSONLoader data.');\n return null;\n }\n var addNonemptyTrack = function (trackType, trackName, animationKeys, propertyName, destTracks) {\n // only return track if there are actually keys.\n if (animationKeys.length !== 0) {\n var times = [];\n var values = [];\n AnimationUtils.flattenJSON(animationKeys, times, values, propertyName);\n\n // empty keys are filtered out, so check again\n if (times.length !== 0) {\n destTracks.push(new trackType(trackName, times, values));\n }\n }\n };\n var tracks = [];\n var clipName = animation.name || 'default';\n // automatic length determination in AnimationClip.\n var duration = animation.length || -1;\n var fps = animation.fps || 30;\n var hierarchyTracks = animation.hierarchy || [];\n for (var h = 0; h < hierarchyTracks.length; h++) {\n var animationKeys = hierarchyTracks[h].keys;\n\n // skip empty tracks\n if (!animationKeys || animationKeys.length === 0) continue;\n\n // process morph targets\n if (animationKeys[0].morphTargets) {\n // figure out all morph targets used in this track\n var morphTargetNames = {};\n for (var k = 0; k < animationKeys.length; k++) {\n if (animationKeys[k].morphTargets) {\n for (var m = 0; m < animationKeys[k].morphTargets.length; m++) {\n morphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n }\n }\n }\n\n // create a track for each morph target with all zero\n // morphTargetInfluences except for the keys in which\n // the morphTarget is named.\n for (var morphTargetName in morphTargetNames) {\n var times = [];\n var values = [];\n for (var m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n var animationKey = animationKeys[k];\n times.push(animationKey.time);\n values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n }\n tracks.push(new NumberKeyframeTrack('.morphTargetInfluence[' + morphTargetName + ']', times, values));\n }\n duration = morphTargetNames.length * (fps || 1.0);\n } else {\n // ...assume skeletal animation\n\n var boneName = '.bones[' + bones[h].name + ']';\n addNonemptyTrack(VectorKeyframeTrack, boneName + '.position', animationKeys, 'pos', tracks);\n addNonemptyTrack(QuaternionKeyframeTrack, boneName + '.quaternion', animationKeys, 'rot', tracks);\n addNonemptyTrack(VectorKeyframeTrack, boneName + '.scale', animationKeys, 'scl', tracks);\n }\n }\n if (tracks.length === 0) {\n return null;\n }\n var clip = new AnimationClip(clipName, duration, tracks);\n return clip;\n }\n});\nObject.assign(AnimationClip.prototype, {\n resetDuration: function () {\n var tracks = this.tracks,\n duration = 0;\n for (var i = 0, n = tracks.length; i !== n; ++i) {\n var track = this.tracks[i];\n duration = Math.max(duration, track.times[track.times.length - 1]);\n }\n this.duration = duration;\n return this;\n },\n trim: function () {\n for (var i = 0; i < this.tracks.length; i++) {\n this.tracks[i].trim(0, this.duration);\n }\n return this;\n },\n validate: function () {\n var valid = true;\n for (var i = 0; i < this.tracks.length; i++) {\n valid = valid && this.tracks[i].validate();\n }\n return valid;\n },\n optimize: function () {\n for (var i = 0; i < this.tracks.length; i++) {\n this.tracks[i].optimize();\n }\n return this;\n },\n clone: function () {\n var tracks = [];\n for (var i = 0; i < this.tracks.length; i++) {\n tracks.push(this.tracks[i].clone());\n }\n return new AnimationClip(this.name, this.duration, tracks);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n enabled: false,\n files: {},\n add: function (key, file) {\n if (this.enabled === false) return;\n\n // console.log( 'THREE.Cache', 'Adding key:', key );\n\n this.files[key] = file;\n },\n get: function (key) {\n if (this.enabled === false) return;\n\n // console.log( 'THREE.Cache', 'Checking key:', key );\n\n return this.files[key];\n },\n remove: function (key) {\n delete this.files[key];\n },\n clear: function () {\n this.files = {};\n }\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager(onLoad, onProgress, onError) {\n var scope = this;\n var isLoading = false;\n var itemsLoaded = 0;\n var itemsTotal = 0;\n var urlModifier = undefined;\n\n // Refer to #5689 for the reason why we don't set .onStart\n // in the constructor\n\n this.onStart = undefined;\n this.onLoad = onLoad;\n this.onProgress = onProgress;\n this.onError = onError;\n this.itemStart = function (url) {\n itemsTotal++;\n if (isLoading === false) {\n if (scope.onStart !== undefined) {\n scope.onStart(url, itemsLoaded, itemsTotal);\n }\n }\n isLoading = true;\n };\n this.itemEnd = function (url) {\n itemsLoaded++;\n if (scope.onProgress !== undefined) {\n scope.onProgress(url, itemsLoaded, itemsTotal);\n }\n if (itemsLoaded === itemsTotal) {\n isLoading = false;\n if (scope.onLoad !== undefined) {\n scope.onLoad();\n }\n }\n };\n this.itemError = function (url) {\n if (scope.onError !== undefined) {\n scope.onError(url);\n }\n };\n this.resolveURL = function (url) {\n if (urlModifier) {\n return urlModifier(url);\n }\n return url;\n };\n this.setURLModifier = function (transform) {\n urlModifier = transform;\n return this;\n };\n}\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\nfunction FileLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(FileLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n if (url === undefined) url = '';\n if (this.path !== undefined) url = this.path + url;\n url = this.manager.resolveURL(url);\n var scope = this;\n var cached = Cache.get(url);\n if (cached !== undefined) {\n scope.manager.itemStart(url);\n setTimeout(function () {\n if (onLoad) onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n\n // Check if request is duplicate\n\n if (loading[url] !== undefined) {\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError\n });\n return;\n }\n\n // Check for data: URI\n var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n var dataUriRegexResult = url.match(dataUriRegex);\n\n // Safari can not handle Data URIs through XMLHttpRequest so process manually\n if (dataUriRegexResult) {\n var mimeType = dataUriRegexResult[1];\n var isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = decodeURIComponent(data);\n if (isBase64) data = atob(data);\n try {\n var response;\n var responseType = (this.responseType || '').toLowerCase();\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n var view = new Uint8Array(data.length);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n if (responseType === 'blob') {\n response = new Blob([view.buffer], {\n type: mimeType\n });\n } else {\n response = view.buffer;\n }\n break;\n case 'document':\n var parser = new DOMParser();\n response = parser.parseFromString(data, mimeType);\n break;\n case 'json':\n response = JSON.parse(data);\n break;\n default:\n // 'text' or other\n\n response = data;\n break;\n }\n\n // Wait for next browser tick like standard XMLHttpRequest event dispatching does\n setTimeout(function () {\n if (onLoad) onLoad(response);\n scope.manager.itemEnd(url);\n }, 0);\n } catch (error) {\n // Wait for next browser tick like standard XMLHttpRequest event dispatching does\n setTimeout(function () {\n if (onError) onError(error);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }, 0);\n }\n } else {\n // Initialise array for duplicate requests\n\n loading[url] = [];\n loading[url].push({\n onLoad: onLoad,\n onProgress: onProgress,\n onError: onError\n });\n var request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.addEventListener('load', function (event) {\n var response = this.response;\n Cache.add(url, response);\n var callbacks = loading[url];\n delete loading[url];\n if (this.status === 200 || this.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n\n if (this.status === 0) console.warn('THREE.FileLoader: HTTP Status 0 received.');\n for (var i = 0, il = callbacks.length; i < il; i++) {\n var callback = callbacks[i];\n if (callback.onLoad) callback.onLoad(response);\n }\n scope.manager.itemEnd(url);\n } else {\n for (var i = 0, il = callbacks.length; i < il; i++) {\n var callback = callbacks[i];\n if (callback.onError) callback.onError(event);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }\n }, false);\n request.addEventListener('progress', function (event) {\n var callbacks = loading[url];\n for (var i = 0, il = callbacks.length; i < il; i++) {\n var callback = callbacks[i];\n if (callback.onProgress) callback.onProgress(event);\n }\n }, false);\n request.addEventListener('error', function (event) {\n var callbacks = loading[url];\n delete loading[url];\n for (var i = 0, il = callbacks.length; i < il; i++) {\n var callback = callbacks[i];\n if (callback.onError) callback.onError(event);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }, false);\n request.addEventListener('abort', function (event) {\n var callbacks = loading[url];\n delete loading[url];\n for (var i = 0, il = callbacks.length; i < il; i++) {\n var callback = callbacks[i];\n if (callback.onError) callback.onError(event);\n }\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }, false);\n if (this.responseType !== undefined) request.responseType = this.responseType;\n if (this.withCredentials !== undefined) request.withCredentials = this.withCredentials;\n if (request.overrideMimeType) request.overrideMimeType(this.mimeType !== undefined ? this.mimeType : 'text/plain');\n for (var header in this.requestHeader) {\n request.setRequestHeader(header, this.requestHeader[header]);\n }\n request.send(null);\n }\n scope.manager.itemStart(url);\n return request;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n },\n setResponseType: function (value) {\n this.responseType = value;\n return this;\n },\n setWithCredentials: function (value) {\n this.withCredentials = value;\n return this;\n },\n setMimeType: function (value) {\n this.mimeType = value;\n return this;\n },\n setRequestHeader: function (value) {\n this.requestHeader = value;\n return this;\n }\n});\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(AnimationLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.load(url, function (text) {\n onLoad(scope.parse(JSON.parse(text)));\n }, onProgress, onError);\n },\n parse: function (json) {\n var animations = [];\n for (var i = 0; i < json.length; i++) {\n var clip = AnimationClip.parse(json[i]);\n animations.push(clip);\n }\n return animations;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\n // override in sub classes\n this._parser = null;\n}\nObject.assign(CompressedTextureLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var images = [];\n var texture = new CompressedTexture();\n texture.image = images;\n var loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n function loadTexture(i) {\n loader.load(url[i], function (buffer) {\n var texDatas = scope._parser(buffer, true);\n images[i] = {\n width: texDatas.width,\n height: texDatas.height,\n format: texDatas.format,\n mipmaps: texDatas.mipmaps\n };\n loaded += 1;\n if (loaded === 6) {\n if (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter;\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad) onLoad(texture);\n }\n }, onProgress, onError);\n }\n if (Array.isArray(url)) {\n var loaded = 0;\n for (var i = 0, il = url.length; i < il; ++i) {\n loadTexture(i);\n }\n } else {\n // compressed cubemap texture stored in a single DDS file\n\n loader.load(url, function (buffer) {\n var texDatas = scope._parser(buffer, true);\n if (texDatas.isCubemap) {\n var faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n for (var f = 0; f < faces; f++) {\n images[f] = {\n mipmaps: []\n };\n for (var i = 0; i < texDatas.mipmapCount; i++) {\n images[f].mipmaps.push(texDatas.mipmaps[f * texDatas.mipmapCount + i]);\n images[f].format = texDatas.format;\n images[f].width = texDatas.width;\n images[f].height = texDatas.height;\n }\n }\n } else {\n texture.image.width = texDatas.width;\n texture.image.height = texDatas.height;\n texture.mipmaps = texDatas.mipmaps;\n }\n if (texDatas.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n texture.format = texDatas.format;\n texture.needsUpdate = true;\n if (onLoad) onLoad(texture);\n }, onProgress, onError);\n }\n return texture;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\n // override in sub classes\n this._parser = null;\n}\nObject.assign(DataTextureLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var texture = new DataTexture();\n var loader = new FileLoader(this.manager);\n loader.setResponseType('arraybuffer');\n loader.setPath(this.path);\n loader.load(url, function (buffer) {\n var texData = scope._parser(buffer);\n if (!texData) return;\n if (texData.image !== undefined) {\n texture.image = texData.image;\n } else if (texData.data !== undefined) {\n texture.image.width = texData.width;\n texture.image.height = texData.height;\n texture.image.data = texData.data;\n }\n texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter;\n texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n if (texData.format !== undefined) {\n texture.format = texData.format;\n }\n if (texData.type !== undefined) {\n texture.type = texData.type;\n }\n if (texData.mipmaps !== undefined) {\n texture.mipmaps = texData.mipmaps;\n }\n if (texData.mipmapCount === 1) {\n texture.minFilter = LinearFilter;\n }\n texture.needsUpdate = true;\n if (onLoad) onLoad(texture, texData);\n }, onProgress, onError);\n return texture;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ImageLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(ImageLoader.prototype, {\n crossOrigin: 'anonymous',\n load: function (url, onLoad, onProgress, onError) {\n if (url === undefined) url = '';\n if (this.path !== undefined) url = this.path + url;\n url = this.manager.resolveURL(url);\n var scope = this;\n var cached = Cache.get(url);\n if (cached !== undefined) {\n scope.manager.itemStart(url);\n setTimeout(function () {\n if (onLoad) onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n var image = document.createElementNS('http://www.w3.org/1999/xhtml', 'img');\n function onImageLoad() {\n image.removeEventListener('load', onImageLoad, false);\n image.removeEventListener('error', onImageError, false);\n Cache.add(url, this);\n if (onLoad) onLoad(this);\n scope.manager.itemEnd(url);\n }\n function onImageError(event) {\n image.removeEventListener('load', onImageLoad, false);\n image.removeEventListener('error', onImageError, false);\n if (onError) onError(event);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n }\n image.addEventListener('load', onImageLoad, false);\n image.addEventListener('error', onImageError, false);\n if (url.substr(0, 5) !== 'data:') {\n if (this.crossOrigin !== undefined) image.crossOrigin = this.crossOrigin;\n }\n scope.manager.itemStart(url);\n image.src = url;\n return image;\n },\n setCrossOrigin: function (value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTextureLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(CubeTextureLoader.prototype, {\n crossOrigin: 'anonymous',\n load: function (urls, onLoad, onProgress, onError) {\n var texture = new CubeTexture();\n var loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n var loaded = 0;\n function loadTexture(i) {\n loader.load(urls[i], function (image) {\n texture.images[i] = image;\n loaded++;\n if (loaded === 6) {\n texture.needsUpdate = true;\n if (onLoad) onLoad(texture);\n }\n }, undefined, onError);\n }\n for (var i = 0; i < urls.length; ++i) {\n loadTexture(i);\n }\n return texture;\n },\n setCrossOrigin: function (value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction TextureLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(TextureLoader.prototype, {\n crossOrigin: 'anonymous',\n load: function (url, onLoad, onProgress, onError) {\n var texture = new Texture();\n var loader = new ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n loader.load(url, function (image) {\n texture.image = image;\n\n // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n var isJPEG = url.search(/\\.jpe?g($|\\?)/i) > 0 || url.search(/^data\\:image\\/jpeg/) === 0;\n texture.format = isJPEG ? RGBFormat : RGBAFormat;\n texture.needsUpdate = true;\n if (onLoad !== undefined) {\n onLoad(texture);\n }\n }, onProgress, onError);\n return texture;\n },\n setCrossOrigin: function (value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n this.type = 'Curve';\n this.arcLengthDivisions = 200;\n}\nObject.assign(Curve.prototype, {\n // Virtual base class method to overwrite and implement in subclasses\n //\t- t [0 .. 1]\n\n getPoint: function /* t, optionalTarget */\n () {\n console.warn('THREE.Curve: .getPoint() not implemented.');\n return null;\n },\n // Get point at relative position in curve according to arc length\n // - u [0 .. 1]\n\n getPointAt: function (u, optionalTarget) {\n var t = this.getUtoTmapping(u);\n return this.getPoint(t, optionalTarget);\n },\n // Get sequence of points using getPoint( t )\n\n getPoints: function (divisions) {\n if (divisions === undefined) divisions = 5;\n var points = [];\n for (var d = 0; d <= divisions; d++) {\n points.push(this.getPoint(d / divisions));\n }\n return points;\n },\n // Get sequence of points using getPointAt( u )\n\n getSpacedPoints: function (divisions) {\n if (divisions === undefined) divisions = 5;\n var points = [];\n for (var d = 0; d <= divisions; d++) {\n points.push(this.getPointAt(d / divisions));\n }\n return points;\n },\n // Get total curve arc length\n\n getLength: function () {\n var lengths = this.getLengths();\n return lengths[lengths.length - 1];\n },\n // Get list of cumulative segment lengths\n\n getLengths: function (divisions) {\n if (divisions === undefined) divisions = this.arcLengthDivisions;\n if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n return this.cacheArcLengths;\n }\n this.needsUpdate = false;\n var cache = [];\n var current,\n last = this.getPoint(0);\n var p,\n sum = 0;\n cache.push(0);\n for (p = 1; p <= divisions; p++) {\n current = this.getPoint(p / divisions);\n sum += current.distanceTo(last);\n cache.push(sum);\n last = current;\n }\n this.cacheArcLengths = cache;\n return cache; // { sums: cache, sum: sum }; Sum is in the last element.\n },\n\n updateArcLengths: function () {\n this.needsUpdate = true;\n this.getLengths();\n },\n // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n getUtoTmapping: function (u, distance) {\n var arcLengths = this.getLengths();\n var i = 0,\n il = arcLengths.length;\n var targetArcLength; // The targeted u distance value to get\n\n if (distance) {\n targetArcLength = distance;\n } else {\n targetArcLength = u * arcLengths[il - 1];\n }\n\n // binary search for the index with largest value smaller than target u distance\n\n var low = 0,\n high = il - 1,\n comparison;\n while (low <= high) {\n i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n comparison = arcLengths[i] - targetArcLength;\n if (comparison < 0) {\n low = i + 1;\n } else if (comparison > 0) {\n high = i - 1;\n } else {\n high = i;\n break;\n\n // DONE\n }\n }\n\n i = high;\n if (arcLengths[i] === targetArcLength) {\n return i / (il - 1);\n }\n\n // we could get finer grain at lengths, or use simple interpolation between two points\n\n var lengthBefore = arcLengths[i];\n var lengthAfter = arcLengths[i + 1];\n var segmentLength = lengthAfter - lengthBefore;\n\n // determine where we are between the 'before' and 'after' points\n\n var segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n\n // add that fractional amount to t\n\n var t = (i + segmentFraction) / (il - 1);\n return t;\n },\n // Returns a unit vector tangent at t\n // In case any sub curve does not implement its tangent derivation,\n // 2 points a small delta apart will be used to find its gradient\n // which seems to give a reasonable approximation\n\n getTangent: function (t) {\n var delta = 0.0001;\n var t1 = t - delta;\n var t2 = t + delta;\n\n // Capping in case of danger\n\n if (t1 < 0) t1 = 0;\n if (t2 > 1) t2 = 1;\n var pt1 = this.getPoint(t1);\n var pt2 = this.getPoint(t2);\n var vec = pt2.clone().sub(pt1);\n return vec.normalize();\n },\n getTangentAt: function (u) {\n var t = this.getUtoTmapping(u);\n return this.getTangent(t);\n },\n computeFrenetFrames: function (segments, closed) {\n // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n var normal = new Vector3();\n var tangents = [];\n var normals = [];\n var binormals = [];\n var vec = new Vector3();\n var mat = new Matrix4();\n var i, u, theta;\n\n // compute the tangent vectors for each segment on the curve\n\n for (i = 0; i <= segments; i++) {\n u = i / segments;\n tangents[i] = this.getTangentAt(u);\n tangents[i].normalize();\n }\n\n // select an initial normal vector perpendicular to the first tangent vector,\n // and in the direction of the minimum tangent xyz component\n\n normals[0] = new Vector3();\n binormals[0] = new Vector3();\n var min = Number.MAX_VALUE;\n var tx = Math.abs(tangents[0].x);\n var ty = Math.abs(tangents[0].y);\n var tz = Math.abs(tangents[0].z);\n if (tx <= min) {\n min = tx;\n normal.set(1, 0, 0);\n }\n if (ty <= min) {\n min = ty;\n normal.set(0, 1, 0);\n }\n if (tz <= min) {\n normal.set(0, 0, 1);\n }\n vec.crossVectors(tangents[0], normal).normalize();\n normals[0].crossVectors(tangents[0], vec);\n binormals[0].crossVectors(tangents[0], normals[0]);\n\n // compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n for (i = 1; i <= segments; i++) {\n normals[i] = normals[i - 1].clone();\n binormals[i] = binormals[i - 1].clone();\n vec.crossVectors(tangents[i - 1], tangents[i]);\n if (vec.length() > Number.EPSILON) {\n vec.normalize();\n theta = Math.acos(_Math.clamp(tangents[i - 1].dot(tangents[i]), -1, 1)); // clamp for floating pt errors\n\n normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n }\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n\n // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n if (closed === true) {\n theta = Math.acos(_Math.clamp(normals[0].dot(normals[segments]), -1, 1));\n theta /= segments;\n if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n theta = -theta;\n }\n for (i = 1; i <= segments; i++) {\n // twist a little...\n normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n binormals[i].crossVectors(tangents[i], normals[i]);\n }\n }\n return {\n tangents: tangents,\n normals: normals,\n binormals: binormals\n };\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (source) {\n this.arcLengthDivisions = source.arcLengthDivisions;\n return this;\n },\n toJSON: function () {\n var data = {\n metadata: {\n version: 4.5,\n type: 'Curve',\n generator: 'Curve.toJSON'\n }\n };\n data.arcLengthDivisions = this.arcLengthDivisions;\n data.type = this.type;\n return data;\n },\n fromJSON: function (json) {\n this.arcLengthDivisions = json.arcLengthDivisions;\n return this;\n }\n});\nfunction EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n Curve.call(this);\n this.type = 'EllipseCurve';\n this.aX = aX || 0;\n this.aY = aY || 0;\n this.xRadius = xRadius || 1;\n this.yRadius = yRadius || 1;\n this.aStartAngle = aStartAngle || 0;\n this.aEndAngle = aEndAngle || 2 * Math.PI;\n this.aClockwise = aClockwise || false;\n this.aRotation = aRotation || 0;\n}\nEllipseCurve.prototype = Object.create(Curve.prototype);\nEllipseCurve.prototype.constructor = EllipseCurve;\nEllipseCurve.prototype.isEllipseCurve = true;\nEllipseCurve.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector2();\n var twoPi = Math.PI * 2;\n var deltaAngle = this.aEndAngle - this.aStartAngle;\n var samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n\n // ensures that deltaAngle is 0 .. 2 PI\n while (deltaAngle < 0) deltaAngle += twoPi;\n while (deltaAngle > twoPi) deltaAngle -= twoPi;\n if (deltaAngle < Number.EPSILON) {\n if (samePoints) {\n deltaAngle = 0;\n } else {\n deltaAngle = twoPi;\n }\n }\n if (this.aClockwise === true && !samePoints) {\n if (deltaAngle === twoPi) {\n deltaAngle = -twoPi;\n } else {\n deltaAngle = deltaAngle - twoPi;\n }\n }\n var angle = this.aStartAngle + t * deltaAngle;\n var x = this.aX + this.xRadius * Math.cos(angle);\n var y = this.aY + this.yRadius * Math.sin(angle);\n if (this.aRotation !== 0) {\n var cos = Math.cos(this.aRotation);\n var sin = Math.sin(this.aRotation);\n var tx = x - this.aX;\n var ty = y - this.aY;\n\n // Rotate the point about the center of the ellipse.\n x = tx * cos - ty * sin + this.aX;\n y = tx * sin + ty * cos + this.aY;\n }\n return point.set(x, y);\n};\nEllipseCurve.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.aX = source.aX;\n this.aY = source.aY;\n this.xRadius = source.xRadius;\n this.yRadius = source.yRadius;\n this.aStartAngle = source.aStartAngle;\n this.aEndAngle = source.aEndAngle;\n this.aClockwise = source.aClockwise;\n this.aRotation = source.aRotation;\n return this;\n};\nEllipseCurve.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.aX = this.aX;\n data.aY = this.aY;\n data.xRadius = this.xRadius;\n data.yRadius = this.yRadius;\n data.aStartAngle = this.aStartAngle;\n data.aEndAngle = this.aEndAngle;\n data.aClockwise = this.aClockwise;\n data.aRotation = this.aRotation;\n return data;\n};\nEllipseCurve.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.aX = json.aX;\n this.aY = json.aY;\n this.xRadius = json.xRadius;\n this.yRadius = json.yRadius;\n this.aStartAngle = json.aStartAngle;\n this.aEndAngle = json.aEndAngle;\n this.aClockwise = json.aClockwise;\n this.aRotation = json.aRotation;\n return this;\n};\nfunction ArcCurve(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n EllipseCurve.call(this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n this.type = 'ArcCurve';\n}\nArcCurve.prototype = Object.create(EllipseCurve.prototype);\nArcCurve.prototype.constructor = ArcCurve;\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n var c0 = 0,\n c1 = 0,\n c2 = 0,\n c3 = 0;\n\n /*\n * Compute coefficients for a cubic polynomial\n * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n * such that\n * p(0) = x0, p(1) = x1\n * and\n * p'(0) = t0, p'(1) = t1.\n */\n function init(x0, x1, t0, t1) {\n c0 = x0;\n c1 = t0;\n c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n c3 = 2 * x0 - 2 * x1 + t0 + t1;\n }\n return {\n initCatmullRom: function (x0, x1, x2, x3, tension) {\n init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n },\n initNonuniformCatmullRom: function (x0, x1, x2, x3, dt0, dt1, dt2) {\n // compute tangents when parameterized in [t1,t2]\n var t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n var t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n\n // rescale tangents for parametrization in [0,1]\n t1 *= dt1;\n t2 *= dt1;\n init(x1, x2, t1, t2);\n },\n calc: function (t) {\n var t2 = t * t;\n var t3 = t2 * t;\n return c0 + c1 * t + c2 * t2 + c3 * t3;\n }\n };\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(),\n py = new CubicPoly(),\n pz = new CubicPoly();\nfunction CatmullRomCurve3(points, closed, curveType, tension) {\n Curve.call(this);\n this.type = 'CatmullRomCurve3';\n this.points = points || [];\n this.closed = closed || false;\n this.curveType = curveType || 'centripetal';\n this.tension = tension || 0.5;\n}\nCatmullRomCurve3.prototype = Object.create(Curve.prototype);\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\nCatmullRomCurve3.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector3();\n var points = this.points;\n var l = points.length;\n var p = (l - (this.closed ? 0 : 1)) * t;\n var intPoint = Math.floor(p);\n var weight = p - intPoint;\n if (this.closed) {\n intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n } else if (weight === 0 && intPoint === l - 1) {\n intPoint = l - 2;\n weight = 1;\n }\n var p0, p1, p2, p3; // 4 points\n\n if (this.closed || intPoint > 0) {\n p0 = points[(intPoint - 1) % l];\n } else {\n // extrapolate first point\n tmp.subVectors(points[0], points[1]).add(points[0]);\n p0 = tmp;\n }\n p1 = points[intPoint % l];\n p2 = points[(intPoint + 1) % l];\n if (this.closed || intPoint + 2 < l) {\n p3 = points[(intPoint + 2) % l];\n } else {\n // extrapolate last point\n tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n p3 = tmp;\n }\n if (this.curveType === 'centripetal' || this.curveType === 'chordal') {\n // init Centripetal / Chordal Catmull-Rom\n var pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n var dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n var dt1 = Math.pow(p1.distanceToSquared(p2), pow);\n var dt2 = Math.pow(p2.distanceToSquared(p3), pow);\n\n // safety check for repeated points\n if (dt1 < 1e-4) dt1 = 1.0;\n if (dt0 < 1e-4) dt0 = dt1;\n if (dt2 < 1e-4) dt2 = dt1;\n px.initNonuniformCatmullRom(p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2);\n py.initNonuniformCatmullRom(p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2);\n pz.initNonuniformCatmullRom(p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2);\n } else if (this.curveType === 'catmullrom') {\n px.initCatmullRom(p0.x, p1.x, p2.x, p3.x, this.tension);\n py.initCatmullRom(p0.y, p1.y, p2.y, p3.y, this.tension);\n pz.initCatmullRom(p0.z, p1.z, p2.z, p3.z, this.tension);\n }\n point.set(px.calc(weight), py.calc(weight), pz.calc(weight));\n return point;\n};\nCatmullRomCurve3.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.points = [];\n for (var i = 0, l = source.points.length; i < l; i++) {\n var point = source.points[i];\n this.points.push(point.clone());\n }\n this.closed = source.closed;\n this.curveType = source.curveType;\n this.tension = source.tension;\n return this;\n};\nCatmullRomCurve3.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.points = [];\n for (var i = 0, l = this.points.length; i < l; i++) {\n var point = this.points[i];\n data.points.push(point.toArray());\n }\n data.closed = this.closed;\n data.curveType = this.curveType;\n data.tension = this.tension;\n return data;\n};\nCatmullRomCurve3.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.points = [];\n for (var i = 0, l = json.points.length; i < l; i++) {\n var point = json.points[i];\n this.points.push(new Vector3().fromArray(point));\n }\n this.closed = json.closed;\n this.curveType = json.curveType;\n this.tension = json.tension;\n return this;\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom(t, p0, p1, p2, p3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\n//\n\nfunction QuadraticBezierP0(t, p) {\n var k = 1 - t;\n return k * k * p;\n}\nfunction QuadraticBezierP1(t, p) {\n return 2 * (1 - t) * t * p;\n}\nfunction QuadraticBezierP2(t, p) {\n return t * t * p;\n}\nfunction QuadraticBezier(t, p0, p1, p2) {\n return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) + QuadraticBezierP2(t, p2);\n}\n\n//\n\nfunction CubicBezierP0(t, p) {\n var k = 1 - t;\n return k * k * k * p;\n}\nfunction CubicBezierP1(t, p) {\n var k = 1 - t;\n return 3 * k * k * t * p;\n}\nfunction CubicBezierP2(t, p) {\n return 3 * (1 - t) * t * t * p;\n}\nfunction CubicBezierP3(t, p) {\n return t * t * t * p;\n}\nfunction CubicBezier(t, p0, p1, p2, p3) {\n return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) + CubicBezierP3(t, p3);\n}\nfunction CubicBezierCurve(v0, v1, v2, v3) {\n Curve.call(this);\n this.type = 'CubicBezierCurve';\n this.v0 = v0 || new Vector2();\n this.v1 = v1 || new Vector2();\n this.v2 = v2 || new Vector2();\n this.v3 = v3 || new Vector2();\n}\nCubicBezierCurve.prototype = Object.create(Curve.prototype);\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\nCubicBezierCurve.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector2();\n var v0 = this.v0,\n v1 = this.v1,\n v2 = this.v2,\n v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y));\n return point;\n};\nCubicBezierCurve.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n};\nCubicBezierCurve.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n};\nCubicBezierCurve.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n};\nfunction CubicBezierCurve3(v0, v1, v2, v3) {\n Curve.call(this);\n this.type = 'CubicBezierCurve3';\n this.v0 = v0 || new Vector3();\n this.v1 = v1 || new Vector3();\n this.v2 = v2 || new Vector3();\n this.v3 = v3 || new Vector3();\n}\nCubicBezierCurve3.prototype = Object.create(Curve.prototype);\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\nCubicBezierCurve3.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector3();\n var v0 = this.v0,\n v1 = this.v1,\n v2 = this.v2,\n v3 = this.v3;\n point.set(CubicBezier(t, v0.x, v1.x, v2.x, v3.x), CubicBezier(t, v0.y, v1.y, v2.y, v3.y), CubicBezier(t, v0.z, v1.z, v2.z, v3.z));\n return point;\n};\nCubicBezierCurve3.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n this.v3.copy(source.v3);\n return this;\n};\nCubicBezierCurve3.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n data.v3 = this.v3.toArray();\n return data;\n};\nCubicBezierCurve3.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n this.v3.fromArray(json.v3);\n return this;\n};\nfunction LineCurve(v1, v2) {\n Curve.call(this);\n this.type = 'LineCurve';\n this.v1 = v1 || new Vector2();\n this.v2 = v2 || new Vector2();\n}\nLineCurve.prototype = Object.create(Curve.prototype);\nLineCurve.prototype.constructor = LineCurve;\nLineCurve.prototype.isLineCurve = true;\nLineCurve.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector2();\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function (u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n};\nLineCurve.prototype.getTangent = function /* t */\n() {\n var tangent = this.v2.clone().sub(this.v1);\n return tangent.normalize();\n};\nLineCurve.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n};\nLineCurve.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n};\nLineCurve.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n};\nfunction LineCurve3(v1, v2) {\n Curve.call(this);\n this.type = 'LineCurve3';\n this.v1 = v1 || new Vector3();\n this.v2 = v2 || new Vector3();\n}\nLineCurve3.prototype = Object.create(Curve.prototype);\nLineCurve3.prototype.constructor = LineCurve3;\nLineCurve3.prototype.isLineCurve3 = true;\nLineCurve3.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector3();\n if (t === 1) {\n point.copy(this.v2);\n } else {\n point.copy(this.v2).sub(this.v1);\n point.multiplyScalar(t).add(this.v1);\n }\n return point;\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function (u, optionalTarget) {\n return this.getPoint(u, optionalTarget);\n};\nLineCurve3.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n};\nLineCurve3.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n};\nLineCurve3.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n};\nfunction QuadraticBezierCurve(v0, v1, v2) {\n Curve.call(this);\n this.type = 'QuadraticBezierCurve';\n this.v0 = v0 || new Vector2();\n this.v1 = v1 || new Vector2();\n this.v2 = v2 || new Vector2();\n}\nQuadraticBezierCurve.prototype = Object.create(Curve.prototype);\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\nQuadraticBezierCurve.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector2();\n var v0 = this.v0,\n v1 = this.v1,\n v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y));\n return point;\n};\nQuadraticBezierCurve.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n};\nQuadraticBezierCurve.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n};\nQuadraticBezierCurve.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n};\nfunction QuadraticBezierCurve3(v0, v1, v2) {\n Curve.call(this);\n this.type = 'QuadraticBezierCurve3';\n this.v0 = v0 || new Vector3();\n this.v1 = v1 || new Vector3();\n this.v2 = v2 || new Vector3();\n}\nQuadraticBezierCurve3.prototype = Object.create(Curve.prototype);\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\nQuadraticBezierCurve3.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector3();\n var v0 = this.v0,\n v1 = this.v1,\n v2 = this.v2;\n point.set(QuadraticBezier(t, v0.x, v1.x, v2.x), QuadraticBezier(t, v0.y, v1.y, v2.y), QuadraticBezier(t, v0.z, v1.z, v2.z));\n return point;\n};\nQuadraticBezierCurve3.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.v0.copy(source.v0);\n this.v1.copy(source.v1);\n this.v2.copy(source.v2);\n return this;\n};\nQuadraticBezierCurve3.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.v0 = this.v0.toArray();\n data.v1 = this.v1.toArray();\n data.v2 = this.v2.toArray();\n return data;\n};\nQuadraticBezierCurve3.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.v0.fromArray(json.v0);\n this.v1.fromArray(json.v1);\n this.v2.fromArray(json.v2);\n return this;\n};\nfunction SplineCurve(points /* array of Vector2 */) {\n Curve.call(this);\n this.type = 'SplineCurve';\n this.points = points || [];\n}\nSplineCurve.prototype = Object.create(Curve.prototype);\nSplineCurve.prototype.constructor = SplineCurve;\nSplineCurve.prototype.isSplineCurve = true;\nSplineCurve.prototype.getPoint = function (t, optionalTarget) {\n var point = optionalTarget || new Vector2();\n var points = this.points;\n var p = (points.length - 1) * t;\n var intPoint = Math.floor(p);\n var weight = p - intPoint;\n var p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n var p1 = points[intPoint];\n var p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n var p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n point.set(CatmullRom(weight, p0.x, p1.x, p2.x, p3.x), CatmullRom(weight, p0.y, p1.y, p2.y, p3.y));\n return point;\n};\nSplineCurve.prototype.copy = function (source) {\n Curve.prototype.copy.call(this, source);\n this.points = [];\n for (var i = 0, l = source.points.length; i < l; i++) {\n var point = source.points[i];\n this.points.push(point.clone());\n }\n return this;\n};\nSplineCurve.prototype.toJSON = function () {\n var data = Curve.prototype.toJSON.call(this);\n data.points = [];\n for (var i = 0, l = this.points.length; i < l; i++) {\n var point = this.points[i];\n data.points.push(point.toArray());\n }\n return data;\n};\nSplineCurve.prototype.fromJSON = function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.points = [];\n for (var i = 0, l = json.points.length; i < l; i++) {\n var point = json.points[i];\n this.points.push(new Vector2().fromArray(point));\n }\n return this;\n};\nvar Curves = /*#__PURE__*/Object.freeze({\n ArcCurve: ArcCurve,\n CatmullRomCurve3: CatmullRomCurve3,\n CubicBezierCurve: CubicBezierCurve,\n CubicBezierCurve3: CubicBezierCurve3,\n EllipseCurve: EllipseCurve,\n LineCurve: LineCurve,\n LineCurve3: LineCurve3,\n QuadraticBezierCurve: QuadraticBezierCurve,\n QuadraticBezierCurve3: QuadraticBezierCurve3,\n SplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n Curve.call(this);\n this.type = 'CurvePath';\n this.curves = [];\n this.autoClose = false; // Automatically closes the path\n}\n\nCurvePath.prototype = Object.assign(Object.create(Curve.prototype), {\n constructor: CurvePath,\n add: function (curve) {\n this.curves.push(curve);\n },\n closePath: function () {\n // Add a line curve if start and end of lines are not connected\n var startPoint = this.curves[0].getPoint(0);\n var endPoint = this.curves[this.curves.length - 1].getPoint(1);\n if (!startPoint.equals(endPoint)) {\n this.curves.push(new LineCurve(endPoint, startPoint));\n }\n },\n // To get accurate point with reference to\n // entire path distance at time t,\n // following has to be done:\n\n // 1. Length of each sub path have to be known\n // 2. Locate and identify type of curve\n // 3. Get t for the curve\n // 4. Return curve.getPointAt(t')\n\n getPoint: function (t) {\n var d = t * this.getLength();\n var curveLengths = this.getCurveLengths();\n var i = 0;\n\n // To think about boundaries points.\n\n while (i < curveLengths.length) {\n if (curveLengths[i] >= d) {\n var diff = curveLengths[i] - d;\n var curve = this.curves[i];\n var segmentLength = curve.getLength();\n var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n return curve.getPointAt(u);\n }\n i++;\n }\n return null;\n\n // loop where sum != 0, sum > d , sum+1 1 && !points[points.length - 1].equals(points[0])) {\n points.push(points[0]);\n }\n return points;\n },\n copy: function (source) {\n Curve.prototype.copy.call(this, source);\n this.curves = [];\n for (var i = 0, l = source.curves.length; i < l; i++) {\n var curve = source.curves[i];\n this.curves.push(curve.clone());\n }\n this.autoClose = source.autoClose;\n return this;\n },\n toJSON: function () {\n var data = Curve.prototype.toJSON.call(this);\n data.autoClose = this.autoClose;\n data.curves = [];\n for (var i = 0, l = this.curves.length; i < l; i++) {\n var curve = this.curves[i];\n data.curves.push(curve.toJSON());\n }\n return data;\n },\n fromJSON: function (json) {\n Curve.prototype.fromJSON.call(this, json);\n this.autoClose = json.autoClose;\n this.curves = [];\n for (var i = 0, l = json.curves.length; i < l; i++) {\n var curve = json.curves[i];\n this.curves.push(new Curves[curve.type]().fromJSON(curve));\n }\n return this;\n }\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path(points) {\n CurvePath.call(this);\n this.type = 'Path';\n this.currentPoint = new Vector2();\n if (points) {\n this.setFromPoints(points);\n }\n}\nPath.prototype = Object.assign(Object.create(CurvePath.prototype), {\n constructor: Path,\n setFromPoints: function (points) {\n this.moveTo(points[0].x, points[0].y);\n for (var i = 1, l = points.length; i < l; i++) {\n this.lineTo(points[i].x, points[i].y);\n }\n },\n moveTo: function (x, y) {\n this.currentPoint.set(x, y); // TODO consider referencing vectors instead of copying?\n },\n\n lineTo: function (x, y) {\n var curve = new LineCurve(this.currentPoint.clone(), new Vector2(x, y));\n this.curves.push(curve);\n this.currentPoint.set(x, y);\n },\n quadraticCurveTo: function (aCPx, aCPy, aX, aY) {\n var curve = new QuadraticBezierCurve(this.currentPoint.clone(), new Vector2(aCPx, aCPy), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n },\n bezierCurveTo: function (aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n var curve = new CubicBezierCurve(this.currentPoint.clone(), new Vector2(aCP1x, aCP1y), new Vector2(aCP2x, aCP2y), new Vector2(aX, aY));\n this.curves.push(curve);\n this.currentPoint.set(aX, aY);\n },\n splineThru: function (pts /*Array of Vector*/) {\n var npts = [this.currentPoint.clone()].concat(pts);\n var curve = new SplineCurve(npts);\n this.curves.push(curve);\n this.currentPoint.copy(pts[pts.length - 1]);\n },\n arc: function (aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n var x0 = this.currentPoint.x;\n var y0 = this.currentPoint.y;\n this.absarc(aX + x0, aY + y0, aRadius, aStartAngle, aEndAngle, aClockwise);\n },\n absarc: function (aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n },\n ellipse: function (aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n var x0 = this.currentPoint.x;\n var y0 = this.currentPoint.y;\n this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n },\n absellipse: function (aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n var curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n if (this.curves.length > 0) {\n // if a previous curve is present, attempt to join\n var firstPoint = curve.getPoint(0);\n if (!firstPoint.equals(this.currentPoint)) {\n this.lineTo(firstPoint.x, firstPoint.y);\n }\n }\n this.curves.push(curve);\n var lastPoint = curve.getPoint(1);\n this.currentPoint.copy(lastPoint);\n },\n copy: function (source) {\n CurvePath.prototype.copy.call(this, source);\n this.currentPoint.copy(source.currentPoint);\n return this;\n },\n toJSON: function () {\n var data = CurvePath.prototype.toJSON.call(this);\n data.currentPoint = this.currentPoint.toArray();\n return data;\n },\n fromJSON: function (json) {\n CurvePath.prototype.fromJSON.call(this, json);\n this.currentPoint.fromArray(json.currentPoint);\n return this;\n }\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape(points) {\n Path.call(this, points);\n this.uuid = _Math.generateUUID();\n this.type = 'Shape';\n this.holes = [];\n}\nShape.prototype = Object.assign(Object.create(Path.prototype), {\n constructor: Shape,\n getPointsHoles: function (divisions) {\n var holesPts = [];\n for (var i = 0, l = this.holes.length; i < l; i++) {\n holesPts[i] = this.holes[i].getPoints(divisions);\n }\n return holesPts;\n },\n // get points of shape and holes (keypoints based on segments parameter)\n\n extractPoints: function (divisions) {\n return {\n shape: this.getPoints(divisions),\n holes: this.getPointsHoles(divisions)\n };\n },\n copy: function (source) {\n Path.prototype.copy.call(this, source);\n this.holes = [];\n for (var i = 0, l = source.holes.length; i < l; i++) {\n var hole = source.holes[i];\n this.holes.push(hole.clone());\n }\n return this;\n },\n toJSON: function () {\n var data = Path.prototype.toJSON.call(this);\n data.uuid = this.uuid;\n data.holes = [];\n for (var i = 0, l = this.holes.length; i < l; i++) {\n var hole = this.holes[i];\n data.holes.push(hole.toJSON());\n }\n return data;\n },\n fromJSON: function (json) {\n Path.prototype.fromJSON.call(this, json);\n this.uuid = json.uuid;\n this.holes = [];\n for (var i = 0, l = json.holes.length; i < l; i++) {\n var hole = json.holes[i];\n this.holes.push(new Path().fromJSON(hole));\n }\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light(color, intensity) {\n Object3D.call(this);\n this.type = 'Light';\n this.color = new Color(color);\n this.intensity = intensity !== undefined ? intensity : 1;\n this.receiveShadow = undefined;\n}\nLight.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Light,\n isLight: true,\n copy: function (source) {\n Object3D.prototype.copy.call(this, source);\n this.color.copy(source.color);\n this.intensity = source.intensity;\n return this;\n },\n toJSON: function (meta) {\n var data = Object3D.prototype.toJSON.call(this, meta);\n data.object.color = this.color.getHex();\n data.object.intensity = this.intensity;\n if (this.groundColor !== undefined) data.object.groundColor = this.groundColor.getHex();\n if (this.distance !== undefined) data.object.distance = this.distance;\n if (this.angle !== undefined) data.object.angle = this.angle;\n if (this.decay !== undefined) data.object.decay = this.decay;\n if (this.penumbra !== undefined) data.object.penumbra = this.penumbra;\n if (this.shadow !== undefined) data.object.shadow = this.shadow.toJSON();\n return data;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight(skyColor, groundColor, intensity) {\n Light.call(this, skyColor, intensity);\n this.type = 'HemisphereLight';\n this.castShadow = undefined;\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.groundColor = new Color(groundColor);\n}\nHemisphereLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: HemisphereLight,\n isHemisphereLight: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.groundColor.copy(source.groundColor);\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow(camera) {\n this.camera = camera;\n this.bias = 0;\n this.radius = 1;\n this.mapSize = new Vector2(512, 512);\n this.map = null;\n this.matrix = new Matrix4();\n}\nObject.assign(LightShadow.prototype, {\n copy: function (source) {\n this.camera = source.camera.clone();\n this.bias = source.bias;\n this.radius = source.radius;\n this.mapSize.copy(source.mapSize);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n toJSON: function () {\n var object = {};\n if (this.bias !== 0) object.bias = this.bias;\n if (this.radius !== 1) object.radius = this.radius;\n if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray();\n object.camera = this.camera.toJSON(false).object;\n delete object.camera.matrix;\n return object;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n LightShadow.call(this, new PerspectiveCamera(50, 1, 0.5, 500));\n}\nSpotLightShadow.prototype = Object.assign(Object.create(LightShadow.prototype), {\n constructor: SpotLightShadow,\n isSpotLightShadow: true,\n update: function (light) {\n var camera = this.camera;\n var fov = _Math.RAD2DEG * 2 * light.angle;\n var aspect = this.mapSize.width / this.mapSize.height;\n var far = light.distance || camera.far;\n if (fov !== camera.fov || aspect !== camera.aspect || far !== camera.far) {\n camera.fov = fov;\n camera.aspect = aspect;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight(color, intensity, distance, angle, penumbra, decay) {\n Light.call(this, color, intensity);\n this.type = 'SpotLight';\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n Object.defineProperty(this, 'power', {\n get: function () {\n // intensity = power per solid angle.\n // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n return this.intensity * Math.PI;\n },\n set: function (power) {\n // intensity = power per solid angle.\n // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n this.intensity = power / Math.PI;\n }\n });\n this.distance = distance !== undefined ? distance : 0;\n this.angle = angle !== undefined ? angle : Math.PI / 3;\n this.penumbra = penumbra !== undefined ? penumbra : 0;\n this.decay = decay !== undefined ? decay : 1; // for physically correct lights, should be 2.\n\n this.shadow = new SpotLightShadow();\n}\nSpotLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: SpotLight,\n isSpotLight: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.distance = source.distance;\n this.angle = source.angle;\n this.penumbra = source.penumbra;\n this.decay = source.decay;\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLight(color, intensity, distance, decay) {\n Light.call(this, color, intensity);\n this.type = 'PointLight';\n Object.defineProperty(this, 'power', {\n get: function () {\n // intensity = power per solid angle.\n // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n return this.intensity * 4 * Math.PI;\n },\n set: function (power) {\n // intensity = power per solid angle.\n // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n this.intensity = power / (4 * Math.PI);\n }\n });\n this.distance = distance !== undefined ? distance : 0;\n this.decay = decay !== undefined ? decay : 1; // for physically correct lights, should be 2.\n\n this.shadow = new LightShadow(new PerspectiveCamera(90, 1, 0.5, 500));\n}\nPointLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: PointLight,\n isPointLight: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.distance = source.distance;\n this.decay = source.decay;\n this.shadow = source.shadow.clone();\n return this;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera(left, right, top, bottom, near, far) {\n Camera.call(this);\n this.type = 'OrthographicCamera';\n this.zoom = 1;\n this.view = null;\n this.left = left !== undefined ? left : -1;\n this.right = right !== undefined ? right : 1;\n this.top = top !== undefined ? top : 1;\n this.bottom = bottom !== undefined ? bottom : -1;\n this.near = near !== undefined ? near : 0.1;\n this.far = far !== undefined ? far : 2000;\n this.updateProjectionMatrix();\n}\nOrthographicCamera.prototype = Object.assign(Object.create(Camera.prototype), {\n constructor: OrthographicCamera,\n isOrthographicCamera: true,\n copy: function (source, recursive) {\n Camera.prototype.copy.call(this, source, recursive);\n this.left = source.left;\n this.right = source.right;\n this.top = source.top;\n this.bottom = source.bottom;\n this.near = source.near;\n this.far = source.far;\n this.zoom = source.zoom;\n this.view = source.view === null ? null : Object.assign({}, source.view);\n return this;\n },\n setViewOffset: function (fullWidth, fullHeight, x, y, width, height) {\n if (this.view === null) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n this.updateProjectionMatrix();\n },\n clearViewOffset: function () {\n if (this.view !== null) {\n this.view.enabled = false;\n }\n this.updateProjectionMatrix();\n },\n updateProjectionMatrix: function () {\n var dx = (this.right - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.right + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n if (this.view !== null && this.view.enabled) {\n var zoomW = this.zoom / (this.view.width / this.view.fullWidth);\n var zoomH = this.zoom / (this.view.height / this.view.fullHeight);\n var scaleW = (this.right - this.left) / this.view.width;\n var scaleH = (this.top - this.bottom) / this.view.height;\n left += scaleW * (this.view.offsetX / zoomW);\n right = left + scaleW * (this.view.width / zoomW);\n top -= scaleH * (this.view.offsetY / zoomH);\n bottom = top - scaleH * (this.view.height / zoomH);\n }\n this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n this.projectionMatrixInverse.getInverse(this.projectionMatrix);\n },\n toJSON: function (meta) {\n var data = Object3D.prototype.toJSON.call(this, meta);\n data.object.zoom = this.zoom;\n data.object.left = this.left;\n data.object.right = this.right;\n data.object.top = this.top;\n data.object.bottom = this.bottom;\n data.object.near = this.near;\n data.object.far = this.far;\n if (this.view !== null) data.object.view = Object.assign({}, this.view);\n return data;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow() {\n LightShadow.call(this, new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n}\nDirectionalLightShadow.prototype = Object.assign(Object.create(LightShadow.prototype), {\n constructor: DirectionalLightShadow\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight(color, intensity) {\n Light.call(this, color, intensity);\n this.type = 'DirectionalLight';\n this.position.copy(Object3D.DefaultUp);\n this.updateMatrix();\n this.target = new Object3D();\n this.shadow = new DirectionalLightShadow();\n}\nDirectionalLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: DirectionalLight,\n isDirectionalLight: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.target = source.target.clone();\n this.shadow = source.shadow.clone();\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight(color, intensity) {\n Light.call(this, color, intensity);\n this.type = 'AmbientLight';\n this.castShadow = undefined;\n}\nAmbientLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: AmbientLight,\n isAmbientLight: true\n});\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight(color, intensity, width, height) {\n Light.call(this, color, intensity);\n this.type = 'RectAreaLight';\n this.width = width !== undefined ? width : 10;\n this.height = height !== undefined ? height : 10;\n}\nRectAreaLight.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: RectAreaLight,\n isRectAreaLight: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.width = source.width;\n this.height = source.height;\n return this;\n },\n toJSON: function (meta) {\n var data = Light.prototype.toJSON.call(this, meta);\n data.object.width = this.width;\n data.object.height = this.height;\n return data;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n this.textures = {};\n}\nObject.assign(MaterialLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.load(url, function (text) {\n onLoad(scope.parse(JSON.parse(text)));\n }, onProgress, onError);\n },\n parse: function (json) {\n var textures = this.textures;\n function getTexture(name) {\n if (textures[name] === undefined) {\n console.warn('THREE.MaterialLoader: Undefined texture', name);\n }\n return textures[name];\n }\n var material = new Materials[json.type]();\n if (json.uuid !== undefined) material.uuid = json.uuid;\n if (json.name !== undefined) material.name = json.name;\n if (json.color !== undefined) material.color.setHex(json.color);\n if (json.roughness !== undefined) material.roughness = json.roughness;\n if (json.metalness !== undefined) material.metalness = json.metalness;\n if (json.emissive !== undefined) material.emissive.setHex(json.emissive);\n if (json.specular !== undefined) material.specular.setHex(json.specular);\n if (json.shininess !== undefined) material.shininess = json.shininess;\n if (json.clearCoat !== undefined) material.clearCoat = json.clearCoat;\n if (json.clearCoatRoughness !== undefined) material.clearCoatRoughness = json.clearCoatRoughness;\n if (json.vertexColors !== undefined) material.vertexColors = json.vertexColors;\n if (json.fog !== undefined) material.fog = json.fog;\n if (json.flatShading !== undefined) material.flatShading = json.flatShading;\n if (json.blending !== undefined) material.blending = json.blending;\n if (json.combine !== undefined) material.combine = json.combine;\n if (json.side !== undefined) material.side = json.side;\n if (json.opacity !== undefined) material.opacity = json.opacity;\n if (json.transparent !== undefined) material.transparent = json.transparent;\n if (json.alphaTest !== undefined) material.alphaTest = json.alphaTest;\n if (json.depthTest !== undefined) material.depthTest = json.depthTest;\n if (json.depthWrite !== undefined) material.depthWrite = json.depthWrite;\n if (json.colorWrite !== undefined) material.colorWrite = json.colorWrite;\n if (json.wireframe !== undefined) material.wireframe = json.wireframe;\n if (json.wireframeLinewidth !== undefined) material.wireframeLinewidth = json.wireframeLinewidth;\n if (json.wireframeLinecap !== undefined) material.wireframeLinecap = json.wireframeLinecap;\n if (json.wireframeLinejoin !== undefined) material.wireframeLinejoin = json.wireframeLinejoin;\n if (json.rotation !== undefined) material.rotation = json.rotation;\n if (json.linewidth !== 1) material.linewidth = json.linewidth;\n if (json.dashSize !== undefined) material.dashSize = json.dashSize;\n if (json.gapSize !== undefined) material.gapSize = json.gapSize;\n if (json.scale !== undefined) material.scale = json.scale;\n if (json.polygonOffset !== undefined) material.polygonOffset = json.polygonOffset;\n if (json.polygonOffsetFactor !== undefined) material.polygonOffsetFactor = json.polygonOffsetFactor;\n if (json.polygonOffsetUnits !== undefined) material.polygonOffsetUnits = json.polygonOffsetUnits;\n if (json.skinning !== undefined) material.skinning = json.skinning;\n if (json.morphTargets !== undefined) material.morphTargets = json.morphTargets;\n if (json.dithering !== undefined) material.dithering = json.dithering;\n if (json.visible !== undefined) material.visible = json.visible;\n if (json.userData !== undefined) material.userData = json.userData;\n\n // Shader Material\n\n if (json.uniforms !== undefined) {\n for (var name in json.uniforms) {\n var uniform = json.uniforms[name];\n material.uniforms[name] = {};\n switch (uniform.type) {\n case 't':\n material.uniforms[name].value = getTexture(uniform.value);\n break;\n case 'c':\n material.uniforms[name].value = new Color().setHex(uniform.value);\n break;\n case 'v2':\n material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n break;\n case 'v3':\n material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n break;\n case 'v4':\n material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n break;\n case 'm3':\n material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n case 'm4':\n material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n break;\n default:\n material.uniforms[name].value = uniform.value;\n }\n }\n }\n if (json.defines !== undefined) material.defines = json.defines;\n if (json.vertexShader !== undefined) material.vertexShader = json.vertexShader;\n if (json.fragmentShader !== undefined) material.fragmentShader = json.fragmentShader;\n if (json.extensions !== undefined) {\n for (var key in json.extensions) {\n material.extensions[key] = json.extensions[key];\n }\n }\n\n // Deprecated\n\n if (json.shading !== undefined) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n // for PointsMaterial\n\n if (json.size !== undefined) material.size = json.size;\n if (json.sizeAttenuation !== undefined) material.sizeAttenuation = json.sizeAttenuation;\n\n // maps\n\n if (json.map !== undefined) material.map = getTexture(json.map);\n if (json.matcap !== undefined) material.matcap = getTexture(json.matcap);\n if (json.alphaMap !== undefined) {\n material.alphaMap = getTexture(json.alphaMap);\n material.transparent = true;\n }\n if (json.bumpMap !== undefined) material.bumpMap = getTexture(json.bumpMap);\n if (json.bumpScale !== undefined) material.bumpScale = json.bumpScale;\n if (json.normalMap !== undefined) material.normalMap = getTexture(json.normalMap);\n if (json.normalMapType !== undefined) material.normalMapType = json.normalMapType;\n if (json.normalScale !== undefined) {\n var normalScale = json.normalScale;\n if (Array.isArray(normalScale) === false) {\n // Blender exporter used to export a scalar. See #7459\n\n normalScale = [normalScale, normalScale];\n }\n material.normalScale = new Vector2().fromArray(normalScale);\n }\n if (json.displacementMap !== undefined) material.displacementMap = getTexture(json.displacementMap);\n if (json.displacementScale !== undefined) material.displacementScale = json.displacementScale;\n if (json.displacementBias !== undefined) material.displacementBias = json.displacementBias;\n if (json.roughnessMap !== undefined) material.roughnessMap = getTexture(json.roughnessMap);\n if (json.metalnessMap !== undefined) material.metalnessMap = getTexture(json.metalnessMap);\n if (json.emissiveMap !== undefined) material.emissiveMap = getTexture(json.emissiveMap);\n if (json.emissiveIntensity !== undefined) material.emissiveIntensity = json.emissiveIntensity;\n if (json.specularMap !== undefined) material.specularMap = getTexture(json.specularMap);\n if (json.envMap !== undefined) material.envMap = getTexture(json.envMap);\n if (json.envMapIntensity !== undefined) material.envMapIntensity = json.envMapIntensity;\n if (json.reflectivity !== undefined) material.reflectivity = json.reflectivity;\n if (json.lightMap !== undefined) material.lightMap = getTexture(json.lightMap);\n if (json.lightMapIntensity !== undefined) material.lightMapIntensity = json.lightMapIntensity;\n if (json.aoMap !== undefined) material.aoMap = getTexture(json.aoMap);\n if (json.aoMapIntensity !== undefined) material.aoMapIntensity = json.aoMapIntensity;\n if (json.gradientMap !== undefined) material.gradientMap = getTexture(json.gradientMap);\n return material;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n },\n setTextures: function (value) {\n this.textures = value;\n return this;\n }\n});\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n decodeText: function (array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n\n // Avoid the String.fromCharCode.apply(null, array) shortcut, which\n // throws a \"maximum call stack size exceeded\" error for large arrays.\n\n var s = '';\n for (var i = 0, il = array.length; i < il; i++) {\n // Implicitly assumes little-endian.\n s += String.fromCharCode(array[i]);\n }\n try {\n // merges multi-byte utf-8 characters.\n\n return decodeURIComponent(escape(s));\n } catch (e) {\n // see #16358\n\n return s;\n }\n },\n extractUrlBase: function (url) {\n var index = url.lastIndexOf('/');\n if (index === -1) return './';\n return url.substr(0, index + 1);\n }\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n BufferGeometry.call(this);\n this.type = 'InstancedBufferGeometry';\n this.maxInstancedCount = undefined;\n}\nInstancedBufferGeometry.prototype = Object.assign(Object.create(BufferGeometry.prototype), {\n constructor: InstancedBufferGeometry,\n isInstancedBufferGeometry: true,\n copy: function (source) {\n BufferGeometry.prototype.copy.call(this, source);\n this.maxInstancedCount = source.maxInstancedCount;\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n toJSON: function () {\n var data = BufferGeometry.prototype.toJSON.call(this);\n data.maxInstancedCount = this.maxInstancedCount;\n data.isInstancedBufferGeometry = true;\n return data;\n }\n});\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute(array, itemSize, normalized, meshPerAttribute) {\n if (typeof normalized === 'number') {\n meshPerAttribute = normalized;\n normalized = false;\n console.error('THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.');\n }\n BufferAttribute.call(this, array, itemSize, normalized);\n this.meshPerAttribute = meshPerAttribute || 1;\n}\nInstancedBufferAttribute.prototype = Object.assign(Object.create(BufferAttribute.prototype), {\n constructor: InstancedBufferAttribute,\n isInstancedBufferAttribute: true,\n copy: function (source) {\n BufferAttribute.prototype.copy.call(this, source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n },\n toJSON: function () {\n var data = BufferAttribute.prototype.toJSON.call(this);\n data.meshPerAttribute = this.meshPerAttribute;\n data.isInstancedBufferAttribute = true;\n return data;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(BufferGeometryLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var loader = new FileLoader(scope.manager);\n loader.setPath(scope.path);\n loader.load(url, function (text) {\n onLoad(scope.parse(JSON.parse(text)));\n }, onProgress, onError);\n },\n parse: function (json) {\n var geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n var index = json.data.index;\n if (index !== undefined) {\n var typedArray = new TYPED_ARRAYS[index.type](index.array);\n geometry.setIndex(new BufferAttribute(typedArray, 1));\n }\n var attributes = json.data.attributes;\n for (var key in attributes) {\n var attribute = attributes[key];\n var typedArray = new TYPED_ARRAYS[attribute.type](attribute.array);\n var bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n var bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n if (attribute.name !== undefined) bufferAttribute.name = attribute.name;\n geometry.addAttribute(key, bufferAttribute);\n }\n var morphAttributes = json.data.morphAttributes;\n if (morphAttributes) {\n for (var key in morphAttributes) {\n var attributeArray = morphAttributes[key];\n var array = [];\n for (var i = 0, il = attributeArray.length; i < il; i++) {\n var attribute = attributeArray[i];\n var typedArray = new TYPED_ARRAYS[attribute.type](attribute.array);\n var bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n if (attribute.name !== undefined) bufferAttribute.name = attribute.name;\n array.push(bufferAttribute);\n }\n geometry.morphAttributes[key] = array;\n }\n }\n var groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n if (groups !== undefined) {\n for (var i = 0, n = groups.length; i !== n; ++i) {\n var group = groups[i];\n geometry.addGroup(group.start, group.count, group.materialIndex);\n }\n }\n var boundingSphere = json.data.boundingSphere;\n if (boundingSphere !== undefined) {\n var center = new Vector3();\n if (boundingSphere.center !== undefined) {\n center.fromArray(boundingSphere.center);\n }\n geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n }\n if (json.name) geometry.name = json.name;\n if (json.userData) geometry.userData = json.userData;\n return geometry;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\nvar TYPED_ARRAYS = {\n Int8Array: Int8Array,\n Uint8Array: Uint8Array,\n // Workaround for IE11 pre KB2929437. See #11440\n Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n Int16Array: Int16Array,\n Uint16Array: Uint16Array,\n Int32Array: Int32Array,\n Uint32Array: Uint32Array,\n Float32Array: Float32Array,\n Float64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n this.resourcePath = '';\n}\nObject.assign(ObjectLoader.prototype, {\n crossOrigin: 'anonymous',\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var path = this.path === undefined ? LoaderUtils.extractUrlBase(url) : this.path;\n this.resourcePath = this.resourcePath || path;\n var loader = new FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.load(url, function (text) {\n var json = null;\n try {\n json = JSON.parse(text);\n } catch (error) {\n if (onError !== undefined) onError(error);\n console.error('THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message);\n return;\n }\n var metadata = json.metadata;\n if (metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry') {\n console.error('THREE.ObjectLoader: Can\\'t load ' + url);\n return;\n }\n scope.parse(json, onLoad);\n }, onProgress, onError);\n },\n setPath: function (value) {\n this.path = value;\n return this;\n },\n setResourcePath: function (value) {\n this.resourcePath = value;\n return this;\n },\n setCrossOrigin: function (value) {\n this.crossOrigin = value;\n return this;\n },\n parse: function (json, onLoad) {\n var shapes = this.parseShape(json.shapes);\n var geometries = this.parseGeometries(json.geometries, shapes);\n var images = this.parseImages(json.images, function () {\n if (onLoad !== undefined) onLoad(object);\n });\n var textures = this.parseTextures(json.textures, images);\n var materials = this.parseMaterials(json.materials, textures);\n var object = this.parseObject(json.object, geometries, materials);\n if (json.animations) {\n object.animations = this.parseAnimations(json.animations);\n }\n if (json.images === undefined || json.images.length === 0) {\n if (onLoad !== undefined) onLoad(object);\n }\n return object;\n },\n parseShape: function (json) {\n var shapes = {};\n if (json !== undefined) {\n for (var i = 0, l = json.length; i < l; i++) {\n var shape = new Shape().fromJSON(json[i]);\n shapes[shape.uuid] = shape;\n }\n }\n return shapes;\n },\n parseGeometries: function (json, shapes) {\n var geometries = {};\n if (json !== undefined) {\n var bufferGeometryLoader = new BufferGeometryLoader();\n for (var i = 0, l = json.length; i < l; i++) {\n var geometry;\n var data = json[i];\n switch (data.type) {\n case 'PlaneGeometry':\n case 'PlaneBufferGeometry':\n geometry = new Geometries[data.type](data.width, data.height, data.widthSegments, data.heightSegments);\n break;\n case 'BoxGeometry':\n case 'BoxBufferGeometry':\n case 'CubeGeometry':\n // backwards compatible\n\n geometry = new Geometries[data.type](data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n break;\n case 'CircleGeometry':\n case 'CircleBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.segments, data.thetaStart, data.thetaLength);\n break;\n case 'CylinderGeometry':\n case 'CylinderBufferGeometry':\n geometry = new Geometries[data.type](data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n break;\n case 'ConeGeometry':\n case 'ConeBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n break;\n case 'SphereGeometry':\n case 'SphereBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n break;\n case 'DodecahedronGeometry':\n case 'DodecahedronBufferGeometry':\n case 'IcosahedronGeometry':\n case 'IcosahedronBufferGeometry':\n case 'OctahedronGeometry':\n case 'OctahedronBufferGeometry':\n case 'TetrahedronGeometry':\n case 'TetrahedronBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.detail);\n break;\n case 'RingGeometry':\n case 'RingBufferGeometry':\n geometry = new Geometries[data.type](data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n break;\n case 'TorusGeometry':\n case 'TorusBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n break;\n case 'TorusKnotGeometry':\n case 'TorusKnotBufferGeometry':\n geometry = new Geometries[data.type](data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n break;\n case 'TubeGeometry':\n case 'TubeBufferGeometry':\n // This only works for built-in curves (e.g. CatmullRomCurve3).\n // User defined curves or instances of CurvePath will not be deserialized.\n geometry = new Geometries[data.type](new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed);\n break;\n case 'LatheGeometry':\n case 'LatheBufferGeometry':\n geometry = new Geometries[data.type](data.points, data.segments, data.phiStart, data.phiLength);\n break;\n case 'PolyhedronGeometry':\n case 'PolyhedronBufferGeometry':\n geometry = new Geometries[data.type](data.vertices, data.indices, data.radius, data.details);\n break;\n case 'ShapeGeometry':\n case 'ShapeBufferGeometry':\n var geometryShapes = [];\n for (var j = 0, jl = data.shapes.length; j < jl; j++) {\n var shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n geometry = new Geometries[data.type](geometryShapes, data.curveSegments);\n break;\n case 'ExtrudeGeometry':\n case 'ExtrudeBufferGeometry':\n var geometryShapes = [];\n for (var j = 0, jl = data.shapes.length; j < jl; j++) {\n var shape = shapes[data.shapes[j]];\n geometryShapes.push(shape);\n }\n var extrudePath = data.options.extrudePath;\n if (extrudePath !== undefined) {\n data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n }\n geometry = new Geometries[data.type](geometryShapes, data.options);\n break;\n case 'BufferGeometry':\n case 'InstancedBufferGeometry':\n geometry = bufferGeometryLoader.parse(data);\n break;\n case 'Geometry':\n if ('THREE' in window && 'LegacyJSONLoader' in THREE) {\n var geometryLoader = new THREE.LegacyJSONLoader();\n geometry = geometryLoader.parse(data, this.resourcePath).geometry;\n } else {\n console.error('THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".');\n }\n break;\n default:\n console.warn('THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"');\n continue;\n }\n geometry.uuid = data.uuid;\n if (data.name !== undefined) geometry.name = data.name;\n if (geometry.isBufferGeometry === true && data.userData !== undefined) geometry.userData = data.userData;\n geometries[data.uuid] = geometry;\n }\n }\n return geometries;\n },\n parseMaterials: function (json, textures) {\n var cache = {}; // MultiMaterial\n var materials = {};\n if (json !== undefined) {\n var loader = new MaterialLoader();\n loader.setTextures(textures);\n for (var i = 0, l = json.length; i < l; i++) {\n var data = json[i];\n if (data.type === 'MultiMaterial') {\n // Deprecated\n\n var array = [];\n for (var j = 0; j < data.materials.length; j++) {\n var material = data.materials[j];\n if (cache[material.uuid] === undefined) {\n cache[material.uuid] = loader.parse(material);\n }\n array.push(cache[material.uuid]);\n }\n materials[data.uuid] = array;\n } else {\n if (cache[data.uuid] === undefined) {\n cache[data.uuid] = loader.parse(data);\n }\n materials[data.uuid] = cache[data.uuid];\n }\n }\n }\n return materials;\n },\n parseAnimations: function (json) {\n var animations = [];\n for (var i = 0; i < json.length; i++) {\n var data = json[i];\n var clip = AnimationClip.parse(data);\n if (data.uuid !== undefined) clip.uuid = data.uuid;\n animations.push(clip);\n }\n return animations;\n },\n parseImages: function (json, onLoad) {\n var scope = this;\n var images = {};\n function loadImage(url) {\n scope.manager.itemStart(url);\n return loader.load(url, function () {\n scope.manager.itemEnd(url);\n }, undefined, function () {\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n }\n if (json !== undefined && json.length > 0) {\n var manager = new LoadingManager(onLoad);\n var loader = new ImageLoader(manager);\n loader.setCrossOrigin(this.crossOrigin);\n for (var i = 0, il = json.length; i < il; i++) {\n var image = json[i];\n var url = image.url;\n if (Array.isArray(url)) {\n // load array of images e.g CubeTexture\n\n images[image.uuid] = [];\n for (var j = 0, jl = url.length; j < jl; j++) {\n var currentUrl = url[j];\n var path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(currentUrl) ? currentUrl : scope.resourcePath + currentUrl;\n images[image.uuid].push(loadImage(path));\n }\n } else {\n // load single image\n\n var path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(image.url) ? image.url : scope.resourcePath + image.url;\n images[image.uuid] = loadImage(path);\n }\n }\n }\n return images;\n },\n parseTextures: function (json, images) {\n function parseConstant(value, type) {\n if (typeof value === 'number') return value;\n console.warn('THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value);\n return type[value];\n }\n var textures = {};\n if (json !== undefined) {\n for (var i = 0, l = json.length; i < l; i++) {\n var data = json[i];\n if (data.image === undefined) {\n console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n }\n if (images[data.image] === undefined) {\n console.warn('THREE.ObjectLoader: Undefined image', data.image);\n }\n var texture;\n if (Array.isArray(images[data.image])) {\n texture = new CubeTexture(images[data.image]);\n } else {\n texture = new Texture(images[data.image]);\n }\n texture.needsUpdate = true;\n texture.uuid = data.uuid;\n if (data.name !== undefined) texture.name = data.name;\n if (data.mapping !== undefined) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n if (data.offset !== undefined) texture.offset.fromArray(data.offset);\n if (data.repeat !== undefined) texture.repeat.fromArray(data.repeat);\n if (data.center !== undefined) texture.center.fromArray(data.center);\n if (data.rotation !== undefined) texture.rotation = data.rotation;\n if (data.wrap !== undefined) {\n texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n }\n if (data.format !== undefined) texture.format = data.format;\n if (data.type !== undefined) texture.type = data.type;\n if (data.encoding !== undefined) texture.encoding = data.encoding;\n if (data.minFilter !== undefined) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n if (data.magFilter !== undefined) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n if (data.anisotropy !== undefined) texture.anisotropy = data.anisotropy;\n if (data.flipY !== undefined) texture.flipY = data.flipY;\n if (data.premultiplyAlpha !== undefined) texture.premultiplyAlpha = data.premultiplyAlpha;\n if (data.unpackAlignment !== undefined) texture.unpackAlignment = data.unpackAlignment;\n textures[data.uuid] = texture;\n }\n }\n return textures;\n },\n parseObject: function (data, geometries, materials) {\n var object;\n function getGeometry(name) {\n if (geometries[name] === undefined) {\n console.warn('THREE.ObjectLoader: Undefined geometry', name);\n }\n return geometries[name];\n }\n function getMaterial(name) {\n if (name === undefined) return undefined;\n if (Array.isArray(name)) {\n var array = [];\n for (var i = 0, l = name.length; i < l; i++) {\n var uuid = name[i];\n if (materials[uuid] === undefined) {\n console.warn('THREE.ObjectLoader: Undefined material', uuid);\n }\n array.push(materials[uuid]);\n }\n return array;\n }\n if (materials[name] === undefined) {\n console.warn('THREE.ObjectLoader: Undefined material', name);\n }\n return materials[name];\n }\n switch (data.type) {\n case 'Scene':\n object = new Scene();\n if (data.background !== undefined) {\n if (Number.isInteger(data.background)) {\n object.background = new Color(data.background);\n }\n }\n if (data.fog !== undefined) {\n if (data.fog.type === 'Fog') {\n object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n } else if (data.fog.type === 'FogExp2') {\n object.fog = new FogExp2(data.fog.color, data.fog.density);\n }\n }\n break;\n case 'PerspectiveCamera':\n object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n if (data.focus !== undefined) object.focus = data.focus;\n if (data.zoom !== undefined) object.zoom = data.zoom;\n if (data.filmGauge !== undefined) object.filmGauge = data.filmGauge;\n if (data.filmOffset !== undefined) object.filmOffset = data.filmOffset;\n if (data.view !== undefined) object.view = Object.assign({}, data.view);\n break;\n case 'OrthographicCamera':\n object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n if (data.zoom !== undefined) object.zoom = data.zoom;\n if (data.view !== undefined) object.view = Object.assign({}, data.view);\n break;\n case 'AmbientLight':\n object = new AmbientLight(data.color, data.intensity);\n break;\n case 'DirectionalLight':\n object = new DirectionalLight(data.color, data.intensity);\n break;\n case 'PointLight':\n object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n break;\n case 'RectAreaLight':\n object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n break;\n case 'SpotLight':\n object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n break;\n case 'HemisphereLight':\n object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n break;\n case 'SkinnedMesh':\n console.warn('THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.');\n case 'Mesh':\n var geometry = getGeometry(data.geometry);\n var material = getMaterial(data.material);\n if (geometry.bones && geometry.bones.length > 0) {\n object = new SkinnedMesh(geometry, material);\n } else {\n object = new Mesh(geometry, material);\n }\n if (data.drawMode !== undefined) object.setDrawMode(data.drawMode);\n break;\n case 'LOD':\n object = new LOD();\n break;\n case 'Line':\n object = new Line(getGeometry(data.geometry), getMaterial(data.material), data.mode);\n break;\n case 'LineLoop':\n object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case 'LineSegments':\n object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case 'PointCloud':\n case 'Points':\n object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n break;\n case 'Sprite':\n object = new Sprite(getMaterial(data.material));\n break;\n case 'Group':\n object = new Group();\n break;\n default:\n object = new Object3D();\n }\n object.uuid = data.uuid;\n if (data.name !== undefined) object.name = data.name;\n if (data.matrix !== undefined) {\n object.matrix.fromArray(data.matrix);\n if (data.matrixAutoUpdate !== undefined) object.matrixAutoUpdate = data.matrixAutoUpdate;\n if (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale);\n } else {\n if (data.position !== undefined) object.position.fromArray(data.position);\n if (data.rotation !== undefined) object.rotation.fromArray(data.rotation);\n if (data.quaternion !== undefined) object.quaternion.fromArray(data.quaternion);\n if (data.scale !== undefined) object.scale.fromArray(data.scale);\n }\n if (data.castShadow !== undefined) object.castShadow = data.castShadow;\n if (data.receiveShadow !== undefined) object.receiveShadow = data.receiveShadow;\n if (data.shadow) {\n if (data.shadow.bias !== undefined) object.shadow.bias = data.shadow.bias;\n if (data.shadow.radius !== undefined) object.shadow.radius = data.shadow.radius;\n if (data.shadow.mapSize !== undefined) object.shadow.mapSize.fromArray(data.shadow.mapSize);\n if (data.shadow.camera !== undefined) object.shadow.camera = this.parseObject(data.shadow.camera);\n }\n if (data.visible !== undefined) object.visible = data.visible;\n if (data.frustumCulled !== undefined) object.frustumCulled = data.frustumCulled;\n if (data.renderOrder !== undefined) object.renderOrder = data.renderOrder;\n if (data.userData !== undefined) object.userData = data.userData;\n if (data.layers !== undefined) object.layers.mask = data.layers;\n if (data.children !== undefined) {\n var children = data.children;\n for (var i = 0; i < children.length; i++) {\n object.add(this.parseObject(children[i], geometries, materials));\n }\n }\n if (data.type === 'LOD') {\n var levels = data.levels;\n for (var l = 0; l < levels.length; l++) {\n var level = levels[l];\n var child = object.getObjectByProperty('uuid', level.object);\n if (child !== undefined) {\n object.addLevel(child, level.distance);\n }\n }\n }\n return object;\n }\n});\nvar TEXTURE_MAPPING = {\n UVMapping: UVMapping,\n CubeReflectionMapping: CubeReflectionMapping,\n CubeRefractionMapping: CubeRefractionMapping,\n EquirectangularReflectionMapping: EquirectangularReflectionMapping,\n EquirectangularRefractionMapping: EquirectangularRefractionMapping,\n SphericalReflectionMapping: SphericalReflectionMapping,\n CubeUVReflectionMapping: CubeUVReflectionMapping,\n CubeUVRefractionMapping: CubeUVRefractionMapping\n};\nvar TEXTURE_WRAPPING = {\n RepeatWrapping: RepeatWrapping,\n ClampToEdgeWrapping: ClampToEdgeWrapping,\n MirroredRepeatWrapping: MirroredRepeatWrapping\n};\nvar TEXTURE_FILTER = {\n NearestFilter: NearestFilter,\n NearestMipMapNearestFilter: NearestMipMapNearestFilter,\n NearestMipMapLinearFilter: NearestMipMapLinearFilter,\n LinearFilter: LinearFilter,\n LinearMipMapNearestFilter: LinearMipMapNearestFilter,\n LinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\nfunction ImageBitmapLoader(manager) {\n if (typeof createImageBitmap === 'undefined') {\n console.warn('THREE.ImageBitmapLoader: createImageBitmap() not supported.');\n }\n if (typeof fetch === 'undefined') {\n console.warn('THREE.ImageBitmapLoader: fetch() not supported.');\n }\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n this.options = undefined;\n}\nImageBitmapLoader.prototype = {\n constructor: ImageBitmapLoader,\n setOptions: function setOptions(options) {\n this.options = options;\n return this;\n },\n load: function (url, onLoad, onProgress, onError) {\n if (url === undefined) url = '';\n if (this.path !== undefined) url = this.path + url;\n url = this.manager.resolveURL(url);\n var scope = this;\n var cached = Cache.get(url);\n if (cached !== undefined) {\n scope.manager.itemStart(url);\n setTimeout(function () {\n if (onLoad) onLoad(cached);\n scope.manager.itemEnd(url);\n }, 0);\n return cached;\n }\n fetch(url).then(function (res) {\n return res.blob();\n }).then(function (blob) {\n if (scope.options === undefined) {\n // Workaround for FireFox. It causes an error if you pass options.\n return createImageBitmap(blob);\n } else {\n return createImageBitmap(blob, scope.options);\n }\n }).then(function (imageBitmap) {\n Cache.add(url, imageBitmap);\n if (onLoad) onLoad(imageBitmap);\n scope.manager.itemEnd(url);\n }).catch(function (e) {\n if (onError) onError(e);\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n });\n scope.manager.itemStart(url);\n },\n setCrossOrigin: function /* value */\n () {\n return this;\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n this.type = 'ShapePath';\n this.color = new Color();\n this.subPaths = [];\n this.currentPath = null;\n}\nObject.assign(ShapePath.prototype, {\n moveTo: function (x, y) {\n this.currentPath = new Path();\n this.subPaths.push(this.currentPath);\n this.currentPath.moveTo(x, y);\n },\n lineTo: function (x, y) {\n this.currentPath.lineTo(x, y);\n },\n quadraticCurveTo: function (aCPx, aCPy, aX, aY) {\n this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n },\n bezierCurveTo: function (aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n },\n splineThru: function (pts) {\n this.currentPath.splineThru(pts);\n },\n toShapes: function (isCCW, noHoles) {\n function toShapesNoHoles(inSubpaths) {\n var shapes = [];\n for (var i = 0, l = inSubpaths.length; i < l; i++) {\n var tmpPath = inSubpaths[i];\n var tmpShape = new Shape();\n tmpShape.curves = tmpPath.curves;\n shapes.push(tmpShape);\n }\n return shapes;\n }\n function isPointInsidePolygon(inPt, inPolygon) {\n var polyLen = inPolygon.length;\n\n // inPt on polygon contour => immediate success or\n // toggling of inside/outside at every single! intersection point of an edge\n // with the horizontal line through inPt, left of inPt\n // not counting lowerY endpoints of edges and whole edges on that line\n var inside = false;\n for (var p = polyLen - 1, q = 0; q < polyLen; p = q++) {\n var edgeLowPt = inPolygon[p];\n var edgeHighPt = inPolygon[q];\n var edgeDx = edgeHighPt.x - edgeLowPt.x;\n var edgeDy = edgeHighPt.y - edgeLowPt.y;\n if (Math.abs(edgeDy) > Number.EPSILON) {\n // not parallel\n if (edgeDy < 0) {\n edgeLowPt = inPolygon[q];\n edgeDx = -edgeDx;\n edgeHighPt = inPolygon[p];\n edgeDy = -edgeDy;\n }\n if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y) continue;\n if (inPt.y === edgeLowPt.y) {\n if (inPt.x === edgeLowPt.x) return true; // inPt is on contour ?\n // continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n } else {\n var perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n if (perpEdge === 0) return true; // inPt is on contour ?\n if (perpEdge < 0) continue;\n inside = !inside; // true intersection left of inPt\n }\n } else {\n // parallel or collinear\n if (inPt.y !== edgeLowPt.y) continue; // parallel\n // edge lies on the same horizontal line as inPt\n if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x) return true; // inPt: Point on contour !\n // continue;\n }\n }\n\n return inside;\n }\n var isClockWise = ShapeUtils.isClockWise;\n var subPaths = this.subPaths;\n if (subPaths.length === 0) return [];\n if (noHoles === true) return toShapesNoHoles(subPaths);\n var solid,\n tmpPath,\n tmpShape,\n shapes = [];\n if (subPaths.length === 1) {\n tmpPath = subPaths[0];\n tmpShape = new Shape();\n tmpShape.curves = tmpPath.curves;\n shapes.push(tmpShape);\n return shapes;\n }\n var holesFirst = !isClockWise(subPaths[0].getPoints());\n holesFirst = isCCW ? !holesFirst : holesFirst;\n\n // console.log(\"Holes first\", holesFirst);\n\n var betterShapeHoles = [];\n var newShapes = [];\n var newShapeHoles = [];\n var mainIdx = 0;\n var tmpPoints;\n newShapes[mainIdx] = undefined;\n newShapeHoles[mainIdx] = [];\n for (var i = 0, l = subPaths.length; i < l; i++) {\n tmpPath = subPaths[i];\n tmpPoints = tmpPath.getPoints();\n solid = isClockWise(tmpPoints);\n solid = isCCW ? !solid : solid;\n if (solid) {\n if (!holesFirst && newShapes[mainIdx]) mainIdx++;\n newShapes[mainIdx] = {\n s: new Shape(),\n p: tmpPoints\n };\n newShapes[mainIdx].s.curves = tmpPath.curves;\n if (holesFirst) mainIdx++;\n newShapeHoles[mainIdx] = [];\n\n //console.log('cw', i);\n } else {\n newShapeHoles[mainIdx].push({\n h: tmpPath,\n p: tmpPoints[0]\n });\n\n //console.log('ccw', i);\n }\n }\n\n // only Holes? -> probably all Shapes with wrong orientation\n if (!newShapes[0]) return toShapesNoHoles(subPaths);\n if (newShapes.length > 1) {\n var ambiguous = false;\n var toChange = [];\n for (var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n betterShapeHoles[sIdx] = [];\n }\n for (var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n var sho = newShapeHoles[sIdx];\n for (var hIdx = 0; hIdx < sho.length; hIdx++) {\n var ho = sho[hIdx];\n var hole_unassigned = true;\n for (var s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n if (sIdx !== s2Idx) toChange.push({\n froms: sIdx,\n tos: s2Idx,\n hole: hIdx\n });\n if (hole_unassigned) {\n hole_unassigned = false;\n betterShapeHoles[s2Idx].push(ho);\n } else {\n ambiguous = true;\n }\n }\n }\n if (hole_unassigned) {\n betterShapeHoles[sIdx].push(ho);\n }\n }\n }\n // console.log(\"ambiguous: \", ambiguous);\n if (toChange.length > 0) {\n // console.log(\"to change: \", toChange);\n if (!ambiguous) newShapeHoles = betterShapeHoles;\n }\n }\n var tmpHoles;\n for (var i = 0, il = newShapes.length; i < il; i++) {\n tmpShape = newShapes[i].s;\n shapes.push(tmpShape);\n tmpHoles = newShapeHoles[i];\n for (var j = 0, jl = tmpHoles.length; j < jl; j++) {\n tmpShape.holes.push(tmpHoles[j].h);\n }\n }\n\n //console.log(\"shape\", shapes);\n\n return shapes;\n }\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Font(data) {\n this.type = 'Font';\n this.data = data;\n}\nObject.assign(Font.prototype, {\n isFont: true,\n generateShapes: function (text, size) {\n if (size === undefined) size = 100;\n var shapes = [];\n var paths = createPaths(text, size, this.data);\n for (var p = 0, pl = paths.length; p < pl; p++) {\n Array.prototype.push.apply(shapes, paths[p].toShapes());\n }\n return shapes;\n }\n});\nfunction createPaths(text, size, data) {\n var chars = Array.from ? Array.from(text) : String(text).split(''); // see #13988\n var scale = size / data.resolution;\n var line_height = (data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness) * scale;\n var paths = [];\n var offsetX = 0,\n offsetY = 0;\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n if (char === '\\n') {\n offsetX = 0;\n offsetY -= line_height;\n } else {\n var ret = createPath(char, scale, offsetX, offsetY, data);\n offsetX += ret.offsetX;\n paths.push(ret.path);\n }\n }\n return paths;\n}\nfunction createPath(char, scale, offsetX, offsetY, data) {\n var glyph = data.glyphs[char] || data.glyphs['?'];\n if (!glyph) return;\n var path = new ShapePath();\n var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n if (glyph.o) {\n var outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' '));\n for (var i = 0, l = outline.length; i < l;) {\n var action = outline[i++];\n switch (action) {\n case 'm':\n // moveTo\n\n x = outline[i++] * scale + offsetX;\n y = outline[i++] * scale + offsetY;\n path.moveTo(x, y);\n break;\n case 'l':\n // lineTo\n\n x = outline[i++] * scale + offsetX;\n y = outline[i++] * scale + offsetY;\n path.lineTo(x, y);\n break;\n case 'q':\n // quadraticCurveTo\n\n cpx = outline[i++] * scale + offsetX;\n cpy = outline[i++] * scale + offsetY;\n cpx1 = outline[i++] * scale + offsetX;\n cpy1 = outline[i++] * scale + offsetY;\n path.quadraticCurveTo(cpx1, cpy1, cpx, cpy);\n break;\n case 'b':\n // bezierCurveTo\n\n cpx = outline[i++] * scale + offsetX;\n cpy = outline[i++] * scale + offsetY;\n cpx1 = outline[i++] * scale + offsetX;\n cpy1 = outline[i++] * scale + offsetY;\n cpx2 = outline[i++] * scale + offsetX;\n cpy2 = outline[i++] * scale + offsetY;\n path.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, cpx, cpy);\n break;\n }\n }\n }\n return {\n offsetX: glyph.ha * scale,\n path: path\n };\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(FontLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var scope = this;\n var loader = new FileLoader(this.manager);\n loader.setPath(this.path);\n loader.load(url, function (text) {\n var json;\n try {\n json = JSON.parse(text);\n } catch (e) {\n console.warn('THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.');\n json = JSON.parse(text.substring(65, text.length - 2));\n }\n var font = scope.parse(json);\n if (onLoad) onLoad(font);\n }, onProgress, onError);\n },\n parse: function (json) {\n return new Font(json);\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\nLoader.Handlers = {\n handlers: [],\n add: function (regex, loader) {\n this.handlers.push(regex, loader);\n },\n get: function (file) {\n var handlers = this.handlers;\n for (var i = 0, l = handlers.length; i < l; i += 2) {\n var regex = handlers[i];\n var loader = handlers[i + 1];\n if (regex.test(file)) {\n return loader;\n }\n }\n return null;\n }\n};\nObject.assign(Loader.prototype, {\n crossOrigin: 'anonymous',\n onLoadStart: function () {},\n onLoadProgress: function () {},\n onLoadComplete: function () {},\n initMaterials: function (materials, texturePath, crossOrigin) {\n var array = [];\n for (var i = 0; i < materials.length; ++i) {\n array[i] = this.createMaterial(materials[i], texturePath, crossOrigin);\n }\n return array;\n },\n createMaterial: function () {\n var BlendingMode = {\n NoBlending: NoBlending,\n NormalBlending: NormalBlending,\n AdditiveBlending: AdditiveBlending,\n SubtractiveBlending: SubtractiveBlending,\n MultiplyBlending: MultiplyBlending,\n CustomBlending: CustomBlending\n };\n var color = new Color();\n var textureLoader = new TextureLoader();\n var materialLoader = new MaterialLoader();\n return function createMaterial(m, texturePath, crossOrigin) {\n // convert from old material format\n\n var textures = {};\n function loadTexture(path, repeat, offset, wrap, anisotropy) {\n var fullPath = texturePath + path;\n var loader = Loader.Handlers.get(fullPath);\n var texture;\n if (loader !== null) {\n texture = loader.load(fullPath);\n } else {\n textureLoader.setCrossOrigin(crossOrigin);\n texture = textureLoader.load(fullPath);\n }\n if (repeat !== undefined) {\n texture.repeat.fromArray(repeat);\n if (repeat[0] !== 1) texture.wrapS = RepeatWrapping;\n if (repeat[1] !== 1) texture.wrapT = RepeatWrapping;\n }\n if (offset !== undefined) {\n texture.offset.fromArray(offset);\n }\n if (wrap !== undefined) {\n if (wrap[0] === 'repeat') texture.wrapS = RepeatWrapping;\n if (wrap[0] === 'mirror') texture.wrapS = MirroredRepeatWrapping;\n if (wrap[1] === 'repeat') texture.wrapT = RepeatWrapping;\n if (wrap[1] === 'mirror') texture.wrapT = MirroredRepeatWrapping;\n }\n if (anisotropy !== undefined) {\n texture.anisotropy = anisotropy;\n }\n var uuid = _Math.generateUUID();\n textures[uuid] = texture;\n return uuid;\n }\n\n //\n\n var json = {\n uuid: _Math.generateUUID(),\n type: 'MeshLambertMaterial'\n };\n for (var name in m) {\n var value = m[name];\n switch (name) {\n case 'DbgColor':\n case 'DbgIndex':\n case 'opticalDensity':\n case 'illumination':\n break;\n case 'DbgName':\n json.name = value;\n break;\n case 'blending':\n json.blending = BlendingMode[value];\n break;\n case 'colorAmbient':\n case 'mapAmbient':\n console.warn('THREE.Loader.createMaterial:', name, 'is no longer supported.');\n break;\n case 'colorDiffuse':\n json.color = color.fromArray(value).getHex();\n break;\n case 'colorSpecular':\n json.specular = color.fromArray(value).getHex();\n break;\n case 'colorEmissive':\n json.emissive = color.fromArray(value).getHex();\n break;\n case 'specularCoef':\n json.shininess = value;\n break;\n case 'shading':\n if (value.toLowerCase() === 'basic') json.type = 'MeshBasicMaterial';\n if (value.toLowerCase() === 'phong') json.type = 'MeshPhongMaterial';\n if (value.toLowerCase() === 'standard') json.type = 'MeshStandardMaterial';\n break;\n case 'mapDiffuse':\n json.map = loadTexture(value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy);\n break;\n case 'mapDiffuseRepeat':\n case 'mapDiffuseOffset':\n case 'mapDiffuseWrap':\n case 'mapDiffuseAnisotropy':\n break;\n case 'mapEmissive':\n json.emissiveMap = loadTexture(value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy);\n break;\n case 'mapEmissiveRepeat':\n case 'mapEmissiveOffset':\n case 'mapEmissiveWrap':\n case 'mapEmissiveAnisotropy':\n break;\n case 'mapLight':\n json.lightMap = loadTexture(value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy);\n break;\n case 'mapLightRepeat':\n case 'mapLightOffset':\n case 'mapLightWrap':\n case 'mapLightAnisotropy':\n break;\n case 'mapAO':\n json.aoMap = loadTexture(value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy);\n break;\n case 'mapAORepeat':\n case 'mapAOOffset':\n case 'mapAOWrap':\n case 'mapAOAnisotropy':\n break;\n case 'mapBump':\n json.bumpMap = loadTexture(value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy);\n break;\n case 'mapBumpScale':\n json.bumpScale = value;\n break;\n case 'mapBumpRepeat':\n case 'mapBumpOffset':\n case 'mapBumpWrap':\n case 'mapBumpAnisotropy':\n break;\n case 'mapNormal':\n json.normalMap = loadTexture(value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy);\n break;\n case 'mapNormalFactor':\n json.normalScale = value;\n break;\n case 'mapNormalRepeat':\n case 'mapNormalOffset':\n case 'mapNormalWrap':\n case 'mapNormalAnisotropy':\n break;\n case 'mapSpecular':\n json.specularMap = loadTexture(value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy);\n break;\n case 'mapSpecularRepeat':\n case 'mapSpecularOffset':\n case 'mapSpecularWrap':\n case 'mapSpecularAnisotropy':\n break;\n case 'mapMetalness':\n json.metalnessMap = loadTexture(value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy);\n break;\n case 'mapMetalnessRepeat':\n case 'mapMetalnessOffset':\n case 'mapMetalnessWrap':\n case 'mapMetalnessAnisotropy':\n break;\n case 'mapRoughness':\n json.roughnessMap = loadTexture(value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy);\n break;\n case 'mapRoughnessRepeat':\n case 'mapRoughnessOffset':\n case 'mapRoughnessWrap':\n case 'mapRoughnessAnisotropy':\n break;\n case 'mapAlpha':\n json.alphaMap = loadTexture(value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy);\n break;\n case 'mapAlphaRepeat':\n case 'mapAlphaOffset':\n case 'mapAlphaWrap':\n case 'mapAlphaAnisotropy':\n break;\n case 'flipSided':\n json.side = BackSide;\n break;\n case 'doubleSided':\n json.side = DoubleSide;\n break;\n case 'transparency':\n console.warn('THREE.Loader.createMaterial: transparency has been renamed to opacity');\n json.opacity = value;\n break;\n case 'depthTest':\n case 'depthWrite':\n case 'colorWrite':\n case 'opacity':\n case 'reflectivity':\n case 'transparent':\n case 'visible':\n case 'wireframe':\n json[name] = value;\n break;\n case 'vertexColors':\n if (value === true) json.vertexColors = VertexColors;\n if (value === 'face') json.vertexColors = FaceColors;\n break;\n default:\n console.error('THREE.Loader.createMaterial: Unsupported', name, value);\n break;\n }\n }\n if (json.type === 'MeshBasicMaterial') delete json.emissive;\n if (json.type !== 'MeshPhongMaterial') delete json.specular;\n if (json.opacity < 1) json.transparent = true;\n materialLoader.setTextures(textures);\n return materialLoader.parse(json);\n };\n }()\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\nvar AudioContext = {\n getContext: function () {\n if (context === undefined) {\n context = new (window.AudioContext || window.webkitAudioContext)();\n }\n return context;\n },\n setContext: function (value) {\n context = value;\n }\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader(manager) {\n this.manager = manager !== undefined ? manager : DefaultLoadingManager;\n}\nObject.assign(AudioLoader.prototype, {\n load: function (url, onLoad, onProgress, onError) {\n var loader = new FileLoader(this.manager);\n loader.setResponseType('arraybuffer');\n loader.setPath(this.path);\n loader.load(url, function (buffer) {\n // Create a copy of the buffer. The `decodeAudioData` method\n // detaches the buffer when complete, preventing reuse.\n var bufferCopy = buffer.slice(0);\n var context = AudioContext.getContext();\n context.decodeAudioData(bufferCopy, function (audioBuffer) {\n onLoad(audioBuffer);\n });\n }, onProgress, onError);\n },\n setPath: function (value) {\n this.path = value;\n return this;\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n this.coefficients = [];\n for (var i = 0; i < 9; i++) {\n this.coefficients.push(new Vector3());\n }\n}\nObject.assign(SphericalHarmonics3.prototype, {\n isSphericalHarmonics3: true,\n set: function (coefficients) {\n for (var i = 0; i < 9; i++) {\n this.coefficients[i].copy(coefficients[i]);\n }\n return this;\n },\n zero: function () {\n for (var i = 0; i < 9; i++) {\n this.coefficients[i].set(0, 0, 0);\n }\n return this;\n },\n // get the radiance in the direction of the normal\n // target is a Vector3\n getAt: function (normal, target) {\n // normal is assumed to be unit length\n\n var x = normal.x,\n y = normal.y,\n z = normal.z;\n var coeff = this.coefficients;\n\n // band 0\n target = coeff[0] * 0.282095;\n\n // band 1\n target += coeff[1] * 0.488603 * y;\n target += coeff[2] * 0.488603 * z;\n target += coeff[3] * 0.488603 * x;\n\n // band 2\n target += coeff[4] * 1.092548 * (x * y);\n target += coeff[5] * 1.092548 * (y * z);\n target += coeff[6] * 0.315392 * (3.0 * z * z - 1.0);\n target += coeff[7] * 1.092548 * (x * z);\n target += coeff[8] * 0.546274 * (x * x - y * y);\n return target;\n },\n // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n // target is a Vector3\n // https://graphics.stanford.edu/papers/envmap/envmap.pdf\n getIrradianceAt: function (normal, target) {\n // normal is assumed to be unit length\n\n var x = normal.x,\n y = normal.y,\n z = normal.z;\n var coeff = this.coefficients;\n\n // band 0\n target = coeff[0] * 0.886227; // π * 0.282095\n\n // band 1\n target += coeff[1] * 2.0 * 0.511664 * y; // ( 2 * π / 3 ) * 0.488603\n target += coeff[2] * 2.0 * 0.511664 * z;\n target += coeff[3] * 2.0 * 0.511664 * x;\n\n // band 2\n target += coeff[4] * 2.0 * 0.429043 * x * y; // ( π / 4 ) * 1.092548\n target += coeff[5] * 2.0 * 0.429043 * y * z;\n target += coeff[6] * (0.743125 * z * z - 0.247708); // ( π / 4 ) * 0.315392 * 3\n target += coeff[7] * 2.0 * 0.429043 * x * z;\n target += coeff[8] * 0.429043 * (x * x - y * y); // ( π / 4 ) * 0.546274\n\n return target;\n },\n add: function (sh) {\n for (var i = 0; i < 9; i++) {\n this.coefficients[i].add(sh.coefficients[i]);\n }\n return this;\n },\n scale: function (s) {\n for (var i = 0; i < 9; i++) {\n this.coefficients[i].multiplyScalar(s);\n }\n return this;\n },\n lerp: function (sh, alpha) {\n for (var i = 0; i < 9; i++) {\n this.coefficients[i].lerp(sh.coefficients[i], alpha);\n }\n return this;\n },\n equals: function (sh) {\n for (var i = 0; i < 9; i++) {\n if (!this.coefficients[i].equals(sh.coefficients[i])) {\n return false;\n }\n }\n return true;\n },\n copy: function (sh) {\n return this.set(sh.coefficients);\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n fromArray: function (array) {\n var coefficients = this.coefficients;\n for (var i = 0; i < 9; i++) {\n coefficients[i].fromArray(array, i * 3);\n }\n return this;\n },\n toArray: function () {\n var array = [];\n var coefficients = this.coefficients;\n for (var i = 0; i < 9; i++) {\n coefficients[i].toArray(array, i * 3);\n }\n return array;\n }\n});\nObject.assign(SphericalHarmonics3, {\n // evaluate the basis functions\n // shBasis is an Array[ 9 ]\n getBasisAt: function (normal, shBasis) {\n // normal is assumed to be unit length\n\n var x = normal.x,\n y = normal.y,\n z = normal.z;\n\n // band 0\n shBasis[0] = 0.282095;\n\n // band 1\n shBasis[1] = 0.488603 * y;\n shBasis[2] = 0.488603 * z;\n shBasis[3] = 0.488603 * x;\n\n // band 2\n shBasis[4] = 1.092548 * x * y;\n shBasis[5] = 1.092548 * y * z;\n shBasis[6] = 0.315392 * (3 * z * z - 1);\n shBasis[7] = 1.092548 * x * z;\n shBasis[8] = 0.546274 * (x * x - y * y);\n }\n});\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe(sh, intensity) {\n Light.call(this, undefined, intensity);\n this.sh = sh !== undefined ? sh : new SphericalHarmonics3();\n}\nLightProbe.prototype = Object.assign(Object.create(Light.prototype), {\n constructor: LightProbe,\n isLightProbe: true,\n copy: function (source) {\n Light.prototype.copy.call(this, source);\n this.sh.copy(source.sh);\n this.intensity = source.intensity;\n return this;\n },\n toJSON: function (meta) {\n var data = Light.prototype.toJSON.call(this, meta);\n\n // data.sh = this.sh.toArray(); // todo\n\n return data;\n }\n});\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe(skyColor, groundColor, intensity) {\n LightProbe.call(this, undefined, intensity);\n var color1 = new Color().set(skyColor);\n var color2 = new Color().set(groundColor);\n var sky = new Vector3(color1.r, color1.g, color1.b);\n var ground = new Vector3(color2.r, color2.g, color2.b);\n\n // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n var c0 = Math.sqrt(Math.PI);\n var c1 = c0 * Math.sqrt(0.75);\n this.sh.coefficients[0].copy(sky).add(ground).multiplyScalar(c0);\n this.sh.coefficients[1].copy(sky).sub(ground).multiplyScalar(c1);\n}\nHemisphereLightProbe.prototype = Object.assign(Object.create(LightProbe.prototype), {\n constructor: HemisphereLightProbe,\n isHemisphereLightProbe: true,\n copy: function (source) {\n // modifying colors not currently supported\n\n LightProbe.prototype.copy.call(this, source);\n return this;\n },\n toJSON: function (meta) {\n var data = LightProbe.prototype.toJSON.call(this, meta);\n\n // data.sh = this.sh.toArray(); // todo\n\n return data;\n }\n});\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe(color, intensity) {\n LightProbe.call(this, undefined, intensity);\n var color1 = new Color().set(color);\n\n // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n this.sh.coefficients[0].set(color1.r, color1.g, color1.b).multiplyScalar(2 * Math.sqrt(Math.PI));\n}\nAmbientLightProbe.prototype = Object.assign(Object.create(LightProbe.prototype), {\n constructor: AmbientLightProbe,\n isAmbientLightProbe: true,\n copy: function (source) {\n // modifying color not currently supported\n\n LightProbe.prototype.copy.call(this, source);\n return this;\n },\n toJSON: function (meta) {\n var data = LightProbe.prototype.toJSON.call(this, meta);\n\n // data.sh = this.sh.toArray(); // todo\n\n return data;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n this.type = 'StereoCamera';\n this.aspect = 1;\n this.eyeSep = 0.064;\n this.cameraL = new PerspectiveCamera();\n this.cameraL.layers.enable(1);\n this.cameraL.matrixAutoUpdate = false;\n this.cameraR = new PerspectiveCamera();\n this.cameraR.layers.enable(2);\n this.cameraR.matrixAutoUpdate = false;\n}\nObject.assign(StereoCamera.prototype, {\n update: function () {\n var instance, focus, fov, aspect, near, far, zoom, eyeSep;\n var eyeRight = new Matrix4();\n var eyeLeft = new Matrix4();\n return function update(camera) {\n var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || aspect !== camera.aspect * this.aspect || near !== camera.near || far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n if (needsUpdate) {\n instance = this;\n focus = camera.focus;\n fov = camera.fov;\n aspect = camera.aspect * this.aspect;\n near = camera.near;\n far = camera.far;\n zoom = camera.zoom;\n\n // Off-axis stereoscopic effect based on\n // http://paulbourke.net/stereographics/stereorender/\n\n var projectionMatrix = camera.projectionMatrix.clone();\n eyeSep = this.eyeSep / 2;\n var eyeSepOnProjection = eyeSep * near / focus;\n var ymax = near * Math.tan(_Math.DEG2RAD * fov * 0.5) / zoom;\n var xmin, xmax;\n\n // translate xOffset\n\n eyeLeft.elements[12] = -eyeSep;\n eyeRight.elements[12] = eyeSep;\n\n // for left eye\n\n xmin = -ymax * aspect + eyeSepOnProjection;\n xmax = ymax * aspect + eyeSepOnProjection;\n projectionMatrix.elements[0] = 2 * near / (xmax - xmin);\n projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraL.projectionMatrix.copy(projectionMatrix);\n\n // for right eye\n\n xmin = -ymax * aspect - eyeSepOnProjection;\n xmax = ymax * aspect - eyeSepOnProjection;\n projectionMatrix.elements[0] = 2 * near / (xmax - xmin);\n projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n this.cameraR.projectionMatrix.copy(projectionMatrix);\n }\n this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(eyeLeft);\n this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(eyeRight);\n };\n }()\n});\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90,\n aspect = 1;\nfunction CubeCamera(near, far, cubeResolution, options) {\n Object3D.call(this);\n this.type = 'CubeCamera';\n var cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n cameraPX.up.set(0, -1, 0);\n cameraPX.lookAt(new Vector3(1, 0, 0));\n this.add(cameraPX);\n var cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n cameraNX.up.set(0, -1, 0);\n cameraNX.lookAt(new Vector3(-1, 0, 0));\n this.add(cameraNX);\n var cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n cameraPY.up.set(0, 0, 1);\n cameraPY.lookAt(new Vector3(0, 1, 0));\n this.add(cameraPY);\n var cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n cameraNY.up.set(0, 0, -1);\n cameraNY.lookAt(new Vector3(0, -1, 0));\n this.add(cameraNY);\n var cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraPZ.up.set(0, -1, 0);\n cameraPZ.lookAt(new Vector3(0, 0, 1));\n this.add(cameraPZ);\n var cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n cameraNZ.up.set(0, -1, 0);\n cameraNZ.lookAt(new Vector3(0, 0, -1));\n this.add(cameraNZ);\n options = options || {\n format: RGBFormat,\n magFilter: LinearFilter,\n minFilter: LinearFilter\n };\n this.renderTarget = new WebGLRenderTargetCube(cubeResolution, cubeResolution, options);\n this.renderTarget.texture.name = \"CubeCamera\";\n this.update = function (renderer, scene) {\n if (this.parent === null) this.updateMatrixWorld();\n var currentRenderTarget = renderer.getRenderTarget();\n var renderTarget = this.renderTarget;\n var generateMipmaps = renderTarget.texture.generateMipmaps;\n renderTarget.texture.generateMipmaps = false;\n renderer.setRenderTarget(renderTarget, 0);\n renderer.render(scene, cameraPX);\n renderer.setRenderTarget(renderTarget, 1);\n renderer.render(scene, cameraNX);\n renderer.setRenderTarget(renderTarget, 2);\n renderer.render(scene, cameraPY);\n renderer.setRenderTarget(renderTarget, 3);\n renderer.render(scene, cameraNY);\n renderer.setRenderTarget(renderTarget, 4);\n renderer.render(scene, cameraPZ);\n renderTarget.texture.generateMipmaps = generateMipmaps;\n renderer.setRenderTarget(renderTarget, 5);\n renderer.render(scene, cameraNZ);\n renderer.setRenderTarget(currentRenderTarget);\n };\n this.clear = function (renderer, color, depth, stencil) {\n var currentRenderTarget = renderer.getRenderTarget();\n var renderTarget = this.renderTarget;\n for (var i = 0; i < 6; i++) {\n renderer.setRenderTarget(renderTarget, i);\n renderer.clear(color, depth, stencil);\n }\n renderer.setRenderTarget(currentRenderTarget);\n };\n}\nCubeCamera.prototype = Object.create(Object3D.prototype);\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock(autoStart) {\n this.autoStart = autoStart !== undefined ? autoStart : true;\n this.startTime = 0;\n this.oldTime = 0;\n this.elapsedTime = 0;\n this.running = false;\n}\nObject.assign(Clock.prototype, {\n start: function () {\n this.startTime = (typeof performance === 'undefined' ? Date : performance).now(); // see #10732\n\n this.oldTime = this.startTime;\n this.elapsedTime = 0;\n this.running = true;\n },\n stop: function () {\n this.getElapsedTime();\n this.running = false;\n this.autoStart = false;\n },\n getElapsedTime: function () {\n this.getDelta();\n return this.elapsedTime;\n },\n getDelta: function () {\n var diff = 0;\n if (this.autoStart && !this.running) {\n this.start();\n return 0;\n }\n if (this.running) {\n var newTime = (typeof performance === 'undefined' ? Date : performance).now();\n diff = (newTime - this.oldTime) / 1000;\n this.oldTime = newTime;\n this.elapsedTime += diff;\n }\n return diff;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n Object3D.call(this);\n this.type = 'AudioListener';\n this.context = AudioContext.getContext();\n this.gain = this.context.createGain();\n this.gain.connect(this.context.destination);\n this.filter = null;\n this.timeDelta = 0;\n}\nAudioListener.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: AudioListener,\n getInput: function () {\n return this.gain;\n },\n removeFilter: function () {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n this.gain.connect(this.context.destination);\n this.filter = null;\n }\n return this;\n },\n getFilter: function () {\n return this.filter;\n },\n setFilter: function (value) {\n if (this.filter !== null) {\n this.gain.disconnect(this.filter);\n this.filter.disconnect(this.context.destination);\n } else {\n this.gain.disconnect(this.context.destination);\n }\n this.filter = value;\n this.gain.connect(this.filter);\n this.filter.connect(this.context.destination);\n return this;\n },\n getMasterVolume: function () {\n return this.gain.gain.value;\n },\n setMasterVolume: function (value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n },\n updateMatrixWorld: function () {\n var position = new Vector3();\n var quaternion = new Quaternion();\n var scale = new Vector3();\n var orientation = new Vector3();\n var clock = new Clock();\n return function updateMatrixWorld(force) {\n Object3D.prototype.updateMatrixWorld.call(this, force);\n var listener = this.context.listener;\n var up = this.up;\n this.timeDelta = clock.getDelta();\n this.matrixWorld.decompose(position, quaternion, scale);\n orientation.set(0, 0, -1).applyQuaternion(quaternion);\n if (listener.positionX) {\n // code path for Chrome (see #14393)\n\n var endTime = this.context.currentTime + this.timeDelta;\n listener.positionX.linearRampToValueAtTime(position.x, endTime);\n listener.positionY.linearRampToValueAtTime(position.y, endTime);\n listener.positionZ.linearRampToValueAtTime(position.z, endTime);\n listener.forwardX.linearRampToValueAtTime(orientation.x, endTime);\n listener.forwardY.linearRampToValueAtTime(orientation.y, endTime);\n listener.forwardZ.linearRampToValueAtTime(orientation.z, endTime);\n listener.upX.linearRampToValueAtTime(up.x, endTime);\n listener.upY.linearRampToValueAtTime(up.y, endTime);\n listener.upZ.linearRampToValueAtTime(up.z, endTime);\n } else {\n listener.setPosition(position.x, position.y, position.z);\n listener.setOrientation(orientation.x, orientation.y, orientation.z, up.x, up.y, up.z);\n }\n };\n }()\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio(listener) {\n Object3D.call(this);\n this.type = 'Audio';\n this.listener = listener;\n this.context = listener.context;\n this.gain = this.context.createGain();\n this.gain.connect(listener.getInput());\n this.autoplay = false;\n this.buffer = null;\n this.detune = 0;\n this.loop = false;\n this.startTime = 0;\n this.offset = 0;\n this.playbackRate = 1;\n this.isPlaying = false;\n this.hasPlaybackControl = true;\n this.sourceType = 'empty';\n this.filters = [];\n}\nAudio.prototype = Object.assign(Object.create(Object3D.prototype), {\n constructor: Audio,\n getOutput: function () {\n return this.gain;\n },\n setNodeSource: function (audioNode) {\n this.hasPlaybackControl = false;\n this.sourceType = 'audioNode';\n this.source = audioNode;\n this.connect();\n return this;\n },\n setMediaElementSource: function (mediaElement) {\n this.hasPlaybackControl = false;\n this.sourceType = 'mediaNode';\n this.source = this.context.createMediaElementSource(mediaElement);\n this.connect();\n return this;\n },\n setBuffer: function (audioBuffer) {\n this.buffer = audioBuffer;\n this.sourceType = 'buffer';\n if (this.autoplay) this.play();\n return this;\n },\n play: function () {\n if (this.isPlaying === true) {\n console.warn('THREE.Audio: Audio is already playing.');\n return;\n }\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return;\n }\n var source = this.context.createBufferSource();\n source.buffer = this.buffer;\n source.loop = this.loop;\n source.onended = this.onEnded.bind(this);\n this.startTime = this.context.currentTime;\n source.start(this.startTime, this.offset);\n this.isPlaying = true;\n this.source = source;\n this.setDetune(this.detune);\n this.setPlaybackRate(this.playbackRate);\n return this.connect();\n },\n pause: function () {\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return;\n }\n if (this.isPlaying === true) {\n this.source.stop();\n this.source.onended = null;\n this.offset += (this.context.currentTime - this.startTime) * this.playbackRate;\n this.isPlaying = false;\n }\n return this;\n },\n stop: function () {\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return;\n }\n this.source.stop();\n this.source.onended = null;\n this.offset = 0;\n this.isPlaying = false;\n return this;\n },\n connect: function () {\n if (this.filters.length > 0) {\n this.source.connect(this.filters[0]);\n for (var i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].connect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].connect(this.getOutput());\n } else {\n this.source.connect(this.getOutput());\n }\n return this;\n },\n disconnect: function () {\n if (this.filters.length > 0) {\n this.source.disconnect(this.filters[0]);\n for (var i = 1, l = this.filters.length; i < l; i++) {\n this.filters[i - 1].disconnect(this.filters[i]);\n }\n this.filters[this.filters.length - 1].disconnect(this.getOutput());\n } else {\n this.source.disconnect(this.getOutput());\n }\n return this;\n },\n getFilters: function () {\n return this.filters;\n },\n setFilters: function (value) {\n if (!value) value = [];\n if (this.isPlaying === true) {\n this.disconnect();\n this.filters = value;\n this.connect();\n } else {\n this.filters = value;\n }\n return this;\n },\n setDetune: function (value) {\n this.detune = value;\n if (this.source.detune === undefined) return; // only set detune when available\n\n if (this.isPlaying === true) {\n this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n }\n return this;\n },\n getDetune: function () {\n return this.detune;\n },\n getFilter: function () {\n return this.getFilters()[0];\n },\n setFilter: function (filter) {\n return this.setFilters(filter ? [filter] : []);\n },\n setPlaybackRate: function (value) {\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return;\n }\n this.playbackRate = value;\n if (this.isPlaying === true) {\n this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n }\n return this;\n },\n getPlaybackRate: function () {\n return this.playbackRate;\n },\n onEnded: function () {\n this.isPlaying = false;\n },\n getLoop: function () {\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return false;\n }\n return this.loop;\n },\n setLoop: function (value) {\n if (this.hasPlaybackControl === false) {\n console.warn('THREE.Audio: this Audio has no playback control.');\n return;\n }\n this.loop = value;\n if (this.isPlaying === true) {\n this.source.loop = this.loop;\n }\n return this;\n },\n getVolume: function () {\n return this.gain.gain.value;\n },\n setVolume: function (value) {\n this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio(listener) {\n Audio.call(this, listener);\n this.panner = this.context.createPanner();\n this.panner.panningModel = 'HRTF';\n this.panner.connect(this.gain);\n}\nPositionalAudio.prototype = Object.assign(Object.create(Audio.prototype), {\n constructor: PositionalAudio,\n getOutput: function () {\n return this.panner;\n },\n getRefDistance: function () {\n return this.panner.refDistance;\n },\n setRefDistance: function (value) {\n this.panner.refDistance = value;\n return this;\n },\n getRolloffFactor: function () {\n return this.panner.rolloffFactor;\n },\n setRolloffFactor: function (value) {\n this.panner.rolloffFactor = value;\n return this;\n },\n getDistanceModel: function () {\n return this.panner.distanceModel;\n },\n setDistanceModel: function (value) {\n this.panner.distanceModel = value;\n return this;\n },\n getMaxDistance: function () {\n return this.panner.maxDistance;\n },\n setMaxDistance: function (value) {\n this.panner.maxDistance = value;\n return this;\n },\n setDirectionalCone: function (coneInnerAngle, coneOuterAngle, coneOuterGain) {\n this.panner.coneInnerAngle = coneInnerAngle;\n this.panner.coneOuterAngle = coneOuterAngle;\n this.panner.coneOuterGain = coneOuterGain;\n return this;\n },\n updateMatrixWorld: function () {\n var position = new Vector3();\n var quaternion = new Quaternion();\n var scale = new Vector3();\n var orientation = new Vector3();\n return function updateMatrixWorld(force) {\n Object3D.prototype.updateMatrixWorld.call(this, force);\n if (this.hasPlaybackControl === true && this.isPlaying === false) return;\n this.matrixWorld.decompose(position, quaternion, scale);\n orientation.set(0, 0, 1).applyQuaternion(quaternion);\n var panner = this.panner;\n if (panner.positionX) {\n // code path for Chrome and Firefox (see #14393)\n\n var endTime = this.context.currentTime + this.listener.timeDelta;\n panner.positionX.linearRampToValueAtTime(position.x, endTime);\n panner.positionY.linearRampToValueAtTime(position.y, endTime);\n panner.positionZ.linearRampToValueAtTime(position.z, endTime);\n panner.orientationX.linearRampToValueAtTime(orientation.x, endTime);\n panner.orientationY.linearRampToValueAtTime(orientation.y, endTime);\n panner.orientationZ.linearRampToValueAtTime(orientation.z, endTime);\n } else {\n panner.setPosition(position.x, position.y, position.z);\n panner.setOrientation(orientation.x, orientation.y, orientation.z);\n }\n };\n }()\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser(audio, fftSize) {\n this.analyser = audio.context.createAnalyser();\n this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n this.data = new Uint8Array(this.analyser.frequencyBinCount);\n audio.getOutput().connect(this.analyser);\n}\nObject.assign(AudioAnalyser.prototype, {\n getFrequencyData: function () {\n this.analyser.getByteFrequencyData(this.data);\n return this.data;\n },\n getAverageFrequency: function () {\n var value = 0,\n data = this.getFrequencyData();\n for (var i = 0; i < data.length; i++) {\n value += data[i];\n }\n return value / data.length;\n }\n});\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer(binding, typeName, valueSize) {\n this.binding = binding;\n this.valueSize = valueSize;\n var bufferType = Float64Array,\n mixFunction;\n switch (typeName) {\n case 'quaternion':\n mixFunction = this._slerp;\n break;\n case 'string':\n case 'bool':\n bufferType = Array;\n mixFunction = this._select;\n break;\n default:\n mixFunction = this._lerp;\n }\n this.buffer = new bufferType(valueSize * 4);\n // layout: [ incoming | accu0 | accu1 | orig ]\n //\n // interpolators can use .buffer as their .result\n // the data then goes to 'incoming'\n //\n // 'accu0' and 'accu1' are used frame-interleaved for\n // the cumulative result and are compared to detect\n // changes\n //\n // 'orig' stores the original state of the property\n\n this._mixBufferRegion = mixFunction;\n this.cumulativeWeight = 0;\n this.useCount = 0;\n this.referenceCount = 0;\n}\nObject.assign(PropertyMixer.prototype, {\n // accumulate data in the 'incoming' region into 'accu'\n accumulate: function (accuIndex, weight) {\n // note: happily accumulating nothing when weight = 0, the caller knows\n // the weight and shouldn't have made the call in the first place\n\n var buffer = this.buffer,\n stride = this.valueSize,\n offset = accuIndex * stride + stride,\n currentWeight = this.cumulativeWeight;\n if (currentWeight === 0) {\n // accuN := incoming * weight\n\n for (var i = 0; i !== stride; ++i) {\n buffer[offset + i] = buffer[i];\n }\n currentWeight = weight;\n } else {\n // accuN := accuN + incoming * weight\n\n currentWeight += weight;\n var mix = weight / currentWeight;\n this._mixBufferRegion(buffer, offset, 0, mix, stride);\n }\n this.cumulativeWeight = currentWeight;\n },\n // apply the state of 'accu' to the binding when accus differ\n apply: function (accuIndex) {\n var stride = this.valueSize,\n buffer = this.buffer,\n offset = accuIndex * stride + stride,\n weight = this.cumulativeWeight,\n binding = this.binding;\n this.cumulativeWeight = 0;\n if (weight < 1) {\n // accuN := accuN + original * ( 1 - cumulativeWeight )\n\n var originalValueOffset = stride * 3;\n this._mixBufferRegion(buffer, offset, originalValueOffset, 1 - weight, stride);\n }\n for (var i = stride, e = stride + stride; i !== e; ++i) {\n if (buffer[i] !== buffer[i + stride]) {\n // value has changed -> update scene graph\n\n binding.setValue(buffer, offset);\n break;\n }\n }\n },\n // remember the state of the bound property and copy it to both accus\n saveOriginalState: function () {\n var binding = this.binding;\n var buffer = this.buffer,\n stride = this.valueSize,\n originalValueOffset = stride * 3;\n binding.getValue(buffer, originalValueOffset);\n\n // accu[0..1] := orig -- initially detect changes against the original\n for (var i = stride, e = originalValueOffset; i !== e; ++i) {\n buffer[i] = buffer[originalValueOffset + i % stride];\n }\n this.cumulativeWeight = 0;\n },\n // apply the state previously taken via 'saveOriginalState' to the binding\n restoreOriginalState: function () {\n var originalValueOffset = this.valueSize * 3;\n this.binding.setValue(this.buffer, originalValueOffset);\n },\n // mix functions\n\n _select: function (buffer, dstOffset, srcOffset, t, stride) {\n if (t >= 0.5) {\n for (var i = 0; i !== stride; ++i) {\n buffer[dstOffset + i] = buffer[srcOffset + i];\n }\n }\n },\n _slerp: function (buffer, dstOffset, srcOffset, t) {\n Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t);\n },\n _lerp: function (buffer, dstOffset, srcOffset, t, stride) {\n var s = 1 - t;\n for (var i = 0; i !== stride; ++i) {\n var j = dstOffset + i;\n buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t;\n }\n }\n});\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nfunction Composite(targetGroup, path, optionalParsedPath) {\n var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n this._targetGroup = targetGroup;\n this._bindings = targetGroup.subscribe_(path, parsedPath);\n}\nObject.assign(Composite.prototype, {\n getValue: function (array, offset) {\n this.bind(); // bind all binding\n\n var firstValidIndex = this._targetGroup.nCachedObjects_,\n binding = this._bindings[firstValidIndex];\n\n // and only call .getValue on the first\n if (binding !== undefined) binding.getValue(array, offset);\n },\n setValue: function (array, offset) {\n var bindings = this._bindings;\n for (var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].setValue(array, offset);\n }\n },\n bind: function () {\n var bindings = this._bindings;\n for (var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].bind();\n }\n },\n unbind: function () {\n var bindings = this._bindings;\n for (var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++i) {\n bindings[i].unbind();\n }\n }\n});\nfunction PropertyBinding(rootNode, path, parsedPath) {\n this.path = path;\n this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n this.rootNode = rootNode;\n}\nObject.assign(PropertyBinding, {\n Composite: Composite,\n create: function (root, path, parsedPath) {\n if (!(root && root.isAnimationObjectGroup)) {\n return new PropertyBinding(root, path, parsedPath);\n } else {\n return new PropertyBinding.Composite(root, path, parsedPath);\n }\n },\n /**\n * Replaces spaces with underscores and removes unsupported characters from\n * node names, to ensure compatibility with parseTrackName().\n *\n * @param {string} name Node name to be sanitized.\n * @return {string}\n */\n sanitizeNodeName: function () {\n var reservedRe = new RegExp('[' + RESERVED_CHARS_RE + ']', 'g');\n return function sanitizeNodeName(name) {\n return name.replace(/\\s/g, '_').replace(reservedRe, '');\n };\n }(),\n parseTrackName: function () {\n // Attempts to allow node names from any language. ES5's `\\w` regexp matches\n // only latin characters, and the unicode \\p{L} is not yet supported. So\n // instead, we exclude reserved characters and match everything else.\n var wordChar = '[^' + RESERVED_CHARS_RE + ']';\n var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace('\\\\.', '') + ']';\n\n // Parent directories, delimited by '/' or ':'. Currently unused, but must\n // be matched to parse the rest of the track name.\n var directoryRe = /((?:WC+[\\/:])*)/.source.replace('WC', wordChar);\n\n // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n var nodeRe = /(WCOD+)?/.source.replace('WCOD', wordCharOrDot);\n\n // Object on target node, and accessor. May not contain reserved\n // characters. Accessor may contain any character except closing bracket.\n var objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace('WC', wordChar);\n\n // Property and accessor. May not contain reserved characters. Accessor may\n // contain any non-bracket characters.\n var propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace('WC', wordChar);\n var trackRe = new RegExp('' + '^' + directoryRe + nodeRe + objectRe + propertyRe + '$');\n var supportedObjectNames = ['material', 'materials', 'bones'];\n return function parseTrackName(trackName) {\n var matches = trackRe.exec(trackName);\n if (!matches) {\n throw new Error('PropertyBinding: Cannot parse trackName: ' + trackName);\n }\n var results = {\n // directoryName: matches[ 1 ], // (tschw) currently unused\n nodeName: matches[2],\n objectName: matches[3],\n objectIndex: matches[4],\n propertyName: matches[5],\n // required\n propertyIndex: matches[6]\n };\n var lastDot = results.nodeName && results.nodeName.lastIndexOf('.');\n if (lastDot !== undefined && lastDot !== -1) {\n var objectName = results.nodeName.substring(lastDot + 1);\n\n // Object names must be checked against a whitelist. Otherwise, there\n // is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n // 'bar' could be the objectName, or part of a nodeName (which can\n // include '.' characters).\n if (supportedObjectNames.indexOf(objectName) !== -1) {\n results.nodeName = results.nodeName.substring(0, lastDot);\n results.objectName = objectName;\n }\n }\n if (results.propertyName === null || results.propertyName.length === 0) {\n throw new Error('PropertyBinding: can not parse propertyName from trackName: ' + trackName);\n }\n return results;\n };\n }(),\n findNode: function (root, nodeName) {\n if (!nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n return root;\n }\n\n // search into skeleton bones.\n if (root.skeleton) {\n var bone = root.skeleton.getBoneByName(nodeName);\n if (bone !== undefined) {\n return bone;\n }\n }\n\n // search into node subtree.\n if (root.children) {\n var searchNodeSubtree = function (children) {\n for (var i = 0; i < children.length; i++) {\n var childNode = children[i];\n if (childNode.name === nodeName || childNode.uuid === nodeName) {\n return childNode;\n }\n var result = searchNodeSubtree(childNode.children);\n if (result) return result;\n }\n return null;\n };\n var subTreeNode = searchNodeSubtree(root.children);\n if (subTreeNode) {\n return subTreeNode;\n }\n }\n return null;\n }\n});\nObject.assign(PropertyBinding.prototype, {\n // prototype, continued\n\n // these are used to \"bind\" a nonexistent property\n _getValue_unavailable: function () {},\n _setValue_unavailable: function () {},\n BindingType: {\n Direct: 0,\n EntireArray: 1,\n ArrayElement: 2,\n HasFromToArray: 3\n },\n Versioning: {\n None: 0,\n NeedsUpdate: 1,\n MatrixWorldNeedsUpdate: 2\n },\n GetterByBindingType: [function getValue_direct(buffer, offset) {\n buffer[offset] = this.node[this.propertyName];\n }, function getValue_array(buffer, offset) {\n var source = this.resolvedProperty;\n for (var i = 0, n = source.length; i !== n; ++i) {\n buffer[offset++] = source[i];\n }\n }, function getValue_arrayElement(buffer, offset) {\n buffer[offset] = this.resolvedProperty[this.propertyIndex];\n }, function getValue_toArray(buffer, offset) {\n this.resolvedProperty.toArray(buffer, offset);\n }],\n SetterByBindingTypeAndVersioning: [[\n // Direct\n\n function setValue_direct(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n }, function setValue_direct_setNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }, function setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.targetObject[this.propertyName] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }], [\n // EntireArray\n\n function setValue_array(buffer, offset) {\n var dest = this.resolvedProperty;\n for (var i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n }, function setValue_array_setNeedsUpdate(buffer, offset) {\n var dest = this.resolvedProperty;\n for (var i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.needsUpdate = true;\n }, function setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n var dest = this.resolvedProperty;\n for (var i = 0, n = dest.length; i !== n; ++i) {\n dest[i] = buffer[offset++];\n }\n this.targetObject.matrixWorldNeedsUpdate = true;\n }], [\n // ArrayElement\n\n function setValue_arrayElement(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n }, function setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.needsUpdate = true;\n }, function setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty[this.propertyIndex] = buffer[offset];\n this.targetObject.matrixWorldNeedsUpdate = true;\n }], [\n // HasToFromArray\n\n function setValue_fromArray(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n }, function setValue_fromArray_setNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.needsUpdate = true;\n }, function setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n this.resolvedProperty.fromArray(buffer, offset);\n this.targetObject.matrixWorldNeedsUpdate = true;\n }]],\n getValue: function getValue_unbound(targetArray, offset) {\n this.bind();\n this.getValue(targetArray, offset);\n\n // Note: This class uses a State pattern on a per-method basis:\n // 'bind' sets 'this.getValue' / 'setValue' and shadows the\n // prototype version of these methods with one that represents\n // the bound state. When the property is not found, the methods\n // become no-ops.\n },\n\n setValue: function getValue_unbound(sourceArray, offset) {\n this.bind();\n this.setValue(sourceArray, offset);\n },\n // create getter / setter pair for a property in the scene graph\n bind: function () {\n var targetObject = this.node,\n parsedPath = this.parsedPath,\n objectName = parsedPath.objectName,\n propertyName = parsedPath.propertyName,\n propertyIndex = parsedPath.propertyIndex;\n if (!targetObject) {\n targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n this.node = targetObject;\n }\n\n // set fail state so we can just 'return' on error\n this.getValue = this._getValue_unavailable;\n this.setValue = this._setValue_unavailable;\n\n // ensure there is a value node\n if (!targetObject) {\n console.error('THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.');\n return;\n }\n if (objectName) {\n var objectIndex = parsedPath.objectIndex;\n\n // special cases were we need to reach deeper into the hierarchy to get the face materials....\n switch (objectName) {\n case 'materials':\n if (!targetObject.material) {\n console.error('THREE.PropertyBinding: Can not bind to material as node does not have a material.', this);\n return;\n }\n if (!targetObject.material.materials) {\n console.error('THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this);\n return;\n }\n targetObject = targetObject.material.materials;\n break;\n case 'bones':\n if (!targetObject.skeleton) {\n console.error('THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this);\n return;\n }\n\n // potential future optimization: skip this if propertyIndex is already an integer\n // and convert the integer string to a true integer.\n\n targetObject = targetObject.skeleton.bones;\n\n // support resolving morphTarget names into indices.\n for (var i = 0; i < targetObject.length; i++) {\n if (targetObject[i].name === objectIndex) {\n objectIndex = i;\n break;\n }\n }\n break;\n default:\n if (targetObject[objectName] === undefined) {\n console.error('THREE.PropertyBinding: Can not bind to objectName of node undefined.', this);\n return;\n }\n targetObject = targetObject[objectName];\n }\n if (objectIndex !== undefined) {\n if (targetObject[objectIndex] === undefined) {\n console.error('THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject);\n return;\n }\n targetObject = targetObject[objectIndex];\n }\n }\n\n // resolve property\n var nodeProperty = targetObject[propertyName];\n if (nodeProperty === undefined) {\n var nodeName = parsedPath.nodeName;\n console.error('THREE.PropertyBinding: Trying to update property for track: ' + nodeName + '.' + propertyName + ' but it wasn\\'t found.', targetObject);\n return;\n }\n\n // determine versioning scheme\n var versioning = this.Versioning.None;\n this.targetObject = targetObject;\n if (targetObject.needsUpdate !== undefined) {\n // material\n\n versioning = this.Versioning.NeedsUpdate;\n } else if (targetObject.matrixWorldNeedsUpdate !== undefined) {\n // node transform\n\n versioning = this.Versioning.MatrixWorldNeedsUpdate;\n }\n\n // determine how the property gets bound\n var bindingType = this.BindingType.Direct;\n if (propertyIndex !== undefined) {\n // access a sub element of the property array (only primitives are supported right now)\n\n if (propertyName === \"morphTargetInfluences\") {\n // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n // support resolving morphTarget names into indices.\n if (!targetObject.geometry) {\n console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this);\n return;\n }\n if (targetObject.geometry.isBufferGeometry) {\n if (!targetObject.geometry.morphAttributes) {\n console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this);\n return;\n }\n for (var i = 0; i < this.node.geometry.morphAttributes.position.length; i++) {\n if (targetObject.geometry.morphAttributes.position[i].name === propertyIndex) {\n propertyIndex = i;\n break;\n }\n }\n } else {\n if (!targetObject.geometry.morphTargets) {\n console.error('THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this);\n return;\n }\n for (var i = 0; i < this.node.geometry.morphTargets.length; i++) {\n if (targetObject.geometry.morphTargets[i].name === propertyIndex) {\n propertyIndex = i;\n break;\n }\n }\n }\n }\n bindingType = this.BindingType.ArrayElement;\n this.resolvedProperty = nodeProperty;\n this.propertyIndex = propertyIndex;\n } else if (nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined) {\n // must use copy for Object3D.Euler/Quaternion\n\n bindingType = this.BindingType.HasFromToArray;\n this.resolvedProperty = nodeProperty;\n } else if (Array.isArray(nodeProperty)) {\n bindingType = this.BindingType.EntireArray;\n this.resolvedProperty = nodeProperty;\n } else {\n this.propertyName = propertyName;\n }\n\n // select getter / setter\n this.getValue = this.GetterByBindingType[bindingType];\n this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n },\n unbind: function () {\n this.node = null;\n\n // back to the prototype version of getValue / setValue\n // note: avoiding to mutate the shape of 'this' via 'delete'\n this.getValue = this._getValue_unbound;\n this.setValue = this._setValue_unbound;\n }\n});\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign(PropertyBinding.prototype, {\n // initial state of these methods that calls 'bind'\n _getValue_unbound: PropertyBinding.prototype.getValue,\n _setValue_unbound: PropertyBinding.prototype.setValue\n});\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n this.uuid = _Math.generateUUID();\n\n // cached objects followed by the active ones\n this._objects = Array.prototype.slice.call(arguments);\n this.nCachedObjects_ = 0; // threshold\n // note: read by PropertyBinding.Composite\n\n var indices = {};\n this._indicesByUUID = indices; // for bookkeeping\n\n for (var i = 0, n = arguments.length; i !== n; ++i) {\n indices[arguments[i].uuid] = i;\n }\n this._paths = []; // inside: string\n this._parsedPaths = []; // inside: { we don't care, here }\n this._bindings = []; // inside: Array< PropertyBinding >\n this._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n var scope = this;\n this.stats = {\n objects: {\n get total() {\n return scope._objects.length;\n },\n get inUse() {\n return this.total - scope.nCachedObjects_;\n }\n },\n get bindingsPerObject() {\n return scope._bindings.length;\n }\n };\n}\nObject.assign(AnimationObjectGroup.prototype, {\n isAnimationObjectGroup: true,\n add: function () {\n var objects = this._objects,\n nObjects = objects.length,\n nCachedObjects = this.nCachedObjects_,\n indicesByUUID = this._indicesByUUID,\n paths = this._paths,\n parsedPaths = this._parsedPaths,\n bindings = this._bindings,\n nBindings = bindings.length,\n knownObject = undefined;\n for (var i = 0, n = arguments.length; i !== n; ++i) {\n var object = arguments[i],\n uuid = object.uuid,\n index = indicesByUUID[uuid];\n if (index === undefined) {\n // unknown object -> add it to the ACTIVE region\n\n index = nObjects++;\n indicesByUUID[uuid] = index;\n objects.push(object);\n\n // accounting is done, now do the same for all bindings\n\n for (var j = 0, m = nBindings; j !== m; ++j) {\n bindings[j].push(new PropertyBinding(object, paths[j], parsedPaths[j]));\n }\n } else if (index < nCachedObjects) {\n knownObject = objects[index];\n\n // move existing object to the ACTIVE region\n\n var firstActiveIndex = --nCachedObjects,\n lastCachedObject = objects[firstActiveIndex];\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n indicesByUUID[uuid] = firstActiveIndex;\n objects[firstActiveIndex] = object;\n\n // accounting is done, now do the same for all bindings\n\n for (var j = 0, m = nBindings; j !== m; ++j) {\n var bindingsForPath = bindings[j],\n lastCached = bindingsForPath[firstActiveIndex],\n binding = bindingsForPath[index];\n bindingsForPath[index] = lastCached;\n if (binding === undefined) {\n // since we do not bother to create new bindings\n // for objects that are cached, the binding may\n // or may not exist\n\n binding = new PropertyBinding(object, paths[j], parsedPaths[j]);\n }\n bindingsForPath[firstActiveIndex] = binding;\n }\n } else if (objects[index] !== knownObject) {\n console.error('THREE.AnimationObjectGroup: Different objects with the same UUID ' + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.');\n } // else the object is already where we want it to be\n } // for arguments\n\n this.nCachedObjects_ = nCachedObjects;\n },\n remove: function () {\n var objects = this._objects,\n nCachedObjects = this.nCachedObjects_,\n indicesByUUID = this._indicesByUUID,\n bindings = this._bindings,\n nBindings = bindings.length;\n for (var i = 0, n = arguments.length; i !== n; ++i) {\n var object = arguments[i],\n uuid = object.uuid,\n index = indicesByUUID[uuid];\n if (index !== undefined && index >= nCachedObjects) {\n // move existing object into the CACHED region\n\n var lastCachedIndex = nCachedObjects++,\n firstActiveObject = objects[lastCachedIndex];\n indicesByUUID[firstActiveObject.uuid] = index;\n objects[index] = firstActiveObject;\n indicesByUUID[uuid] = lastCachedIndex;\n objects[lastCachedIndex] = object;\n\n // accounting is done, now do the same for all bindings\n\n for (var j = 0, m = nBindings; j !== m; ++j) {\n var bindingsForPath = bindings[j],\n firstActive = bindingsForPath[lastCachedIndex],\n binding = bindingsForPath[index];\n bindingsForPath[index] = firstActive;\n bindingsForPath[lastCachedIndex] = binding;\n }\n }\n } // for arguments\n\n this.nCachedObjects_ = nCachedObjects;\n },\n // remove & forget\n uncache: function () {\n var objects = this._objects,\n nObjects = objects.length,\n nCachedObjects = this.nCachedObjects_,\n indicesByUUID = this._indicesByUUID,\n bindings = this._bindings,\n nBindings = bindings.length;\n for (var i = 0, n = arguments.length; i !== n; ++i) {\n var object = arguments[i],\n uuid = object.uuid,\n index = indicesByUUID[uuid];\n if (index !== undefined) {\n delete indicesByUUID[uuid];\n if (index < nCachedObjects) {\n // object is cached, shrink the CACHED region\n\n var firstActiveIndex = --nCachedObjects,\n lastCachedObject = objects[firstActiveIndex],\n lastIndex = --nObjects,\n lastObject = objects[lastIndex];\n\n // last cached object takes this object's place\n indicesByUUID[lastCachedObject.uuid] = index;\n objects[index] = lastCachedObject;\n\n // last object goes to the activated slot and pop\n indicesByUUID[lastObject.uuid] = firstActiveIndex;\n objects[firstActiveIndex] = lastObject;\n objects.pop();\n\n // accounting is done, now do the same for all bindings\n\n for (var j = 0, m = nBindings; j !== m; ++j) {\n var bindingsForPath = bindings[j],\n lastCached = bindingsForPath[firstActiveIndex],\n last = bindingsForPath[lastIndex];\n bindingsForPath[index] = lastCached;\n bindingsForPath[firstActiveIndex] = last;\n bindingsForPath.pop();\n }\n } else {\n // object is active, just swap with the last and pop\n\n var lastIndex = --nObjects,\n lastObject = objects[lastIndex];\n indicesByUUID[lastObject.uuid] = index;\n objects[index] = lastObject;\n objects.pop();\n\n // accounting is done, now do the same for all bindings\n\n for (var j = 0, m = nBindings; j !== m; ++j) {\n var bindingsForPath = bindings[j];\n bindingsForPath[index] = bindingsForPath[lastIndex];\n bindingsForPath.pop();\n }\n } // cached or active\n } // if object is known\n } // for arguments\n\n this.nCachedObjects_ = nCachedObjects;\n },\n // Internal interface used by befriended PropertyBinding.Composite:\n\n subscribe_: function (path, parsedPath) {\n // returns an array of bindings for the given path that is changed\n // according to the contained objects in the group\n\n var indicesByPath = this._bindingsIndicesByPath,\n index = indicesByPath[path],\n bindings = this._bindings;\n if (index !== undefined) return bindings[index];\n var paths = this._paths,\n parsedPaths = this._parsedPaths,\n objects = this._objects,\n nObjects = objects.length,\n nCachedObjects = this.nCachedObjects_,\n bindingsForPath = new Array(nObjects);\n index = bindings.length;\n indicesByPath[path] = index;\n paths.push(path);\n parsedPaths.push(parsedPath);\n bindings.push(bindingsForPath);\n for (var i = nCachedObjects, n = objects.length; i !== n; ++i) {\n var object = objects[i];\n bindingsForPath[i] = new PropertyBinding(object, path, parsedPath);\n }\n return bindingsForPath;\n },\n unsubscribe_: function (path) {\n // tells the group to forget about a property path and no longer\n // update the array previously obtained with 'subscribe_'\n\n var indicesByPath = this._bindingsIndicesByPath,\n index = indicesByPath[path];\n if (index !== undefined) {\n var paths = this._paths,\n parsedPaths = this._parsedPaths,\n bindings = this._bindings,\n lastBindingsIndex = bindings.length - 1,\n lastBindings = bindings[lastBindingsIndex],\n lastBindingsPath = path[lastBindingsIndex];\n indicesByPath[lastBindingsPath] = index;\n bindings[index] = lastBindings;\n bindings.pop();\n parsedPaths[index] = parsedPaths[lastBindingsIndex];\n parsedPaths.pop();\n paths[index] = paths[lastBindingsIndex];\n paths.pop();\n }\n }\n});\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction(mixer, clip, localRoot) {\n this._mixer = mixer;\n this._clip = clip;\n this._localRoot = localRoot || null;\n var tracks = clip.tracks,\n nTracks = tracks.length,\n interpolants = new Array(nTracks);\n var interpolantSettings = {\n endingStart: ZeroCurvatureEnding,\n endingEnd: ZeroCurvatureEnding\n };\n for (var i = 0; i !== nTracks; ++i) {\n var interpolant = tracks[i].createInterpolant(null);\n interpolants[i] = interpolant;\n interpolant.settings = interpolantSettings;\n }\n this._interpolantSettings = interpolantSettings;\n this._interpolants = interpolants; // bound by the mixer\n\n // inside: PropertyMixer (managed by the mixer)\n this._propertyBindings = new Array(nTracks);\n this._cacheIndex = null; // for the memory manager\n this._byClipCacheIndex = null; // for the memory manager\n\n this._timeScaleInterpolant = null;\n this._weightInterpolant = null;\n this.loop = LoopRepeat;\n this._loopCount = -1;\n\n // global mixer time when the action is to be started\n // it's set back to 'null' upon start of the action\n this._startTime = null;\n\n // scaled local time of the action\n // gets clamped or wrapped to 0..clip.duration according to loop\n this.time = 0;\n this.timeScale = 1;\n this._effectiveTimeScale = 1;\n this.weight = 1;\n this._effectiveWeight = 1;\n this.repetitions = Infinity; // no. of repetitions when looping\n\n this.paused = false; // true -> zero effective time scale\n this.enabled = true; // false -> zero effective weight\n\n this.clampWhenFinished = false; // keep feeding the last frame?\n\n this.zeroSlopeAtStart = true; // for smooth interpolation w/o separate\n this.zeroSlopeAtEnd = true; // clips for start, loop and end\n}\n\nObject.assign(AnimationAction.prototype, {\n // State & Scheduling\n\n play: function () {\n this._mixer._activateAction(this);\n return this;\n },\n stop: function () {\n this._mixer._deactivateAction(this);\n return this.reset();\n },\n reset: function () {\n this.paused = false;\n this.enabled = true;\n this.time = 0; // restart clip\n this._loopCount = -1; // forget previous loops\n this._startTime = null; // forget scheduling\n\n return this.stopFading().stopWarping();\n },\n isRunning: function () {\n return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n },\n // return true when play has been called\n isScheduled: function () {\n return this._mixer._isActiveAction(this);\n },\n startAt: function (time) {\n this._startTime = time;\n return this;\n },\n setLoop: function (mode, repetitions) {\n this.loop = mode;\n this.repetitions = repetitions;\n return this;\n },\n // Weight\n\n // set the weight stopping any scheduled fading\n // although .enabled = false yields an effective weight of zero, this\n // method does *not* change .enabled, because it would be confusing\n setEffectiveWeight: function (weight) {\n this.weight = weight;\n\n // note: same logic as when updated at runtime\n this._effectiveWeight = this.enabled ? weight : 0;\n return this.stopFading();\n },\n // return the weight considering fading and .enabled\n getEffectiveWeight: function () {\n return this._effectiveWeight;\n },\n fadeIn: function (duration) {\n return this._scheduleFading(duration, 0, 1);\n },\n fadeOut: function (duration) {\n return this._scheduleFading(duration, 1, 0);\n },\n crossFadeFrom: function (fadeOutAction, duration, warp) {\n fadeOutAction.fadeOut(duration);\n this.fadeIn(duration);\n if (warp) {\n var fadeInDuration = this._clip.duration,\n fadeOutDuration = fadeOutAction._clip.duration,\n startEndRatio = fadeOutDuration / fadeInDuration,\n endStartRatio = fadeInDuration / fadeOutDuration;\n fadeOutAction.warp(1.0, startEndRatio, duration);\n this.warp(endStartRatio, 1.0, duration);\n }\n return this;\n },\n crossFadeTo: function (fadeInAction, duration, warp) {\n return fadeInAction.crossFadeFrom(this, duration, warp);\n },\n stopFading: function () {\n var weightInterpolant = this._weightInterpolant;\n if (weightInterpolant !== null) {\n this._weightInterpolant = null;\n this._mixer._takeBackControlInterpolant(weightInterpolant);\n }\n return this;\n },\n // Time Scale Control\n\n // set the time scale stopping any scheduled warping\n // although .paused = true yields an effective time scale of zero, this\n // method does *not* change .paused, because it would be confusing\n setEffectiveTimeScale: function (timeScale) {\n this.timeScale = timeScale;\n this._effectiveTimeScale = this.paused ? 0 : timeScale;\n return this.stopWarping();\n },\n // return the time scale considering warping and .paused\n getEffectiveTimeScale: function () {\n return this._effectiveTimeScale;\n },\n setDuration: function (duration) {\n this.timeScale = this._clip.duration / duration;\n return this.stopWarping();\n },\n syncWith: function (action) {\n this.time = action.time;\n this.timeScale = action.timeScale;\n return this.stopWarping();\n },\n halt: function (duration) {\n return this.warp(this._effectiveTimeScale, 0, duration);\n },\n warp: function (startTimeScale, endTimeScale, duration) {\n var mixer = this._mixer,\n now = mixer.time,\n interpolant = this._timeScaleInterpolant,\n timeScale = this.timeScale;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._timeScaleInterpolant = interpolant;\n }\n var times = interpolant.parameterPositions,\n values = interpolant.sampleValues;\n times[0] = now;\n times[1] = now + duration;\n values[0] = startTimeScale / timeScale;\n values[1] = endTimeScale / timeScale;\n return this;\n },\n stopWarping: function () {\n var timeScaleInterpolant = this._timeScaleInterpolant;\n if (timeScaleInterpolant !== null) {\n this._timeScaleInterpolant = null;\n this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n }\n return this;\n },\n // Object Accessors\n\n getMixer: function () {\n return this._mixer;\n },\n getClip: function () {\n return this._clip;\n },\n getRoot: function () {\n return this._localRoot || this._mixer._root;\n },\n // Interna\n\n _update: function (time, deltaTime, timeDirection, accuIndex) {\n // called by the mixer\n\n if (!this.enabled) {\n // call ._updateWeight() to update ._effectiveWeight\n\n this._updateWeight(time);\n return;\n }\n var startTime = this._startTime;\n if (startTime !== null) {\n // check for scheduled start of action\n\n var timeRunning = (time - startTime) * timeDirection;\n if (timeRunning < 0 || timeDirection === 0) {\n return; // yet to come / don't decide when delta = 0\n }\n\n // start\n\n this._startTime = null; // unschedule\n deltaTime = timeDirection * timeRunning;\n }\n\n // apply time scale and advance time\n\n deltaTime *= this._updateTimeScale(time);\n var clipTime = this._updateTime(deltaTime);\n\n // note: _updateTime may disable the action resulting in\n // an effective weight of 0\n\n var weight = this._updateWeight(time);\n if (weight > 0) {\n var interpolants = this._interpolants;\n var propertyMixers = this._propertyBindings;\n for (var j = 0, m = interpolants.length; j !== m; ++j) {\n interpolants[j].evaluate(clipTime);\n propertyMixers[j].accumulate(accuIndex, weight);\n }\n }\n },\n _updateWeight: function (time) {\n var weight = 0;\n if (this.enabled) {\n weight = this.weight;\n var interpolant = this._weightInterpolant;\n if (interpolant !== null) {\n var interpolantValue = interpolant.evaluate(time)[0];\n weight *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopFading();\n if (interpolantValue === 0) {\n // faded out, disable\n this.enabled = false;\n }\n }\n }\n }\n this._effectiveWeight = weight;\n return weight;\n },\n _updateTimeScale: function (time) {\n var timeScale = 0;\n if (!this.paused) {\n timeScale = this.timeScale;\n var interpolant = this._timeScaleInterpolant;\n if (interpolant !== null) {\n var interpolantValue = interpolant.evaluate(time)[0];\n timeScale *= interpolantValue;\n if (time > interpolant.parameterPositions[1]) {\n this.stopWarping();\n if (timeScale === 0) {\n // motion has halted, pause\n this.paused = true;\n } else {\n // warp done - apply final time scale\n this.timeScale = timeScale;\n }\n }\n }\n }\n this._effectiveTimeScale = timeScale;\n return timeScale;\n },\n _updateTime: function (deltaTime) {\n var time = this.time + deltaTime;\n var duration = this._clip.duration;\n var loop = this.loop;\n var loopCount = this._loopCount;\n var pingPong = loop === LoopPingPong;\n if (deltaTime === 0) {\n if (loopCount === -1) return time;\n return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n }\n if (loop === LoopOnce) {\n if (loopCount === -1) {\n // just started\n\n this._loopCount = 0;\n this._setEndings(true, true, false);\n }\n handle_stop: {\n if (time >= duration) {\n time = duration;\n } else if (time < 0) {\n time = 0;\n } else {\n this.time = time;\n break handle_stop;\n }\n if (this.clampWhenFinished) this.paused = true;else this.enabled = false;\n this.time = time;\n this._mixer.dispatchEvent({\n type: 'finished',\n action: this,\n direction: deltaTime < 0 ? -1 : 1\n });\n }\n } else {\n // repetitive Repeat or PingPong\n\n if (loopCount === -1) {\n // just started\n\n if (deltaTime >= 0) {\n loopCount = 0;\n this._setEndings(true, this.repetitions === 0, pingPong);\n } else {\n // when looping in reverse direction, the initial\n // transition through zero counts as a repetition,\n // so leave loopCount at -1\n\n this._setEndings(this.repetitions === 0, true, pingPong);\n }\n }\n if (time >= duration || time < 0) {\n // wrap around\n\n var loopDelta = Math.floor(time / duration); // signed\n time -= duration * loopDelta;\n loopCount += Math.abs(loopDelta);\n var pending = this.repetitions - loopCount;\n if (pending <= 0) {\n // have to stop (switch state, clamp time, fire event)\n\n if (this.clampWhenFinished) this.paused = true;else this.enabled = false;\n time = deltaTime > 0 ? duration : 0;\n this.time = time;\n this._mixer.dispatchEvent({\n type: 'finished',\n action: this,\n direction: deltaTime > 0 ? 1 : -1\n });\n } else {\n // keep running\n\n if (pending === 1) {\n // entering the last round\n\n var atStart = deltaTime < 0;\n this._setEndings(atStart, !atStart, pingPong);\n } else {\n this._setEndings(false, false, pingPong);\n }\n this._loopCount = loopCount;\n this.time = time;\n this._mixer.dispatchEvent({\n type: 'loop',\n action: this,\n loopDelta: loopDelta\n });\n }\n } else {\n this.time = time;\n }\n if (pingPong && (loopCount & 1) === 1) {\n // invert time for the \"pong round\"\n\n return duration - time;\n }\n }\n return time;\n },\n _setEndings: function (atStart, atEnd, pingPong) {\n var settings = this._interpolantSettings;\n if (pingPong) {\n settings.endingStart = ZeroSlopeEnding;\n settings.endingEnd = ZeroSlopeEnding;\n } else {\n // assuming for LoopOnce atStart == atEnd == true\n\n if (atStart) {\n settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingStart = WrapAroundEnding;\n }\n if (atEnd) {\n settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n } else {\n settings.endingEnd = WrapAroundEnding;\n }\n }\n },\n _scheduleFading: function (duration, weightNow, weightThen) {\n var mixer = this._mixer,\n now = mixer.time,\n interpolant = this._weightInterpolant;\n if (interpolant === null) {\n interpolant = mixer._lendControlInterpolant();\n this._weightInterpolant = interpolant;\n }\n var times = interpolant.parameterPositions,\n values = interpolant.sampleValues;\n times[0] = now;\n values[0] = weightNow;\n times[1] = now + duration;\n values[1] = weightThen;\n return this;\n }\n});\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer(root) {\n this._root = root;\n this._initMemoryManager();\n this._accuIndex = 0;\n this.time = 0;\n this.timeScale = 1.0;\n}\nAnimationMixer.prototype = Object.assign(Object.create(EventDispatcher.prototype), {\n constructor: AnimationMixer,\n _bindAction: function (action, prototypeAction) {\n var root = action._localRoot || this._root,\n tracks = action._clip.tracks,\n nTracks = tracks.length,\n bindings = action._propertyBindings,\n interpolants = action._interpolants,\n rootUuid = root.uuid,\n bindingsByRoot = this._bindingsByRootAndName,\n bindingsByName = bindingsByRoot[rootUuid];\n if (bindingsByName === undefined) {\n bindingsByName = {};\n bindingsByRoot[rootUuid] = bindingsByName;\n }\n for (var i = 0; i !== nTracks; ++i) {\n var track = tracks[i],\n trackName = track.name,\n binding = bindingsByName[trackName];\n if (binding !== undefined) {\n bindings[i] = binding;\n } else {\n binding = bindings[i];\n if (binding !== undefined) {\n // existing binding, make sure the cache knows\n\n if (binding._cacheIndex === null) {\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n }\n continue;\n }\n var path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n binding = new PropertyMixer(PropertyBinding.create(root, trackName, path), track.ValueTypeName, track.getValueSize());\n ++binding.referenceCount;\n this._addInactiveBinding(binding, rootUuid, trackName);\n bindings[i] = binding;\n }\n interpolants[i].resultBuffer = binding.buffer;\n }\n },\n _activateAction: function (action) {\n if (!this._isActiveAction(action)) {\n if (action._cacheIndex === null) {\n // this action has been forgotten by the cache, but the user\n // appears to be still using it -> rebind\n\n var rootUuid = (action._localRoot || this._root).uuid,\n clipUuid = action._clip.uuid,\n actionsForClip = this._actionsByClip[clipUuid];\n this._bindAction(action, actionsForClip && actionsForClip.knownActions[0]);\n this._addInactiveAction(action, clipUuid, rootUuid);\n }\n var bindings = action._propertyBindings;\n\n // increment reference counts / sort out state\n for (var i = 0, n = bindings.length; i !== n; ++i) {\n var binding = bindings[i];\n if (binding.useCount++ === 0) {\n this._lendBinding(binding);\n binding.saveOriginalState();\n }\n }\n this._lendAction(action);\n }\n },\n _deactivateAction: function (action) {\n if (this._isActiveAction(action)) {\n var bindings = action._propertyBindings;\n\n // decrement reference counts / sort out state\n for (var i = 0, n = bindings.length; i !== n; ++i) {\n var binding = bindings[i];\n if (--binding.useCount === 0) {\n binding.restoreOriginalState();\n this._takeBackBinding(binding);\n }\n }\n this._takeBackAction(action);\n }\n },\n // Memory manager\n\n _initMemoryManager: function () {\n this._actions = []; // 'nActiveActions' followed by inactive ones\n this._nActiveActions = 0;\n this._actionsByClip = {};\n // inside:\n // {\n // \tknownActions: Array< AnimationAction > - used as prototypes\n // \tactionByRoot: AnimationAction - lookup\n // }\n\n this._bindings = []; // 'nActiveBindings' followed by inactive ones\n this._nActiveBindings = 0;\n this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n this._controlInterpolants = []; // same game as above\n this._nActiveControlInterpolants = 0;\n var scope = this;\n this.stats = {\n actions: {\n get total() {\n return scope._actions.length;\n },\n get inUse() {\n return scope._nActiveActions;\n }\n },\n bindings: {\n get total() {\n return scope._bindings.length;\n },\n get inUse() {\n return scope._nActiveBindings;\n }\n },\n controlInterpolants: {\n get total() {\n return scope._controlInterpolants.length;\n },\n get inUse() {\n return scope._nActiveControlInterpolants;\n }\n }\n };\n },\n // Memory management for AnimationAction objects\n\n _isActiveAction: function (action) {\n var index = action._cacheIndex;\n return index !== null && index < this._nActiveActions;\n },\n _addInactiveAction: function (action, clipUuid, rootUuid) {\n var actions = this._actions,\n actionsByClip = this._actionsByClip,\n actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip === undefined) {\n actionsForClip = {\n knownActions: [action],\n actionByRoot: {}\n };\n action._byClipCacheIndex = 0;\n actionsByClip[clipUuid] = actionsForClip;\n } else {\n var knownActions = actionsForClip.knownActions;\n action._byClipCacheIndex = knownActions.length;\n knownActions.push(action);\n }\n action._cacheIndex = actions.length;\n actions.push(action);\n actionsForClip.actionByRoot[rootUuid] = action;\n },\n _removeInactiveAction: function (action) {\n var actions = this._actions,\n lastInactiveAction = actions[actions.length - 1],\n cacheIndex = action._cacheIndex;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n action._cacheIndex = null;\n var clipUuid = action._clip.uuid,\n actionsByClip = this._actionsByClip,\n actionsForClip = actionsByClip[clipUuid],\n knownActionsForClip = actionsForClip.knownActions,\n lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1],\n byClipCacheIndex = action._byClipCacheIndex;\n lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n knownActionsForClip.pop();\n action._byClipCacheIndex = null;\n var actionByRoot = actionsForClip.actionByRoot,\n rootUuid = (action._localRoot || this._root).uuid;\n delete actionByRoot[rootUuid];\n if (knownActionsForClip.length === 0) {\n delete actionsByClip[clipUuid];\n }\n this._removeInactiveBindingsForAction(action);\n },\n _removeInactiveBindingsForAction: function (action) {\n var bindings = action._propertyBindings;\n for (var i = 0, n = bindings.length; i !== n; ++i) {\n var binding = bindings[i];\n if (--binding.referenceCount === 0) {\n this._removeInactiveBinding(binding);\n }\n }\n },\n _lendAction: function (action) {\n // [ active actions | inactive actions ]\n // [ active actions >| inactive actions ]\n // s a\n // <-swap->\n // a s\n\n var actions = this._actions,\n prevIndex = action._cacheIndex,\n lastActiveIndex = this._nActiveActions++,\n firstInactiveAction = actions[lastActiveIndex];\n action._cacheIndex = lastActiveIndex;\n actions[lastActiveIndex] = action;\n firstInactiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = firstInactiveAction;\n },\n _takeBackAction: function (action) {\n // [ active actions | inactive actions ]\n // [ active actions |< inactive actions ]\n // a s\n // <-swap->\n // s a\n\n var actions = this._actions,\n prevIndex = action._cacheIndex,\n firstInactiveIndex = --this._nActiveActions,\n lastActiveAction = actions[firstInactiveIndex];\n action._cacheIndex = firstInactiveIndex;\n actions[firstInactiveIndex] = action;\n lastActiveAction._cacheIndex = prevIndex;\n actions[prevIndex] = lastActiveAction;\n },\n // Memory management for PropertyMixer objects\n\n _addInactiveBinding: function (binding, rootUuid, trackName) {\n var bindingsByRoot = this._bindingsByRootAndName,\n bindingByName = bindingsByRoot[rootUuid],\n bindings = this._bindings;\n if (bindingByName === undefined) {\n bindingByName = {};\n bindingsByRoot[rootUuid] = bindingByName;\n }\n bindingByName[trackName] = binding;\n binding._cacheIndex = bindings.length;\n bindings.push(binding);\n },\n _removeInactiveBinding: function (binding) {\n var bindings = this._bindings,\n propBinding = binding.binding,\n rootUuid = propBinding.rootNode.uuid,\n trackName = propBinding.path,\n bindingsByRoot = this._bindingsByRootAndName,\n bindingByName = bindingsByRoot[rootUuid],\n lastInactiveBinding = bindings[bindings.length - 1],\n cacheIndex = binding._cacheIndex;\n lastInactiveBinding._cacheIndex = cacheIndex;\n bindings[cacheIndex] = lastInactiveBinding;\n bindings.pop();\n delete bindingByName[trackName];\n remove_empty_map: {\n for (var _ in bindingByName) break remove_empty_map; // eslint-disable-line no-unused-vars\n\n delete bindingsByRoot[rootUuid];\n }\n },\n _lendBinding: function (binding) {\n var bindings = this._bindings,\n prevIndex = binding._cacheIndex,\n lastActiveIndex = this._nActiveBindings++,\n firstInactiveBinding = bindings[lastActiveIndex];\n binding._cacheIndex = lastActiveIndex;\n bindings[lastActiveIndex] = binding;\n firstInactiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = firstInactiveBinding;\n },\n _takeBackBinding: function (binding) {\n var bindings = this._bindings,\n prevIndex = binding._cacheIndex,\n firstInactiveIndex = --this._nActiveBindings,\n lastActiveBinding = bindings[firstInactiveIndex];\n binding._cacheIndex = firstInactiveIndex;\n bindings[firstInactiveIndex] = binding;\n lastActiveBinding._cacheIndex = prevIndex;\n bindings[prevIndex] = lastActiveBinding;\n },\n // Memory management of Interpolants for weight and time scale\n\n _lendControlInterpolant: function () {\n var interpolants = this._controlInterpolants,\n lastActiveIndex = this._nActiveControlInterpolants++,\n interpolant = interpolants[lastActiveIndex];\n if (interpolant === undefined) {\n interpolant = new LinearInterpolant(new Float32Array(2), new Float32Array(2), 1, this._controlInterpolantsResultBuffer);\n interpolant.__cacheIndex = lastActiveIndex;\n interpolants[lastActiveIndex] = interpolant;\n }\n return interpolant;\n },\n _takeBackControlInterpolant: function (interpolant) {\n var interpolants = this._controlInterpolants,\n prevIndex = interpolant.__cacheIndex,\n firstInactiveIndex = --this._nActiveControlInterpolants,\n lastActiveInterpolant = interpolants[firstInactiveIndex];\n interpolant.__cacheIndex = firstInactiveIndex;\n interpolants[firstInactiveIndex] = interpolant;\n lastActiveInterpolant.__cacheIndex = prevIndex;\n interpolants[prevIndex] = lastActiveInterpolant;\n },\n _controlInterpolantsResultBuffer: new Float32Array(1),\n // return an action for a clip optionally using a custom root target\n // object (this method allocates a lot of dynamic memory in case a\n // previously unknown clip/root combination is specified)\n clipAction: function (clip, optionalRoot) {\n var root = optionalRoot || this._root,\n rootUuid = root.uuid,\n clipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip,\n clipUuid = clipObject !== null ? clipObject.uuid : clip,\n actionsForClip = this._actionsByClip[clipUuid],\n prototypeAction = null;\n if (actionsForClip !== undefined) {\n var existingAction = actionsForClip.actionByRoot[rootUuid];\n if (existingAction !== undefined) {\n return existingAction;\n }\n\n // we know the clip, so we don't have to parse all\n // the bindings again but can just copy\n prototypeAction = actionsForClip.knownActions[0];\n\n // also, take the clip from the prototype action\n if (clipObject === null) clipObject = prototypeAction._clip;\n }\n\n // clip must be known when specified via string\n if (clipObject === null) return null;\n\n // allocate all resources required to run it\n var newAction = new AnimationAction(this, clipObject, optionalRoot);\n this._bindAction(newAction, prototypeAction);\n\n // and make the action known to the memory manager\n this._addInactiveAction(newAction, clipUuid, rootUuid);\n return newAction;\n },\n // get an existing action\n existingAction: function (clip, optionalRoot) {\n var root = optionalRoot || this._root,\n rootUuid = root.uuid,\n clipObject = typeof clip === 'string' ? AnimationClip.findByName(root, clip) : clip,\n clipUuid = clipObject ? clipObject.uuid : clip,\n actionsForClip = this._actionsByClip[clipUuid];\n if (actionsForClip !== undefined) {\n return actionsForClip.actionByRoot[rootUuid] || null;\n }\n return null;\n },\n // deactivates all previously scheduled actions\n stopAllAction: function () {\n var actions = this._actions,\n nActions = this._nActiveActions,\n bindings = this._bindings,\n nBindings = this._nActiveBindings;\n this._nActiveActions = 0;\n this._nActiveBindings = 0;\n for (var i = 0; i !== nActions; ++i) {\n actions[i].reset();\n }\n for (var i = 0; i !== nBindings; ++i) {\n bindings[i].useCount = 0;\n }\n return this;\n },\n // advance the time and update apply the animation\n update: function (deltaTime) {\n deltaTime *= this.timeScale;\n var actions = this._actions,\n nActions = this._nActiveActions,\n time = this.time += deltaTime,\n timeDirection = Math.sign(deltaTime),\n accuIndex = this._accuIndex ^= 1;\n\n // run active actions\n\n for (var i = 0; i !== nActions; ++i) {\n var action = actions[i];\n action._update(time, deltaTime, timeDirection, accuIndex);\n }\n\n // update scene graph\n\n var bindings = this._bindings,\n nBindings = this._nActiveBindings;\n for (var i = 0; i !== nBindings; ++i) {\n bindings[i].apply(accuIndex);\n }\n return this;\n },\n // return this mixer's root target object\n getRoot: function () {\n return this._root;\n },\n // free all resources specific to a particular clip\n uncacheClip: function (clip) {\n var actions = this._actions,\n clipUuid = clip.uuid,\n actionsByClip = this._actionsByClip,\n actionsForClip = actionsByClip[clipUuid];\n if (actionsForClip !== undefined) {\n // note: just calling _removeInactiveAction would mess up the\n // iteration state and also require updating the state we can\n // just throw away\n\n var actionsToRemove = actionsForClip.knownActions;\n for (var i = 0, n = actionsToRemove.length; i !== n; ++i) {\n var action = actionsToRemove[i];\n this._deactivateAction(action);\n var cacheIndex = action._cacheIndex,\n lastInactiveAction = actions[actions.length - 1];\n action._cacheIndex = null;\n action._byClipCacheIndex = null;\n lastInactiveAction._cacheIndex = cacheIndex;\n actions[cacheIndex] = lastInactiveAction;\n actions.pop();\n this._removeInactiveBindingsForAction(action);\n }\n delete actionsByClip[clipUuid];\n }\n },\n // free all resources specific to a particular root target object\n uncacheRoot: function (root) {\n var rootUuid = root.uuid,\n actionsByClip = this._actionsByClip;\n for (var clipUuid in actionsByClip) {\n var actionByRoot = actionsByClip[clipUuid].actionByRoot,\n action = actionByRoot[rootUuid];\n if (action !== undefined) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n var bindingsByRoot = this._bindingsByRootAndName,\n bindingByName = bindingsByRoot[rootUuid];\n if (bindingByName !== undefined) {\n for (var trackName in bindingByName) {\n var binding = bindingByName[trackName];\n binding.restoreOriginalState();\n this._removeInactiveBinding(binding);\n }\n }\n },\n // remove a targeted clip from the cache\n uncacheAction: function (clip, optionalRoot) {\n var action = this.existingAction(clip, optionalRoot);\n if (action !== null) {\n this._deactivateAction(action);\n this._removeInactiveAction(action);\n }\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform(value) {\n if (typeof value === 'string') {\n console.warn('THREE.Uniform: Type parameter is no longer needed.');\n value = arguments[1];\n }\n this.value = value;\n}\nUniform.prototype.clone = function () {\n return new Uniform(this.value.clone === undefined ? this.value : this.value.clone());\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer(array, stride, meshPerAttribute) {\n InterleavedBuffer.call(this, array, stride);\n this.meshPerAttribute = meshPerAttribute || 1;\n}\nInstancedInterleavedBuffer.prototype = Object.assign(Object.create(InterleavedBuffer.prototype), {\n constructor: InstancedInterleavedBuffer,\n isInstancedInterleavedBuffer: true,\n copy: function (source) {\n InterleavedBuffer.prototype.copy.call(this, source);\n this.meshPerAttribute = source.meshPerAttribute;\n return this;\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster(origin, direction, near, far) {\n this.ray = new Ray(origin, direction);\n // direction is assumed to be normalized (for accurate distance calculations)\n\n this.near = near || 0;\n this.far = far || Infinity;\n this.params = {\n Mesh: {},\n Line: {},\n LOD: {},\n Points: {\n threshold: 1\n },\n Sprite: {}\n };\n Object.defineProperties(this.params, {\n PointCloud: {\n get: function () {\n console.warn('THREE.Raycaster: params.PointCloud has been renamed to params.Points.');\n return this.Points;\n }\n }\n });\n}\nfunction ascSort(a, b) {\n return a.distance - b.distance;\n}\nfunction intersectObject(object, raycaster, intersects, recursive) {\n if (object.visible === false) return;\n object.raycast(raycaster, intersects);\n if (recursive === true) {\n var children = object.children;\n for (var i = 0, l = children.length; i < l; i++) {\n intersectObject(children[i], raycaster, intersects, true);\n }\n }\n}\nObject.assign(Raycaster.prototype, {\n linePrecision: 1,\n set: function (origin, direction) {\n // direction is assumed to be normalized (for accurate distance calculations)\n\n this.ray.set(origin, direction);\n },\n setFromCamera: function (coords, camera) {\n if (camera && camera.isPerspectiveCamera) {\n this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n } else if (camera && camera.isOrthographicCamera) {\n this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera); // set origin in plane of camera\n this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n } else {\n console.error('THREE.Raycaster: Unsupported camera type.');\n }\n },\n intersectObject: function (object, recursive, optionalTarget) {\n var intersects = optionalTarget || [];\n intersectObject(object, this, intersects, recursive);\n intersects.sort(ascSort);\n return intersects;\n },\n intersectObjects: function (objects, recursive, optionalTarget) {\n var intersects = optionalTarget || [];\n if (Array.isArray(objects) === false) {\n console.warn('THREE.Raycaster.intersectObjects: objects is not an Array.');\n return intersects;\n }\n for (var i = 0, l = objects.length; i < l; i++) {\n intersectObject(objects[i], this, intersects, recursive);\n }\n intersects.sort(ascSort);\n return intersects;\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axiz.\n */\n\nfunction Spherical(radius, phi, theta) {\n this.radius = radius !== undefined ? radius : 1.0;\n this.phi = phi !== undefined ? phi : 0; // polar angle\n this.theta = theta !== undefined ? theta : 0; // azimuthal angle\n\n return this;\n}\nObject.assign(Spherical.prototype, {\n set: function (radius, phi, theta) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (other) {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this;\n },\n // restrict phi to be betwee EPS and PI-EPS\n makeSafe: function () {\n var EPS = 0.000001;\n this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n return this;\n },\n setFromVector3: function (v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n },\n setFromCartesianCoords: function (x, y, z) {\n this.radius = Math.sqrt(x * x + y * y + z * z);\n if (this.radius === 0) {\n this.theta = 0;\n this.phi = 0;\n } else {\n this.theta = Math.atan2(x, z);\n this.phi = Math.acos(_Math.clamp(y / this.radius, -1, 1));\n }\n return this;\n }\n});\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical(radius, theta, y) {\n this.radius = radius !== undefined ? radius : 1.0; // distance from the origin to a point in the x-z plane\n this.theta = theta !== undefined ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n this.y = y !== undefined ? y : 0; // height above the x-z plane\n\n return this;\n}\nObject.assign(Cylindrical.prototype, {\n set: function (radius, theta, y) {\n this.radius = radius;\n this.theta = theta;\n this.y = y;\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (other) {\n this.radius = other.radius;\n this.theta = other.theta;\n this.y = other.y;\n return this;\n },\n setFromVector3: function (v) {\n return this.setFromCartesianCoords(v.x, v.y, v.z);\n },\n setFromCartesianCoords: function (x, y, z) {\n this.radius = Math.sqrt(x * x + z * z);\n this.theta = Math.atan2(x, z);\n this.y = y;\n return this;\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2(min, max) {\n this.min = min !== undefined ? min : new Vector2(+Infinity, +Infinity);\n this.max = max !== undefined ? max : new Vector2(-Infinity, -Infinity);\n}\nObject.assign(Box2.prototype, {\n set: function (min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n },\n setFromPoints: function (points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n },\n setFromCenterAndSize: function () {\n var v1 = new Vector2();\n return function setFromCenterAndSize(center, size) {\n var halfSize = v1.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n };\n }(),\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n },\n makeEmpty: function () {\n this.min.x = this.min.y = +Infinity;\n this.max.x = this.max.y = -Infinity;\n return this;\n },\n isEmpty: function () {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n return this.max.x < this.min.x || this.max.y < this.min.y;\n },\n getCenter: function (target) {\n if (target === undefined) {\n console.warn('THREE.Box2: .getCenter() target is now required');\n target = new Vector2();\n }\n return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n },\n getSize: function (target) {\n if (target === undefined) {\n console.warn('THREE.Box2: .getSize() target is now required');\n target = new Vector2();\n }\n return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n },\n expandByPoint: function (point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n },\n expandByVector: function (vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n },\n expandByScalar: function (scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n },\n containsPoint: function (point) {\n return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n },\n containsBox: function (box) {\n return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n },\n getParameter: function (point, target) {\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n\n if (target === undefined) {\n console.warn('THREE.Box2: .getParameter() target is now required');\n target = new Vector2();\n }\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y));\n },\n intersectsBox: function (box) {\n // using 4 splitting planes to rule out intersections\n\n return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n },\n clampPoint: function (point, target) {\n if (target === undefined) {\n console.warn('THREE.Box2: .clampPoint() target is now required');\n target = new Vector2();\n }\n return target.copy(point).clamp(this.min, this.max);\n },\n distanceToPoint: function () {\n var v1 = new Vector2();\n return function distanceToPoint(point) {\n var clampedPoint = v1.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length();\n };\n }(),\n intersect: function (box) {\n this.min.max(box.min);\n this.max.min(box.max);\n return this;\n },\n union: function (box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n },\n translate: function (offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n },\n equals: function (box) {\n return box.min.equals(this.min) && box.max.equals(this.max);\n }\n});\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3(start, end) {\n this.start = start !== undefined ? start : new Vector3();\n this.end = end !== undefined ? end : new Vector3();\n}\nObject.assign(Line3.prototype, {\n set: function (start, end) {\n this.start.copy(start);\n this.end.copy(end);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n },\n copy: function (line) {\n this.start.copy(line.start);\n this.end.copy(line.end);\n return this;\n },\n getCenter: function (target) {\n if (target === undefined) {\n console.warn('THREE.Line3: .getCenter() target is now required');\n target = new Vector3();\n }\n return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n },\n delta: function (target) {\n if (target === undefined) {\n console.warn('THREE.Line3: .delta() target is now required');\n target = new Vector3();\n }\n return target.subVectors(this.end, this.start);\n },\n distanceSq: function () {\n return this.start.distanceToSquared(this.end);\n },\n distance: function () {\n return this.start.distanceTo(this.end);\n },\n at: function (t, target) {\n if (target === undefined) {\n console.warn('THREE.Line3: .at() target is now required');\n target = new Vector3();\n }\n return this.delta(target).multiplyScalar(t).add(this.start);\n },\n closestPointToPointParameter: function () {\n var startP = new Vector3();\n var startEnd = new Vector3();\n return function closestPointToPointParameter(point, clampToLine) {\n startP.subVectors(point, this.start);\n startEnd.subVectors(this.end, this.start);\n var startEnd2 = startEnd.dot(startEnd);\n var startEnd_startP = startEnd.dot(startP);\n var t = startEnd_startP / startEnd2;\n if (clampToLine) {\n t = _Math.clamp(t, 0, 1);\n }\n return t;\n };\n }(),\n closestPointToPoint: function (point, clampToLine, target) {\n var t = this.closestPointToPointParameter(point, clampToLine);\n if (target === undefined) {\n console.warn('THREE.Line3: .closestPointToPoint() target is now required');\n target = new Vector3();\n }\n return this.delta(target).multiplyScalar(t).add(this.start);\n },\n applyMatrix4: function (matrix) {\n this.start.applyMatrix4(matrix);\n this.end.applyMatrix4(matrix);\n return this;\n },\n equals: function (line) {\n return line.start.equals(this.start) && line.end.equals(this.end);\n }\n});\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject(material) {\n Object3D.call(this);\n this.material = material;\n this.render = function /* renderCallback */ () {};\n}\nImmediateRenderObject.prototype = Object.create(Object3D.prototype);\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper(object, size, hex, linewidth) {\n this.object = object;\n this.size = size !== undefined ? size : 1;\n var color = hex !== undefined ? hex : 0xff0000;\n var width = linewidth !== undefined ? linewidth : 1;\n\n //\n\n var nNormals = 0;\n var objGeometry = this.object.geometry;\n if (objGeometry && objGeometry.isGeometry) {\n nNormals = objGeometry.faces.length * 3;\n } else if (objGeometry && objGeometry.isBufferGeometry) {\n nNormals = objGeometry.attributes.normal.count;\n }\n\n //\n\n var geometry = new BufferGeometry();\n var positions = new Float32BufferAttribute(nNormals * 2 * 3, 3);\n geometry.addAttribute('position', positions);\n LineSegments.call(this, geometry, new LineBasicMaterial({\n color: color,\n linewidth: width\n }));\n\n //\n\n this.matrixAutoUpdate = false;\n this.update();\n}\nVertexNormalsHelper.prototype = Object.create(LineSegments.prototype);\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\nVertexNormalsHelper.prototype.update = function () {\n var v1 = new Vector3();\n var v2 = new Vector3();\n var normalMatrix = new Matrix3();\n return function update() {\n var keys = ['a', 'b', 'c'];\n this.object.updateMatrixWorld(true);\n normalMatrix.getNormalMatrix(this.object.matrixWorld);\n var matrixWorld = this.object.matrixWorld;\n var position = this.geometry.attributes.position;\n\n //\n\n var objGeometry = this.object.geometry;\n if (objGeometry && objGeometry.isGeometry) {\n var vertices = objGeometry.vertices;\n var faces = objGeometry.faces;\n var idx = 0;\n for (var i = 0, l = faces.length; i < l; i++) {\n var face = faces[i];\n for (var j = 0, jl = face.vertexNormals.length; j < jl; j++) {\n var vertex = vertices[face[keys[j]]];\n var normal = face.vertexNormals[j];\n v1.copy(vertex).applyMatrix4(matrixWorld);\n v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);\n position.setXYZ(idx, v1.x, v1.y, v1.z);\n idx = idx + 1;\n position.setXYZ(idx, v2.x, v2.y, v2.z);\n idx = idx + 1;\n }\n }\n } else if (objGeometry && objGeometry.isBufferGeometry) {\n var objPos = objGeometry.attributes.position;\n var objNorm = objGeometry.attributes.normal;\n var idx = 0;\n\n // for simplicity, ignore index and drawcalls, and render every normal\n\n for (var j = 0, jl = objPos.count; j < jl; j++) {\n v1.set(objPos.getX(j), objPos.getY(j), objPos.getZ(j)).applyMatrix4(matrixWorld);\n v2.set(objNorm.getX(j), objNorm.getY(j), objNorm.getZ(j));\n v2.applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);\n position.setXYZ(idx, v1.x, v1.y, v1.z);\n idx = idx + 1;\n position.setXYZ(idx, v2.x, v2.y, v2.z);\n idx = idx + 1;\n }\n }\n position.needsUpdate = true;\n };\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper(light, color) {\n Object3D.call(this);\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n var geometry = new BufferGeometry();\n var positions = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 1];\n for (var i = 0, j = 1, l = 32; i < l; i++, j++) {\n var p1 = i / l * Math.PI * 2;\n var p2 = j / l * Math.PI * 2;\n positions.push(Math.cos(p1), Math.sin(p1), 1, Math.cos(p2), Math.sin(p2), 1);\n }\n geometry.addAttribute('position', new Float32BufferAttribute(positions, 3));\n var material = new LineBasicMaterial({\n fog: false\n });\n this.cone = new LineSegments(geometry, material);\n this.add(this.cone);\n this.update();\n}\nSpotLightHelper.prototype = Object.create(Object3D.prototype);\nSpotLightHelper.prototype.constructor = SpotLightHelper;\nSpotLightHelper.prototype.dispose = function () {\n this.cone.geometry.dispose();\n this.cone.material.dispose();\n};\nSpotLightHelper.prototype.update = function () {\n var vector = new Vector3();\n return function update() {\n this.light.updateMatrixWorld();\n var coneLength = this.light.distance ? this.light.distance : 1000;\n var coneWidth = coneLength * Math.tan(this.light.angle);\n this.cone.scale.set(coneWidth, coneWidth, coneLength);\n vector.setFromMatrixPosition(this.light.target.matrixWorld);\n this.cone.lookAt(vector);\n if (this.color !== undefined) {\n this.cone.material.color.set(this.color);\n } else {\n this.cone.material.color.copy(this.light.color);\n }\n };\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList(object) {\n var boneList = [];\n if (object && object.isBone) {\n boneList.push(object);\n }\n for (var i = 0; i < object.children.length; i++) {\n boneList.push.apply(boneList, getBoneList(object.children[i]));\n }\n return boneList;\n}\nfunction SkeletonHelper(object) {\n var bones = getBoneList(object);\n var geometry = new BufferGeometry();\n var vertices = [];\n var colors = [];\n var color1 = new Color(0, 0, 1);\n var color2 = new Color(0, 1, 0);\n for (var i = 0; i < bones.length; i++) {\n var bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n vertices.push(0, 0, 0);\n vertices.push(0, 0, 0);\n colors.push(color1.r, color1.g, color1.b);\n colors.push(color2.r, color2.g, color2.b);\n }\n }\n geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.addAttribute('color', new Float32BufferAttribute(colors, 3));\n var material = new LineBasicMaterial({\n vertexColors: VertexColors,\n depthTest: false,\n depthWrite: false,\n transparent: true\n });\n LineSegments.call(this, geometry, material);\n this.root = object;\n this.bones = bones;\n this.matrix = object.matrixWorld;\n this.matrixAutoUpdate = false;\n}\nSkeletonHelper.prototype = Object.create(LineSegments.prototype);\nSkeletonHelper.prototype.constructor = SkeletonHelper;\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n var vector = new Vector3();\n var boneMatrix = new Matrix4();\n var matrixWorldInv = new Matrix4();\n return function updateMatrixWorld(force) {\n var bones = this.bones;\n var geometry = this.geometry;\n var position = geometry.getAttribute('position');\n matrixWorldInv.getInverse(this.root.matrixWorld);\n for (var i = 0, j = 0; i < bones.length; i++) {\n var bone = bones[i];\n if (bone.parent && bone.parent.isBone) {\n boneMatrix.multiplyMatrices(matrixWorldInv, bone.matrixWorld);\n vector.setFromMatrixPosition(boneMatrix);\n position.setXYZ(j, vector.x, vector.y, vector.z);\n boneMatrix.multiplyMatrices(matrixWorldInv, bone.parent.matrixWorld);\n vector.setFromMatrixPosition(boneMatrix);\n position.setXYZ(j + 1, vector.x, vector.y, vector.z);\n j += 2;\n }\n }\n geometry.getAttribute('position').needsUpdate = true;\n Object3D.prototype.updateMatrixWorld.call(this, force);\n };\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper(light, sphereSize, color) {\n this.light = light;\n this.light.updateMatrixWorld();\n this.color = color;\n var geometry = new SphereBufferGeometry(sphereSize, 4, 2);\n var material = new MeshBasicMaterial({\n wireframe: true,\n fog: false\n });\n Mesh.call(this, geometry, material);\n this.matrix = this.light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.update();\n\n /*\n var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n \tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n \tvar d = light.distance;\n \tif ( d === 0.0 ) {\n \t\tthis.lightDistance.visible = false;\n \t} else {\n \t\tthis.lightDistance.scale.set( d, d, d );\n \t}\n \tthis.add( this.lightDistance );\n */\n}\n\nPointLightHelper.prototype = Object.create(Mesh.prototype);\nPointLightHelper.prototype.constructor = PointLightHelper;\nPointLightHelper.prototype.dispose = function () {\n this.geometry.dispose();\n this.material.dispose();\n};\nPointLightHelper.prototype.update = function () {\n if (this.color !== undefined) {\n this.material.color.set(this.color);\n } else {\n this.material.color.copy(this.light.color);\n }\n\n /*\n var d = this.light.distance;\n \tif ( d === 0.0 ) {\n \t\tthis.lightDistance.visible = false;\n \t} else {\n \t\tthis.lightDistance.visible = true;\n \tthis.lightDistance.scale.set( d, d, d );\n \t}\n */\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n *\n * This helper must be added as a child of the light\n */\n\nfunction RectAreaLightHelper(light, color) {\n this.type = 'RectAreaLightHelper';\n this.light = light;\n this.color = color; // optional hardwired color for the helper\n\n var positions = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0];\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute(positions, 3));\n geometry.computeBoundingSphere();\n var material = new LineBasicMaterial({\n fog: false\n });\n Line.call(this, geometry, material);\n\n //\n\n var positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0];\n var geometry2 = new BufferGeometry();\n geometry2.addAttribute('position', new Float32BufferAttribute(positions2, 3));\n geometry2.computeBoundingSphere();\n this.add(new Mesh(geometry2, new MeshBasicMaterial({\n side: BackSide,\n fog: false\n })));\n this.update();\n}\nRectAreaLightHelper.prototype = Object.create(Line.prototype);\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\nRectAreaLightHelper.prototype.update = function () {\n this.scale.set(0.5 * this.light.width, 0.5 * this.light.height, 1);\n if (this.color !== undefined) {\n this.material.color.set(this.color);\n this.children[0].material.color.set(this.color);\n } else {\n this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);\n\n // prevent hue shift\n var c = this.material.color;\n var max = Math.max(c.r, c.g, c.b);\n if (max > 1) c.multiplyScalar(1 / max);\n this.children[0].material.color.copy(this.material.color);\n }\n};\nRectAreaLightHelper.prototype.dispose = function () {\n this.geometry.dispose();\n this.material.dispose();\n this.children[0].geometry.dispose();\n this.children[0].material.dispose();\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper(light, size, color) {\n Object3D.call(this);\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n var geometry = new OctahedronBufferGeometry(size);\n geometry.rotateY(Math.PI * 0.5);\n this.material = new MeshBasicMaterial({\n wireframe: true,\n fog: false\n });\n if (this.color === undefined) this.material.vertexColors = VertexColors;\n var position = geometry.getAttribute('position');\n var colors = new Float32Array(position.count * 3);\n geometry.addAttribute('color', new BufferAttribute(colors, 3));\n this.add(new Mesh(geometry, this.material));\n this.update();\n}\nHemisphereLightHelper.prototype = Object.create(Object3D.prototype);\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\nHemisphereLightHelper.prototype.dispose = function () {\n this.children[0].geometry.dispose();\n this.children[0].material.dispose();\n};\nHemisphereLightHelper.prototype.update = function () {\n var vector = new Vector3();\n var color1 = new Color();\n var color2 = new Color();\n return function update() {\n var mesh = this.children[0];\n if (this.color !== undefined) {\n this.material.color.set(this.color);\n } else {\n var colors = mesh.geometry.getAttribute('color');\n color1.copy(this.light.color);\n color2.copy(this.light.groundColor);\n for (var i = 0, l = colors.count; i < l; i++) {\n var color = i < l / 2 ? color1 : color2;\n colors.setXYZ(i, color.r, color.g, color.b);\n }\n colors.needsUpdate = true;\n }\n mesh.lookAt(vector.setFromMatrixPosition(this.light.matrixWorld).negate());\n };\n}();\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction LightProbeHelper(lightProbe, size) {\n this.lightProbe = lightProbe;\n this.size = size;\n var defines = {};\n defines['GAMMA_OUTPUT'] = \"\";\n\n // material\n var material = new ShaderMaterial({\n defines: defines,\n uniforms: {\n sh: {\n value: this.lightProbe.sh.coefficients\n },\n // by reference\n\n intensity: {\n value: this.lightProbe.intensity\n }\n },\n vertexShader: ['varying vec3 vNormal;', 'void main() {', '\tvNormal = normalize( normalMatrix * normal );', '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', '}'].join('\\n'),\n fragmentShader: ['#define RECIPROCAL_PI 0.318309886', 'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {', '\t// matrix is assumed to be orthogonal', '\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );', '}', 'vec3 linearToOutput( in vec3 a ) {', '\t#ifdef GAMMA_OUTPUT', '\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );', '\t#else', '\t\treturn a;', '\t#endif', '}', '// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf', 'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {', '\t// normal is assumed to have unit length', '\tfloat x = normal.x, y = normal.y, z = normal.z;', '\t// band 0', '\tvec3 result = shCoefficients[ 0 ] * 0.886227;', '\t// band 1', '\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;', '\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;', '\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;', '\t// band 2', '\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;', '\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;', '\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );', '\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;', '\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );', '\treturn result;', '}', 'uniform vec3 sh[ 9 ]; // sh coefficients', 'uniform float intensity; // light probe intensity', 'varying vec3 vNormal;', 'void main() {', '\tvec3 normal = normalize( vNormal );', '\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );', '\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );', '\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;', '\toutgoingLight = linearToOutput( outgoingLight );', '\tgl_FragColor = vec4( outgoingLight, 1.0 );', '}'].join('\\n')\n });\n var geometry = new SphereBufferGeometry(1, 32, 16);\n Mesh.call(this, geometry, material);\n this.onBeforeRender();\n}\nLightProbeHelper.prototype = Object.create(Mesh.prototype);\nLightProbeHelper.prototype.constructor = LightProbeHelper;\nLightProbeHelper.prototype.dispose = function () {\n this.geometry.dispose();\n this.material.dispose();\n};\nLightProbeHelper.prototype.onBeforeRender = function () {\n return function update() {\n this.position.copy(this.lightProbe.position);\n this.scale.set(1, 1, 1).multiplyScalar(this.size);\n this.material.uniforms.intensity.value = this.lightProbe.intensity;\n };\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper(size, divisions, color1, color2) {\n size = size || 10;\n divisions = divisions || 10;\n color1 = new Color(color1 !== undefined ? color1 : 0x444444);\n color2 = new Color(color2 !== undefined ? color2 : 0x888888);\n var center = divisions / 2;\n var step = size / divisions;\n var halfSize = size / 2;\n var vertices = [],\n colors = [];\n for (var i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n vertices.push(-halfSize, 0, k, halfSize, 0, k);\n vertices.push(k, 0, -halfSize, k, 0, halfSize);\n var color = i === center ? color1 : color2;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n color.toArray(colors, j);\n j += 3;\n }\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.addAttribute('color', new Float32BufferAttribute(colors, 3));\n var material = new LineBasicMaterial({\n vertexColors: VertexColors\n });\n LineSegments.call(this, geometry, material);\n}\nGridHelper.prototype = Object.assign(Object.create(LineSegments.prototype), {\n constructor: GridHelper,\n copy: function (source) {\n LineSegments.prototype.copy.call(this, source);\n this.geometry.copy(source.geometry);\n this.material.copy(source.material);\n return this;\n },\n clone: function () {\n return new this.constructor().copy(this);\n }\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper(radius, radials, circles, divisions, color1, color2) {\n radius = radius || 10;\n radials = radials || 16;\n circles = circles || 8;\n divisions = divisions || 64;\n color1 = new Color(color1 !== undefined ? color1 : 0x444444);\n color2 = new Color(color2 !== undefined ? color2 : 0x888888);\n var vertices = [];\n var colors = [];\n var x, z;\n var v, i, j, r, color;\n\n // create the radials\n\n for (i = 0; i <= radials; i++) {\n v = i / radials * (Math.PI * 2);\n x = Math.sin(v) * radius;\n z = Math.cos(v) * radius;\n vertices.push(0, 0, 0);\n vertices.push(x, 0, z);\n color = i & 1 ? color1 : color2;\n colors.push(color.r, color.g, color.b);\n colors.push(color.r, color.g, color.b);\n }\n\n // create the circles\n\n for (i = 0; i <= circles; i++) {\n color = i & 1 ? color1 : color2;\n r = radius - radius / circles * i;\n for (j = 0; j < divisions; j++) {\n // first vertex\n\n v = j / divisions * (Math.PI * 2);\n x = Math.sin(v) * r;\n z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n\n // second vertex\n\n v = (j + 1) / divisions * (Math.PI * 2);\n x = Math.sin(v) * r;\n z = Math.cos(v) * r;\n vertices.push(x, 0, z);\n colors.push(color.r, color.g, color.b);\n }\n }\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.addAttribute('color', new Float32BufferAttribute(colors, 3));\n var material = new LineBasicMaterial({\n vertexColors: VertexColors\n });\n LineSegments.call(this, geometry, material);\n}\nPolarGridHelper.prototype = Object.create(LineSegments.prototype);\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction PositionalAudioHelper(audio, range, divisionsInnerAngle, divisionsOuterAngle) {\n this.audio = audio;\n this.range = range || 1;\n this.divisionsInnerAngle = divisionsInnerAngle || 16;\n this.divisionsOuterAngle = divisionsOuterAngle || 2;\n var geometry = new BufferGeometry();\n var divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2;\n var positions = new Float32Array((divisions * 3 + 3) * 3);\n geometry.addAttribute('position', new BufferAttribute(positions, 3));\n var materialInnerAngle = new LineBasicMaterial({\n color: 0x00ff00\n });\n var materialOuterAngle = new LineBasicMaterial({\n color: 0xffff00\n });\n Line.call(this, geometry, [materialOuterAngle, materialInnerAngle]);\n this.update();\n}\nPositionalAudioHelper.prototype = Object.create(Line.prototype);\nPositionalAudioHelper.prototype.constructor = PositionalAudioHelper;\nPositionalAudioHelper.prototype.update = function () {\n var audio = this.audio;\n var range = this.range;\n var divisionsInnerAngle = this.divisionsInnerAngle;\n var divisionsOuterAngle = this.divisionsOuterAngle;\n var coneInnerAngle = _Math.degToRad(audio.panner.coneInnerAngle);\n var coneOuterAngle = _Math.degToRad(audio.panner.coneOuterAngle);\n var halfConeInnerAngle = coneInnerAngle / 2;\n var halfConeOuterAngle = coneOuterAngle / 2;\n var start = 0;\n var count = 0;\n var i, stride;\n var geometry = this.geometry;\n var positionAttribute = geometry.attributes.position;\n geometry.clearGroups();\n\n //\n\n function generateSegment(from, to, divisions, materialIndex) {\n var step = (to - from) / divisions;\n positionAttribute.setXYZ(start, 0, 0, 0);\n count++;\n for (i = from; i < to; i += step) {\n stride = start + count;\n positionAttribute.setXYZ(stride, Math.sin(i) * range, 0, Math.cos(i) * range);\n positionAttribute.setXYZ(stride + 1, Math.sin(Math.min(i + step, to)) * range, 0, Math.cos(Math.min(i + step, to)) * range);\n positionAttribute.setXYZ(stride + 2, 0, 0, 0);\n count += 3;\n }\n geometry.addGroup(start, count, materialIndex);\n start += count;\n count = 0;\n }\n\n //\n\n generateSegment(-halfConeOuterAngle, -halfConeInnerAngle, divisionsOuterAngle, 0);\n generateSegment(-halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1);\n generateSegment(halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0);\n\n //\n\n positionAttribute.needsUpdate = true;\n if (coneInnerAngle === coneOuterAngle) this.material[0].visible = false;\n};\nPositionalAudioHelper.prototype.dispose = function () {\n this.geometry.dispose();\n this.material[0].dispose();\n this.material[1].dispose();\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper(object, size, hex, linewidth) {\n // FaceNormalsHelper only supports THREE.Geometry\n\n this.object = object;\n this.size = size !== undefined ? size : 1;\n var color = hex !== undefined ? hex : 0xffff00;\n var width = linewidth !== undefined ? linewidth : 1;\n\n //\n\n var nNormals = 0;\n var objGeometry = this.object.geometry;\n if (objGeometry && objGeometry.isGeometry) {\n nNormals = objGeometry.faces.length;\n } else {\n console.warn('THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.');\n }\n\n //\n\n var geometry = new BufferGeometry();\n var positions = new Float32BufferAttribute(nNormals * 2 * 3, 3);\n geometry.addAttribute('position', positions);\n LineSegments.call(this, geometry, new LineBasicMaterial({\n color: color,\n linewidth: width\n }));\n\n //\n\n this.matrixAutoUpdate = false;\n this.update();\n}\nFaceNormalsHelper.prototype = Object.create(LineSegments.prototype);\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\nFaceNormalsHelper.prototype.update = function () {\n var v1 = new Vector3();\n var v2 = new Vector3();\n var normalMatrix = new Matrix3();\n return function update() {\n this.object.updateMatrixWorld(true);\n normalMatrix.getNormalMatrix(this.object.matrixWorld);\n var matrixWorld = this.object.matrixWorld;\n var position = this.geometry.attributes.position;\n\n //\n\n var objGeometry = this.object.geometry;\n var vertices = objGeometry.vertices;\n var faces = objGeometry.faces;\n var idx = 0;\n for (var i = 0, l = faces.length; i < l; i++) {\n var face = faces[i];\n var normal = face.normal;\n v1.copy(vertices[face.a]).add(vertices[face.b]).add(vertices[face.c]).divideScalar(3).applyMatrix4(matrixWorld);\n v2.copy(normal).applyMatrix3(normalMatrix).normalize().multiplyScalar(this.size).add(v1);\n position.setXYZ(idx, v1.x, v1.y, v1.z);\n idx = idx + 1;\n position.setXYZ(idx, v2.x, v2.y, v2.z);\n idx = idx + 1;\n }\n position.needsUpdate = true;\n };\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper(light, size, color) {\n Object3D.call(this);\n this.light = light;\n this.light.updateMatrixWorld();\n this.matrix = light.matrixWorld;\n this.matrixAutoUpdate = false;\n this.color = color;\n if (size === undefined) size = 1;\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute([-size, size, 0, size, size, 0, size, -size, 0, -size, -size, 0, -size, size, 0], 3));\n var material = new LineBasicMaterial({\n fog: false\n });\n this.lightPlane = new Line(geometry, material);\n this.add(this.lightPlane);\n geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n this.targetLine = new Line(geometry, material);\n this.add(this.targetLine);\n this.update();\n}\nDirectionalLightHelper.prototype = Object.create(Object3D.prototype);\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\nDirectionalLightHelper.prototype.dispose = function () {\n this.lightPlane.geometry.dispose();\n this.lightPlane.material.dispose();\n this.targetLine.geometry.dispose();\n this.targetLine.material.dispose();\n};\nDirectionalLightHelper.prototype.update = function () {\n var v1 = new Vector3();\n var v2 = new Vector3();\n var v3 = new Vector3();\n return function update() {\n v1.setFromMatrixPosition(this.light.matrixWorld);\n v2.setFromMatrixPosition(this.light.target.matrixWorld);\n v3.subVectors(v2, v1);\n this.lightPlane.lookAt(v2);\n if (this.color !== undefined) {\n this.lightPlane.material.color.set(this.color);\n this.targetLine.material.color.set(this.color);\n } else {\n this.lightPlane.material.color.copy(this.light.color);\n this.targetLine.material.color.copy(this.light.color);\n }\n this.targetLine.lookAt(v2);\n this.targetLine.scale.z = v3.length();\n };\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper(camera) {\n var geometry = new BufferGeometry();\n var material = new LineBasicMaterial({\n color: 0xffffff,\n vertexColors: FaceColors\n });\n var vertices = [];\n var colors = [];\n var pointMap = {};\n\n // colors\n\n var colorFrustum = new Color(0xffaa00);\n var colorCone = new Color(0xff0000);\n var colorUp = new Color(0x00aaff);\n var colorTarget = new Color(0xffffff);\n var colorCross = new Color(0x333333);\n\n // near\n\n addLine('n1', 'n2', colorFrustum);\n addLine('n2', 'n4', colorFrustum);\n addLine('n4', 'n3', colorFrustum);\n addLine('n3', 'n1', colorFrustum);\n\n // far\n\n addLine('f1', 'f2', colorFrustum);\n addLine('f2', 'f4', colorFrustum);\n addLine('f4', 'f3', colorFrustum);\n addLine('f3', 'f1', colorFrustum);\n\n // sides\n\n addLine('n1', 'f1', colorFrustum);\n addLine('n2', 'f2', colorFrustum);\n addLine('n3', 'f3', colorFrustum);\n addLine('n4', 'f4', colorFrustum);\n\n // cone\n\n addLine('p', 'n1', colorCone);\n addLine('p', 'n2', colorCone);\n addLine('p', 'n3', colorCone);\n addLine('p', 'n4', colorCone);\n\n // up\n\n addLine('u1', 'u2', colorUp);\n addLine('u2', 'u3', colorUp);\n addLine('u3', 'u1', colorUp);\n\n // target\n\n addLine('c', 't', colorTarget);\n addLine('p', 'c', colorCross);\n\n // cross\n\n addLine('cn1', 'cn2', colorCross);\n addLine('cn3', 'cn4', colorCross);\n addLine('cf1', 'cf2', colorCross);\n addLine('cf3', 'cf4', colorCross);\n function addLine(a, b, color) {\n addPoint(a, color);\n addPoint(b, color);\n }\n function addPoint(id, color) {\n vertices.push(0, 0, 0);\n colors.push(color.r, color.g, color.b);\n if (pointMap[id] === undefined) {\n pointMap[id] = [];\n }\n pointMap[id].push(vertices.length / 3 - 1);\n }\n geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.addAttribute('color', new Float32BufferAttribute(colors, 3));\n LineSegments.call(this, geometry, material);\n this.camera = camera;\n if (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix();\n this.matrix = camera.matrixWorld;\n this.matrixAutoUpdate = false;\n this.pointMap = pointMap;\n this.update();\n}\nCameraHelper.prototype = Object.create(LineSegments.prototype);\nCameraHelper.prototype.constructor = CameraHelper;\nCameraHelper.prototype.update = function () {\n var geometry, pointMap;\n var vector = new Vector3();\n var camera = new Camera();\n function setPoint(point, x, y, z) {\n vector.set(x, y, z).unproject(camera);\n var points = pointMap[point];\n if (points !== undefined) {\n var position = geometry.getAttribute('position');\n for (var i = 0, l = points.length; i < l; i++) {\n position.setXYZ(points[i], vector.x, vector.y, vector.z);\n }\n }\n }\n return function update() {\n geometry = this.geometry;\n pointMap = this.pointMap;\n var w = 1,\n h = 1;\n\n // we need just camera projection matrix inverse\n // world matrix must be identity\n\n camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n\n // center / target\n\n setPoint('c', 0, 0, -1);\n setPoint('t', 0, 0, 1);\n\n // near\n\n setPoint('n1', -w, -h, -1);\n setPoint('n2', w, -h, -1);\n setPoint('n3', -w, h, -1);\n setPoint('n4', w, h, -1);\n\n // far\n\n setPoint('f1', -w, -h, 1);\n setPoint('f2', w, -h, 1);\n setPoint('f3', -w, h, 1);\n setPoint('f4', w, h, 1);\n\n // up\n\n setPoint('u1', w * 0.7, h * 1.1, -1);\n setPoint('u2', -w * 0.7, h * 1.1, -1);\n setPoint('u3', 0, h * 2, -1);\n\n // cross\n\n setPoint('cf1', -w, 0, 1);\n setPoint('cf2', w, 0, 1);\n setPoint('cf3', 0, -h, 1);\n setPoint('cf4', 0, h, 1);\n setPoint('cn1', -w, 0, -1);\n setPoint('cn2', w, 0, -1);\n setPoint('cn3', 0, -h, -1);\n setPoint('cn4', 0, h, -1);\n geometry.getAttribute('position').needsUpdate = true;\n };\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper(object, color) {\n this.object = object;\n if (color === undefined) color = 0xffff00;\n var indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n var positions = new Float32Array(8 * 3);\n var geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.addAttribute('position', new BufferAttribute(positions, 3));\n LineSegments.call(this, geometry, new LineBasicMaterial({\n color: color\n }));\n this.matrixAutoUpdate = false;\n this.update();\n}\nBoxHelper.prototype = Object.create(LineSegments.prototype);\nBoxHelper.prototype.constructor = BoxHelper;\nBoxHelper.prototype.update = function () {\n var box = new Box3();\n return function update(object) {\n if (object !== undefined) {\n console.warn('THREE.BoxHelper: .update() has no longer arguments.');\n }\n if (this.object !== undefined) {\n box.setFromObject(this.object);\n }\n if (box.isEmpty()) return;\n var min = box.min;\n var max = box.max;\n\n /*\n 5____4\n 1/___0/|\n | 6__|_7\n 2/___3/\n \t0: max.x, max.y, max.z\n 1: min.x, max.y, max.z\n 2: min.x, min.y, max.z\n 3: max.x, min.y, max.z\n 4: max.x, max.y, min.z\n 5: min.x, max.y, min.z\n 6: min.x, min.y, min.z\n 7: max.x, min.y, min.z\n */\n\n var position = this.geometry.attributes.position;\n var array = position.array;\n array[0] = max.x;\n array[1] = max.y;\n array[2] = max.z;\n array[3] = min.x;\n array[4] = max.y;\n array[5] = max.z;\n array[6] = min.x;\n array[7] = min.y;\n array[8] = max.z;\n array[9] = max.x;\n array[10] = min.y;\n array[11] = max.z;\n array[12] = max.x;\n array[13] = max.y;\n array[14] = min.z;\n array[15] = min.x;\n array[16] = max.y;\n array[17] = min.z;\n array[18] = min.x;\n array[19] = min.y;\n array[20] = min.z;\n array[21] = max.x;\n array[22] = min.y;\n array[23] = min.z;\n position.needsUpdate = true;\n this.geometry.computeBoundingSphere();\n };\n}();\nBoxHelper.prototype.setFromObject = function (object) {\n this.object = object;\n this.update();\n return this;\n};\nBoxHelper.prototype.copy = function (source) {\n LineSegments.prototype.copy.call(this, source);\n this.object = source.object;\n return this;\n};\nBoxHelper.prototype.clone = function () {\n return new this.constructor().copy(this);\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper(box, hex) {\n this.type = 'Box3Helper';\n this.box = box;\n var color = hex !== undefined ? hex : 0xffff00;\n var indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n var positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1];\n var geometry = new BufferGeometry();\n geometry.setIndex(new BufferAttribute(indices, 1));\n geometry.addAttribute('position', new Float32BufferAttribute(positions, 3));\n LineSegments.call(this, geometry, new LineBasicMaterial({\n color: color\n }));\n this.geometry.computeBoundingSphere();\n}\nBox3Helper.prototype = Object.create(LineSegments.prototype);\nBox3Helper.prototype.constructor = Box3Helper;\nBox3Helper.prototype.updateMatrixWorld = function (force) {\n var box = this.box;\n if (box.isEmpty()) return;\n box.getCenter(this.position);\n box.getSize(this.scale);\n this.scale.multiplyScalar(0.5);\n Object3D.prototype.updateMatrixWorld.call(this, force);\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper(plane, size, hex) {\n this.type = 'PlaneHelper';\n this.plane = plane;\n this.size = size === undefined ? 1 : size;\n var color = hex !== undefined ? hex : 0xffff00;\n var positions = [1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0];\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute(positions, 3));\n geometry.computeBoundingSphere();\n Line.call(this, geometry, new LineBasicMaterial({\n color: color\n }));\n\n //\n\n var positions2 = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1];\n var geometry2 = new BufferGeometry();\n geometry2.addAttribute('position', new Float32BufferAttribute(positions2, 3));\n geometry2.computeBoundingSphere();\n this.add(new Mesh(geometry2, new MeshBasicMaterial({\n color: color,\n opacity: 0.2,\n transparent: true,\n depthWrite: false\n })));\n}\nPlaneHelper.prototype = Object.create(Line.prototype);\nPlaneHelper.prototype.constructor = PlaneHelper;\nPlaneHelper.prototype.updateMatrixWorld = function (force) {\n var scale = -this.plane.constant;\n if (Math.abs(scale) < 1e-8) scale = 1e-8; // sign does not matter\n\n this.scale.set(0.5 * this.size, 0.5 * this.size, scale);\n this.children[0].material.side = scale < 0 ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n this.lookAt(this.plane.normal);\n Object3D.prototype.updateMatrixWorld.call(this, force);\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\nfunction ArrowHelper(dir, origin, length, color, headLength, headWidth) {\n // dir is assumed to be normalized\n\n Object3D.call(this);\n if (dir === undefined) dir = new Vector3(0, 0, 1);\n if (origin === undefined) origin = new Vector3(0, 0, 0);\n if (length === undefined) length = 1;\n if (color === undefined) color = 0xffff00;\n if (headLength === undefined) headLength = 0.2 * length;\n if (headWidth === undefined) headWidth = 0.2 * headLength;\n if (lineGeometry === undefined) {\n lineGeometry = new BufferGeometry();\n lineGeometry.addAttribute('position', new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n coneGeometry = new CylinderBufferGeometry(0, 0.5, 1, 5, 1);\n coneGeometry.translate(0, -0.5, 0);\n }\n this.position.copy(origin);\n this.line = new Line(lineGeometry, new LineBasicMaterial({\n color: color\n }));\n this.line.matrixAutoUpdate = false;\n this.add(this.line);\n this.cone = new Mesh(coneGeometry, new MeshBasicMaterial({\n color: color\n }));\n this.cone.matrixAutoUpdate = false;\n this.add(this.cone);\n this.setDirection(dir);\n this.setLength(length, headLength, headWidth);\n}\nArrowHelper.prototype = Object.create(Object3D.prototype);\nArrowHelper.prototype.constructor = ArrowHelper;\nArrowHelper.prototype.setDirection = function () {\n var axis = new Vector3();\n var radians;\n return function setDirection(dir) {\n // dir is assumed to be normalized\n\n if (dir.y > 0.99999) {\n this.quaternion.set(0, 0, 0, 1);\n } else if (dir.y < -0.99999) {\n this.quaternion.set(1, 0, 0, 0);\n } else {\n axis.set(dir.z, 0, -dir.x).normalize();\n radians = Math.acos(dir.y);\n this.quaternion.setFromAxisAngle(axis, radians);\n }\n };\n}();\nArrowHelper.prototype.setLength = function (length, headLength, headWidth) {\n if (headLength === undefined) headLength = 0.2 * length;\n if (headWidth === undefined) headWidth = 0.2 * headLength;\n this.line.scale.set(1, Math.max(0, length - headLength), 1);\n this.line.updateMatrix();\n this.cone.scale.set(headWidth, headLength, headWidth);\n this.cone.position.y = length;\n this.cone.updateMatrix();\n};\nArrowHelper.prototype.setColor = function (color) {\n this.line.material.color.copy(color);\n this.cone.material.color.copy(color);\n};\nArrowHelper.prototype.copy = function (source) {\n Object3D.prototype.copy.call(this, source, false);\n this.line.copy(source.line);\n this.cone.copy(source.cone);\n return this;\n};\nArrowHelper.prototype.clone = function () {\n return new this.constructor().copy(this);\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper(size) {\n size = size || 1;\n var vertices = [0, 0, 0, size, 0, 0, 0, 0, 0, 0, size, 0, 0, 0, 0, 0, 0, size];\n var colors = [1, 0, 0, 1, 0.6, 0, 0, 1, 0, 0.6, 1, 0, 0, 0, 1, 0, 0.6, 1];\n var geometry = new BufferGeometry();\n geometry.addAttribute('position', new Float32BufferAttribute(vertices, 3));\n geometry.addAttribute('color', new Float32BufferAttribute(colors, 3));\n var material = new LineBasicMaterial({\n vertexColors: VertexColors\n });\n LineSegments.call(this, geometry, material);\n}\nAxesHelper.prototype = Object.create(LineSegments.prototype);\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4(a, b, c, d, normal, color, materialIndex) {\n console.warn('THREE.Face4 has been removed. A THREE.Face3 will be created instead.');\n return new Face3(a, b, c, normal, color, materialIndex);\n}\nvar LineStrip = 0;\nvar LinePieces = 1;\nfunction MeshFaceMaterial(materials) {\n console.warn('THREE.MeshFaceMaterial has been removed. Use an Array instead.');\n return materials;\n}\nfunction MultiMaterial(materials) {\n if (materials === undefined) materials = [];\n console.warn('THREE.MultiMaterial has been removed. Use an Array instead.');\n materials.isMultiMaterial = true;\n materials.materials = materials;\n materials.clone = function () {\n return materials.slice();\n };\n return materials;\n}\nfunction PointCloud(geometry, material) {\n console.warn('THREE.PointCloud has been renamed to THREE.Points.');\n return new Points(geometry, material);\n}\nfunction Particle(material) {\n console.warn('THREE.Particle has been renamed to THREE.Sprite.');\n return new Sprite(material);\n}\nfunction ParticleSystem(geometry, material) {\n console.warn('THREE.ParticleSystem has been renamed to THREE.Points.');\n return new Points(geometry, material);\n}\nfunction PointCloudMaterial(parameters) {\n console.warn('THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.');\n return new PointsMaterial(parameters);\n}\nfunction ParticleBasicMaterial(parameters) {\n console.warn('THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.');\n return new PointsMaterial(parameters);\n}\nfunction ParticleSystemMaterial(parameters) {\n console.warn('THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.');\n return new PointsMaterial(parameters);\n}\nfunction Vertex(x, y, z) {\n console.warn('THREE.Vertex has been removed. Use THREE.Vector3 instead.');\n return new Vector3(x, y, z);\n}\n\n//\n\nfunction DynamicBufferAttribute(array, itemSize) {\n console.warn('THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.');\n return new BufferAttribute(array, itemSize).setDynamic(true);\n}\nfunction Int8Attribute(array, itemSize) {\n console.warn('THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.');\n return new Int8BufferAttribute(array, itemSize);\n}\nfunction Uint8Attribute(array, itemSize) {\n console.warn('THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.');\n return new Uint8BufferAttribute(array, itemSize);\n}\nfunction Uint8ClampedAttribute(array, itemSize) {\n console.warn('THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.');\n return new Uint8ClampedBufferAttribute(array, itemSize);\n}\nfunction Int16Attribute(array, itemSize) {\n console.warn('THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.');\n return new Int16BufferAttribute(array, itemSize);\n}\nfunction Uint16Attribute(array, itemSize) {\n console.warn('THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.');\n return new Uint16BufferAttribute(array, itemSize);\n}\nfunction Int32Attribute(array, itemSize) {\n console.warn('THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.');\n return new Int32BufferAttribute(array, itemSize);\n}\nfunction Uint32Attribute(array, itemSize) {\n console.warn('THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.');\n return new Uint32BufferAttribute(array, itemSize);\n}\nfunction Float32Attribute(array, itemSize) {\n console.warn('THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.');\n return new Float32BufferAttribute(array, itemSize);\n}\nfunction Float64Attribute(array, itemSize) {\n console.warn('THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.');\n return new Float64BufferAttribute(array, itemSize);\n}\n\n//\n\nCurve.create = function (construct, getPoint) {\n console.log('THREE.Curve.create() has been deprecated');\n construct.prototype = Object.create(Curve.prototype);\n construct.prototype.constructor = construct;\n construct.prototype.getPoint = getPoint;\n return construct;\n};\n\n//\n\nObject.assign(CurvePath.prototype, {\n createPointsGeometry: function (divisions) {\n console.warn('THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');\n\n // generate geometry from path points (for Line or Points objects)\n\n var pts = this.getPoints(divisions);\n return this.createGeometry(pts);\n },\n createSpacedPointsGeometry: function (divisions) {\n console.warn('THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');\n\n // generate geometry from equidistant sampling along the path\n\n var pts = this.getSpacedPoints(divisions);\n return this.createGeometry(pts);\n },\n createGeometry: function (points) {\n console.warn('THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.');\n var geometry = new Geometry();\n for (var i = 0, l = points.length; i < l; i++) {\n var point = points[i];\n geometry.vertices.push(new Vector3(point.x, point.y, point.z || 0));\n }\n return geometry;\n }\n});\n\n//\n\nObject.assign(Path.prototype, {\n fromPoints: function (points) {\n console.warn('THREE.Path: .fromPoints() has been renamed to .setFromPoints().');\n this.setFromPoints(points);\n }\n});\n\n//\n\nfunction ClosedSplineCurve3(points) {\n console.warn('THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.');\n CatmullRomCurve3.call(this, points);\n this.type = 'catmullrom';\n this.closed = true;\n}\nClosedSplineCurve3.prototype = Object.create(CatmullRomCurve3.prototype);\n\n//\n\nfunction SplineCurve3(points) {\n console.warn('THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.');\n CatmullRomCurve3.call(this, points);\n this.type = 'catmullrom';\n}\nSplineCurve3.prototype = Object.create(CatmullRomCurve3.prototype);\n\n//\n\nfunction Spline(points) {\n console.warn('THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.');\n CatmullRomCurve3.call(this, points);\n this.type = 'catmullrom';\n}\nSpline.prototype = Object.create(CatmullRomCurve3.prototype);\nObject.assign(Spline.prototype, {\n initFromArray: function /* a */\n () {\n console.error('THREE.Spline: .initFromArray() has been removed.');\n },\n getControlPointsArray: function /* optionalTarget */\n () {\n console.error('THREE.Spline: .getControlPointsArray() has been removed.');\n },\n reparametrizeByArcLength: function /* samplingCoef */\n () {\n console.error('THREE.Spline: .reparametrizeByArcLength() has been removed.');\n }\n});\n\n//\n\nfunction AxisHelper(size) {\n console.warn('THREE.AxisHelper has been renamed to THREE.AxesHelper.');\n return new AxesHelper(size);\n}\nfunction BoundingBoxHelper(object, color) {\n console.warn('THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.');\n return new BoxHelper(object, color);\n}\nfunction EdgesHelper(object, hex) {\n console.warn('THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.');\n return new LineSegments(new EdgesGeometry(object.geometry), new LineBasicMaterial({\n color: hex !== undefined ? hex : 0xffffff\n }));\n}\nGridHelper.prototype.setColors = function () {\n console.error('THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.');\n};\nSkeletonHelper.prototype.update = function () {\n console.error('THREE.SkeletonHelper: update() no longer needs to be called.');\n};\nfunction WireframeHelper(object, hex) {\n console.warn('THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.');\n return new LineSegments(new WireframeGeometry(object.geometry), new LineBasicMaterial({\n color: hex !== undefined ? hex : 0xffffff\n }));\n}\n\n//\n\nObject.assign(Loader.prototype, {\n extractUrlBase: function (url) {\n console.warn('THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.');\n return LoaderUtils.extractUrlBase(url);\n }\n});\nfunction XHRLoader(manager) {\n console.warn('THREE.XHRLoader has been renamed to THREE.FileLoader.');\n return new FileLoader(manager);\n}\nfunction BinaryTextureLoader(manager) {\n console.warn('THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.');\n return new DataTextureLoader(manager);\n}\nObject.assign(ObjectLoader.prototype, {\n setTexturePath: function (value) {\n console.warn('THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().');\n return this.setResourcePath(value);\n }\n});\n\n//\n\nObject.assign(Box2.prototype, {\n center: function (optionalTarget) {\n console.warn('THREE.Box2: .center() has been renamed to .getCenter().');\n return this.getCenter(optionalTarget);\n },\n empty: function () {\n console.warn('THREE.Box2: .empty() has been renamed to .isEmpty().');\n return this.isEmpty();\n },\n isIntersectionBox: function (box) {\n console.warn('THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().');\n return this.intersectsBox(box);\n },\n size: function (optionalTarget) {\n console.warn('THREE.Box2: .size() has been renamed to .getSize().');\n return this.getSize(optionalTarget);\n }\n});\nObject.assign(Box3.prototype, {\n center: function (optionalTarget) {\n console.warn('THREE.Box3: .center() has been renamed to .getCenter().');\n return this.getCenter(optionalTarget);\n },\n empty: function () {\n console.warn('THREE.Box3: .empty() has been renamed to .isEmpty().');\n return this.isEmpty();\n },\n isIntersectionBox: function (box) {\n console.warn('THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().');\n return this.intersectsBox(box);\n },\n isIntersectionSphere: function (sphere) {\n console.warn('THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().');\n return this.intersectsSphere(sphere);\n },\n size: function (optionalTarget) {\n console.warn('THREE.Box3: .size() has been renamed to .getSize().');\n return this.getSize(optionalTarget);\n }\n});\nLine3.prototype.center = function (optionalTarget) {\n console.warn('THREE.Line3: .center() has been renamed to .getCenter().');\n return this.getCenter(optionalTarget);\n};\nObject.assign(_Math, {\n random16: function () {\n console.warn('THREE.Math: .random16() has been deprecated. Use Math.random() instead.');\n return Math.random();\n },\n nearestPowerOfTwo: function (value) {\n console.warn('THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().');\n return _Math.floorPowerOfTwo(value);\n },\n nextPowerOfTwo: function (value) {\n console.warn('THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().');\n return _Math.ceilPowerOfTwo(value);\n }\n});\nObject.assign(Matrix3.prototype, {\n flattenToArrayOffset: function (array, offset) {\n console.warn(\"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n },\n multiplyVector3: function (vector) {\n console.warn('THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.');\n return vector.applyMatrix3(this);\n },\n multiplyVector3Array: function /* a */\n () {\n console.error('THREE.Matrix3: .multiplyVector3Array() has been removed.');\n },\n applyToBuffer: function (buffer /*, offset, length */) {\n console.warn('THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.');\n return this.applyToBufferAttribute(buffer);\n },\n applyToVector3Array: function /* array, offset, length */\n () {\n console.error('THREE.Matrix3: .applyToVector3Array() has been removed.');\n }\n});\nObject.assign(Matrix4.prototype, {\n extractPosition: function (m) {\n console.warn('THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().');\n return this.copyPosition(m);\n },\n flattenToArrayOffset: function (array, offset) {\n console.warn(\"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\");\n return this.toArray(array, offset);\n },\n getPosition: function () {\n var v1;\n return function getPosition() {\n if (v1 === undefined) v1 = new Vector3();\n console.warn('THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.');\n return v1.setFromMatrixColumn(this, 3);\n };\n }(),\n setRotationFromQuaternion: function (q) {\n console.warn('THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().');\n return this.makeRotationFromQuaternion(q);\n },\n multiplyToArray: function () {\n console.warn('THREE.Matrix4: .multiplyToArray() has been removed.');\n },\n multiplyVector3: function (vector) {\n console.warn('THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n return vector.applyMatrix4(this);\n },\n multiplyVector4: function (vector) {\n console.warn('THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n return vector.applyMatrix4(this);\n },\n multiplyVector3Array: function /* a */\n () {\n console.error('THREE.Matrix4: .multiplyVector3Array() has been removed.');\n },\n rotateAxis: function (v) {\n console.warn('THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.');\n v.transformDirection(this);\n },\n crossVector: function (vector) {\n console.warn('THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.');\n return vector.applyMatrix4(this);\n },\n translate: function () {\n console.error('THREE.Matrix4: .translate() has been removed.');\n },\n rotateX: function () {\n console.error('THREE.Matrix4: .rotateX() has been removed.');\n },\n rotateY: function () {\n console.error('THREE.Matrix4: .rotateY() has been removed.');\n },\n rotateZ: function () {\n console.error('THREE.Matrix4: .rotateZ() has been removed.');\n },\n rotateByAxis: function () {\n console.error('THREE.Matrix4: .rotateByAxis() has been removed.');\n },\n applyToBuffer: function (buffer /*, offset, length */) {\n console.warn('THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.');\n return this.applyToBufferAttribute(buffer);\n },\n applyToVector3Array: function /* array, offset, length */\n () {\n console.error('THREE.Matrix4: .applyToVector3Array() has been removed.');\n },\n makeFrustum: function (left, right, bottom, top, near, far) {\n console.warn('THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.');\n return this.makePerspective(left, right, top, bottom, near, far);\n }\n});\nPlane.prototype.isIntersectionLine = function (line) {\n console.warn('THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().');\n return this.intersectsLine(line);\n};\nQuaternion.prototype.multiplyVector3 = function (vector) {\n console.warn('THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.');\n return vector.applyQuaternion(this);\n};\nObject.assign(Ray.prototype, {\n isIntersectionBox: function (box) {\n console.warn('THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().');\n return this.intersectsBox(box);\n },\n isIntersectionPlane: function (plane) {\n console.warn('THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().');\n return this.intersectsPlane(plane);\n },\n isIntersectionSphere: function (sphere) {\n console.warn('THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().');\n return this.intersectsSphere(sphere);\n }\n});\nObject.assign(Triangle.prototype, {\n area: function () {\n console.warn('THREE.Triangle: .area() has been renamed to .getArea().');\n return this.getArea();\n },\n barycoordFromPoint: function (point, target) {\n console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');\n return this.getBarycoord(point, target);\n },\n midpoint: function (target) {\n console.warn('THREE.Triangle: .midpoint() has been renamed to .getMidpoint().');\n return this.getMidpoint(target);\n },\n normal: function (target) {\n console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');\n return this.getNormal(target);\n },\n plane: function (target) {\n console.warn('THREE.Triangle: .plane() has been renamed to .getPlane().');\n return this.getPlane(target);\n }\n});\nObject.assign(Triangle, {\n barycoordFromPoint: function (point, a, b, c, target) {\n console.warn('THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().');\n return Triangle.getBarycoord(point, a, b, c, target);\n },\n normal: function (a, b, c, target) {\n console.warn('THREE.Triangle: .normal() has been renamed to .getNormal().');\n return Triangle.getNormal(a, b, c, target);\n }\n});\nObject.assign(Shape.prototype, {\n extractAllPoints: function (divisions) {\n console.warn('THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.');\n return this.extractPoints(divisions);\n },\n extrude: function (options) {\n console.warn('THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.');\n return new ExtrudeGeometry(this, options);\n },\n makeGeometry: function (options) {\n console.warn('THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.');\n return new ShapeGeometry(this, options);\n }\n});\nObject.assign(Vector2.prototype, {\n fromAttribute: function (attribute, index, offset) {\n console.warn('THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().');\n return this.fromBufferAttribute(attribute, index, offset);\n },\n distanceToManhattan: function (v) {\n console.warn('THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');\n return this.manhattanDistanceTo(v);\n },\n lengthManhattan: function () {\n console.warn('THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().');\n return this.manhattanLength();\n }\n});\nObject.assign(Vector3.prototype, {\n setEulerFromRotationMatrix: function () {\n console.error('THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.');\n },\n setEulerFromQuaternion: function () {\n console.error('THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.');\n },\n getPositionFromMatrix: function (m) {\n console.warn('THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().');\n return this.setFromMatrixPosition(m);\n },\n getScaleFromMatrix: function (m) {\n console.warn('THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().');\n return this.setFromMatrixScale(m);\n },\n getColumnFromMatrix: function (index, matrix) {\n console.warn('THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().');\n return this.setFromMatrixColumn(matrix, index);\n },\n applyProjection: function (m) {\n console.warn('THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.');\n return this.applyMatrix4(m);\n },\n fromAttribute: function (attribute, index, offset) {\n console.warn('THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().');\n return this.fromBufferAttribute(attribute, index, offset);\n },\n distanceToManhattan: function (v) {\n console.warn('THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().');\n return this.manhattanDistanceTo(v);\n },\n lengthManhattan: function () {\n console.warn('THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().');\n return this.manhattanLength();\n }\n});\nObject.assign(Vector4.prototype, {\n fromAttribute: function (attribute, index, offset) {\n console.warn('THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().');\n return this.fromBufferAttribute(attribute, index, offset);\n },\n lengthManhattan: function () {\n console.warn('THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().');\n return this.manhattanLength();\n }\n});\n\n//\n\nObject.assign(Geometry.prototype, {\n computeTangents: function () {\n console.error('THREE.Geometry: .computeTangents() has been removed.');\n },\n computeLineDistances: function () {\n console.error('THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.');\n }\n});\nObject.assign(Object3D.prototype, {\n getChildByName: function (name) {\n console.warn('THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().');\n return this.getObjectByName(name);\n },\n renderDepth: function () {\n console.warn('THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.');\n },\n translate: function (distance, axis) {\n console.warn('THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.');\n return this.translateOnAxis(axis, distance);\n },\n getWorldRotation: function () {\n console.error('THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.');\n }\n});\nObject.defineProperties(Object3D.prototype, {\n eulerOrder: {\n get: function () {\n console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');\n return this.rotation.order;\n },\n set: function (value) {\n console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.');\n this.rotation.order = value;\n }\n },\n useQuaternion: {\n get: function () {\n console.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.');\n },\n set: function () {\n console.warn('THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.');\n }\n }\n});\nObject.defineProperties(LOD.prototype, {\n objects: {\n get: function () {\n console.warn('THREE.LOD: .objects has been renamed to .levels.');\n return this.levels;\n }\n }\n});\nObject.defineProperty(Skeleton.prototype, 'useVertexTexture', {\n get: function () {\n console.warn('THREE.Skeleton: useVertexTexture has been removed.');\n },\n set: function () {\n console.warn('THREE.Skeleton: useVertexTexture has been removed.');\n }\n});\nSkinnedMesh.prototype.initBones = function () {\n console.error('THREE.SkinnedMesh: initBones() has been removed.');\n};\nObject.defineProperty(Curve.prototype, '__arcLengthDivisions', {\n get: function () {\n console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.');\n return this.arcLengthDivisions;\n },\n set: function (value) {\n console.warn('THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.');\n this.arcLengthDivisions = value;\n }\n});\n\n//\n\nPerspectiveCamera.prototype.setLens = function (focalLength, filmGauge) {\n console.warn(\"THREE.PerspectiveCamera.setLens is deprecated. \" + \"Use .setFocalLength and .filmGauge for a photographic setup.\");\n if (filmGauge !== undefined) this.filmGauge = filmGauge;\n this.setFocalLength(focalLength);\n};\n\n//\n\nObject.defineProperties(Light.prototype, {\n onlyShadow: {\n set: function () {\n console.warn('THREE.Light: .onlyShadow has been removed.');\n }\n },\n shadowCameraFov: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraFov is now .shadow.camera.fov.');\n this.shadow.camera.fov = value;\n }\n },\n shadowCameraLeft: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraLeft is now .shadow.camera.left.');\n this.shadow.camera.left = value;\n }\n },\n shadowCameraRight: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraRight is now .shadow.camera.right.');\n this.shadow.camera.right = value;\n }\n },\n shadowCameraTop: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraTop is now .shadow.camera.top.');\n this.shadow.camera.top = value;\n }\n },\n shadowCameraBottom: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.');\n this.shadow.camera.bottom = value;\n }\n },\n shadowCameraNear: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraNear is now .shadow.camera.near.');\n this.shadow.camera.near = value;\n }\n },\n shadowCameraFar: {\n set: function (value) {\n console.warn('THREE.Light: .shadowCameraFar is now .shadow.camera.far.');\n this.shadow.camera.far = value;\n }\n },\n shadowCameraVisible: {\n set: function () {\n console.warn('THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.');\n }\n },\n shadowBias: {\n set: function (value) {\n console.warn('THREE.Light: .shadowBias is now .shadow.bias.');\n this.shadow.bias = value;\n }\n },\n shadowDarkness: {\n set: function () {\n console.warn('THREE.Light: .shadowDarkness has been removed.');\n }\n },\n shadowMapWidth: {\n set: function (value) {\n console.warn('THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.');\n this.shadow.mapSize.width = value;\n }\n },\n shadowMapHeight: {\n set: function (value) {\n console.warn('THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.');\n this.shadow.mapSize.height = value;\n }\n }\n});\n\n//\n\nObject.defineProperties(BufferAttribute.prototype, {\n length: {\n get: function () {\n console.warn('THREE.BufferAttribute: .length has been deprecated. Use .count instead.');\n return this.array.length;\n }\n },\n copyIndicesArray: function /* indices */\n () {\n console.error('THREE.BufferAttribute: .copyIndicesArray() has been removed.');\n }\n});\nObject.assign(BufferGeometry.prototype, {\n addIndex: function (index) {\n console.warn('THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().');\n this.setIndex(index);\n },\n addDrawCall: function (start, count, indexOffset) {\n if (indexOffset !== undefined) {\n console.warn('THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.');\n }\n console.warn('THREE.BufferGeometry: .addDrawCall() is now .addGroup().');\n this.addGroup(start, count);\n },\n clearDrawCalls: function () {\n console.warn('THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().');\n this.clearGroups();\n },\n computeTangents: function () {\n console.warn('THREE.BufferGeometry: .computeTangents() has been removed.');\n },\n computeOffsets: function () {\n console.warn('THREE.BufferGeometry: .computeOffsets() has been removed.');\n }\n});\nObject.defineProperties(BufferGeometry.prototype, {\n drawcalls: {\n get: function () {\n console.error('THREE.BufferGeometry: .drawcalls has been renamed to .groups.');\n return this.groups;\n }\n },\n offsets: {\n get: function () {\n console.warn('THREE.BufferGeometry: .offsets has been renamed to .groups.');\n return this.groups;\n }\n }\n});\n\n//\n\nObject.assign(ExtrudeBufferGeometry.prototype, {\n getArrays: function () {\n console.error('THREE.ExtrudeBufferGeometry: .getArrays() has been removed.');\n },\n addShapeList: function () {\n console.error('THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.');\n },\n addShape: function () {\n console.error('THREE.ExtrudeBufferGeometry: .addShape() has been removed.');\n }\n});\n\n//\n\nObject.defineProperties(Uniform.prototype, {\n dynamic: {\n set: function () {\n console.warn('THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.');\n }\n },\n onUpdate: {\n value: function () {\n console.warn('THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.');\n return this;\n }\n }\n});\n\n//\n\nObject.defineProperties(Material.prototype, {\n wrapAround: {\n get: function () {\n console.warn('THREE.Material: .wrapAround has been removed.');\n },\n set: function () {\n console.warn('THREE.Material: .wrapAround has been removed.');\n }\n },\n overdraw: {\n get: function () {\n console.warn('THREE.Material: .overdraw has been removed.');\n },\n set: function () {\n console.warn('THREE.Material: .overdraw has been removed.');\n }\n },\n wrapRGB: {\n get: function () {\n console.warn('THREE.Material: .wrapRGB has been removed.');\n return new Color();\n }\n },\n shading: {\n get: function () {\n console.error('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n },\n set: function (value) {\n console.warn('THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.');\n this.flatShading = value === FlatShading;\n }\n }\n});\nObject.defineProperties(MeshPhongMaterial.prototype, {\n metal: {\n get: function () {\n console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.');\n return false;\n },\n set: function () {\n console.warn('THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead');\n }\n }\n});\nObject.defineProperties(ShaderMaterial.prototype, {\n derivatives: {\n get: function () {\n console.warn('THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');\n return this.extensions.derivatives;\n },\n set: function (value) {\n console.warn('THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.');\n this.extensions.derivatives = value;\n }\n }\n});\n\n//\n\nObject.assign(WebGLRenderer.prototype, {\n clearTarget: function (renderTarget, color, depth, stencil) {\n console.warn('THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.');\n this.setRenderTarget(renderTarget);\n this.clear(color, depth, stencil);\n },\n animate: function (callback) {\n console.warn('THREE.WebGLRenderer: .animate() is now .setAnimationLoop().');\n this.setAnimationLoop(callback);\n },\n getCurrentRenderTarget: function () {\n console.warn('THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().');\n return this.getRenderTarget();\n },\n getMaxAnisotropy: function () {\n console.warn('THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().');\n return this.capabilities.getMaxAnisotropy();\n },\n getPrecision: function () {\n console.warn('THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.');\n return this.capabilities.precision;\n },\n resetGLState: function () {\n console.warn('THREE.WebGLRenderer: .resetGLState() is now .state.reset().');\n return this.state.reset();\n },\n supportsFloatTextures: function () {\n console.warn('THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).');\n return this.extensions.get('OES_texture_float');\n },\n supportsHalfFloatTextures: function () {\n console.warn('THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).');\n return this.extensions.get('OES_texture_half_float');\n },\n supportsStandardDerivatives: function () {\n console.warn('THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).');\n return this.extensions.get('OES_standard_derivatives');\n },\n supportsCompressedTextureS3TC: function () {\n console.warn('THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).');\n return this.extensions.get('WEBGL_compressed_texture_s3tc');\n },\n supportsCompressedTexturePVRTC: function () {\n console.warn('THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).');\n return this.extensions.get('WEBGL_compressed_texture_pvrtc');\n },\n supportsBlendMinMax: function () {\n console.warn('THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).');\n return this.extensions.get('EXT_blend_minmax');\n },\n supportsVertexTextures: function () {\n console.warn('THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.');\n return this.capabilities.vertexTextures;\n },\n supportsInstancedArrays: function () {\n console.warn('THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).');\n return this.extensions.get('ANGLE_instanced_arrays');\n },\n enableScissorTest: function (boolean) {\n console.warn('THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().');\n this.setScissorTest(boolean);\n },\n initMaterial: function () {\n console.warn('THREE.WebGLRenderer: .initMaterial() has been removed.');\n },\n addPrePlugin: function () {\n console.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.');\n },\n addPostPlugin: function () {\n console.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.');\n },\n updateShadowMap: function () {\n console.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.');\n },\n setFaceCulling: function () {\n console.warn('THREE.WebGLRenderer: .setFaceCulling() has been removed.');\n },\n allocTextureUnit: function () {\n console.warn('THREE.WebGLRenderer: .allocTextureUnit() has been removed.');\n },\n setTexture: function () {\n console.warn('THREE.WebGLRenderer: .setTexture() has been removed.');\n },\n setTexture2D: function () {\n console.warn('THREE.WebGLRenderer: .setTexture2D() has been removed.');\n },\n setTextureCube: function () {\n console.warn('THREE.WebGLRenderer: .setTextureCube() has been removed.');\n }\n});\nObject.defineProperties(WebGLRenderer.prototype, {\n shadowMapEnabled: {\n get: function () {\n return this.shadowMap.enabled;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.');\n this.shadowMap.enabled = value;\n }\n },\n shadowMapType: {\n get: function () {\n return this.shadowMap.type;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.');\n this.shadowMap.type = value;\n }\n },\n shadowMapCullFace: {\n get: function () {\n console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.');\n return undefined;\n },\n set: function /* value */\n () {\n console.warn('THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.');\n }\n }\n});\nObject.defineProperties(WebGLShadowMap.prototype, {\n cullFace: {\n get: function () {\n console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.');\n return undefined;\n },\n set: function /* cullFace */\n () {\n console.warn('THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.');\n }\n },\n renderReverseSided: {\n get: function () {\n console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.');\n return undefined;\n },\n set: function () {\n console.warn('THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.');\n }\n },\n renderSingleSided: {\n get: function () {\n console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.');\n return undefined;\n },\n set: function () {\n console.warn('THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.');\n }\n }\n});\n\n//\n\nObject.defineProperties(WebGLRenderTargetCube.prototype, {\n activeCubeFace: {\n set: function /* value */\n () {\n console.warn('THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().');\n }\n },\n activeMipMapLevel: {\n set: function /* value */\n () {\n console.warn('THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().');\n }\n }\n});\n\n//\n\nObject.defineProperties(WebGLRenderTarget.prototype, {\n wrapS: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');\n return this.texture.wrapS;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.');\n this.texture.wrapS = value;\n }\n },\n wrapT: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');\n return this.texture.wrapT;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.');\n this.texture.wrapT = value;\n }\n },\n magFilter: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');\n return this.texture.magFilter;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.');\n this.texture.magFilter = value;\n }\n },\n minFilter: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');\n return this.texture.minFilter;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.');\n this.texture.minFilter = value;\n }\n },\n anisotropy: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');\n return this.texture.anisotropy;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.');\n this.texture.anisotropy = value;\n }\n },\n offset: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');\n return this.texture.offset;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .offset is now .texture.offset.');\n this.texture.offset = value;\n }\n },\n repeat: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');\n return this.texture.repeat;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .repeat is now .texture.repeat.');\n this.texture.repeat = value;\n }\n },\n format: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');\n return this.texture.format;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .format is now .texture.format.');\n this.texture.format = value;\n }\n },\n type: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');\n return this.texture.type;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.');\n this.texture.type = value;\n }\n },\n generateMipmaps: {\n get: function () {\n console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');\n return this.texture.generateMipmaps;\n },\n set: function (value) {\n console.warn('THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.');\n this.texture.generateMipmaps = value;\n }\n }\n});\n\n//\n\nObject.defineProperties(WebVRManager.prototype, {\n standing: {\n set: function /* value */\n () {\n console.warn('THREE.WebVRManager: .standing has been removed.');\n }\n },\n userHeight: {\n set: function /* value */\n () {\n console.warn('THREE.WebVRManager: .userHeight has been removed.');\n }\n }\n});\n\n//\n\nAudio.prototype.load = function (file) {\n console.warn('THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.');\n var scope = this;\n var audioLoader = new AudioLoader();\n audioLoader.load(file, function (buffer) {\n scope.setBuffer(buffer);\n });\n return this;\n};\nAudioAnalyser.prototype.getData = function () {\n console.warn('THREE.AudioAnalyser: .getData() is now .getFrequencyData().');\n return this.getFrequencyData();\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function (renderer, scene) {\n console.warn('THREE.CubeCamera: .updateCubeMap() is now .update().');\n return this.update(renderer, scene);\n};\n\n//\n\nvar GeometryUtils = {\n merge: function (geometry1, geometry2, materialIndexOffset) {\n console.warn('THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.');\n var matrix;\n if (geometry2.isMesh) {\n geometry2.matrixAutoUpdate && geometry2.updateMatrix();\n matrix = geometry2.matrix;\n geometry2 = geometry2.geometry;\n }\n geometry1.merge(geometry2, matrix, materialIndexOffset);\n },\n center: function (geometry) {\n console.warn('THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.');\n return geometry.center();\n }\n};\nImageUtils.crossOrigin = undefined;\nImageUtils.loadTexture = function (url, mapping, onLoad, onError) {\n console.warn('THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.');\n var loader = new TextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n var texture = loader.load(url, onLoad, undefined, onError);\n if (mapping) texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadTextureCube = function (urls, mapping, onLoad, onError) {\n console.warn('THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.');\n var loader = new CubeTextureLoader();\n loader.setCrossOrigin(this.crossOrigin);\n var texture = loader.load(urls, onLoad, undefined, onError);\n if (mapping) texture.mapping = mapping;\n return texture;\n};\nImageUtils.loadCompressedTexture = function () {\n console.error('THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.');\n};\nImageUtils.loadCompressedTextureCube = function () {\n console.error('THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.');\n};\n\n//\n\nfunction CanvasRenderer() {\n console.error('THREE.CanvasRenderer has been removed');\n}\n\n//\n\nfunction JSONLoader() {\n console.error('THREE.JSONLoader has been removed.');\n}\n\n//\n\nvar SceneUtils = {\n createMultiMaterialObject: function /* geometry, materials */\n () {\n console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js');\n },\n detach: function /* child, parent, scene */\n () {\n console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js');\n },\n attach: function /* child, scene, parent */\n () {\n console.error('THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js');\n }\n};\n\n//\n\nfunction LensFlare() {\n console.error('THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js');\n}\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AlphaFormat, AlwaysDepth, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FaceNormalsHelper, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, JSONLoader, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, Light, LightProbe, LightProbeHelper, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, _Math as Math, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverDepth, NoBlending, NoColors, NoToneMapping, NormalBlending, NotEqualDepth, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PositionalAudioHelper, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RectAreaLightHelper, RedFormat, ReinhardToneMapping, RepeatWrapping, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StereoCamera, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VertexNormalsHelper, VideoTexture, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, sRGBEncoding };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n const stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n let clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\nconst defaultActionDescriptorFilters = {\n stop(_ref) {\n let event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent(_ref2) {\n let event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self(_ref3) {\n let event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, {\n [token.replace(/^!/, \"\")]: !/^!/.test(token)\n }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter(key => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const _ref4 of Array.from(this.element.attributes)) {\n const name = _ref4.name;\n const value = _ref4.value;\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const _allModifiers$map = allModifiers.map(modifier => filters.includes(modifier)),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n select: () => \"change\",\n textarea: () => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const element = this.action.element;\n const actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n const controller = this.context.controller;\n let passes = true;\n for (const _ref5 of Object.entries(this.eventOptions)) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name,\n value,\n event,\n element,\n controller\n });\n } else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n invokeWithEvent(event) {\n const target = event.target,\n currentTarget = event.currentTarget;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event,\n target,\n currentTarget,\n action: this.methodName\n });\n } catch (error) {\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\n const detail = {\n identifier,\n controller,\n element,\n index,\n event\n };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\n };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree() {\n let tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(_ref7 => {\n let _ref8 = _slicedToArray(_ref7, 2),\n _key = _ref8[0],\n values = _ref8[1];\n return values.has(value);\n }).map(_ref9 => {\n let _ref10 = _slicedToArray(_ref9, 2),\n key = _ref10[0],\n _values = _ref10[1];\n return key;\n });\n }\n}\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const selector = this.selector;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n } else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const selector = this.selector;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter(match => this.matchElement(match));\n return match.concat(matches);\n } else {\n return [];\n }\n }\n elementMatched(element) {\n const selector = this.selector;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const selector = this.selector;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue) this.stringMapKeyRemoved(key, attributeName, oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(_ref11 => {\n let _ref12 = _slicedToArray(_ref11, 2),\n previousToken = _ref12[0],\n currentToken = _ref12[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length).map((content, index) => ({\n element,\n attributeName,\n content,\n index\n }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({\n length\n }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const element = token.element;\n const _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const element = token.element;\n const _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return {\n value\n };\n } catch (error) {\n return {\n error\n };\n }\n }\n}\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const _ref13 of this.valueDescriptors) {\n const key = _ref13.key;\n const name = _ref13.name;\n const defaultValue = _ref13.defaultValue;\n const writer = _ref13.writer;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched(_ref14) {\n let element = _ref14.element,\n name = _ref14.content;\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched(_ref15) {\n let element = _ref15.element,\n name = _ref15.content;\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach(outletName => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(context => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach(observer => observer.refresh());\n this.attributeObserverMap.forEach(observer => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(observer => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(observer => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, _ref16) {\n let outletName = _ref16.outletName;\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, _ref17) {\n let outletName = _ref17.outletName;\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, _ref18) {\n let outletName = _ref18.outletName;\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find(outletName => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach(module => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(outlet => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(context => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(outlet => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\nclass Context {\n constructor(module, scope) {\n var _this = this;\n this.logDebugActivity = function (functionName) {\n let detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const identifier = _this.identifier,\n controller = _this.controller,\n element = _this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n _this.application.logDebugActivity(_this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier,\n controller,\n element\n }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n controller[methodName](...args);\n }\n }\n}\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, {\n [key]: descriptor\n });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return object => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n } else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return constructor => class extended extends constructor {};\n }\n})();\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find() {\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll() {\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n return targetNames.reduce((targets, targetName) => [...targets, ...this.findAllTargets(targetName), ...this.findAllLegacyTargets(targetName)], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const identifier = this.identifier;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` + `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find() {\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll() {\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter(element => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = element => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [...(this.element.matches(selector) ? [this.element] : []), ...this.queryElements(selector).filter(this.containsElement)];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(c => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map(n => [n, n])))\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, _ref19) => {\n let _ref20 = _slicedToArray(_ref19, 2),\n k = _ref20[0],\n v = _ref20[1];\n return Object.assign(Object.assign({}, memo), {\n [k]: v\n });\n }, {});\n}\nclass Application {\n constructor() {\n var _this2 = this;\n let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n let schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = function (identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (_this2.debug) {\n _this2.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({\n identifier,\n controllerConstructor\n });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head) {\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head) {\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName) {\n let detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n } else {\n resolve();\n }\n });\n}\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets.map(outletElement => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n }).filter(controller => controller);\n }\n return [];\n }\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n }\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n }\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n }\n }\n };\n}\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, {\n [attributeName]: valueDescriptor\n });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair(_ref21, controller) {\n let _ref22 = _slicedToArray(_ref21, 2),\n token = _ref22[0],\n typeDefinition = _ref22[1];\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject) return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n const typeObject = {\n controller,\n token,\n typeObject: typeDefinition\n };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n if (hasType) {\n const type = typeObject.type;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const token = payload.token,\n typeDefinition = payload.typeDefinition;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {}\n connect() {}\n disconnect() {}\n dispatch(eventName) {\n let _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref23$target = _ref23.target,\n target = _ref23$target === void 0 ? this.element : _ref23$target,\n _ref23$detail = _ref23.detail,\n detail = _ref23$detail === void 0 ? {} : _ref23$detail,\n _ref23$prefix = _ref23.prefix,\n prefix = _ref23$prefix === void 0 ? this.identifier : _ref23$prefix,\n _ref23$bubbles = _ref23.bubbles,\n bubbles = _ref23$bubbles === void 0 ? true : _ref23$bubbles,\n _ref23$cancelable = _ref23.cancelable,\n cancelable = _ref23$cancelable === void 0 ? true : _ref23$cancelable;\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, {\n detail,\n bubbles,\n cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };","/**\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;\n(function () {\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 = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\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 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([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].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 = ['Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'];\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] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] = 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',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u0104': 'A',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u0105': 'a',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010a': 'C',\n '\\u010c': 'C',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010b': 'c',\n '\\u010d': 'c',\n '\\u010e': 'D',\n '\\u0110': 'D',\n '\\u010f': 'd',\n '\\u0111': 'd',\n '\\u0112': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u0118': 'E',\n '\\u011a': 'E',\n '\\u0113': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u0119': 'e',\n '\\u011b': 'e',\n '\\u011c': 'G',\n '\\u011e': 'G',\n '\\u0120': 'G',\n '\\u0122': 'G',\n '\\u011d': 'g',\n '\\u011f': 'g',\n '\\u0121': 'g',\n '\\u0123': 'g',\n '\\u0124': 'H',\n '\\u0126': 'H',\n '\\u0125': 'h',\n '\\u0127': 'h',\n '\\u0128': 'I',\n '\\u012a': 'I',\n '\\u012c': 'I',\n '\\u012e': 'I',\n '\\u0130': 'I',\n '\\u0129': 'i',\n '\\u012b': 'i',\n '\\u012d': 'i',\n '\\u012f': 'i',\n '\\u0131': 'i',\n '\\u0134': 'J',\n '\\u0135': 'j',\n '\\u0136': 'K',\n '\\u0137': 'k',\n '\\u0138': 'k',\n '\\u0139': 'L',\n '\\u013b': 'L',\n '\\u013d': 'L',\n '\\u013f': 'L',\n '\\u0141': 'L',\n '\\u013a': 'l',\n '\\u013c': 'l',\n '\\u013e': 'l',\n '\\u0140': 'l',\n '\\u0142': 'l',\n '\\u0143': 'N',\n '\\u0145': 'N',\n '\\u0147': 'N',\n '\\u014a': 'N',\n '\\u0144': 'n',\n '\\u0146': 'n',\n '\\u0148': 'n',\n '\\u014b': 'n',\n '\\u014c': 'O',\n '\\u014e': 'O',\n '\\u0150': 'O',\n '\\u014d': 'o',\n '\\u014f': 'o',\n '\\u0151': 'o',\n '\\u0154': 'R',\n '\\u0156': 'R',\n '\\u0158': 'R',\n '\\u0155': 'r',\n '\\u0157': 'r',\n '\\u0159': 'r',\n '\\u015a': 'S',\n '\\u015c': 'S',\n '\\u015e': 'S',\n '\\u0160': 'S',\n '\\u015b': 's',\n '\\u015d': 's',\n '\\u015f': 's',\n '\\u0161': 's',\n '\\u0162': 'T',\n '\\u0164': 'T',\n '\\u0166': 'T',\n '\\u0163': 't',\n '\\u0165': 't',\n '\\u0167': 't',\n '\\u0168': 'U',\n '\\u016a': 'U',\n '\\u016c': 'U',\n '\\u016e': 'U',\n '\\u0170': 'U',\n '\\u0172': 'U',\n '\\u0169': 'u',\n '\\u016b': 'u',\n '\\u016d': 'u',\n '\\u016f': 'u',\n '\\u0171': 'u',\n '\\u0173': 'u',\n '\\u0174': 'W',\n '\\u0175': 'w',\n '\\u0176': 'Y',\n '\\u0177': 'y',\n '\\u0178': 'Y',\n '\\u0179': 'Z',\n '\\u017b': 'Z',\n '\\u017d': 'Z',\n '\\u017a': 'z',\n '\\u017c': 'z',\n '\\u017e': 'z',\n '\\u0132': 'IJ',\n '\\u0133': 'ij',\n '\\u0152': 'Oe',\n '\\u0153': 'oe',\n '\\u0149': \"'n\",\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 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:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n 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 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 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 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 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 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 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 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 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 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 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 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 ? strictIndexOf(array, value, fromIndex) : 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 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 ? (initAccum = false, value) : 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 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 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 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 ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : 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 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 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 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 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 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 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 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 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 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) ? unicodeSize(string) : 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) ? unicodeToArray(string) : 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 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('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\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 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 * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\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 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 if (!isArr || !isRight && arrLength == length && takeCount == length) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n outer: while (length-- && resIndex < takeCount) {\n index += dir;\n var iterIndex = -1,\n value = array[index];\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\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 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 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 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 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 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 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 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 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 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 for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(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 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) || 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)) || 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 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 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 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 ? copySymbolsIn(value, baseAssignIn(result, value)) : 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 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 var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\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 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 () {\n func.apply(undefined, args);\n }, 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 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 } else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\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 } 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 while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {\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 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 predicate || (predicate = isFlattenable);\n result || (result = []);\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 var index = 0,\n length = path.length;\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) ? getRawTag(value) : 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 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) ? new SetCache(othIndex && array) : undefined;\n }\n array = arrays[0];\n var index = -1,\n seen = caches[0];\n outer: while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) {\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 objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\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) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : 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 if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\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 if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\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 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 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\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) && 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) ? baseMatchesProperty(value[0], value[1]) : 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 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 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 ? hasIn(object, path) : 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 } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;\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 if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\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 var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n '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 while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\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 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 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 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 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 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 var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\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) ? objValue : 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 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 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 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 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 if (computed !== null && !isSymbol(computed) && (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 value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\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 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 while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\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 if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\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 } else {\n seen = iteratee ? [] : result;\n }\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\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 } 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 while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : 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 while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\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 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 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 var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !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 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 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 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 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 var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\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 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 customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\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 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 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 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 var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\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:\n return new Ctor();\n case 1:\n return new Ctor(args[0]);\n case 2:\n return new Ctor(args[0], args[1]);\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7:\n 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 function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, 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) {\n return iteratee(iterable[key], key, iterable);\n };\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 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 var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);\n }\n }\n return function () {\n var args = arguments,\n value = args[0];\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 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 function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\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(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\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 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) ? castSlice(stringToArray(result), 0, length).join('') : 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 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 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 bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\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 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 if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\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 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);\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 || 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 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 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 if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : 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) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\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 || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\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 case errorTag:\n return object.name == other.name && object.message == other.message;\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 case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\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 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 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 var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\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 && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && 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 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) ? data[typeof key == 'string' ? 'string' : 'hash'] : 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 while (length--) {\n var key = result[length],\n value = object[key];\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 try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\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 || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || 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 if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n 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 while (++index < length) {\n var data = transforms[index],\n size = data.size;\n switch (data.type) {\n case 'drop':\n start += size;\n break;\n case 'dropRight':\n end -= size;\n break;\n case 'take':\n end = nativeMin(end, start + size);\n break;\n case 'takeRight':\n start = nativeMax(start, end - size);\n break;\n }\n }\n return {\n 'start': start,\n 'end': end\n };\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 var index = -1,\n length = path.length,\n result = false;\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) && (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) ? baseCreate(getPrototype(object)) : {};\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 case boolTag:\n case dateTag:\n return new Ctor(+object);\n case dataViewTag:\n return cloneDataView(object, isDeep);\n case float32Tag:\n case float64Tag:\n case int8Tag:\n case int16Tag:\n case int32Tag:\n case uint8Tag:\n case uint8ClampedTag:\n case uint16Tag:\n case uint32Tag:\n return cloneTypedArray(object, isDeep);\n case mapTag:\n return new Ctor();\n case numberTag:\n case stringTag:\n return new Ctor(object);\n case regexpTag:\n return cloneRegExp(object);\n case setTag:\n return new Ctor();\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) || !!(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 return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && 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' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\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' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 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' ? value !== '__proto__' : 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 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 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 && (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 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 var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || 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 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 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 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 if (key == '__proto__') {\n return;\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 return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\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 size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\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 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 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 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) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];\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) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) : [];\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) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) : [];\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 ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];\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 ? baseWhile(array, getIteratee(predicate, 3), true) : [];\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 ? nativeMax(length + index, 0) : 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 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] ? baseIntersection(mapped) : [];\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 if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee, 2)) : [];\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 comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : [];\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 ? strictLastIndexOf(array, value, index) : 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 ? basePullAll(array, values) : 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 ? basePullAll(array, values, getIteratee(iteratee, 2)) : 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 ? basePullAll(array, values, undefined, comparator) : 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 basePullAt(array, arrayMap(indexes, function (index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\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 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 } 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 ? baseSortedUniq(array) : [];\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 ? baseSortedUniq(array, getIteratee(iteratee, 2)) : [];\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 ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];\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 ? baseWhile(array, getIteratee(predicate, 3)) : [];\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) ? baseDifference(array, values) : [];\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 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) {\n return baseAt(object, paths);\n };\n if (length > 1 || this.__actions__.length || !(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 return {\n 'done': done,\n 'value': value\n };\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 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 var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!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 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 () {\n return [[], []];\n });\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 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 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 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 function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\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 function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\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 || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\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 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 function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\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 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:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n 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]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n var funcsLength = transforms.length;\n return baseRest(function (args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\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 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 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 () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !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 || 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) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 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 || 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' && 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' || 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 && 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' || !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' || 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 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 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) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : 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 ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : 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 var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\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 while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n object[key] = source[key];\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 ? object : 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 ? object : 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 && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\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 && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\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 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 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 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 iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor() : [];\n } else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\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 } 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 } 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 var length = string.length;\n position = position === undefined ? length : baseClamp(toInteger(position), 0, length);\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) ? string.replace(reUnescapedHtml, escapeHtmlChar) : 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) ? string.replace(reRegExpChar, '\\\\$&') : 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 var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);\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 var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? string + createPadding(length - strLength, chars) : 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 var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? createPadding(length - strLength, chars) + string : 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 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 && (typeof separator == 'string' || separator != null && !isRegExp(separator))) {\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 ? 0 : baseClamp(toInteger(position), 0, string.length);\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': '\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!!_vm.errorMessage),expression:\"!!errorMessage\"}]},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 pt-sm-5 pt-2\",attrs:{\"id\":\"flash-wrapper\"}},[_c('div',{staticClass:\"alert alert-danger\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMessage)+\"\\n \")])])])]),_vm._v(\" \"),_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue/dist/vue.esm.js';\nimport router from '../src/routes.js';\nimport store from '../src/vuex';\nimport i18n from '../src/i18n.js';\nimport App from '../src/pages/App.vue';\n\nif (!!$('#vue-app').length) {\n let props = $('#user').length ? { currentMember: $('#user').data() } : {}\n new Vue({\n router,\n store,\n i18n,\n render: h => h(App, { props })\n }).$mount('#vue-app')\n}\n","\"use strict\";\n\nvar baseSet = require('./_baseSet');\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\nmodule.exports = set;","\"use strict\";\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","\"use strict\";\n\nvar baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nmodule.exports = isFunction;","\"use strict\";\n\nvar funcProto = Function.prototype;\nvar funcToString = funcProto.toString;\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n}\nmodule.exports = toSource;","\"use strict\";\n\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\nmodule.exports = arrayMap;","\"use strict\";\n\nvar castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\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) && (isArray(object) || isArguments(object));\n}\nmodule.exports = hasPath;","\"use strict\";\n\nvar baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\nvar objectProto = Object.prototype;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\nmodule.exports = assignValue;","\"use strict\";\n\nvar getNative = require('./_getNative');\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\nmodule.exports = defineProperty;","\"use strict\";\n\nvar MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n}\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nmodule.exports = SetCache;","\"use strict\";\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\nmodule.exports = cacheHas;","\"use strict\";\n\nvar getNative = require('./_getNative'),\n root = require('./_root');\nvar Set = getNative(root, 'Set');\nmodule.exports = Set;","\"use strict\";\n\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\nvar rsZWJ = '\\\\u200d';\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\nmodule.exports = hasUnicode;","\"use strict\";\n\nvar toNumber = require('./toNumber');\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\nfunction 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}\nmodule.exports = toFinite;","\"use strict\";\n\nvar arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\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}\nmodule.exports = baseFlatten;","\"use strict\";\n\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\nmodule.exports = arrayPush;","\"use strict\";\n\nvar ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nmodule.exports = Stack;","\"use strict\";\n\nvar baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\nmodule.exports = baseIsEqual;","\"use strict\";\n\nvar SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\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 stack.set(array, other);\n stack.set(other, array);\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : 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 if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\nmodule.exports = equalArrays;","\"use strict\";\n\nvar root = require('./_root'),\n stubFalse = require('./stubFalse');\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\nvar moduleExports = freeModule && freeModule.exports === freeExports;\nvar Buffer = moduleExports ? root.Buffer : undefined;\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;","\"use strict\";\n\nvar baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;","\"use strict\";\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\nmodule.exports = baseUnary;","\"use strict\";\n\nvar isObject = require('./isObject');\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\nmodule.exports = isStrictComparable;","\"use strict\";\n\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\nmodule.exports = matchesStrictComparable;","import uniq from \"./vendor/lodash/uniq\";\nexport const defaultLocaleResolver = (i18n, locale) => {\n const locales = [];\n const list = [];\n locales.push(locale);\n if (!locale) {\n locales.push(i18n.locale);\n }\n if (i18n.enableFallback) {\n locales.push(i18n.defaultLocale);\n }\n locales.filter(Boolean).map(entry => entry.toString()).forEach(function (currentLocale) {\n if (!list.includes(currentLocale)) {\n list.push(currentLocale);\n }\n if (!i18n.enableFallback) {\n return;\n }\n const codes = currentLocale.split(\"-\");\n if (codes.length === 3) {\n list.push(`${codes[0]}-${codes[1]}`);\n }\n list.push(codes[0]);\n });\n return uniq(list);\n};\nexport class Locales {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultLocaleResolver);\n }\n register(locale, localeResolver) {\n if (typeof localeResolver !== \"function\") {\n const result = localeResolver;\n localeResolver = () => result;\n }\n this.registry[locale] = localeResolver;\n }\n get(locale) {\n let locales = this.registry[locale] || this.registry[this.i18n.locale] || this.registry.default;\n if (typeof locales === \"function\") {\n locales = locales(this.i18n, locale);\n }\n if (!(locales instanceof Array)) {\n locales = [locales];\n }\n return locales;\n }\n}","import { en } from \"make-plural\";\nexport function useMakePlural(_ref) {\n let pluralizer = _ref.pluralizer,\n _ref$includeZero = _ref.includeZero,\n includeZero = _ref$includeZero === void 0 ? true : _ref$includeZero,\n _ref$ordinal = _ref.ordinal,\n ordinal = _ref$ordinal === void 0 ? false : _ref$ordinal;\n return function (_i18n, count) {\n return [includeZero && count === 0 ? \"zero\" : \"\", pluralizer(count, ordinal)].filter(Boolean);\n };\n}\nexport const defaultPluralizer = useMakePlural({\n pluralizer: en,\n includeZero: true\n});\nexport class Pluralization {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultPluralizer);\n }\n register(locale, pluralizer) {\n this.registry[locale] = pluralizer;\n }\n get(locale) {\n return this.registry[locale] || this.registry[this.i18n.locale] || this.registry[\"default\"];\n }\n}","const a = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one' : 'other';\n};\nconst b = (n, ord) => {\n if (ord) return 'other';\n return n == 0 || n == 1 ? 'one' : 'other';\n};\nconst c = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nconst d = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nconst e = (n, ord) => 'other';\nconst f = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one' : n == 2 ? 'two' : 'other';\n};\nexport const af = a;\nexport const ak = b;\nexport const am = c;\nexport const an = a;\nexport const ar = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n100 >= 3 && n100 <= 10 ? 'few' : n100 >= 11 && n100 <= 99 ? 'many' : 'other';\n};\nexport const ars = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n100 >= 3 && n100 <= 10 ? 'few' : n100 >= 11 && n100 <= 99 ? 'many' : 'other';\n};\nexport const as = (n, ord) => {\n if (ord) return n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : n == 6 ? 'many' : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const asa = a;\nexport const ast = d;\nexport const az = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n i1000 = i.slice(-3);\n if (ord) return i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8 || i100 == 20 || i100 == 50 || i100 == 70 || i100 == 80 ? 'one' : i10 == 3 || i10 == 4 || i1000 == 100 || i1000 == 200 || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700 || i1000 == 800 || i1000 == 900 ? 'few' : i == 0 || i10 == 6 || i100 == 40 || i100 == 60 || i100 == 90 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const bal = (n, ord) => n == 1 ? 'one' : 'other';\nexport const be = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 2 || n10 == 3) && n100 != 12 && n100 != 13 ? 'few' : 'other';\n return n10 == 1 && n100 != 11 ? 'one' : n10 >= 2 && n10 <= 4 && (n100 < 12 || n100 > 14) ? 'few' : t0 && n10 == 0 || n10 >= 5 && n10 <= 9 || n100 >= 11 && n100 <= 14 ? 'many' : 'other';\n};\nexport const bem = a;\nexport const bez = a;\nexport const bg = a;\nexport const bho = b;\nexport const bm = e;\nexport const bn = (n, ord) => {\n if (ord) return n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : n == 6 ? 'many' : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const bo = e;\nexport const br = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n n1000000 = t0 && s[0].slice(-6);\n if (ord) return 'other';\n return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one' : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two' : (n10 == 3 || n10 == 4 || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few' : n != 0 && t0 && n1000000 == 0 ? 'many' : 'other';\n};\nexport const brx = a;\nexport const bs = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) || f10 >= 2 && f10 <= 4 && (f100 < 12 || f100 > 14) ? 'few' : 'other';\n};\nexport const ca = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return n == 1 || n == 3 ? 'one' : n == 2 ? 'two' : n == 4 ? 'few' : 'other';\n return n == 1 && v0 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const ce = a;\nexport const ceb = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n f10 = f.slice(-1);\n if (ord) return 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const cgg = a;\nexport const chr = a;\nexport const ckb = a;\nexport const cs = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : i >= 2 && i <= 4 && v0 ? 'few' : !v0 ? 'many' : 'other';\n};\nexport const cy = (n, ord) => {\n if (ord) return n == 0 || n == 7 || n == 8 || n == 9 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n == 3 || n == 4 ? 'few' : n == 5 || n == 6 ? 'many' : 'other';\n return n == 0 ? 'zero' : n == 1 ? 'one' : n == 2 ? 'two' : n == 3 ? 'few' : n == 6 ? 'many' : 'other';\n};\nexport const da = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n};\nexport const de = d;\nexport const doi = c;\nexport const dsb = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i100 = i.slice(-2),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one' : v0 && i100 == 2 || f100 == 2 ? 'two' : v0 && (i100 == 3 || i100 == 4) || f100 == 3 || f100 == 4 ? 'few' : 'other';\n};\nexport const dv = a;\nexport const dz = e;\nexport const ee = a;\nexport const el = a;\nexport const en = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n if (ord) return n10 == 1 && n100 != 11 ? 'one' : n10 == 2 && n100 != 12 ? 'two' : n10 == 3 && n100 != 13 ? 'few' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const eo = a;\nexport const es = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const et = d;\nexport const eu = a;\nexport const fa = c;\nexport const ff = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const fi = d;\nexport const fil = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const fo = a;\nexport const fr = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const fur = a;\nexport const fy = d;\nexport const ga = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 ? 'one' : n == 2 ? 'two' : t0 && n >= 3 && n <= 6 ? 'few' : t0 && n >= 7 && n <= 10 ? 'many' : 'other';\n};\nexport const gd = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return n == 1 || n == 11 ? 'one' : n == 2 || n == 12 ? 'two' : n == 3 || n == 13 ? 'few' : 'other';\n return n == 1 || n == 11 ? 'one' : n == 2 || n == 12 ? 'two' : t0 && n >= 3 && n <= 10 || t0 && n >= 13 && n <= 19 ? 'few' : 'other';\n};\nexport const gl = d;\nexport const gsw = a;\nexport const gu = (n, ord) => {\n if (ord) return n == 1 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : n == 6 ? 'many' : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const guw = b;\nexport const gv = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 ? 'one' : v0 && i10 == 2 ? 'two' : v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60 || i100 == 80) ? 'few' : !v0 ? 'many' : 'other';\n};\nexport const ha = a;\nexport const haw = a;\nexport const he = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1];\n if (ord) return 'other';\n return i == 1 && v0 || i == 0 && !v0 ? 'one' : i == 2 && v0 ? 'two' : 'other';\n};\nexport const hi = (n, ord) => {\n if (ord) return n == 1 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : n == 6 ? 'many' : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const hnj = e;\nexport const hr = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) || f10 >= 2 && f10 <= 4 && (f100 < 12 || f100 > 14) ? 'few' : 'other';\n};\nexport const hsb = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i100 = i.slice(-2),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one' : v0 && i100 == 2 || f100 == 2 ? 'two' : v0 && (i100 == 3 || i100 == 4) || f100 == 3 || f100 == 4 ? 'few' : 'other';\n};\nexport const hu = (n, ord) => {\n if (ord) return n == 1 || n == 5 ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const hy = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const ia = d;\nexport const id = e;\nexport const ig = e;\nexport const ii = e;\nexport const io = d;\nexport const is = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n t = (s[1] || '').replace(/0+$/, ''),\n t0 = Number(s[0]) == n,\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n};\nexport const it = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return n == 11 || n == 8 || n == 80 || n == 800 ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const iu = f;\nexport const ja = e;\nexport const jbo = e;\nexport const jgo = a;\nexport const jmc = a;\nexport const jv = e;\nexport const jw = e;\nexport const ka = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n i100 = i.slice(-2);\n if (ord) return i == 1 ? 'one' : i == 0 || i100 >= 2 && i100 <= 20 || i100 == 40 || i100 == 60 || i100 == 80 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kab = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const kaj = a;\nexport const kcg = a;\nexport const kde = e;\nexport const kea = e;\nexport const kk = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return n10 == 6 || n10 == 9 || t0 && n10 == 0 && n != 0 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kkj = a;\nexport const kl = a;\nexport const km = e;\nexport const kn = c;\nexport const ko = e;\nexport const ks = a;\nexport const ksb = a;\nexport const ksh = (n, ord) => {\n if (ord) return 'other';\n return n == 0 ? 'zero' : n == 1 ? 'one' : 'other';\n};\nexport const ku = a;\nexport const kw = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2),\n n1000 = t0 && s[0].slice(-3),\n n100000 = t0 && s[0].slice(-5),\n n1000000 = t0 && s[0].slice(-6);\n if (ord) return t0 && n >= 1 && n <= 4 || n100 >= 1 && n100 <= 4 || n100 >= 21 && n100 <= 24 || n100 >= 41 && n100 <= 44 || n100 >= 61 && n100 <= 64 || n100 >= 81 && n100 <= 84 ? 'one' : n == 5 || n100 == 5 ? 'many' : 'other';\n return n == 0 ? 'zero' : n == 1 ? 'one' : n100 == 2 || n100 == 22 || n100 == 42 || n100 == 62 || n100 == 82 || t0 && n1000 == 0 && (n100000 >= 1000 && n100000 <= 20000 || n100000 == 40000 || n100000 == 60000 || n100000 == 80000) || n != 0 && n1000000 == 100000 ? 'two' : n100 == 3 || n100 == 23 || n100 == 43 || n100 == 63 || n100 == 83 ? 'few' : n != 1 && (n100 == 1 || n100 == 21 || n100 == 41 || n100 == 61 || n100 == 81) ? 'many' : 'other';\n};\nexport const ky = a;\nexport const lag = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0];\n if (ord) return 'other';\n return n == 0 ? 'zero' : (i == 0 || i == 1) && n != 0 ? 'one' : 'other';\n};\nexport const lb = a;\nexport const lg = a;\nexport const lij = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n;\n if (ord) return n == 11 || n == 8 || t0 && n >= 80 && n <= 89 || t0 && n >= 800 && n <= 899 ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const lkt = e;\nexport const ln = b;\nexport const lo = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const lt = (n, ord) => {\n const s = String(n).split('.'),\n f = s[1] || '',\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one' : n10 >= 2 && n10 <= 9 && (n100 < 11 || n100 > 19) ? 'few' : f != 0 ? 'many' : 'other';\n};\nexport const lv = (n, ord) => {\n const s = String(n).split('.'),\n f = s[1] || '',\n v = f.length,\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n f100 = f.slice(-2),\n f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || n100 >= 11 && n100 <= 19 || v == 2 && f100 >= 11 && f100 <= 19 ? 'zero' : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one' : 'other';\n};\nexport const mas = a;\nexport const mg = b;\nexport const mgo = a;\nexport const mk = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n if (ord) return i10 == 1 && i100 != 11 ? 'one' : i10 == 2 && i100 != 12 ? 'two' : (i10 == 7 || i10 == 8) && i100 != 17 && i100 != 18 ? 'many' : 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n};\nexport const ml = a;\nexport const mn = a;\nexport const mo = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one' : !v0 || n == 0 || n != 1 && n100 >= 1 && n100 <= 19 ? 'few' : 'other';\n};\nexport const mr = (n, ord) => {\n if (ord) return n == 1 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const ms = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const mt = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 1 ? 'one' : n == 2 ? 'two' : n == 0 || n100 >= 3 && n100 <= 10 ? 'few' : n100 >= 11 && n100 <= 19 ? 'many' : 'other';\n};\nexport const my = e;\nexport const nah = a;\nexport const naq = f;\nexport const nb = a;\nexport const nd = a;\nexport const ne = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return t0 && n >= 1 && n <= 4 ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const nl = d;\nexport const nn = a;\nexport const nnh = a;\nexport const no = a;\nexport const nqo = e;\nexport const nr = a;\nexport const nso = b;\nexport const ny = a;\nexport const nyn = a;\nexport const om = a;\nexport const or = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return n == 1 || n == 5 || t0 && n >= 7 && n <= 9 ? 'one' : n == 2 || n == 3 ? 'two' : n == 4 ? 'few' : n == 6 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const os = a;\nexport const osa = e;\nexport const pa = b;\nexport const pap = a;\nexport const pcm = c;\nexport const pl = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) ? 'few' : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && i10 >= 5 && i10 <= 9 || v0 && i100 >= 12 && i100 <= 14 ? 'many' : 'other';\n};\nexport const prg = (n, ord) => {\n const s = String(n).split('.'),\n f = s[1] || '',\n v = f.length,\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n f100 = f.slice(-2),\n f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || n100 >= 11 && n100 <= 19 || v == 2 && f100 >= 11 && f100 <= 19 ? 'zero' : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one' : 'other';\n};\nexport const ps = a;\nexport const pt = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return 'other';\n return i == 0 || i == 1 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const pt_PT = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const rm = a;\nexport const ro = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one' : !v0 || n == 0 || n != 1 && n100 >= 1 && n100 <= 19 ? 'few' : 'other';\n};\nexport const rof = a;\nexport const ru = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) ? 'few' : v0 && i10 == 0 || v0 && i10 >= 5 && i10 <= 9 || v0 && i100 >= 11 && i100 <= 14 ? 'many' : 'other';\n};\nexport const rwk = a;\nexport const sah = e;\nexport const saq = a;\nexport const sat = f;\nexport const sc = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1];\n if (ord) return n == 11 || n == 8 || n == 80 || n == 800 ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const scn = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1];\n if (ord) return n == 11 || n == 8 || n == 80 || n == 800 ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sd = a;\nexport const sdh = a;\nexport const se = f;\nexport const seh = a;\nexport const ses = e;\nexport const sg = e;\nexport const sh = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) || f10 >= 2 && f10 <= 4 && (f100 < 12 || f100 > 14) ? 'few' : 'other';\n};\nexport const shi = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one' : t0 && n >= 2 && n <= 10 ? 'few' : 'other';\n};\nexport const si = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '';\n if (ord) return 'other';\n return n == 0 || n == 1 || i == 0 && f == 1 ? 'one' : 'other';\n};\nexport const sk = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : i >= 2 && i <= 4 && v0 ? 'few' : !v0 ? 'many' : 'other';\n};\nexport const sl = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 ? 'one' : v0 && i100 == 2 ? 'two' : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few' : 'other';\n};\nexport const sma = f;\nexport const smi = f;\nexport const smj = f;\nexport const smn = f;\nexport const sms = f;\nexport const sn = a;\nexport const so = a;\nexport const sq = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : n10 == 4 && n100 != 14 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const sr = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n i100 = i.slice(-2),\n f10 = f.slice(-1),\n f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) || f10 >= 2 && f10 <= 4 && (f100 < 12 || f100 > 14) ? 'few' : 'other';\n};\nexport const ss = a;\nexport const ssy = a;\nexport const st = a;\nexport const su = e;\nexport const sv = (n, ord) => {\n const s = String(n).split('.'),\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 1 || n10 == 2) && n100 != 11 && n100 != 12 ? 'one' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sw = d;\nexport const syr = a;\nexport const ta = a;\nexport const te = a;\nexport const teo = a;\nexport const th = e;\nexport const ti = b;\nexport const tig = a;\nexport const tk = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return n10 == 6 || n10 == 9 || n == 10 ? 'few' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const tl = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n f = s[1] || '',\n v0 = !s[1],\n i10 = i.slice(-1),\n f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const tn = a;\nexport const to = e;\nexport const tpi = e;\nexport const tr = a;\nexport const ts = a;\nexport const tzm = (n, ord) => {\n const s = String(n).split('.'),\n t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n == 0 || n == 1 || t0 && n >= 11 && n <= 99 ? 'one' : 'other';\n};\nexport const ug = a;\nexport const uk = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2),\n i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return n10 == 3 && n100 != 13 ? 'few' : 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one' : v0 && i10 >= 2 && i10 <= 4 && (i100 < 12 || i100 > 14) ? 'few' : v0 && i10 == 0 || v0 && i10 >= 5 && i10 <= 9 || v0 && i100 >= 11 && i100 <= 14 ? 'many' : 'other';\n};\nexport const und = e;\nexport const ur = d;\nexport const uz = a;\nexport const ve = a;\nexport const vec = (n, ord) => {\n const s = String(n).split('.'),\n i = s[0],\n v0 = !s[1],\n i1000000 = i.slice(-6);\n if (ord) return n == 11 || n == 8 || n == 80 || n == 800 ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : i != 0 && i1000000 == 0 && v0 ? 'many' : 'other';\n};\nexport const vi = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const vo = a;\nexport const vun = a;\nexport const wa = b;\nexport const wae = a;\nexport const wo = e;\nexport const xh = a;\nexport const xog = a;\nexport const yi = d;\nexport const yo = e;\nexport const yue = e;\nexport const zh = e;\nexport const zu = c;","import camelCase from \"../vendor/lodash/camelCase\";\nexport function camelCaseKeys(target) {\n if (!target) {\n return {};\n }\n return Object.keys(target).reduce((buffer, key) => {\n buffer[camelCase(key)] = target[key];\n return buffer;\n }, {});\n}","export function isSet(value) {\n return value !== undefined && value !== null;\n}","import BigNumber from \"bignumber.js\";\nvar RoundingModeMap;\n(function (RoundingModeMap) {\n RoundingModeMap[RoundingModeMap[\"up\"] = BigNumber.ROUND_UP] = \"up\";\n RoundingModeMap[RoundingModeMap[\"down\"] = BigNumber.ROUND_DOWN] = \"down\";\n RoundingModeMap[RoundingModeMap[\"truncate\"] = BigNumber.ROUND_DOWN] = \"truncate\";\n RoundingModeMap[RoundingModeMap[\"halfUp\"] = BigNumber.ROUND_HALF_UP] = \"halfUp\";\n RoundingModeMap[RoundingModeMap[\"default\"] = BigNumber.ROUND_HALF_UP] = \"default\";\n RoundingModeMap[RoundingModeMap[\"halfDown\"] = BigNumber.ROUND_HALF_DOWN] = \"halfDown\";\n RoundingModeMap[RoundingModeMap[\"halfEven\"] = BigNumber.ROUND_HALF_EVEN] = \"halfEven\";\n RoundingModeMap[RoundingModeMap[\"banker\"] = BigNumber.ROUND_HALF_EVEN] = \"banker\";\n RoundingModeMap[RoundingModeMap[\"ceiling\"] = BigNumber.ROUND_CEIL] = \"ceiling\";\n RoundingModeMap[RoundingModeMap[\"ceil\"] = BigNumber.ROUND_CEIL] = \"ceil\";\n RoundingModeMap[RoundingModeMap[\"floor\"] = BigNumber.ROUND_FLOOR] = \"floor\";\n})(RoundingModeMap || (RoundingModeMap = {}));\nexport function expandRoundMode(roundMode) {\n var _a;\n return (_a = RoundingModeMap[roundMode]) !== null && _a !== void 0 ? _a : RoundingModeMap.default;\n}","import BigNumber from \"bignumber.js\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nfunction digitCount(numeric) {\n if (numeric.isZero()) {\n return 1;\n }\n return Math.floor(Math.log10(numeric.abs().toNumber()) + 1);\n}\nfunction getAbsolutePrecision(numeric, _ref) {\n let precision = _ref.precision,\n significant = _ref.significant;\n if (significant && precision !== null && precision > 0) {\n return precision - digitCount(numeric);\n }\n return precision;\n}\nexport function roundNumber(numeric, options) {\n const precision = getAbsolutePrecision(numeric, options);\n if (precision === null) {\n return numeric.toString();\n }\n const roundMode = expandRoundMode(options.roundMode);\n if (precision >= 0) {\n return numeric.toFixed(precision, roundMode);\n }\n const rounder = Math.pow(10, Math.abs(precision));\n numeric = new BigNumber(numeric.div(rounder).toFixed(0, roundMode)).times(rounder);\n return numeric.toString();\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport BigNumber from \"bignumber.js\";\nimport repeat from \"../vendor/lodash/repeat\";\nimport { roundNumber } from \"./roundNumber\";\nfunction replaceInFormat(format, _ref) {\n let formattedNumber = _ref.formattedNumber,\n unit = _ref.unit;\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\nfunction computeSignificand(_ref2) {\n let significand = _ref2.significand,\n whole = _ref2.whole,\n precision = _ref2.precision;\n if (whole === \"0\" || precision === null) {\n return significand;\n }\n const limit = Math.max(0, precision - whole.length);\n return (significand !== null && significand !== void 0 ? significand : \"\").substr(0, limit);\n}\nexport function formatNumber(input, options) {\n var _a, _b, _c;\n const originalNumber = new BigNumber(input);\n if (options.raise && !originalNumber.isFinite()) {\n throw new Error(`\"${input}\" is not a valid numeric value`);\n }\n const roundedNumber = roundNumber(originalNumber, options);\n const numeric = new BigNumber(roundedNumber);\n const isNegative = numeric.lt(0);\n const isZero = numeric.isZero();\n let _roundedNumber$split = roundedNumber.split(\".\"),\n _roundedNumber$split2 = _slicedToArray(_roundedNumber$split, 2),\n whole = _roundedNumber$split2[0],\n significand = _roundedNumber$split2[1];\n const buffer = [];\n let formattedNumber;\n const positiveFormat = (_a = options.format) !== null && _a !== void 0 ? _a : \"%n\";\n const negativeFormat = (_b = options.negativeFormat) !== null && _b !== void 0 ? _b : `-${positiveFormat}`;\n const format = isNegative && !isZero ? negativeFormat : positiveFormat;\n whole = whole.replace(\"-\", \"\");\n while (whole.length > 0) {\n buffer.unshift(whole.substr(Math.max(0, whole.length - 3), 3));\n whole = whole.substr(0, whole.length - 3);\n }\n whole = buffer.join(\"\");\n formattedNumber = buffer.join(options.delimiter);\n if (options.significant) {\n significand = computeSignificand({\n whole,\n significand,\n precision: options.precision\n });\n } else {\n significand = significand !== null && significand !== void 0 ? significand : repeat(\"0\", (_c = options.precision) !== null && _c !== void 0 ? _c : 0);\n }\n if (options.stripInsignificantZeros && significand) {\n significand = significand.replace(/0+$/, \"\");\n }\n if (originalNumber.isNaN()) {\n formattedNumber = input.toString();\n }\n if (significand && originalNumber.isFinite()) {\n formattedNumber += (options.separator || \".\") + significand;\n }\n return replaceInFormat(format, {\n formattedNumber,\n unit: options.unit\n });\n}","export function getFullScope(i18n, scope, options) {\n let result = \"\";\n if (scope instanceof String || typeof scope === \"string\") {\n result = scope;\n }\n if (scope instanceof Array) {\n result = scope.join(i18n.defaultSeparator);\n }\n if (options.scope) {\n result = [options.scope, result].join(i18n.defaultSeparator);\n }\n return result;\n}","export function inferType(instance) {\n var _a, _b;\n if (instance === null) {\n return \"null\";\n }\n const type = typeof instance;\n if (type !== \"object\") {\n return type;\n }\n return ((_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || \"object\";\n}","import { isSet } from \"./isSet\";\nexport function interpolate(i18n, message, options) {\n options = Object.keys(options).reduce((buffer, key) => {\n buffer[i18n.transformKey(key)] = options[key];\n return buffer;\n }, {});\n const matches = message.match(i18n.placeholder);\n if (!matches) {\n return message;\n }\n while (matches.length) {\n let value;\n const placeholder = matches.shift();\n const name = placeholder.replace(i18n.placeholder, \"$1\");\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n } else if (name in options) {\n value = i18n.nullPlaceholder(i18n, placeholder, message, options);\n } else {\n value = i18n.missingPlaceholder(i18n, placeholder, message, options);\n }\n const regex = new RegExp(placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"));\n message = message.replace(regex, value);\n }\n return message.replace(/_#\\$#_/g, \"$\");\n}","import get from \"../vendor/lodash/get\";\nimport { isSet } from \"./isSet\";\nimport { getFullScope } from \"./getFullScope\";\nimport { inferType } from \"./inferType\";\nexport function lookup(i18n, scope) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n options = Object.assign({}, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const locales = i18n.locales.get(localeType === \"string\" ? locale : typeof locale).slice();\n scope = getFullScope(i18n, scope, options).split(i18n.defaultSeparator).map(component => i18n.transformKey(component)).join(\".\");\n const entries = locales.map(locale => get(i18n.translations, [locale, scope].join(\".\")));\n entries.push(options.defaultValue);\n return entries.find(entry => isSet(entry));\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport BigNumber from \"bignumber.js\";\nexport function numberToDelimited(input, options) {\n const numeric = new BigNumber(input);\n if (!numeric.isFinite()) {\n return input.toString();\n }\n if (!options.delimiterPattern.global) {\n throw new Error(`options.delimiterPattern must be a global regular expression; received ${options.delimiterPattern}`);\n }\n let _numeric$toString$spl = numeric.toString().split(\".\"),\n _numeric$toString$spl2 = _slicedToArray(_numeric$toString$spl, 2),\n left = _numeric$toString$spl2[0],\n right = _numeric$toString$spl2[1];\n left = left.replace(options.delimiterPattern, digitToDelimiter => `${digitToDelimiter}${options.delimiter}`);\n return [left, right].filter(Boolean).join(options.separator);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport BigNumber from \"bignumber.js\";\nimport sortBy from \"../vendor/lodash/sortBy\";\nimport zipObject from \"../vendor/lodash/zipObject\";\nimport { getFullScope } from \"./getFullScope\";\nimport { lookup } from \"./lookup\";\nimport { roundNumber } from \"./roundNumber\";\nimport { inferType } from \"./inferType\";\nconst DECIMAL_UNITS = {\n \"0\": \"unit\",\n \"1\": \"ten\",\n \"2\": \"hundred\",\n \"3\": \"thousand\",\n \"6\": \"million\",\n \"9\": \"billion\",\n \"12\": \"trillion\",\n \"15\": \"quadrillion\",\n \"-1\": \"deci\",\n \"-2\": \"centi\",\n \"-3\": \"mili\",\n \"-6\": \"micro\",\n \"-9\": \"nano\",\n \"-12\": \"pico\",\n \"-15\": \"femto\"\n};\nconst INVERTED_DECIMAL_UNITS = zipObject(Object.values(DECIMAL_UNITS), Object.keys(DECIMAL_UNITS).map(key => parseInt(key, 10)));\nexport function numberToHuman(i18n, input, options) {\n const roundOptions = {\n roundMode: options.roundMode,\n precision: options.precision,\n significant: options.significant\n };\n let units;\n if (inferType(options.units) === \"string\") {\n const scope = options.units;\n units = lookup(i18n, scope);\n if (!units) {\n throw new Error(`The scope \"${i18n.locale}${i18n.defaultSeparator}${getFullScope(i18n, scope, {})}\" couldn't be found`);\n }\n } else {\n units = options.units;\n }\n let formattedNumber = roundNumber(new BigNumber(input), roundOptions);\n const unitExponents = units => sortBy(Object.keys(units).map(name => INVERTED_DECIMAL_UNITS[name]), numeric => numeric * -1);\n const calculateExponent = (num, units) => {\n const exponent = num.isZero() ? 0 : Math.floor(Math.log10(num.abs().toNumber()));\n return unitExponents(units).find(exp => exponent >= exp) || 0;\n };\n const determineUnit = (units, exponent) => {\n const expName = DECIMAL_UNITS[exponent.toString()];\n return units[expName] || \"\";\n };\n const exponent = calculateExponent(new BigNumber(formattedNumber), units);\n const unit = determineUnit(units, exponent);\n formattedNumber = roundNumber(new BigNumber(formattedNumber).div(Math.pow(10, exponent)), roundOptions);\n if (options.stripInsignificantZeros) {\n let _formattedNumber$spli = formattedNumber.split(\".\"),\n _formattedNumber$spli2 = _slicedToArray(_formattedNumber$spli, 2),\n whole = _formattedNumber$spli2[0],\n significand = _formattedNumber$spli2[1];\n significand = (significand || \"\").replace(/0+$/, \"\");\n formattedNumber = whole;\n if (significand) {\n formattedNumber += `${options.separator}${significand}`;\n }\n }\n return options.format.replace(\"%n\", formattedNumber || \"0\").replace(\"%u\", unit).trim();\n}","import BigNumber from \"bignumber.js\";\nimport { roundNumber } from \"./roundNumber\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nconst STORAGE_UNITS = [\"byte\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\", \"eb\"];\nexport function numberToHumanSize(i18n, input, options) {\n const roundMode = expandRoundMode(options.roundMode);\n const base = 1024;\n const num = new BigNumber(input).abs();\n const smallerThanBase = num.lt(base);\n let numberToBeFormatted;\n const computeExponent = (numeric, units) => {\n const max = units.length - 1;\n const exp = new BigNumber(Math.log(numeric.toNumber())).div(Math.log(base)).integerValue(BigNumber.ROUND_DOWN).toNumber();\n return Math.min(max, exp);\n };\n const storageUnitKey = units => {\n const keyEnd = smallerThanBase ? \"byte\" : units[exponent];\n return `number.human.storage_units.units.${keyEnd}`;\n };\n const exponent = computeExponent(num, STORAGE_UNITS);\n if (smallerThanBase) {\n numberToBeFormatted = num.integerValue();\n } else {\n numberToBeFormatted = new BigNumber(roundNumber(num.div(Math.pow(base, exponent)), {\n significant: options.significant,\n precision: options.precision,\n roundMode: options.roundMode\n }));\n }\n const format = i18n.translate(\"number.human.storage_units.format\", {\n defaultValue: \"%n %u\"\n });\n const unit = i18n.translate(storageUnitKey(STORAGE_UNITS), {\n count: num.integerValue().toNumber()\n });\n let formattedNumber = numberToBeFormatted.toFixed(options.precision, roundMode);\n if (options.stripInsignificantZeros) {\n formattedNumber = formattedNumber.replace(/(\\..*?)0+$/, \"$1\").replace(/\\.$/, \"\");\n }\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nexport function parseDate(input) {\n if (input instanceof Date) {\n return input;\n }\n if (typeof input === \"number\") {\n const date = new Date();\n date.setTime(input);\n return date;\n }\n const matches = new String(input).match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})(?:[.,](\\d{1,3}))?)?(Z|\\+00:?00)?/);\n if (matches) {\n const parts = matches.slice(1, 8).map(match => parseInt(match, 10) || 0);\n parts[1] -= 1;\n const _parts = _slicedToArray(parts, 7),\n year = _parts[0],\n month = _parts[1],\n day = _parts[2],\n hour = _parts[3],\n minute = _parts[4],\n second = _parts[5],\n milliseconds = _parts[6];\n const timezone = matches[8];\n if (timezone) {\n return new Date(Date.UTC(year, month, day, hour, minute, second, milliseconds));\n } else {\n return new Date(year, month, day, hour, minute, second, milliseconds);\n }\n }\n if (input.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n const date = new Date();\n date.setTime(Date.parse([RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\" \")));\n }\n const date = new Date();\n date.setTime(Date.parse(input));\n return date;\n}","import { isSet } from \"./isSet\";\nimport { lookup } from \"./lookup\";\nexport function pluralize(_ref) {\n let i18n = _ref.i18n,\n count = _ref.count,\n scope = _ref.scope,\n options = _ref.options,\n baseScope = _ref.baseScope;\n options = Object.assign({}, options);\n let translations;\n let message;\n if (typeof scope === \"object\" && scope) {\n translations = scope;\n } else {\n translations = lookup(i18n, scope, options);\n }\n if (!translations) {\n return i18n.missingTranslation.get(scope, options);\n }\n const pluralizer = i18n.pluralization.get(options.locale);\n const keys = pluralizer(i18n, count);\n const missingKeys = [];\n while (keys.length) {\n const key = keys.shift();\n if (isSet(translations[key])) {\n message = translations[key];\n break;\n }\n missingKeys.push(key);\n }\n if (!isSet(message)) {\n return i18n.missingTranslation.get(baseScope.split(i18n.defaultSeparator).concat([missingKeys[0]]), options);\n }\n options.count = count;\n return i18n.interpolate(i18n, message, options);\n}","import isArray from \"../vendor/lodash/isArray\";\nimport isObject from \"../vendor/lodash/isObject\";\nimport flattenDeep from \"../vendor/lodash/flattenDeep\";\nclass PropertyFlatList {\n constructor(target) {\n this.target = target;\n }\n call() {\n const keys = flattenDeep(Object.keys(this.target).map(key => this.compute(this.target[key], key)));\n keys.sort();\n return keys;\n }\n compute(value, path) {\n if (!isArray(value) && isObject(value)) {\n return Object.keys(value).map(key => this.compute(value[key], `${path}.${key}`));\n } else {\n return path;\n }\n }\n}\nexport function propertyFlatList(target) {\n return new PropertyFlatList(target).call();\n}","const DEFAULT_OPTIONS = {\n meridian: {\n am: \"AM\",\n pm: \"PM\"\n },\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n abbrDayNames: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n monthNames: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n abbrMonthNames: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n};\nexport function strftime(date, format) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const _Object$assign = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options),\n abbrDayNames = _Object$assign.abbrDayNames,\n dayNames = _Object$assign.dayNames,\n abbrMonthNames = _Object$assign.abbrMonthNames,\n monthNames = _Object$assign.monthNames,\n AM_PM = _Object$assign.meridian;\n if (isNaN(date.getTime())) {\n throw new Error(\"strftime() requires a valid date object, but received an invalid date.\");\n }\n const weekDay = date.getDay();\n const day = date.getDate();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const hour = date.getHours();\n let hour12 = hour;\n const meridian = hour > 11 ? \"pm\" : \"am\";\n const secs = date.getSeconds();\n const mins = date.getMinutes();\n const offset = date.getTimezoneOffset();\n const absOffsetHours = Math.floor(Math.abs(offset / 60));\n const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n const timezoneoffset = (offset > 0 ? \"-\" : \"+\") + (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) + (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes);\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n } else if (hour12 === 0) {\n hour12 = 12;\n }\n format = format.replace(\"%a\", abbrDayNames[weekDay]);\n format = format.replace(\"%A\", dayNames[weekDay]);\n format = format.replace(\"%b\", abbrMonthNames[month]);\n format = format.replace(\"%B\", monthNames[month]);\n format = format.replace(\"%d\", day.toString().padStart(2, \"0\"));\n format = format.replace(\"%e\", day.toString());\n format = format.replace(\"%-d\", day.toString());\n format = format.replace(\"%H\", hour.toString().padStart(2, \"0\"));\n format = format.replace(\"%-H\", hour.toString());\n format = format.replace(\"%k\", hour.toString());\n format = format.replace(\"%I\", hour12.toString().padStart(2, \"0\"));\n format = format.replace(\"%-I\", hour12.toString());\n format = format.replace(\"%l\", hour12.toString());\n format = format.replace(\"%m\", month.toString().padStart(2, \"0\"));\n format = format.replace(\"%-m\", month.toString());\n format = format.replace(\"%M\", mins.toString().padStart(2, \"0\"));\n format = format.replace(\"%-M\", mins.toString());\n format = format.replace(\"%p\", AM_PM[meridian]);\n format = format.replace(\"%P\", AM_PM[meridian].toLowerCase());\n format = format.replace(\"%S\", secs.toString().padStart(2, \"0\"));\n format = format.replace(\"%-S\", secs.toString());\n format = format.replace(\"%w\", weekDay.toString());\n format = format.replace(\"%y\", year.toString().padStart(2, \"0\").substr(-2));\n format = format.replace(\"%-y\", year.toString().padStart(2, \"0\").substr(-2).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year.toString());\n format = format.replace(/%z/i, timezoneoffset);\n return format;\n}","import range from \"../vendor/lodash/range\";\nimport { parseDate } from \"./parseDate\";\nconst within = (start, end, actual) => actual >= start && actual <= end;\nexport function timeAgoInWords(i18n, fromTime, toTime) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const scope = options.scope || \"datetime.distance_in_words\";\n const t = function (name) {\n let count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return i18n.t(name, {\n count,\n scope\n });\n };\n fromTime = parseDate(fromTime);\n toTime = parseDate(toTime);\n let fromInSeconds = fromTime.getTime() / 1000;\n let toInSeconds = toTime.getTime() / 1000;\n if (fromInSeconds > toInSeconds) {\n var _ref = [toTime, fromTime, toInSeconds, fromInSeconds];\n fromTime = _ref[0];\n toTime = _ref[1];\n fromInSeconds = _ref[2];\n toInSeconds = _ref[3];\n }\n const distanceInSeconds = Math.round(toInSeconds - fromInSeconds);\n const distanceInMinutes = Math.round((toInSeconds - fromInSeconds) / 60);\n const distanceInHours = distanceInMinutes / 60;\n const distanceInDays = distanceInHours / 24;\n const distanceInHoursRounded = Math.round(distanceInMinutes / 60);\n const distanceInDaysRounded = Math.round(distanceInDays);\n const distanceInMonthsRounded = Math.round(distanceInDaysRounded / 30);\n if (within(0, 1, distanceInMinutes)) {\n if (!options.includeSeconds) {\n return distanceInMinutes === 0 ? t(\"less_than_x_minutes\", 1) : t(\"x_minutes\", distanceInMinutes);\n }\n if (within(0, 4, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 5);\n }\n if (within(5, 9, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 10);\n }\n if (within(10, 19, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 20);\n }\n if (within(20, 39, distanceInSeconds)) {\n return t(\"half_a_minute\");\n }\n if (within(40, 59, distanceInSeconds)) {\n return t(\"less_than_x_minutes\", 1);\n }\n return t(\"x_minutes\", 1);\n }\n if (within(2, 44, distanceInMinutes)) {\n return t(\"x_minutes\", distanceInMinutes);\n }\n if (within(45, 89, distanceInMinutes)) {\n return t(\"about_x_hours\", 1);\n }\n if (within(90, 1439, distanceInMinutes)) {\n return t(\"about_x_hours\", distanceInHoursRounded);\n }\n if (within(1440, 2519, distanceInMinutes)) {\n return t(\"x_days\", 1);\n }\n if (within(2520, 43199, distanceInMinutes)) {\n return t(\"x_days\", distanceInDaysRounded);\n }\n if (within(43200, 86399, distanceInMinutes)) {\n return t(\"about_x_months\", Math.round(distanceInMinutes / 43200));\n }\n if (within(86400, 525599, distanceInMinutes)) {\n return t(\"x_months\", distanceInMonthsRounded);\n }\n let fromYear = fromTime.getFullYear();\n if (fromTime.getMonth() + 1 >= 3) {\n fromYear += 1;\n }\n let toYear = toTime.getFullYear();\n if (toTime.getMonth() + 1 < 3) {\n toYear -= 1;\n }\n const leapYears = fromYear > toYear ? 0 : range(fromYear, toYear).filter(year => new Date(year, 1, 29).getMonth() == 1).length;\n const minutesInYear = 525600;\n const minuteOffsetForLeapYear = leapYears * 1440;\n const minutesWithOffset = distanceInMinutes - minuteOffsetForLeapYear;\n const distanceInYears = Math.trunc(minutesWithOffset / minutesInYear);\n const diff = parseFloat((minutesWithOffset / minutesInYear - distanceInYears).toPrecision(3));\n if (diff < 0.25) {\n return t(\"about_x_years\", distanceInYears);\n }\n if (diff < 0.75) {\n return t(\"over_x_years\", distanceInYears);\n }\n return t(\"almost_x_years\", distanceInYears + 1);\n}","import { getFullScope, inferType } from \"./helpers\";\nexport const guessStrategy = function (i18n, scope) {\n if (scope instanceof Array) {\n scope = scope.join(i18n.defaultSeparator);\n }\n const message = scope.split(i18n.defaultSeparator).slice(-1)[0];\n return i18n.missingTranslationPrefix + message.replace(\"_\", \" \").replace(/([a-z])([A-Z])/g, (_match, p1, p2) => `${p1} ${p2.toLowerCase()}`);\n};\nexport const messageStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const fullScopeWithLocale = [localeType == \"string\" ? locale : localeType, fullScope].join(i18n.defaultSeparator);\n return `[missing \"${fullScopeWithLocale}\" translation]`;\n};\nexport const errorStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const fullScopeWithLocale = [i18n.locale, fullScope].join(i18n.defaultSeparator);\n throw new Error(`Missing translation: ${fullScopeWithLocale}`);\n};\nexport class MissingTranslation {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"guess\", guessStrategy);\n this.register(\"message\", messageStrategy);\n this.register(\"error\", errorStrategy);\n }\n register(name, strategy) {\n this.registry[name] = strategy;\n }\n get(scope, options) {\n var _a;\n return this.registry[(_a = options.missingBehavior) !== null && _a !== void 0 ? _a : this.i18n.missingBehavior](this.i18n, scope, options);\n }\n}","function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function () { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function (t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function (t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function (e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function () { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function (e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function (t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function (t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function (t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function (e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport get from \"./vendor/lodash/get\";\nimport has from \"./vendor/lodash/has\";\nimport set from \"./vendor/lodash/set\";\nimport { Locales } from \"./Locales\";\nimport { Pluralization } from \"./Pluralization\";\nimport { MissingTranslation } from \"./MissingTranslation\";\nimport { camelCaseKeys, createTranslationOptions, formatNumber, getFullScope, inferType, interpolate, isSet, lookup, numberToDelimited, numberToHuman, numberToHumanSize, parseDate, pluralize, propertyFlatList, strftime, timeAgoInWords } from \"./helpers\";\nconst DEFAULT_I18N_OPTIONS = {\n defaultLocale: \"en\",\n availableLocales: [\"en\"],\n locale: \"en\",\n defaultSeparator: \".\",\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n enableFallback: false,\n missingBehavior: \"message\",\n missingTranslationPrefix: \"\",\n missingPlaceholder: (_i18n, placeholder) => `[missing \"${placeholder}\" value]`,\n nullPlaceholder: (i18n, placeholder, message, options) => i18n.missingPlaceholder(i18n, placeholder, message, options),\n transformKey: key => key\n};\nexport class I18n {\n constructor() {\n let translations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this._locale = DEFAULT_I18N_OPTIONS.locale;\n this._defaultLocale = DEFAULT_I18N_OPTIONS.defaultLocale;\n this._version = 0;\n this.onChangeHandlers = [];\n this.translations = {};\n this.availableLocales = [];\n this.t = this.translate;\n this.p = this.pluralize;\n this.l = this.localize;\n this.distanceOfTimeInWords = this.timeAgoInWords;\n const _Object$assign = Object.assign(Object.assign({}, DEFAULT_I18N_OPTIONS), options),\n locale = _Object$assign.locale,\n enableFallback = _Object$assign.enableFallback,\n missingBehavior = _Object$assign.missingBehavior,\n missingTranslationPrefix = _Object$assign.missingTranslationPrefix,\n missingPlaceholder = _Object$assign.missingPlaceholder,\n nullPlaceholder = _Object$assign.nullPlaceholder,\n defaultLocale = _Object$assign.defaultLocale,\n defaultSeparator = _Object$assign.defaultSeparator,\n placeholder = _Object$assign.placeholder,\n transformKey = _Object$assign.transformKey;\n this.locale = locale;\n this.defaultLocale = defaultLocale;\n this.defaultSeparator = defaultSeparator;\n this.enableFallback = enableFallback;\n this.locale = locale;\n this.missingBehavior = missingBehavior;\n this.missingTranslationPrefix = missingTranslationPrefix;\n this.missingPlaceholder = missingPlaceholder;\n this.nullPlaceholder = nullPlaceholder;\n this.placeholder = placeholder;\n this.pluralization = new Pluralization(this);\n this.locales = new Locales(this);\n this.missingTranslation = new MissingTranslation(this);\n this.transformKey = transformKey;\n this.interpolate = interpolate;\n this.store(translations);\n }\n store(translations) {\n const map = propertyFlatList(translations);\n map.forEach(path => set(this.translations, path, get(translations, path)));\n this.hasChanged();\n }\n get locale() {\n return this._locale || this.defaultLocale || \"en\";\n }\n set locale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._locale !== newLocale;\n this._locale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n get defaultLocale() {\n return this._defaultLocale || \"en\";\n }\n set defaultLocale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._defaultLocale !== newLocale;\n this._defaultLocale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n translate(scope, options) {\n options = Object.assign({}, options);\n const translationOptions = createTranslationOptions(this, scope, options);\n let translation;\n const hasFoundTranslation = translationOptions.some(translationOption => {\n if (isSet(translationOption.scope)) {\n translation = lookup(this, translationOption.scope, options);\n } else if (isSet(translationOption.message)) {\n translation = translationOption.message;\n }\n return translation !== undefined && translation !== null;\n });\n if (!hasFoundTranslation) {\n return this.missingTranslation.get(scope, options);\n }\n if (typeof translation === \"string\") {\n translation = this.interpolate(this, translation, options);\n } else if (typeof translation === \"object\" && translation && isSet(options.count)) {\n translation = pluralize({\n i18n: this,\n count: options.count || 0,\n scope: translation,\n options,\n baseScope: getFullScope(this, scope, options)\n });\n }\n if (options && translation instanceof Array) {\n translation = translation.map(entry => typeof entry === \"string\" ? interpolate(this, entry, options) : entry);\n }\n return translation;\n }\n pluralize(count, scope, options) {\n return pluralize({\n i18n: this,\n count,\n scope,\n options: Object.assign({}, options),\n baseScope: getFullScope(this, scope, options !== null && options !== void 0 ? options : {})\n });\n }\n localize(type, value, options) {\n options = Object.assign({}, options);\n if (value === undefined || value === null) {\n return \"\";\n }\n switch (type) {\n case \"currency\":\n return this.numberToCurrency(value);\n case \"number\":\n return formatNumber(value, Object.assign({\n delimiter: \",\",\n precision: 3,\n separator: \".\",\n significant: false,\n stripInsignificantZeros: false\n }, lookup(this, \"number.format\")));\n case \"percentage\":\n return this.numberToPercentage(value);\n default:\n {\n let localizedValue;\n if (type.match(/^(date|time)/)) {\n localizedValue = this.toTime(type, value);\n } else {\n localizedValue = value.toString();\n }\n return interpolate(this, localizedValue, options);\n }\n }\n }\n toTime(scope, input) {\n const date = parseDate(input);\n const format = lookup(this, scope);\n if (date.toString().match(/invalid/i)) {\n return date.toString();\n }\n if (!format) {\n return date.toString();\n }\n return this.strftime(date, format);\n }\n numberToCurrency(input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return formatNumber(input, Object.assign(Object.assign(Object.assign({\n delimiter: \",\",\n format: \"%u%n\",\n precision: 2,\n separator: \".\",\n significant: false,\n stripInsignificantZeros: false,\n unit: \"$\"\n }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.currency.format\"))), options));\n }\n numberToPercentage(input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return formatNumber(input, Object.assign(Object.assign(Object.assign({\n delimiter: \"\",\n format: \"%n%\",\n precision: 3,\n stripInsignificantZeros: false,\n separator: \".\",\n significant: false\n }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.percentage.format\"))), options));\n }\n numberToHumanSize(input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return numberToHumanSize(this, input, Object.assign(Object.assign(Object.assign({\n delimiter: \"\",\n precision: 3,\n significant: true,\n stripInsignificantZeros: true,\n units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\"\n }\n }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.storage_units\"))), options));\n }\n numberToHuman(input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return numberToHuman(this, input, Object.assign(Object.assign(Object.assign({\n delimiter: \"\",\n separator: \".\",\n precision: 3,\n significant: true,\n stripInsignificantZeros: true,\n format: \"%n %u\",\n roundMode: \"default\",\n units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\"\n }\n }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.decimal_units\"))), options));\n }\n numberToRounded(input, options) {\n return formatNumber(input, Object.assign({\n unit: \"\",\n precision: 3,\n significant: false,\n separator: \".\",\n delimiter: \"\",\n stripInsignificantZeros: false\n }, options));\n }\n numberToDelimited(input) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return numberToDelimited(input, Object.assign({\n delimiterPattern: /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\n delimiter: \",\",\n separator: \".\"\n }, options));\n }\n withLocale(locale, callback) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var originalLocale;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n originalLocale = this.locale;\n _context.prev = 1;\n this.locale = locale;\n _context.next = 5;\n return callback();\n case 5:\n _context.prev = 5;\n this.locale = originalLocale;\n return _context.finish(5);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[1,, 5, 8]]);\n }));\n }\n strftime(date, format) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return strftime(date, format, Object.assign(Object.assign(Object.assign({}, camelCaseKeys(lookup(this, \"date\"))), {\n meridian: {\n am: lookup(this, \"time.am\") || \"AM\",\n pm: lookup(this, \"time.pm\") || \"PM\"\n }\n }), options));\n }\n update(path, override) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n strict: false\n };\n if (options.strict && !has(this.translations, path)) {\n throw new Error(`The path \"${path}\" is not currently defined`);\n }\n const currentNode = get(this.translations, path);\n const currentType = inferType(currentNode);\n const overrideType = inferType(override);\n if (options.strict && currentType !== overrideType) {\n throw new Error(`The current type for \"${path}\" is \"${currentType}\", but you're trying to override it with \"${overrideType}\"`);\n }\n let newNode;\n if (overrideType === \"object\") {\n newNode = Object.assign(Object.assign({}, currentNode), override);\n } else {\n newNode = override;\n }\n set(this.translations, path, newNode);\n this.hasChanged();\n }\n toSentence(items) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _Object$assign2 = Object.assign(Object.assign({\n wordsConnector: \", \",\n twoWordsConnector: \" and \",\n lastWordConnector: \", and \"\n }, camelCaseKeys(lookup(this, \"support.array\"))), options),\n wordsConnector = _Object$assign2.wordsConnector,\n twoWordsConnector = _Object$assign2.twoWordsConnector,\n lastWordConnector = _Object$assign2.lastWordConnector;\n const size = items.length;\n switch (size) {\n case 0:\n return \"\";\n case 1:\n return `${items[0]}`;\n case 2:\n return items.join(twoWordsConnector);\n default:\n return [items.slice(0, size - 1).join(wordsConnector), lastWordConnector, items[size - 1]].join(\"\");\n }\n }\n timeAgoInWords(fromTime, toTime) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return timeAgoInWords(this, fromTime, toTime, options);\n }\n onChange(callback) {\n this.onChangeHandlers.push(callback);\n return () => {\n this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(callback), 1);\n };\n }\n get version() {\n return this._version;\n }\n formatNumber(input, options) {\n return formatNumber(input, options);\n }\n get(scope) {\n return lookup(this, scope);\n }\n runCallbacks() {\n this.onChangeHandlers.forEach(callback => callback(this));\n }\n hasChanged() {\n this._version += 1;\n this.runCallbacks();\n }\n}","import { isSet } from \"./isSet\";\nexport function createTranslationOptions(i18n, scope, options) {\n let translationOptions = [{\n scope\n }];\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n if (isSet(options.defaultValue)) {\n const message = typeof options.defaultValue === \"function\" ? options.defaultValue(i18n, scope, options) : options.defaultValue;\n translationOptions.push({\n message\n });\n delete options.defaultValue;\n }\n return translationOptions;\n}","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nimport 'controllers';\nimport 'channels';\nimport 'css-tooltip';\nimport 'owl.carousel/dist/assets/owl.carousel.css';\nimport 'owl.carousel';\nimport \"chartkick/chart.js\"\nimport 'bootstrap-autocomplete'\nimport { I18n } from \"i18n-js\";\nimport translations from \"../locales.json\";\nwindow.I18n = new I18n(translations);\n\n(function () {\n var context = require.context(\".\", true, /\\.js$/);\n context.keys().forEach(function (key) {\n if (key.indexOf('vue_application') > -1) return;\n context(key);\n });\n})();\n\n$(document).ready(function() {\n window.Pages['GlobalApplication'].setUpCloudinaryClient();\n $('.datepicker').datepicker({\n language: I18n.locale\n });\n // Setup sliders\n GLightbox({\n preload: false,\n keyboardNavigation: false,\n loop: true\n });\n initLightSlider($('#image-gallery'))\n});\n\nwindow.initLightSlider = element => element.lightSlider({\n gallery: true,\n item: 1,\n loop: true,\n thumbItem: 9,\n slideMargin: 0,\n auto: true,\n enableDrag: false,\n responsive : [\n {\n breakpoint: 767,\n settings: {\n thumbItem: 4,\n }\n }\n ],\n onBeforeStart: e => {\n element.addClass('invisible')\n },\n onSliderLoad: (e) => {\n element.removeClass('invisible')\n $('img[src^=\"//img.youtube.com\"]').each((_, elm) => {\n let playButton = $(`\n
\n \n \n \n
\n `)\n let parent = $(elm).parent().addClass('position-relative')\n parent.append(playButton)\n })\n }\n});\n","\"use strict\";\n\nvar baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\nmodule.exports = has;","\"use strict\";\n\nvar baseUniq = require('./_baseUniq');\nfunction uniq(array) {\n return array && array.length ? baseUniq(array) : [];\n}\nmodule.exports = uniq;","\"use strict\";\n\nvar capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\nvar camelCase = createCompounder(function (result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\nmodule.exports = camelCase;","\"use strict\";\n\nvar baseRepeat = require('./_baseRepeat'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\nfunction 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}\nmodule.exports = repeat;","\"use strict\";\n\nvar baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\nvar sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\nmodule.exports = sortBy;","\"use strict\";\n\nvar assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\nmodule.exports = zipObject;","\"use strict\";\n\nvar baseFlatten = require('./_baseFlatten');\nvar INFINITY = 1 / 0;\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\nmodule.exports = flattenDeep;","\"use strict\";\n\nvar createRange = require('./_createRange');\nvar range = createRange();\nmodule.exports = range;","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","var map = {\n\t\"./x3ds_file_channel.js\": 330\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 200;","/**\n * Owl Carousel v2.3.4\n * Copyright 2013-2018 David Deutsch\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\n */\n/**\n * Owl carousel\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n * @todo Lazy Load Icon\n * @todo prevent animationend bubling\n * @todo itemsScaleUp\n * @todo Test Zepto\n * @todo stagePadding calculate wrong active classes\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates a carousel.\n * @class The Owl Carousel.\n * @public\n * @param {HTMLElement|jQuery} element - The element to create the carousel for.\n * @param {Object} [options] - The options\n */\n function Owl(element, options) {\n /**\n * Current settings for the carousel.\n * @public\n */\n this.settings = null;\n\n /**\n * Current options set by the caller including defaults.\n * @public\n */\n this.options = $.extend({}, Owl.Defaults, options);\n\n /**\n * Plugin element.\n * @public\n */\n this.$element = $(element);\n\n /**\n * Proxied event handlers.\n * @protected\n */\n this._handlers = {};\n\n /**\n * References to the running plugins of this carousel.\n * @protected\n */\n this._plugins = {};\n\n /**\n * Currently suppressed events to prevent them from being retriggered.\n * @protected\n */\n this._supress = {};\n\n /**\n * Absolute current position.\n * @protected\n */\n this._current = null;\n\n /**\n * Animation speed in milliseconds.\n * @protected\n */\n this._speed = null;\n\n /**\n * Coordinates of all items in pixel.\n * @todo The name of this member is missleading.\n * @protected\n */\n this._coordinates = [];\n\n /**\n * Current breakpoint.\n * @todo Real media queries would be nice.\n * @protected\n */\n this._breakpoint = null;\n\n /**\n * Current width of the plugin element.\n */\n this._width = null;\n\n /**\n * All real items.\n * @protected\n */\n this._items = [];\n\n /**\n * All cloned items.\n * @protected\n */\n this._clones = [];\n\n /**\n * Merge values of all items.\n * @todo Maybe this could be part of a plugin.\n * @protected\n */\n this._mergers = [];\n\n /**\n * Widths of all items.\n */\n this._widths = [];\n\n /**\n * Invalidated parts within the update process.\n * @protected\n */\n this._invalidated = {};\n\n /**\n * Ordered list of workers for the update process.\n * @protected\n */\n this._pipe = [];\n\n /**\n * Current state information for the drag operation.\n * @todo #261\n * @protected\n */\n this._drag = {\n time: null,\n target: null,\n pointer: null,\n stage: {\n start: null,\n current: null\n },\n direction: null\n };\n\n /**\n * Current state information and their tags.\n * @type {Object}\n * @protected\n */\n this._states = {\n current: {},\n tags: {\n 'initializing': ['busy'],\n 'animating': ['busy'],\n 'dragging': ['interacting']\n }\n };\n $.each(['onResize', 'onThrottledResize'], $.proxy(function (i, handler) {\n this._handlers[handler] = $.proxy(this[handler], this);\n }, this));\n $.each(Owl.Plugins, $.proxy(function (key, plugin) {\n this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] = new plugin(this);\n }, this));\n $.each(Owl.Workers, $.proxy(function (priority, worker) {\n this._pipe.push({\n 'filter': worker.filter,\n 'run': $.proxy(worker.run, this)\n });\n }, this));\n this.setup();\n this.initialize();\n }\n\n /**\n * Default options for the carousel.\n * @public\n */\n Owl.Defaults = {\n items: 3,\n loop: false,\n center: false,\n rewind: false,\n checkVisibility: true,\n mouseDrag: true,\n touchDrag: true,\n pullDrag: true,\n freeDrag: false,\n margin: 0,\n stagePadding: 0,\n merge: false,\n mergeFit: true,\n autoWidth: false,\n startPosition: 0,\n rtl: false,\n smartSpeed: 250,\n fluidSpeed: false,\n dragEndSpeed: false,\n responsive: {},\n responsiveRefreshRate: 200,\n responsiveBaseElement: window,\n fallbackEasing: 'swing',\n slideTransition: '',\n info: false,\n nestedItemSelector: false,\n itemElement: 'div',\n stageElement: 'div',\n refreshClass: 'owl-refresh',\n loadedClass: 'owl-loaded',\n loadingClass: 'owl-loading',\n rtlClass: 'owl-rtl',\n responsiveClass: 'owl-responsive',\n dragClass: 'owl-drag',\n itemClass: 'owl-item',\n stageClass: 'owl-stage',\n stageOuterClass: 'owl-stage-outer',\n grabClass: 'owl-grab'\n };\n\n /**\n * Enumeration for width.\n * @public\n * @readonly\n * @enum {String}\n */\n Owl.Width = {\n Default: 'default',\n Inner: 'inner',\n Outer: 'outer'\n };\n\n /**\n * Enumeration for types.\n * @public\n * @readonly\n * @enum {String}\n */\n Owl.Type = {\n Event: 'event',\n State: 'state'\n };\n\n /**\n * Contains all registered plugins.\n * @public\n */\n Owl.Plugins = {};\n\n /**\n * List of workers involved in the update process.\n */\n Owl.Workers = [{\n filter: ['width', 'settings'],\n run: function () {\n this._width = this.$element.width();\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function (cache) {\n cache.current = this._items && this._items[this.relative(this._current)];\n }\n }, {\n filter: ['items', 'settings'],\n run: function () {\n this.$stage.children('.cloned').remove();\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function (cache) {\n var margin = this.settings.margin || '',\n grid = !this.settings.autoWidth,\n rtl = this.settings.rtl,\n css = {\n 'width': 'auto',\n 'margin-left': rtl ? margin : '',\n 'margin-right': rtl ? '' : margin\n };\n !grid && this.$stage.children().css(css);\n cache.css = css;\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function (cache) {\n var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\n merge = null,\n iterator = this._items.length,\n grid = !this.settings.autoWidth,\n widths = [];\n cache.items = {\n merge: false,\n width: width\n };\n while (iterator--) {\n merge = this._mergers[iterator];\n merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\n cache.items.merge = merge > 1 || cache.items.merge;\n widths[iterator] = !grid ? this._items[iterator].width() : width * merge;\n }\n this._widths = widths;\n }\n }, {\n filter: ['items', 'settings'],\n run: function () {\n var clones = [],\n items = this._items,\n settings = this.settings,\n // TODO: Should be computed from number of min width items in stage\n view = Math.max(settings.items * 2, 4),\n size = Math.ceil(items.length / 2) * 2,\n repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\n append = '',\n prepend = '';\n repeat /= 2;\n while (repeat > 0) {\n // Switch to only using appended clones\n clones.push(this.normalize(clones.length / 2, true));\n append = append + items[clones[clones.length - 1]][0].outerHTML;\n clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\n prepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\n repeat -= 1;\n }\n this._clones = clones;\n $(append).addClass('cloned').appendTo(this.$stage);\n $(prepend).addClass('cloned').prependTo(this.$stage);\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function () {\n var rtl = this.settings.rtl ? 1 : -1,\n size = this._clones.length + this._items.length,\n iterator = -1,\n previous = 0,\n current = 0,\n coordinates = [];\n while (++iterator < size) {\n previous = coordinates[iterator - 1] || 0;\n current = this._widths[this.relative(iterator)] + this.settings.margin;\n coordinates.push(previous + current * rtl);\n }\n this._coordinates = coordinates;\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function () {\n var padding = this.settings.stagePadding,\n coordinates = this._coordinates,\n css = {\n 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\n 'padding-left': padding || '',\n 'padding-right': padding || ''\n };\n this.$stage.css(css);\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function (cache) {\n var iterator = this._coordinates.length,\n grid = !this.settings.autoWidth,\n items = this.$stage.children();\n if (grid && cache.items.merge) {\n while (iterator--) {\n cache.css.width = this._widths[this.relative(iterator)];\n items.eq(iterator).css(cache.css);\n }\n } else if (grid) {\n cache.css.width = cache.items.width;\n items.css(cache.css);\n }\n }\n }, {\n filter: ['items'],\n run: function () {\n this._coordinates.length < 1 && this.$stage.removeAttr('style');\n }\n }, {\n filter: ['width', 'items', 'settings'],\n run: function (cache) {\n cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\n cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\n this.reset(cache.current);\n }\n }, {\n filter: ['position'],\n run: function () {\n this.animate(this.coordinates(this._current));\n }\n }, {\n filter: ['width', 'position', 'items', 'settings'],\n run: function () {\n var rtl = this.settings.rtl ? 1 : -1,\n padding = this.settings.stagePadding * 2,\n begin = this.coordinates(this.current()) + padding,\n end = begin + this.width() * rtl,\n inner,\n outer,\n matches = [],\n i,\n n;\n for (i = 0, n = this._coordinates.length; i < n; i++) {\n inner = this._coordinates[i - 1] || 0;\n outer = Math.abs(this._coordinates[i]) + padding * rtl;\n if (this.op(inner, '<=', begin) && this.op(inner, '>', end) || this.op(outer, '<', begin) && this.op(outer, '>', end)) {\n matches.push(i);\n }\n }\n this.$stage.children('.active').removeClass('active');\n this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\n this.$stage.children('.center').removeClass('center');\n if (this.settings.center) {\n this.$stage.children().eq(this.current()).addClass('center');\n }\n }\n }];\n\n /**\n * Create the stage DOM element\n */\n Owl.prototype.initializeStage = function () {\n this.$stage = this.$element.find('.' + this.settings.stageClass);\n\n // if the stage is already in the DOM, grab it and skip stage initialization\n if (this.$stage.length) {\n return;\n }\n this.$element.addClass(this.options.loadingClass);\n\n // create stage\n this.$stage = $('<' + this.settings.stageElement + '>', {\n \"class\": this.settings.stageClass\n }).wrap($('
', {\n \"class\": this.settings.stageOuterClass\n }));\n\n // append stage\n this.$element.append(this.$stage.parent());\n };\n\n /**\n * Create item DOM elements\n */\n Owl.prototype.initializeItems = function () {\n var $items = this.$element.find('.owl-item');\n\n // if the items are already in the DOM, grab them and skip item initialization\n if ($items.length) {\n this._items = $items.get().map(function (item) {\n return $(item);\n });\n this._mergers = this._items.map(function () {\n return 1;\n });\n this.refresh();\n return;\n }\n\n // append content\n this.replace(this.$element.children().not(this.$stage.parent()));\n\n // check visibility\n if (this.isVisible()) {\n // update view\n this.refresh();\n } else {\n // invalidate width\n this.invalidate('width');\n }\n this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass);\n };\n\n /**\n * Initializes the carousel.\n * @protected\n */\n Owl.prototype.initialize = function () {\n this.enter('initializing');\n this.trigger('initialize');\n this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\n if (this.settings.autoWidth && !this.is('pre-loading')) {\n var imgs, nestedSelector, width;\n imgs = this.$element.find('img');\n nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\n width = this.$element.children(nestedSelector).width();\n if (imgs.length && width <= 0) {\n this.preloadAutoWidthImages(imgs);\n }\n }\n this.initializeStage();\n this.initializeItems();\n\n // register event handlers\n this.registerEventHandlers();\n this.leave('initializing');\n this.trigger('initialized');\n };\n\n /**\n * @returns {Boolean} visibility of $element\n * if you know the carousel will always be visible you can set `checkVisibility` to `false` to\n * prevent the expensive browser layout forced reflow the $element.is(':visible') does\n */\n Owl.prototype.isVisible = function () {\n return this.settings.checkVisibility ? this.$element.is(':visible') : true;\n };\n\n /**\n * Setups the current settings.\n * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\n * @todo Support for media queries by using `matchMedia` would be nice.\n * @public\n */\n Owl.prototype.setup = function () {\n var viewport = this.viewport(),\n overwrites = this.options.responsive,\n match = -1,\n settings = null;\n if (!overwrites) {\n settings = $.extend({}, this.options);\n } else {\n $.each(overwrites, function (breakpoint) {\n if (breakpoint <= viewport && breakpoint > match) {\n match = Number(breakpoint);\n }\n });\n settings = $.extend({}, this.options, overwrites[match]);\n if (typeof settings.stagePadding === 'function') {\n settings.stagePadding = settings.stagePadding();\n }\n delete settings.responsive;\n\n // responsive class\n if (settings.responsiveClass) {\n this.$element.attr('class', this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match));\n }\n }\n this.trigger('change', {\n property: {\n name: 'settings',\n value: settings\n }\n });\n this._breakpoint = match;\n this.settings = settings;\n this.invalidate('settings');\n this.trigger('changed', {\n property: {\n name: 'settings',\n value: this.settings\n }\n });\n };\n\n /**\n * Updates option logic if necessery.\n * @protected\n */\n Owl.prototype.optionsLogic = function () {\n if (this.settings.autoWidth) {\n this.settings.stagePadding = false;\n this.settings.merge = false;\n }\n };\n\n /**\n * Prepares an item before add.\n * @todo Rename event parameter `content` to `item`.\n * @protected\n * @returns {jQuery|HTMLElement} - The item container.\n */\n Owl.prototype.prepare = function (item) {\n var event = this.trigger('prepare', {\n content: item\n });\n if (!event.data) {\n event.data = $('<' + this.settings.itemElement + '/>').addClass(this.options.itemClass).append(item);\n }\n this.trigger('prepared', {\n content: event.data\n });\n return event.data;\n };\n\n /**\n * Updates the view.\n * @public\n */\n Owl.prototype.update = function () {\n var i = 0,\n n = this._pipe.length,\n filter = $.proxy(function (p) {\n return this[p];\n }, this._invalidated),\n cache = {};\n while (i < n) {\n if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\n this._pipe[i].run(cache);\n }\n i++;\n }\n this._invalidated = {};\n !this.is('valid') && this.enter('valid');\n };\n\n /**\n * Gets the width of the view.\n * @public\n * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\n * @returns {Number} - The width of the view in pixel.\n */\n Owl.prototype.width = function (dimension) {\n dimension = dimension || Owl.Width.Default;\n switch (dimension) {\n case Owl.Width.Inner:\n case Owl.Width.Outer:\n return this._width;\n default:\n return this._width - this.settings.stagePadding * 2 + this.settings.margin;\n }\n };\n\n /**\n * Refreshes the carousel primarily for adaptive purposes.\n * @public\n */\n Owl.prototype.refresh = function () {\n this.enter('refreshing');\n this.trigger('refresh');\n this.setup();\n this.optionsLogic();\n this.$element.addClass(this.options.refreshClass);\n this.update();\n this.$element.removeClass(this.options.refreshClass);\n this.leave('refreshing');\n this.trigger('refreshed');\n };\n\n /**\n * Checks window `resize` event.\n * @protected\n */\n Owl.prototype.onThrottledResize = function () {\n window.clearTimeout(this.resizeTimer);\n this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\n };\n\n /**\n * Checks window `resize` event.\n * @protected\n */\n Owl.prototype.onResize = function () {\n if (!this._items.length) {\n return false;\n }\n if (this._width === this.$element.width()) {\n return false;\n }\n if (!this.isVisible()) {\n return false;\n }\n this.enter('resizing');\n if (this.trigger('resize').isDefaultPrevented()) {\n this.leave('resizing');\n return false;\n }\n this.invalidate('width');\n this.refresh();\n this.leave('resizing');\n this.trigger('resized');\n };\n\n /**\n * Registers event handlers.\n * @todo Check `msPointerEnabled`\n * @todo #261\n * @protected\n */\n Owl.prototype.registerEventHandlers = function () {\n if ($.support.transition) {\n this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\n }\n if (this.settings.responsive !== false) {\n this.on(window, 'resize', this._handlers.onThrottledResize);\n }\n if (this.settings.mouseDrag) {\n this.$element.addClass(this.options.dragClass);\n this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\n this.$stage.on('dragstart.owl.core selectstart.owl.core', function () {\n return false;\n });\n }\n if (this.settings.touchDrag) {\n this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\n this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\n }\n };\n\n /**\n * Handles `touchstart` and `mousedown` events.\n * @todo Horizontal swipe threshold as option\n * @todo #261\n * @protected\n * @param {Event} event - The event arguments.\n */\n Owl.prototype.onDragStart = function (event) {\n var stage = null;\n if (event.which === 3) {\n return;\n }\n if ($.support.transform) {\n stage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\n stage = {\n x: stage[stage.length === 16 ? 12 : 4],\n y: stage[stage.length === 16 ? 13 : 5]\n };\n } else {\n stage = this.$stage.position();\n stage = {\n x: this.settings.rtl ? stage.left + this.$stage.width() - this.width() + this.settings.margin : stage.left,\n y: stage.top\n };\n }\n if (this.is('animating')) {\n $.support.transform ? this.animate(stage.x) : this.$stage.stop();\n this.invalidate('position');\n }\n this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\n this.speed(0);\n this._drag.time = new Date().getTime();\n this._drag.target = $(event.target);\n this._drag.stage.start = stage;\n this._drag.stage.current = stage;\n this._drag.pointer = this.pointer(event);\n $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\n $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function (event) {\n var delta = this.difference(this._drag.pointer, this.pointer(event));\n $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\n if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\n return;\n }\n event.preventDefault();\n this.enter('dragging');\n this.trigger('drag');\n }, this));\n };\n\n /**\n * Handles the `touchmove` and `mousemove` events.\n * @todo #261\n * @protected\n * @param {Event} event - The event arguments.\n */\n Owl.prototype.onDragMove = function (event) {\n var minimum = null,\n maximum = null,\n pull = null,\n delta = this.difference(this._drag.pointer, this.pointer(event)),\n stage = this.difference(this._drag.stage.start, delta);\n if (!this.is('dragging')) {\n return;\n }\n event.preventDefault();\n if (this.settings.loop) {\n minimum = this.coordinates(this.minimum());\n maximum = this.coordinates(this.maximum() + 1) - minimum;\n stage.x = ((stage.x - minimum) % maximum + maximum) % maximum + minimum;\n } else {\n minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\n maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\n pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\n stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\n }\n this._drag.stage.current = stage;\n this.animate(stage.x);\n };\n\n /**\n * Handles the `touchend` and `mouseup` events.\n * @todo #261\n * @todo Threshold for click event\n * @protected\n * @param {Event} event - The event arguments.\n */\n Owl.prototype.onDragEnd = function (event) {\n var delta = this.difference(this._drag.pointer, this.pointer(event)),\n stage = this._drag.stage.current,\n direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\n $(document).off('.owl.core');\n this.$element.removeClass(this.options.grabClass);\n if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\n this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\n this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\n this.invalidate('position');\n this.update();\n this._drag.direction = direction;\n if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\n this._drag.target.one('click.owl.core', function () {\n return false;\n });\n }\n }\n if (!this.is('dragging')) {\n return;\n }\n this.leave('dragging');\n this.trigger('dragged');\n };\n\n /**\n * Gets absolute position of the closest item for a coordinate.\n * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\n * @protected\n * @param {Number} coordinate - The coordinate in pixel.\n * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\n * @return {Number} - The absolute position of the closest item.\n */\n Owl.prototype.closest = function (coordinate, direction) {\n var position = -1,\n pull = 30,\n width = this.width(),\n coordinates = this.coordinates();\n if (!this.settings.freeDrag) {\n // check closest item\n $.each(coordinates, $.proxy(function (index, value) {\n // on a left pull, check on current index\n if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\n position = index;\n // on a right pull, check on previous index\n // to do so, subtract width from value and set position = index + 1\n } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\n position = index + 1;\n } else if (this.op(coordinate, '<', value) && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) {\n position = direction === 'left' ? index + 1 : index;\n }\n return position === -1;\n }, this));\n }\n if (!this.settings.loop) {\n // non loop boundries\n if (this.op(coordinate, '>', coordinates[this.minimum()])) {\n position = coordinate = this.minimum();\n } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\n position = coordinate = this.maximum();\n }\n }\n return position;\n };\n\n /**\n * Animates the stage.\n * @todo #270\n * @public\n * @param {Number} coordinate - The coordinate in pixels.\n */\n Owl.prototype.animate = function (coordinate) {\n var animate = this.speed() > 0;\n this.is('animating') && this.onTransitionEnd();\n if (animate) {\n this.enter('animating');\n this.trigger('translate');\n }\n if ($.support.transform3d && $.support.transition) {\n this.$stage.css({\n transform: 'translate3d(' + coordinate + 'px,0px,0px)',\n transition: this.speed() / 1000 + 's' + (this.settings.slideTransition ? ' ' + this.settings.slideTransition : '')\n });\n } else if (animate) {\n this.$stage.animate({\n left: coordinate + 'px'\n }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\n } else {\n this.$stage.css({\n left: coordinate + 'px'\n });\n }\n };\n\n /**\n * Checks whether the carousel is in a specific state or not.\n * @param {String} state - The state to check.\n * @returns {Boolean} - The flag which indicates if the carousel is busy.\n */\n Owl.prototype.is = function (state) {\n return this._states.current[state] && this._states.current[state] > 0;\n };\n\n /**\n * Sets the absolute position of the current item.\n * @public\n * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\n * @returns {Number} - The absolute position of the current item.\n */\n Owl.prototype.current = function (position) {\n if (position === undefined) {\n return this._current;\n }\n if (this._items.length === 0) {\n return undefined;\n }\n position = this.normalize(position);\n if (this._current !== position) {\n var event = this.trigger('change', {\n property: {\n name: 'position',\n value: position\n }\n });\n if (event.data !== undefined) {\n position = this.normalize(event.data);\n }\n this._current = position;\n this.invalidate('position');\n this.trigger('changed', {\n property: {\n name: 'position',\n value: this._current\n }\n });\n }\n return this._current;\n };\n\n /**\n * Invalidates the given part of the update routine.\n * @param {String} [part] - The part to invalidate.\n * @returns {Array.} - The invalidated parts.\n */\n Owl.prototype.invalidate = function (part) {\n if ($.type(part) === 'string') {\n this._invalidated[part] = true;\n this.is('valid') && this.leave('valid');\n }\n return $.map(this._invalidated, function (v, i) {\n return i;\n });\n };\n\n /**\n * Resets the absolute position of the current item.\n * @public\n * @param {Number} position - The absolute position of the new item.\n */\n Owl.prototype.reset = function (position) {\n position = this.normalize(position);\n if (position === undefined) {\n return;\n }\n this._speed = 0;\n this._current = position;\n this.suppress(['translate', 'translated']);\n this.animate(this.coordinates(position));\n this.release(['translate', 'translated']);\n };\n\n /**\n * Normalizes an absolute or a relative position of an item.\n * @public\n * @param {Number} position - The absolute or relative position to normalize.\n * @param {Boolean} [relative=false] - Whether the given position is relative or not.\n * @returns {Number} - The normalized position.\n */\n Owl.prototype.normalize = function (position, relative) {\n var n = this._items.length,\n m = relative ? 0 : this._clones.length;\n if (!this.isNumeric(position) || n < 1) {\n position = undefined;\n } else if (position < 0 || position >= n + m) {\n position = ((position - m / 2) % n + n) % n + m / 2;\n }\n return position;\n };\n\n /**\n * Converts an absolute position of an item into a relative one.\n * @public\n * @param {Number} position - The absolute position to convert.\n * @returns {Number} - The converted position.\n */\n Owl.prototype.relative = function (position) {\n position -= this._clones.length / 2;\n return this.normalize(position, true);\n };\n\n /**\n * Gets the maximum position for the current item.\n * @public\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n * @returns {Number}\n */\n Owl.prototype.maximum = function (relative) {\n var settings = this.settings,\n maximum = this._coordinates.length,\n iterator,\n reciprocalItemsWidth,\n elementWidth;\n if (settings.loop) {\n maximum = this._clones.length / 2 + this._items.length - 1;\n } else if (settings.autoWidth || settings.merge) {\n iterator = this._items.length;\n if (iterator) {\n reciprocalItemsWidth = this._items[--iterator].width();\n elementWidth = this.$element.width();\n while (iterator--) {\n reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\n if (reciprocalItemsWidth > elementWidth) {\n break;\n }\n }\n }\n maximum = iterator + 1;\n } else if (settings.center) {\n maximum = this._items.length - 1;\n } else {\n maximum = this._items.length - settings.items;\n }\n if (relative) {\n maximum -= this._clones.length / 2;\n }\n return Math.max(maximum, 0);\n };\n\n /**\n * Gets the minimum position for the current item.\n * @public\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\n * @returns {Number}\n */\n Owl.prototype.minimum = function (relative) {\n return relative ? 0 : this._clones.length / 2;\n };\n\n /**\n * Gets an item at the specified relative position.\n * @public\n * @param {Number} [position] - The relative position of the item.\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n */\n Owl.prototype.items = function (position) {\n if (position === undefined) {\n return this._items.slice();\n }\n position = this.normalize(position, true);\n return this._items[position];\n };\n\n /**\n * Gets an item at the specified relative position.\n * @public\n * @param {Number} [position] - The relative position of the item.\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\n */\n Owl.prototype.mergers = function (position) {\n if (position === undefined) {\n return this._mergers.slice();\n }\n position = this.normalize(position, true);\n return this._mergers[position];\n };\n\n /**\n * Gets the absolute positions of clones for an item.\n * @public\n * @param {Number} [position] - The relative position of the item.\n * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\n */\n Owl.prototype.clones = function (position) {\n var odd = this._clones.length / 2,\n even = odd + this._items.length,\n map = function (index) {\n return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2;\n };\n if (position === undefined) {\n return $.map(this._clones, function (v, i) {\n return map(i);\n });\n }\n return $.map(this._clones, function (v, i) {\n return v === position ? map(i) : null;\n });\n };\n\n /**\n * Sets the current animation speed.\n * @public\n * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\n * @returns {Number} - The current animation speed in milliseconds.\n */\n Owl.prototype.speed = function (speed) {\n if (speed !== undefined) {\n this._speed = speed;\n }\n return this._speed;\n };\n\n /**\n * Gets the coordinate of an item.\n * @todo The name of this method is missleanding.\n * @public\n * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\n * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\n */\n Owl.prototype.coordinates = function (position) {\n var multiplier = 1,\n newPosition = position - 1,\n coordinate;\n if (position === undefined) {\n return $.map(this._coordinates, $.proxy(function (coordinate, index) {\n return this.coordinates(index);\n }, this));\n }\n if (this.settings.center) {\n if (this.settings.rtl) {\n multiplier = -1;\n newPosition = position + 1;\n }\n coordinate = this._coordinates[position];\n coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\n } else {\n coordinate = this._coordinates[newPosition] || 0;\n }\n coordinate = Math.ceil(coordinate);\n return coordinate;\n };\n\n /**\n * Calculates the speed for a translation.\n * @protected\n * @param {Number} from - The absolute position of the start item.\n * @param {Number} to - The absolute position of the target item.\n * @param {Number} [factor=undefined] - The time factor in milliseconds.\n * @returns {Number} - The time in milliseconds for the translation.\n */\n Owl.prototype.duration = function (from, to, factor) {\n if (factor === 0) {\n return 0;\n }\n return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs(factor || this.settings.smartSpeed);\n };\n\n /**\n * Slides to the specified item.\n * @public\n * @param {Number} position - The position of the item.\n * @param {Number} [speed] - The time in milliseconds for the transition.\n */\n Owl.prototype.to = function (position, speed) {\n var current = this.current(),\n revert = null,\n distance = position - this.relative(current),\n direction = (distance > 0) - (distance < 0),\n items = this._items.length,\n minimum = this.minimum(),\n maximum = this.maximum();\n if (this.settings.loop) {\n if (!this.settings.rewind && Math.abs(distance) > items / 2) {\n distance += direction * -1 * items;\n }\n position = current + distance;\n revert = ((position - minimum) % items + items) % items + minimum;\n if (revert !== position && revert - distance <= maximum && revert - distance > 0) {\n current = revert - distance;\n position = revert;\n this.reset(current);\n }\n } else if (this.settings.rewind) {\n maximum += 1;\n position = (position % maximum + maximum) % maximum;\n } else {\n position = Math.max(minimum, Math.min(maximum, position));\n }\n this.speed(this.duration(current, position, speed));\n this.current(position);\n if (this.isVisible()) {\n this.update();\n }\n };\n\n /**\n * Slides to the next item.\n * @public\n * @param {Number} [speed] - The time in milliseconds for the transition.\n */\n Owl.prototype.next = function (speed) {\n speed = speed || false;\n this.to(this.relative(this.current()) + 1, speed);\n };\n\n /**\n * Slides to the previous item.\n * @public\n * @param {Number} [speed] - The time in milliseconds for the transition.\n */\n Owl.prototype.prev = function (speed) {\n speed = speed || false;\n this.to(this.relative(this.current()) - 1, speed);\n };\n\n /**\n * Handles the end of an animation.\n * @protected\n * @param {Event} event - The event arguments.\n */\n Owl.prototype.onTransitionEnd = function (event) {\n // if css2 animation then event object is undefined\n if (event !== undefined) {\n event.stopPropagation();\n\n // Catch only owl-stage transitionEnd event\n if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\n return false;\n }\n }\n this.leave('animating');\n this.trigger('translated');\n };\n\n /**\n * Gets viewport width.\n * @protected\n * @return {Number} - The width in pixel.\n */\n Owl.prototype.viewport = function () {\n var width;\n if (this.options.responsiveBaseElement !== window) {\n width = $(this.options.responsiveBaseElement).width();\n } else if (window.innerWidth) {\n width = window.innerWidth;\n } else if (document.documentElement && document.documentElement.clientWidth) {\n width = document.documentElement.clientWidth;\n } else {\n console.warn('Can not detect viewport width.');\n }\n return width;\n };\n\n /**\n * Replaces the current content.\n * @public\n * @param {HTMLElement|jQuery|String} content - The new content.\n */\n Owl.prototype.replace = function (content) {\n this.$stage.empty();\n this._items = [];\n if (content) {\n content = content instanceof jQuery ? content : $(content);\n }\n if (this.settings.nestedItemSelector) {\n content = content.find('.' + this.settings.nestedItemSelector);\n }\n content.filter(function () {\n return this.nodeType === 1;\n }).each($.proxy(function (index, item) {\n item = this.prepare(item);\n this.$stage.append(item);\n this._items.push(item);\n this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n }, this));\n this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\n this.invalidate('items');\n };\n\n /**\n * Adds an item.\n * @todo Use `item` instead of `content` for the event arguments.\n * @public\n * @param {HTMLElement|jQuery|String} content - The item content to add.\n * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\n */\n Owl.prototype.add = function (content, position) {\n var current = this.relative(this._current);\n position = position === undefined ? this._items.length : this.normalize(position, true);\n content = content instanceof jQuery ? content : $(content);\n this.trigger('add', {\n content: content,\n position: position\n });\n content = this.prepare(content);\n if (this._items.length === 0 || position === this._items.length) {\n this._items.length === 0 && this.$stage.append(content);\n this._items.length !== 0 && this._items[position - 1].after(content);\n this._items.push(content);\n this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n } else {\n this._items[position].before(content);\n this._items.splice(position, 0, content);\n this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\n }\n this._items[current] && this.reset(this._items[current].index());\n this.invalidate('items');\n this.trigger('added', {\n content: content,\n position: position\n });\n };\n\n /**\n * Removes an item by its position.\n * @todo Use `item` instead of `content` for the event arguments.\n * @public\n * @param {Number} position - The relative position of the item to remove.\n */\n Owl.prototype.remove = function (position) {\n position = this.normalize(position, true);\n if (position === undefined) {\n return;\n }\n this.trigger('remove', {\n content: this._items[position],\n position: position\n });\n this._items[position].remove();\n this._items.splice(position, 1);\n this._mergers.splice(position, 1);\n this.invalidate('items');\n this.trigger('removed', {\n content: null,\n position: position\n });\n };\n\n /**\n * Preloads images with auto width.\n * @todo Replace by a more generic approach\n * @protected\n */\n Owl.prototype.preloadAutoWidthImages = function (images) {\n images.each($.proxy(function (i, element) {\n this.enter('pre-loading');\n element = $(element);\n $(new Image()).one('load', $.proxy(function (e) {\n element.attr('src', e.target.src);\n element.css('opacity', 1);\n this.leave('pre-loading');\n !this.is('pre-loading') && !this.is('initializing') && this.refresh();\n }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\n }, this));\n };\n\n /**\n * Destroys the carousel.\n * @public\n */\n Owl.prototype.destroy = function () {\n this.$element.off('.owl.core');\n this.$stage.off('.owl.core');\n $(document).off('.owl.core');\n if (this.settings.responsive !== false) {\n window.clearTimeout(this.resizeTimer);\n this.off(window, 'resize', this._handlers.onThrottledResize);\n }\n for (var i in this._plugins) {\n this._plugins[i].destroy();\n }\n this.$stage.children('.cloned').remove();\n this.$stage.unwrap();\n this.$stage.children().contents().unwrap();\n this.$stage.children().unwrap();\n this.$stage.remove();\n this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), '')).removeData('owl.carousel');\n };\n\n /**\n * Operators to calculate right-to-left and left-to-right.\n * @protected\n * @param {Number} [a] - The left side operand.\n * @param {String} [o] - The operator.\n * @param {Number} [b] - The right side operand.\n */\n Owl.prototype.op = function (a, o, b) {\n var rtl = this.settings.rtl;\n switch (o) {\n case '<':\n return rtl ? a > b : a < b;\n case '>':\n return rtl ? a < b : a > b;\n case '>=':\n return rtl ? a <= b : a >= b;\n case '<=':\n return rtl ? a >= b : a <= b;\n default:\n break;\n }\n };\n\n /**\n * Attaches to an internal event.\n * @protected\n * @param {HTMLElement} element - The event source.\n * @param {String} event - The event name.\n * @param {Function} listener - The event handler to attach.\n * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\n */\n Owl.prototype.on = function (element, event, listener, capture) {\n if (element.addEventListener) {\n element.addEventListener(event, listener, capture);\n } else if (element.attachEvent) {\n element.attachEvent('on' + event, listener);\n }\n };\n\n /**\n * Detaches from an internal event.\n * @protected\n * @param {HTMLElement} element - The event source.\n * @param {String} event - The event name.\n * @param {Function} listener - The attached event handler to detach.\n * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\n */\n Owl.prototype.off = function (element, event, listener, capture) {\n if (element.removeEventListener) {\n element.removeEventListener(event, listener, capture);\n } else if (element.detachEvent) {\n element.detachEvent('on' + event, listener);\n }\n };\n\n /**\n * Triggers a public event.\n * @todo Remove `status`, `relatedTarget` should be used instead.\n * @protected\n * @param {String} name - The event name.\n * @param {*} [data=null] - The event data.\n * @param {String} [namespace=carousel] - The event namespace.\n * @param {String} [state] - The state which is associated with the event.\n * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\n * @returns {Event} - The event arguments.\n */\n Owl.prototype.trigger = function (name, data, namespace, state, enter) {\n var status = {\n item: {\n count: this._items.length,\n index: this.current()\n }\n },\n handler = $.camelCase($.grep(['on', name, namespace], function (v) {\n return v;\n }).join('-').toLowerCase()),\n event = $.Event([name, 'owl', namespace || 'carousel'].join('.').toLowerCase(), $.extend({\n relatedTarget: this\n }, status, data));\n if (!this._supress[name]) {\n $.each(this._plugins, function (name, plugin) {\n if (plugin.onTrigger) {\n plugin.onTrigger(event);\n }\n });\n this.register({\n type: Owl.Type.Event,\n name: name\n });\n this.$element.trigger(event);\n if (this.settings && typeof this.settings[handler] === 'function') {\n this.settings[handler].call(this, event);\n }\n }\n return event;\n };\n\n /**\n * Enters a state.\n * @param name - The state name.\n */\n Owl.prototype.enter = function (name) {\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\n if (this._states.current[name] === undefined) {\n this._states.current[name] = 0;\n }\n this._states.current[name]++;\n }, this));\n };\n\n /**\n * Leaves a state.\n * @param name - The state name.\n */\n Owl.prototype.leave = function (name) {\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\n this._states.current[name]--;\n }, this));\n };\n\n /**\n * Registers an event or state.\n * @public\n * @param {Object} object - The event or state to register.\n */\n Owl.prototype.register = function (object) {\n if (object.type === Owl.Type.Event) {\n if (!$.event.special[object.name]) {\n $.event.special[object.name] = {};\n }\n if (!$.event.special[object.name].owl) {\n var _default = $.event.special[object.name]._default;\n $.event.special[object.name]._default = function (e) {\n if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\n return _default.apply(this, arguments);\n }\n return e.namespace && e.namespace.indexOf('owl') > -1;\n };\n $.event.special[object.name].owl = true;\n }\n } else if (object.type === Owl.Type.State) {\n if (!this._states.tags[object.name]) {\n this._states.tags[object.name] = object.tags;\n } else {\n this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\n }\n this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function (tag, i) {\n return $.inArray(tag, this._states.tags[object.name]) === i;\n }, this));\n }\n };\n\n /**\n * Suppresses events.\n * @protected\n * @param {Array.} events - The events to suppress.\n */\n Owl.prototype.suppress = function (events) {\n $.each(events, $.proxy(function (index, event) {\n this._supress[event] = true;\n }, this));\n };\n\n /**\n * Releases suppressed events.\n * @protected\n * @param {Array.} events - The events to release.\n */\n Owl.prototype.release = function (events) {\n $.each(events, $.proxy(function (index, event) {\n delete this._supress[event];\n }, this));\n };\n\n /**\n * Gets unified pointer coordinates from event.\n * @todo #261\n * @protected\n * @param {Event} - The `mousedown` or `touchstart` event.\n * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\n */\n Owl.prototype.pointer = function (event) {\n var result = {\n x: null,\n y: null\n };\n event = event.originalEvent || event || window.event;\n event = event.touches && event.touches.length ? event.touches[0] : event.changedTouches && event.changedTouches.length ? event.changedTouches[0] : event;\n if (event.pageX) {\n result.x = event.pageX;\n result.y = event.pageY;\n } else {\n result.x = event.clientX;\n result.y = event.clientY;\n }\n return result;\n };\n\n /**\n * Determines if the input is a Number or something that can be coerced to a Number\n * @protected\n * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\n * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\n */\n Owl.prototype.isNumeric = function (number) {\n return !isNaN(parseFloat(number));\n };\n\n /**\n * Gets the difference of two vectors.\n * @todo #261\n * @protected\n * @param {Object} - The first vector.\n * @param {Object} - The second vector.\n * @returns {Object} - The difference.\n */\n Owl.prototype.difference = function (first, second) {\n return {\n x: first.x - second.x,\n y: first.y - second.y\n };\n };\n\n /**\n * The jQuery Plugin for the Owl Carousel\n * @todo Navigation plugin `next` and `prev`\n * @public\n */\n $.fn.owlCarousel = function (option) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.each(function () {\n var $this = $(this),\n data = $this.data('owl.carousel');\n if (!data) {\n data = new Owl(this, typeof option == 'object' && option);\n $this.data('owl.carousel', data);\n $.each(['next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'], function (i, event) {\n data.register({\n type: Owl.Type.Event,\n name: event\n });\n data.$element.on(event + '.owl.carousel.core', $.proxy(function (e) {\n if (e.namespace && e.relatedTarget !== this) {\n this.suppress([event]);\n data[event].apply(this, [].slice.call(arguments, 1));\n this.release([event]);\n }\n }, data));\n });\n }\n if (typeof option == 'string' && option.charAt(0) !== '_') {\n data[option].apply(data, args);\n }\n });\n };\n\n /**\n * The constructor for the jQuery Plugin\n * @public\n */\n $.fn.owlCarousel.Constructor = Owl;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * AutoRefresh Plugin\n * @version 2.3.4\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the auto refresh plugin.\n * @class The Auto Refresh Plugin\n * @param {Owl} carousel - The Owl Carousel\n */\n var AutoRefresh = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n\n /**\n * Refresh interval.\n * @protected\n * @type {number}\n */\n this._interval = null;\n\n /**\n * Whether the element is currently visible or not.\n * @protected\n * @type {Boolean}\n */\n this._visible = null;\n\n /**\n * All event handlers.\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'initialized.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.autoRefresh) {\n this.watch();\n }\n }, this)\n };\n\n // set default options\n this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\n\n // register event handlers\n this._core.$element.on(this._handlers);\n };\n\n /**\n * Default options.\n * @public\n */\n AutoRefresh.Defaults = {\n autoRefresh: true,\n autoRefreshInterval: 500\n };\n\n /**\n * Watches the element.\n */\n AutoRefresh.prototype.watch = function () {\n if (this._interval) {\n return;\n }\n this._visible = this._core.isVisible();\n this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\n };\n\n /**\n * Refreshes the element.\n */\n AutoRefresh.prototype.refresh = function () {\n if (this._core.isVisible() === this._visible) {\n return;\n }\n this._visible = !this._visible;\n this._core.$element.toggleClass('owl-hidden', !this._visible);\n this._visible && this._core.invalidate('width') && this._core.refresh();\n };\n\n /**\n * Destroys the plugin.\n */\n AutoRefresh.prototype.destroy = function () {\n var handler, property;\n window.clearInterval(this._interval);\n for (handler in this._handlers) {\n this._core.$element.off(handler, this._handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] != 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Lazy Plugin\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the lazy plugin.\n * @class The Lazy Plugin\n * @param {Owl} carousel - The Owl Carousel\n */\n var Lazy = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n\n /**\n * Already loaded items.\n * @protected\n * @type {Array.}\n */\n this._loaded = [];\n\n /**\n * Event handlers.\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function (e) {\n if (!e.namespace) {\n return;\n }\n if (!this._core.settings || !this._core.settings.lazyLoad) {\n return;\n }\n if (e.property && e.property.name == 'position' || e.type == 'initialized') {\n var settings = this._core.settings,\n n = settings.center && Math.ceil(settings.items / 2) || settings.items,\n i = settings.center && n * -1 || 0,\n position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\n clones = this._core.clones().length,\n load = $.proxy(function (i, v) {\n this.load(v);\n }, this);\n //TODO: Need documentation for this new option\n if (settings.lazyLoadEager > 0) {\n n += settings.lazyLoadEager;\n // If the carousel is looping also preload images that are to the \"left\"\n if (settings.loop) {\n position -= settings.lazyLoadEager;\n n++;\n }\n }\n while (i++ < n) {\n this.load(clones / 2 + this._core.relative(position));\n clones && $.each(this._core.clones(this._core.relative(position)), load);\n position++;\n }\n }\n }, this)\n };\n\n // set the default options\n this._core.options = $.extend({}, Lazy.Defaults, this._core.options);\n\n // register event handler\n this._core.$element.on(this._handlers);\n };\n\n /**\n * Default options.\n * @public\n */\n Lazy.Defaults = {\n lazyLoad: false,\n lazyLoadEager: 0\n };\n\n /**\n * Loads all resources of an item at the specified position.\n * @param {Number} position - The absolute position of the item.\n * @protected\n */\n Lazy.prototype.load = function (position) {\n var $item = this._core.$stage.children().eq(position),\n $elements = $item && $item.find('.owl-lazy');\n if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\n return;\n }\n $elements.each($.proxy(function (index, element) {\n var $element = $(element),\n image,\n url = window.devicePixelRatio > 1 && $element.attr('data-src-retina') || $element.attr('data-src') || $element.attr('data-srcset');\n this._core.trigger('load', {\n element: $element,\n url: url\n }, 'lazy');\n if ($element.is('img')) {\n $element.one('load.owl.lazy', $.proxy(function () {\n $element.css('opacity', 1);\n this._core.trigger('loaded', {\n element: $element,\n url: url\n }, 'lazy');\n }, this)).attr('src', url);\n } else if ($element.is('source')) {\n $element.one('load.owl.lazy', $.proxy(function () {\n this._core.trigger('loaded', {\n element: $element,\n url: url\n }, 'lazy');\n }, this)).attr('srcset', url);\n } else {\n image = new Image();\n image.onload = $.proxy(function () {\n $element.css({\n 'background-image': 'url(\"' + url + '\")',\n 'opacity': '1'\n });\n this._core.trigger('loaded', {\n element: $element,\n url: url\n }, 'lazy');\n }, this);\n image.src = url;\n }\n }, this));\n this._loaded.push($item.get(0));\n };\n\n /**\n * Destroys the plugin.\n * @public\n */\n Lazy.prototype.destroy = function () {\n var handler, property;\n for (handler in this.handlers) {\n this._core.$element.off(handler, this.handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] != 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * AutoHeight Plugin\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the auto height plugin.\n * @class The Auto Height Plugin\n * @param {Owl} carousel - The Owl Carousel\n */\n var AutoHeight = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n this._previousHeight = null;\n\n /**\n * All event handlers.\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.autoHeight) {\n this.update();\n }\n }, this),\n 'changed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position') {\n this.update();\n }\n }, this),\n 'loaded.owl.lazy': $.proxy(function (e) {\n if (e.namespace && this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\n this.update();\n }\n }, this)\n };\n\n // set default options\n this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\n\n // register event handlers\n this._core.$element.on(this._handlers);\n this._intervalId = null;\n var refThis = this;\n\n // These changes have been taken from a PR by gavrochelegnou proposed in #1575\n // and have been made compatible with the latest jQuery version\n $(window).on('load', function () {\n if (refThis._core.settings.autoHeight) {\n refThis.update();\n }\n });\n\n // Autoresize the height of the carousel when window is resized\n // When carousel has images, the height is dependent on the width\n // and should also change on resize\n $(window).resize(function () {\n if (refThis._core.settings.autoHeight) {\n if (refThis._intervalId != null) {\n clearTimeout(refThis._intervalId);\n }\n refThis._intervalId = setTimeout(function () {\n refThis.update();\n }, 250);\n }\n });\n };\n\n /**\n * Default options.\n * @public\n */\n AutoHeight.Defaults = {\n autoHeight: false,\n autoHeightClass: 'owl-height'\n };\n\n /**\n * Updates the view.\n */\n AutoHeight.prototype.update = function () {\n var start = this._core._current,\n end = start + this._core.settings.items,\n lazyLoadEnabled = this._core.settings.lazyLoad,\n visible = this._core.$stage.children().toArray().slice(start, end),\n heights = [],\n maxheight = 0;\n $.each(visible, function (index, item) {\n heights.push($(item).height());\n });\n maxheight = Math.max.apply(null, heights);\n if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) {\n maxheight = this._previousHeight;\n }\n this._previousHeight = maxheight;\n this._core.$stage.parent().height(maxheight).addClass(this._core.settings.autoHeightClass);\n };\n AutoHeight.prototype.destroy = function () {\n var handler, property;\n for (handler in this._handlers) {\n this._core.$element.off(handler, this._handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] !== 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Video Plugin\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the video plugin.\n * @class The Video Plugin\n * @param {Owl} carousel - The Owl Carousel\n */\n var Video = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n\n /**\n * Cache all video URLs.\n * @protected\n * @type {Object}\n */\n this._videos = {};\n\n /**\n * Current playing item.\n * @protected\n * @type {jQuery}\n */\n this._playing = null;\n\n /**\n * All event handlers.\n * @todo The cloned content removale is too late\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'initialized.owl.carousel': $.proxy(function (e) {\n if (e.namespace) {\n this._core.register({\n type: 'state',\n name: 'playing',\n tags: ['interacting']\n });\n }\n }, this),\n 'resize.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.video && this.isInFullScreen()) {\n e.preventDefault();\n }\n }, this),\n 'refreshed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.is('resizing')) {\n this._core.$stage.find('.cloned .owl-video-frame').remove();\n }\n }, this),\n 'changed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && e.property.name === 'position' && this._playing) {\n this.stop();\n }\n }, this),\n 'prepared.owl.carousel': $.proxy(function (e) {\n if (!e.namespace) {\n return;\n }\n var $element = $(e.content).find('.owl-video');\n if ($element.length) {\n $element.css('display', 'none');\n this.fetch($element, $(e.content));\n }\n }, this)\n };\n\n // set default options\n this._core.options = $.extend({}, Video.Defaults, this._core.options);\n\n // register event handlers\n this._core.$element.on(this._handlers);\n this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function (e) {\n this.play(e);\n }, this));\n };\n\n /**\n * Default options.\n * @public\n */\n Video.Defaults = {\n video: false,\n videoHeight: false,\n videoWidth: false\n };\n\n /**\n * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\n * @protected\n * @param {jQuery} target - The target containing the video data.\n * @param {jQuery} item - The item containing the video.\n */\n Video.prototype.fetch = function (target, item) {\n var type = function () {\n if (target.attr('data-vimeo-id')) {\n return 'vimeo';\n } else if (target.attr('data-vzaar-id')) {\n return 'vzaar';\n } else {\n return 'youtube';\n }\n }(),\n id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\n width = target.attr('data-width') || this._core.settings.videoWidth,\n height = target.attr('data-height') || this._core.settings.videoHeight,\n url = target.attr('href');\n if (url) {\n /*\n \t\tParses the id's out of the following urls (and probably more):\n \t\thttps://www.youtube.com/watch?v=:id\n \t\thttps://youtu.be/:id\n \t\thttps://vimeo.com/:id\n \t\thttps://vimeo.com/channels/:channel/:id\n \t\thttps://vimeo.com/groups/:group/videos/:id\n \t\thttps://app.vzaar.com/videos/:id\n \t\t\tVisual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\n */\n\n id = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\n if (id[3].indexOf('youtu') > -1) {\n type = 'youtube';\n } else if (id[3].indexOf('vimeo') > -1) {\n type = 'vimeo';\n } else if (id[3].indexOf('vzaar') > -1) {\n type = 'vzaar';\n } else {\n throw new Error('Video URL not supported.');\n }\n id = id[6];\n } else {\n throw new Error('Missing video URL.');\n }\n this._videos[url] = {\n type: type,\n id: id,\n width: width,\n height: height\n };\n item.attr('data-video', url);\n this.thumbnail(target, this._videos[url]);\n };\n\n /**\n * Creates video thumbnail.\n * @protected\n * @param {jQuery} target - The target containing the video data.\n * @param {Object} info - The video info object.\n * @see `fetch`\n */\n Video.prototype.thumbnail = function (target, video) {\n var tnLink,\n icon,\n path,\n dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '',\n customTn = target.find('img'),\n srcType = 'src',\n lazyClass = '',\n settings = this._core.settings,\n create = function (path) {\n icon = '
';\n if (settings.lazyLoad) {\n tnLink = $('
', {\n \"class\": 'owl-video-tn ' + lazyClass,\n \"srcType\": path\n });\n } else {\n tnLink = $('
', {\n \"class\": \"owl-video-tn\",\n \"style\": 'opacity:1;background-image:url(' + path + ')'\n });\n }\n target.after(tnLink);\n target.after(icon);\n };\n\n // wrap video content into owl-video-wrapper div\n target.wrap($('
', {\n \"class\": \"owl-video-wrapper\",\n \"style\": dimensions\n }));\n if (this._core.settings.lazyLoad) {\n srcType = 'data-src';\n lazyClass = 'owl-lazy';\n }\n\n // custom thumbnail\n if (customTn.length) {\n create(customTn.attr(srcType));\n customTn.remove();\n return false;\n }\n if (video.type === 'youtube') {\n path = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\n create(path);\n } else if (video.type === 'vimeo') {\n $.ajax({\n type: 'GET',\n url: '//vimeo.com/api/v2/video/' + video.id + '.json',\n jsonp: 'callback',\n dataType: 'jsonp',\n success: function (data) {\n path = data[0].thumbnail_large;\n create(path);\n }\n });\n } else if (video.type === 'vzaar') {\n $.ajax({\n type: 'GET',\n url: '//vzaar.com/api/videos/' + video.id + '.json',\n jsonp: 'callback',\n dataType: 'jsonp',\n success: function (data) {\n path = data.framegrab_url;\n create(path);\n }\n });\n }\n };\n\n /**\n * Stops the current video.\n * @public\n */\n Video.prototype.stop = function () {\n this._core.trigger('stop', null, 'video');\n this._playing.find('.owl-video-frame').remove();\n this._playing.removeClass('owl-video-playing');\n this._playing = null;\n this._core.leave('playing');\n this._core.trigger('stopped', null, 'video');\n };\n\n /**\n * Starts the current video.\n * @public\n * @param {Event} event - The event arguments.\n */\n Video.prototype.play = function (event) {\n var target = $(event.target),\n item = target.closest('.' + this._core.settings.itemClass),\n video = this._videos[item.attr('data-video')],\n width = video.width || '100%',\n height = video.height || this._core.$stage.height(),\n html,\n iframe;\n if (this._playing) {\n return;\n }\n this._core.enter('playing');\n this._core.trigger('play', null, 'video');\n item = this._core.items(this._core.relative(item.index()));\n this._core.reset(item.index());\n html = $('');\n html.attr('height', height);\n html.attr('width', width);\n if (video.type === 'youtube') {\n html.attr('src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id);\n } else if (video.type === 'vimeo') {\n html.attr('src', '//player.vimeo.com/video/' + video.id + '?autoplay=1');\n } else if (video.type === 'vzaar') {\n html.attr('src', '//view.vzaar.com/' + video.id + '/player?autoplay=true');\n }\n iframe = $(html).wrap('
').insertAfter(item.find('.owl-video'));\n this._playing = item.addClass('owl-video-playing');\n };\n\n /**\n * Checks whether an video is currently in full screen mode or not.\n * @todo Bad style because looks like a readonly method but changes members.\n * @protected\n * @returns {Boolean}\n */\n Video.prototype.isInFullScreen = function () {\n var element = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n return element && $(element).parent().hasClass('owl-video-frame');\n };\n\n /**\n * Destroys the plugin.\n */\n Video.prototype.destroy = function () {\n var handler, property;\n this._core.$element.off('click.owl.video');\n for (handler in this._handlers) {\n this._core.$element.off(handler, this._handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] != 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.Video = Video;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Animate Plugin\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the animate plugin.\n * @class The Navigation Plugin\n * @param {Owl} scope - The Owl Carousel\n */\n var Animate = function (scope) {\n this.core = scope;\n this.core.options = $.extend({}, Animate.Defaults, this.core.options);\n this.swapping = true;\n this.previous = undefined;\n this.next = undefined;\n this.handlers = {\n 'change.owl.carousel': $.proxy(function (e) {\n if (e.namespace && e.property.name == 'position') {\n this.previous = this.core.current();\n this.next = e.property.value;\n }\n }, this),\n 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function (e) {\n if (e.namespace) {\n this.swapping = e.type == 'translated';\n }\n }, this),\n 'translate.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\n this.swap();\n }\n }, this)\n };\n this.core.$element.on(this.handlers);\n };\n\n /**\n * Default options.\n * @public\n */\n Animate.Defaults = {\n animateOut: false,\n animateIn: false\n };\n\n /**\n * Toggles the animation classes whenever an translations starts.\n * @protected\n * @returns {Boolean|undefined}\n */\n Animate.prototype.swap = function () {\n if (this.core.settings.items !== 1) {\n return;\n }\n if (!$.support.animation || !$.support.transition) {\n return;\n }\n this.core.speed(0);\n var left,\n clear = $.proxy(this.clear, this),\n previous = this.core.$stage.children().eq(this.previous),\n next = this.core.$stage.children().eq(this.next),\n incoming = this.core.settings.animateIn,\n outgoing = this.core.settings.animateOut;\n if (this.core.current() === this.previous) {\n return;\n }\n if (outgoing) {\n left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\n previous.one($.support.animation.end, clear).css({\n 'left': left + 'px'\n }).addClass('animated owl-animated-out').addClass(outgoing);\n }\n if (incoming) {\n next.one($.support.animation.end, clear).addClass('animated owl-animated-in').addClass(incoming);\n }\n };\n Animate.prototype.clear = function (e) {\n $(e.target).css({\n 'left': ''\n }).removeClass('animated owl-animated-out owl-animated-in').removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut);\n this.core.onTransitionEnd();\n };\n\n /**\n * Destroys the plugin.\n * @public\n */\n Animate.prototype.destroy = function () {\n var handler, property;\n for (handler in this.handlers) {\n this.core.$element.off(handler, this.handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] != 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Autoplay Plugin\n * @version 2.3.4\n * @author Bartosz Wojciechowski\n * @author Artus Kolanowski\n * @author David Deutsch\n * @author Tom De Caluwé\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n /**\n * Creates the autoplay plugin.\n * @class The Autoplay Plugin\n * @param {Owl} scope - The Owl Carousel\n */\n var Autoplay = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n\n /**\n * The autoplay timeout id.\n * @type {Number}\n */\n this._call = null;\n\n /**\n * Depending on the state of the plugin, this variable contains either\n * the start time of the timer or the current timer value if it's\n * paused. Since we start in a paused state we initialize the timer\n * value.\n * @type {Number}\n */\n this._time = 0;\n\n /**\n * Stores the timeout currently used.\n * @type {Number}\n */\n this._timeout = 0;\n\n /**\n * Indicates whenever the autoplay is paused.\n * @type {Boolean}\n */\n this._paused = true;\n\n /**\n * All event handlers.\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'changed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && e.property.name === 'settings') {\n if (this._core.settings.autoplay) {\n this.play();\n } else {\n this.stop();\n }\n } else if (e.namespace && e.property.name === 'position' && this._paused) {\n // Reset the timer. This code is triggered when the position\n // of the carousel was changed through user interaction.\n this._time = 0;\n }\n }, this),\n 'initialized.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.autoplay) {\n this.play();\n }\n }, this),\n 'play.owl.autoplay': $.proxy(function (e, t, s) {\n if (e.namespace) {\n this.play(t, s);\n }\n }, this),\n 'stop.owl.autoplay': $.proxy(function (e) {\n if (e.namespace) {\n this.stop();\n }\n }, this),\n 'mouseover.owl.autoplay': $.proxy(function () {\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n this.pause();\n }\n }, this),\n 'mouseleave.owl.autoplay': $.proxy(function () {\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n this.play();\n }\n }, this),\n 'touchstart.owl.core': $.proxy(function () {\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n this.pause();\n }\n }, this),\n 'touchend.owl.core': $.proxy(function () {\n if (this._core.settings.autoplayHoverPause) {\n this.play();\n }\n }, this)\n };\n\n // register event handlers\n this._core.$element.on(this._handlers);\n\n // set default options\n this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\n };\n\n /**\n * Default options.\n * @public\n */\n Autoplay.Defaults = {\n autoplay: false,\n autoplayTimeout: 5000,\n autoplayHoverPause: false,\n autoplaySpeed: false\n };\n\n /**\n * Transition to the next slide and set a timeout for the next transition.\n * @private\n * @param {Number} [speed] - The animation speed for the animations.\n */\n Autoplay.prototype._next = function (speed) {\n this._call = window.setTimeout($.proxy(this._next, this, speed), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read());\n if (this._core.is('interacting') || document.hidden) {\n return;\n }\n this._core.next(speed || this._core.settings.autoplaySpeed);\n };\n\n /**\n * Reads the current timer value when the timer is playing.\n * @public\n */\n Autoplay.prototype.read = function () {\n return new Date().getTime() - this._time;\n };\n\n /**\n * Starts the autoplay.\n * @public\n * @param {Number} [timeout] - The interval before the next animation starts.\n * @param {Number} [speed] - The animation speed for the animations.\n */\n Autoplay.prototype.play = function (timeout, speed) {\n var elapsed;\n if (!this._core.is('rotating')) {\n this._core.enter('rotating');\n }\n timeout = timeout || this._core.settings.autoplayTimeout;\n\n // Calculate the elapsed time since the last transition. If the carousel\n // wasn't playing this calculation will yield zero.\n elapsed = Math.min(this._time % (this._timeout || timeout), timeout);\n if (this._paused) {\n // Start the clock.\n this._time = this.read();\n this._paused = false;\n } else {\n // Clear the active timeout to allow replacement.\n window.clearTimeout(this._call);\n }\n\n // Adjust the origin of the timer to match the new timeout value.\n this._time += this.read() % timeout - elapsed;\n this._timeout = timeout;\n this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed);\n };\n\n /**\n * Stops the autoplay.\n * @public\n */\n Autoplay.prototype.stop = function () {\n if (this._core.is('rotating')) {\n // Reset the clock.\n this._time = 0;\n this._paused = true;\n window.clearTimeout(this._call);\n this._core.leave('rotating');\n }\n };\n\n /**\n * Pauses the autoplay.\n * @public\n */\n Autoplay.prototype.pause = function () {\n if (this._core.is('rotating') && !this._paused) {\n // Pause the clock.\n this._time = this.read();\n this._paused = true;\n window.clearTimeout(this._call);\n }\n };\n\n /**\n * Destroys the plugin.\n */\n Autoplay.prototype.destroy = function () {\n var handler, property;\n this.stop();\n for (handler in this._handlers) {\n this._core.$element.off(handler, this._handlers[handler]);\n }\n for (property in Object.getOwnPropertyNames(this)) {\n typeof this[property] != 'function' && (this[property] = null);\n }\n };\n $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Navigation Plugin\n * @version 2.3.4\n * @author Artus Kolanowski\n * @author David Deutsch\n * @license The MIT License (MIT)\n */\n;\n(function ($, window, document, undefined) {\n 'use strict';\n\n /**\n * Creates the navigation plugin.\n * @class The Navigation Plugin\n * @param {Owl} carousel - The Owl Carousel.\n */\n var Navigation = function (carousel) {\n /**\n * Reference to the core.\n * @protected\n * @type {Owl}\n */\n this._core = carousel;\n\n /**\n * Indicates whether the plugin is initialized or not.\n * @protected\n * @type {Boolean}\n */\n this._initialized = false;\n\n /**\n * The current paging indexes.\n * @protected\n * @type {Array}\n */\n this._pages = [];\n\n /**\n * All DOM elements of the user interface.\n * @protected\n * @type {Object}\n */\n this._controls = {};\n\n /**\n * Markup for an indicator.\n * @protected\n * @type {Array.}\n */\n this._templates = [];\n\n /**\n * The carousel element.\n * @type {jQuery}\n */\n this.$element = this._core.$element;\n\n /**\n * Overridden methods of the carousel.\n * @protected\n * @type {Object}\n */\n this._overrides = {\n next: this._core.next,\n prev: this._core.prev,\n to: this._core.to\n };\n\n /**\n * All event handlers.\n * @protected\n * @type {Object}\n */\n this._handlers = {\n 'prepared.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.dotsData) {\n this._templates.push('
' + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\n }\n }, this),\n 'added.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.dotsData) {\n this._templates.splice(e.position, 0, this._templates.pop());\n }\n }, this),\n 'remove.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._core.settings.dotsData) {\n this._templates.splice(e.position, 1);\n }\n }, this),\n 'changed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && e.property.name == 'position') {\n this.draw();\n }\n }, this),\n 'initialized.owl.carousel': $.proxy(function (e) {\n if (e.namespace && !this._initialized) {\n this._core.trigger('initialize', null, 'navigation');\n this.initialize();\n this.update();\n this.draw();\n this._initialized = true;\n this._core.trigger('initialized', null, 'navigation');\n }\n }, this),\n 'refreshed.owl.carousel': $.proxy(function (e) {\n if (e.namespace && this._initialized) {\n this._core.trigger('refresh', null, 'navigation');\n this.update();\n this.draw();\n this._core.trigger('refreshed', null, 'navigation');\n }\n }, this)\n };\n\n // set default options\n this._core.options = $.extend({}, Navigation.Defaults, this._core.options);\n\n // register event handlers\n this.$element.on(this._handlers);\n };\n\n /**\n * Default options.\n * @public\n * @todo Rename `slideBy` to `navBy`\n */\n Navigation.Defaults = {\n nav: false,\n navText: ['', ''],\n navSpeed: false,\n navElement: 'button type=\"button\" role=\"presentation\"',\n navContainer: false,\n navContainerClass: 'owl-nav',\n navClass: ['owl-prev', 'owl-next'],\n slideBy: 1,\n dotClass: 'owl-dot',\n dotsClass: 'owl-dots',\n dots: true,\n dotsEach: false,\n dotsData: false,\n dotsSpeed: false,\n dotsContainer: false\n };\n\n /**\n * Initializes the layout of the plugin and extends the carousel.\n * @protected\n */\n Navigation.prototype.initialize = function () {\n var override,\n settings = this._core.settings;\n\n // create DOM structure for relative navigation\n this._controls.$relative = (settings.navContainer ? $(settings.navContainer) : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\n this._controls.$previous = $('<' + settings.navElement + '>').addClass(settings.navClass[0]).html(settings.navText[0]).prependTo(this._controls.$relative).on('click', $.proxy(function (e) {\n this.prev(settings.navSpeed);\n }, this));\n this._controls.$next = $('<' + settings.navElement + '>').addClass(settings.navClass[1]).html(settings.navText[1]).appendTo(this._controls.$relative).on('click', $.proxy(function (e) {\n this.next(settings.navSpeed);\n }, this));\n\n // create DOM structure for absolute navigation\n if (!settings.dotsData) {\n this._templates = [$('