vendor.js.map 783.8 KB
{"version":3,"sources":["uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-weixin/dist/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js","uni-app:///node_modules/uview-ui/index.js","uni-app:///node_modules/uview-ui/libs/mixin/mixin.js","uni-app:///node_modules/uview-ui/libs/mixin/mpMixin.js","uni-app:///node_modules/uview-ui/libs/luch-request/index.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/Request.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/dispatchRequest.js","uni-app:///node_modules/uview-ui/libs/luch-request/adapters/index.js","uni-app:///node_modules/uview-ui/libs/luch-request/helpers/buildURL.js","uni-app:///node_modules/uview-ui/libs/luch-request/utils.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/buildFullPath.js","uni-app:///node_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js","uni-app:///node_modules/uview-ui/libs/luch-request/helpers/combineURLs.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/settle.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/InterceptorManager.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/mergeConfig.js","uni-app:///node_modules/uview-ui/libs/luch-request/core/defaults.js","uni-app:///node_modules/uview-ui/libs/luch-request/utils/clone.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/buffer/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/base64-js/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/ieee754/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/isarray/index.js","uni-app:///node_modules/uview-ui/libs/util/route.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@babel/runtime/regenerator/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime-module.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime.js","uni-app:///node_modules/uview-ui/libs/function/colorGradient.js","uni-app:///node_modules/uview-ui/libs/function/test.js","uni-app:///node_modules/uview-ui/libs/function/debounce.js","uni-app:///node_modules/uview-ui/libs/function/throttle.js","uni-app:///node_modules/uview-ui/libs/function/index.js","uni-app:///node_modules/uview-ui/libs/function/digit.js","uni-app:///node_modules/uview-ui/libs/config/config.js","uni-app:///node_modules/uview-ui/libs/config/props.js","uni-app:///node_modules/uview-ui/libs/config/props/actionSheet.js","uni-app:///node_modules/uview-ui/libs/config/props/album.js","uni-app:///node_modules/uview-ui/libs/config/props/alert.js","uni-app:///node_modules/uview-ui/libs/config/props/avatar.js","uni-app:///node_modules/uview-ui/libs/config/props/avatarGroup.js","uni-app:///node_modules/uview-ui/libs/config/props/backtop.js","uni-app:///node_modules/uview-ui/libs/config/props/badge.js","uni-app:///node_modules/uview-ui/libs/config/props/button.js","uni-app:///node_modules/uview-ui/libs/config/props/calendar.js","uni-app:///node_modules/uview-ui/libs/config/props/carKeyboard.js","uni-app:///node_modules/uview-ui/libs/config/props/cell.js","uni-app:///node_modules/uview-ui/libs/config/props/cellGroup.js","uni-app:///node_modules/uview-ui/libs/config/props/checkbox.js","uni-app:///node_modules/uview-ui/libs/config/props/checkboxGroup.js","uni-app:///node_modules/uview-ui/libs/config/props/circleProgress.js","uni-app:///node_modules/uview-ui/libs/config/props/code.js","uni-app:///node_modules/uview-ui/libs/config/props/codeInput.js","uni-app:///node_modules/uview-ui/libs/config/props/col.js","uni-app:///node_modules/uview-ui/libs/config/props/collapse.js","uni-app:///node_modules/uview-ui/libs/config/props/collapseItem.js","uni-app:///node_modules/uview-ui/libs/config/props/columnNotice.js","uni-app:///node_modules/uview-ui/libs/config/props/countDown.js","uni-app:///node_modules/uview-ui/libs/config/props/countTo.js","uni-app:///node_modules/uview-ui/libs/config/props/datetimePicker.js","uni-app:///node_modules/uview-ui/libs/config/props/divider.js","uni-app:///node_modules/uview-ui/libs/config/props/empty.js","uni-app:///node_modules/uview-ui/libs/config/props/form.js","uni-app:///node_modules/uview-ui/libs/config/props/formItem.js","uni-app:///node_modules/uview-ui/libs/config/props/gap.js","uni-app:///node_modules/uview-ui/libs/config/props/grid.js","uni-app:///node_modules/uview-ui/libs/config/props/gridItem.js","uni-app:///node_modules/uview-ui/libs/config/props/icon.js","uni-app:///node_modules/uview-ui/libs/config/props/image.js","uni-app:///node_modules/uview-ui/libs/config/props/indexAnchor.js","uni-app:///node_modules/uview-ui/libs/config/props/indexList.js","uni-app:///node_modules/uview-ui/libs/config/props/input.js","uni-app:///node_modules/uview-ui/libs/config/props/keyboard.js","uni-app:///node_modules/uview-ui/libs/config/props/line.js","uni-app:///node_modules/uview-ui/libs/config/props/lineProgress.js","uni-app:///node_modules/uview-ui/libs/config/props/link.js","uni-app:///node_modules/uview-ui/libs/config/props/list.js","uni-app:///node_modules/uview-ui/libs/config/props/listItem.js","uni-app:///node_modules/uview-ui/libs/config/props/loadingIcon.js","uni-app:///node_modules/uview-ui/libs/config/props/loadingPage.js","uni-app:///node_modules/uview-ui/libs/config/props/loadmore.js","uni-app:///node_modules/uview-ui/libs/config/props/modal.js","uni-app:///node_modules/uview-ui/libs/config/props/navbar.js","uni-app:///node_modules/uview-ui/libs/config/color.js","uni-app:///node_modules/uview-ui/libs/config/props/noNetwork.js","uni-app:///node_modules/uview-ui/libs/config/props/noticeBar.js","uni-app:///node_modules/uview-ui/libs/config/props/notify.js","uni-app:///node_modules/uview-ui/libs/config/props/numberBox.js","uni-app:///node_modules/uview-ui/libs/config/props/numberKeyboard.js","uni-app:///node_modules/uview-ui/libs/config/props/overlay.js","uni-app:///node_modules/uview-ui/libs/config/props/parse.js","uni-app:///node_modules/uview-ui/libs/config/props/picker.js","uni-app:///node_modules/uview-ui/libs/config/props/popup.js","uni-app:///node_modules/uview-ui/libs/config/props/radio.js","uni-app:///node_modules/uview-ui/libs/config/props/radioGroup.js","uni-app:///node_modules/uview-ui/libs/config/props/rate.js","uni-app:///node_modules/uview-ui/libs/config/props/readMore.js","uni-app:///node_modules/uview-ui/libs/config/props/row.js","uni-app:///node_modules/uview-ui/libs/config/props/rowNotice.js","uni-app:///node_modules/uview-ui/libs/config/props/scrollList.js","uni-app:///node_modules/uview-ui/libs/config/props/search.js","uni-app:///node_modules/uview-ui/libs/config/props/section.js","uni-app:///node_modules/uview-ui/libs/config/props/skeleton.js","uni-app:///node_modules/uview-ui/libs/config/props/slider.js","uni-app:///node_modules/uview-ui/libs/config/props/statusBar.js","uni-app:///node_modules/uview-ui/libs/config/props/steps.js","uni-app:///node_modules/uview-ui/libs/config/props/stepsItem.js","uni-app:///node_modules/uview-ui/libs/config/props/sticky.js","uni-app:///node_modules/uview-ui/libs/config/props/subsection.js","uni-app:///node_modules/uview-ui/libs/config/props/swipeAction.js","uni-app:///node_modules/uview-ui/libs/config/props/swipeActionItem.js","uni-app:///node_modules/uview-ui/libs/config/props/swiper.js","uni-app:///node_modules/uview-ui/libs/config/props/swipterIndicator.js","uni-app:///node_modules/uview-ui/libs/config/props/switch.js","uni-app:///node_modules/uview-ui/libs/config/props/tabbar.js","uni-app:///node_modules/uview-ui/libs/config/props/tabbarItem.js","uni-app:///node_modules/uview-ui/libs/config/props/tabs.js","uni-app:///node_modules/uview-ui/libs/config/props/tag.js","uni-app:///node_modules/uview-ui/libs/config/props/text.js","uni-app:///node_modules/uview-ui/libs/config/props/textarea.js","uni-app:///node_modules/uview-ui/libs/config/props/toast.js","uni-app:///node_modules/uview-ui/libs/config/props/toolbar.js","uni-app:///node_modules/uview-ui/libs/config/props/tooltip.js","uni-app:///node_modules/uview-ui/libs/config/props/transition.js","uni-app:///node_modules/uview-ui/libs/config/props/upload.js","uni-app:///node_modules/uview-ui/libs/config/zIndex.js","uni-app:///node_modules/uview-ui/libs/function/platform.js","uni-app:///node_modules/uview-ui/components/u-navbar/props.js","uni-app:///node_modules/uview-ui/components/u-swiper/props.js","uni-app:///node_modules/uview-ui/components/u-status-bar/props.js","uni-app:///node_modules/uview-ui/components/u-icon/icons.js","uni-app:///node_modules/uview-ui/components/u-icon/props.js","uni-app:///node_modules/uview-ui/components/u-loading-icon/props.js","uni-app:///node_modules/uview-ui/components/u-swiper-indicator/props.js"],"names":["realAtob","b64","b64re","b64DecodeUnicode","str","decodeURIComponent","split","map","c","charCodeAt","toString","slice","join","getCurrentUserInfo","userInfo","token","wx","getStorageSync","tokenArr","length","uid","role","permission","tokenExpired","JSON","parse","error","Error","message","exp","iat","uniIdMixin","Vue","prototype","uniIDHasRole","roleId","indexOf","uniIDHasPermission","permissionId","this","uniIDTokenValid","Date","now","atob","String","replace","test","bitmap","r1","r2","result","i","charAt","fromCharCode","_toString","Object","hasOwnProperty","isFn","fn","isStr","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","hit","camelizeRE","camelize","_","toUpperCase","sortObject","sortObj","keys","sort","forEach","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","reject","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","isSyncApi","isCallbackApi","handlePromise","catch","err","shouldPromise","promisify","success","fail","complete","assign","finally","constructor","value","reason","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","Math","floor","locale","LOCALE_ZH_HANS","LOCALE_ZH_HANT","LOCALE_EN","LOCALE_FR","LOCALE_ES","messages","initI18nMessages","isEnableLocale","localeKeys","__uniConfig","locales","curMessages","userMessages","normalizeLocale","language","i18n","initVueI18n","t","mixin","beforeCreate","unwatch","watchLocale","$forceUpdate","$once","methods","$$t","values","setLocale","getLocale","initAppLocale","appVm","state","observable","localeWatchers","$watchLocale","defineProperty","get","set","v","watch","include","parts","find","part","startsWith","trim","toLowerCase","lang","getLocale$1","app","getApp","allowDefault","$vm","$locale","setLocale$1","oldLocale","onLocaleChangeCallbacks","onLocaleChange","global","interceptors","baseApi","freeze","__proto__","findExistsPageIndex","url","pages","getCurrentPages","len","page","$page","fullPath","deviceId","redirectTo","fromArgs","exists","delta","args","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","filter","item","indicator","loop","UUID_KEY","useDeviceId","random","setStorage","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","screenHeight","populateParameters","brand","model","system","theme","version","fontSizeSetting","SDKVersion","deviceOrientation","osName","osVersion","hostVersion","deviceType","getGetDeviceType","deviceBrand","getDeviceBrand","_hostName","getHostName","_deviceOrientation","_devicePixelRatio","_SDKVersion","hostLanguage","parameters","appId","process","appName","appVersion","appVersionCode","appLanguage","getAppLanguage","uniCompileVersion","uniRuntimeVersion","uniPlatform","deviceModel","devicePixelRatio","toLocaleLowerCase","hostTheme","hostName","hostSDKVersion","hostFontSizeSetting","windowTop","windowBottom","osLanguage","undefined","osTheme","ua","hostPackageName","browserName","browserVersion","deviceTypeMaps","ipad","windows","mac","deviceTypeMapsKeys","_model","_m","defaultLanguage","_platform","environment","host","env","getSystemInfo","showActionSheet","alertText","title","getAppBaseInfo","getDeviceInfo","getWindowInfo","getAppAuthorizeSetting","locationReducedAccuracy","locationAccuracy","protocols","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","arg1","arg2","apply","todoApis","TODOS","createTodoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","ctx","$on","arguments","$off","$emit","cid","cidErrMsg","enabled","eventApi","tryCatch","e","getApiCallbacks","apiCallbacks","param","normalizePushMessage","invokePushCallback","type","invokeGetPushCidCallbacks","onPushMessageCallbacks","stopped","getPushCidCallbacks","getPushClientId","hasSuccess","hasFail","hasComplete","onPushMessage","offPushMessage","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","oldTriggerEvent","triggerEvent","newTriggerEvent","event","dataset","comType","newEvent","_triggerEvent","initHook","isComponent","oldHook","__$wrappered","after","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","initHooks","mpOptions","__call_hook","initUnknownHooks","excludes","findHooks","initHook$1","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","_$vueId","_$vuePid","initData","context","VUE_APP_DEBUG","stringify","__lifecycle_hooks__","PROP_TYPES","Boolean","createObserver","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","virtualHost","virtualHostStyle","virtualHostClass","scopedSlotsCompiler","observer","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","vFor","propPath","valuePath","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","__args__","extraObj","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","generic","$scope","handleEvent","eventOpts","eventOpt","eventsArray","isOnce","eventArray","handlerCtx","handler","path","route","is","once","eventChannels","eventChannelStack","getEventChannel","id","eventChannel","shift","initEventChannel","getOpenerEventChannel","callHook","__id__","__eventChannel__","initScopedSlotsParams","center","parents","$hasScopedSlotsParams","has","$getScopedSlotsParams","object","$setScopedSlotsParams","propsData","destroyed","parseBaseApp","initRefs","store","$store","mpHost","$i18n","_i18n","appOptions","onLaunch","canIUse","globalData","_isMounted","findVmByVueId","vuePid","parentVm","$children","childVm","Behavior","isPage","initRelation","selectAllComponents","selector","$refs","components","component","ref","vueGeneric","scopedComponent","forComponents","handleLink","parent","parseApp","createApp","App","encodeReserveRE","encodeReserveReplacer","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","val","val2","x","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","parsePage","createPage","createComponent","createSubpackageApp","onShow","onAppShow","onHide","onAppHide","getLaunchOptionsSync","createPlugin","todoApi","canIUseApi","apiName","uni","Proxy","uni$1","g","Function","window","module","exports","isObject","defaultDelimiters","BaseFormatter","_caches","delimiters","tokens","compile","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","format","startDelimiter","endDelimiter","position","text","char","sub","isClosed","compiled","mode","defaultFormatter","I18n","fallbackLocale","watcher","formater","watchers","override","interpolate","watchAppLocale","newLocale","$watch","getDefaultLocale","isWatchedAppLocale","f","add","isString","hasI18nJson","jsonObj","walkJsonObj","isI18nStr","parseI18nJson","compileStr","compileI18nJsonStr","jsonStr","localeValues","unshift","compileJsonObj","compileValue","valueLocales","localValue","walk","resolveLocale","resolveLocaleChain","chain","pop","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","toRawType","isRegExp","isValidArrayIndex","n","parseFloat","isFinite","toNumber","makeMap","expectsLowerCase","list","isBuiltInTag","isReservedAttribute","remove","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","a","l","_length","nativeBind","bind","toArray","start","to","_from","toObject","b","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","enumerable","writable","configurable","bailRE","RegExp","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","navigator","userAgent","isIE","isEdge","nativeWatch","match","addEventListener","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Symbol","Reflect","ownKeys","Set","clear","tip","generateComponentTrace","formatComponentName","hasConsole","classifyRE","classify","msg","trace","includeFile","$root","_isVue","_componentTag","repeat","tree","currentRecursiveSequence","last","Dep","subs","pushTarget","SharedObject","targetStack","popTarget","addSub","removeSub","depend","addDep","notify","update","VNode","tag","children","elm","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","original","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","copyAugment","protoAugment","src","observe","asRootData","isExtensible","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","getter","setter","childOb","dependArray","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","instanceData","defaultData","mergeAssets","assertObjectType","el","defaultStrat","key$1","inject","computed","provide","checkComponents","validateComponentName","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","prop","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","assertProp","_props","getType","required","valid","expectedTypes","assertedType","assertType","expectedType","validator","getInvalidTypeMessage","simpleCheckRE","isSameType","receivedType","expectedValue","styleValue","receivedValue","isExplicable","isBoolean","explicitTypes","some","elem","handleError","info","cur","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","initProxy","callbacks","pending","flushCallbacks","copies","p","setTimeout","MutationObserver","setImmediate","counter","textNode","document","createTextNode","characterData","nextTick","cb","_resolve","allowedGlobals","warnNonPresent","warnReservedPrefix","hasProxy","isBuiltInModifier","hasHandler","isAllowed","$data","getHandler","handlers","render","_withStripped","_renderProxy","mark","measure","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","perf","clearMarks","clearMeasures","startTag","endTag","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","extractPropertiesFromVNodeData","attrs","altKey","checkProp","extractPropsFromVNodeData","keyInLowerCase","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","source","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","iterator","next","done","renderSlot","fallback","bindObject","nodes","scopedSlotFn","_i","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","staticRenderFns","markStatic","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","d","createElement","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","clone","devtoolsMeta","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","insert","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","hooksToMerge","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","functional","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","merged","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","$vnode","pre","applyNS","registerDeepBindings","force","style","class","initRender","_vnode","parentVnode","_renderChildren","parentData","isUpdatingChildComponent","_parentListeners","currentRenderingInstance","renderMixin","$nextTick","_render","renderError","ensureCtor","comp","base","__esModule","toStringTag","factory","errorComp","resolved","owner","owners","loading","loadingComp","sync","timerLoading","timerTimeout","forceRender","renderCompleted","clearTimeout","delay","timeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","_target","onceHandler","oldListeners","eventsMixin","hookRE","i$1","cbs","lowerCaseEvent","setActiveInstance","prevActiveInstance","initLifecycle","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","_data","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","_$updateProperties","isInInactiveTree","direct","j","MAX_UPDATE_COUNT","activatedChildren","circular","waiting","flushing","resetSchedulerState","getNow","createEvent","timeStamp","flushSchedulerQueue","before","run","user","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","emit","queueWatcher","uid$2","Watcher","expOrFn","isRenderWatcher","deep","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","tmp","oldValue","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initComputed","initWatch","propsOptions","isRoot","_getFormData","__next_tick_pending","getData","computedWatcherOptions","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_init","_uid","initInternalComponent","_self","_$fallback","_name","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","modified","latest","sealed","sealedOptions","initUse","use","plugin","installedPlugins","_installedPlugins","install","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","exclude","created","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","util","defineReactive","delete","ssrContext","ARRAYTYPE","OBJECTTYPE","diff","syncKeys","_diff","rootCurrentType","rootPreType","currentValue","setResult","preValue","currentType","preType","subKey","k","flushCallbacks$1","__next_tick_callbacks","log","hasRenderWatcher","nextTick$1","mpInstance$1","cloneWithData","dataKeys","reduce","compositionApiState","__composition_api_state__","__secret_vfa_state__","rawBindings","patch","__webviewId__","mpData","diffData","$shouldDiffData","createEmptyRender","mountComponent$1","template","updateComponent","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleBinding","bindingStyle","MP_METHODS","getTarget","internalMixin","onError","oldEmit","my","createSelectorQuery","createIntersectionObserver","__init_provide","__init_injections","__set_model","modifiers","__set_sync","__get_orig","__get_class","__get_style","dynamicStyle","staticStyle","dynamicStyleObj","styleObj","__map","iteratee","LIFECYCLE_HOOKS$1","lifecycleMixin$1","oldExtend","strategies","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","renderjs","__module","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","h","pleaseSetTranspileDependencies","$u","date","timeFormat","colorGradient","hexToRgb","rgbToHex","colorToRgba","http","Request","zIndex","debounce","throttle","mpMixin","color","timestamp","timeFrom","customStyle","customClass","linkType","getRect","$uGetRect","deepMerge","bem","fixed","change","prefix","classes","openPage","urlKey","all","in","boundingClientRect","rect","exec","getParentData","parentName","preventEvent","onReachBottom","beforeDestroy","array","childrenList","defaults","request","InterceptorManager","response","dispatchRequest","fulfilled","rejected","middleware","mergeKeys","config2","isUndefined","requestTask","baseURL","_config","header","otherConfig","filePath","optionalKeys","uploadFile","downloadFile","getTask","buildURL","serializedParams","utils","isURLSearchParams","isDate","toISOString","hashmarkIndex","URLSearchParams","assignValue","buildFullPath","requestedURL","isAbsoluteURL","combineURLs","relativeURL","settle","validateStatus","status","statusCode","eject","globalsConfig","custom","defaultToConfig2Keys","uploadKeys","defaultsKeys","dataType","responseType","_instanceof","nativeMap","nativeSet","nativePromise","Map","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","proto","__isArray","__isRegExp","__getRegExpFlags","__isDate","isBuffer","copy","getPrototypeOf","keyChild","valueChild","entryChild","objProperty","TypeError","ReferenceError","getOwnPropertySymbols","symbols","descriptor","allPropertyNames","propertyName","Infinity","__objToStr","o","re","flags","ignoreCase","multiline","clonePrototype","base64","ieee754","typedArraySupport","Uint8Array","foo","subarray","byteLength","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","fill","encoding","checked","string","isEncoding","write","fromArrayLike","byteOffset","buffer","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","min","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","y","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","toByteArray","dst","lookup","revLookup","Arr","getLens","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","maxChunkLength","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","NaN","rt","abs","LN2","Router","animationType","animationDuration","intercept","addRootPath","queryParams","mergeConfig","mixinParam","deepClone","routeIntercept","isNext","navigateTo","switchTab","reLaunch","navigateBack","require","self","hadRuntime","regeneratorRuntime","oldRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","iter","reverse","Context","reset","skipTempReset","prev","sent","_sent","delegate","tryEntries","resetTryEntry","stop","rootEntry","rootRecord","completion","rval","dispatchException","exception","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","makeInvokeMethod","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","return","pushTryEntry","locs","iteratorMethod","startColor","endColor","step","startRGB","startR","startG","startB","endRGB","endR","endG","endB","sR","sG","sB","colorArr","hex","round","sColor","reg","sColorNew","sColorChange","rgb","_this","aColor","strHex","aNum","numHex","alpha","email","mobile","dateISO","digits","idCard","carNo","xreg","creg","amount","chinese","letter","enOrNum","contains","range","rangeLength","landline","empty","jsonString","func","image","newValue","IMAGE_REGEXP","video","VIDEO_REGEXP","regExp","isEmpty","wait","callNow","flag","getPx","unit","sleep","os","sys","gab","guid","firstU","radix","chars","uuid","r","addStyle","styleArray","addUnit","randomArray","dateTime","formatStr","timeSource","getFullYear","getMonth","padStart","getDate","getHours","getMinutes","getSeconds","beginIndex","timer","tips","isPrefix","arrayFormat","_result","_value","commaStr","toast","duration","showToast","icon","type2icon","iconName","priceFormat","decimals","decimalPoint","thousandsSeparator","prec","sep","dec","getDuration","valueNum","padZero","formValidate","instance","formItem","form","validateField","getProperty","firstObj","setProperty","inFn","_obj","setConfig","maxLength","fillString","fillLength","times","ceil","_boundaryCheckingState","strip","precision","toPrecision","digitLength","eSplit","float2Fixed","dLen","checkBoundary","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","iteratorOperation","operation","num1","num2","others","nums","num1Changed","num2Changed","baseNum","leftValue","plus","minus","divide","ratio","enableBoundaryChecking","actionSheet","album","alert","avatar","avatarGroup","backtop","badge","button","calendar","carKeyboard","cell","cellGroup","checkbox","checkboxGroup","circleProgress","codeInput","col","collapse","collapseItem","columnNotice","countDown","countTo","datetimePicker","divider","gap","grid","gridItem","indexAnchor","indexList","input","keyboard","line","lineProgress","link","listItem","loadingIcon","loadingPage","loadmore","modal","navbar","noNetwork","noticeBar","numberBox","numberKeyboard","overlay","picker","popup","radio","radioGroup","rate","readMore","row","rowNotice","scrollList","search","section","skeleton","slider","statusBar","steps","stepsItem","sticky","subsection","swipeAction","swipeActionItem","swiper","swipterIndicator","_switch","tabbar","tabbarItem","tabs","textarea","toolbar","tooltip","transition","upload","description","actions","cancelText","closeOnClickAction","safeAreaInsetBottom","openType","closeOnClickOverlay","keyName","singleSize","multipleSize","space","singleMode","multipleMode","maxCount","previewFullImage","rowCount","showMore","closable","showIcon","effect","fontSize","shape","bgColor","mpAvatar","randomBgColor","defaultUrl","colorIndex","extraValue","scrollTop","iconStyle","isDot","showZero","numberType","inverted","absolute","hairline","plain","disabled","loadingText","loadingMode","loadingSize","formType","appParameter","hoverStopPropagation","sessionFrom","sendMessageTitle","sendMessagePath","sendMessageImg","showMessageCard","dataName","throttleTime","hoverStartTime","hoverStayTime","iconColor","showTitle","showSubtitle","startText","endText","customList","minDate","maxDate","defaultDate","rowHeight","formatter","showLunar","showMark","confirmText","confirmDisabledText","readonly","showConfirm","maxRange","rangePrompt","showRangePrompt","allowSameDay","monthNum","label","border","clickable","isLink","arrowDirection","rightIconStyle","rightIcon","titleStyle","activeColor","inactiveColor","iconSize","labelSize","labelColor","labelDisabled","placement","iconPlacement","borderBottom","percentage","seconds","changeText","keepRunning","uniqueKey","maxlength","dot","focus","bold","disabledKeyboard","borderColor","disabledDot","span","justify","align","textAlign","accordion","speed","disableTouch","time","autoStart","millisecond","startVal","endVal","autoplay","useEasing","decimal","separator","showToolbar","minHour","maxHour","minMinute","maxMinute","itemHeight","cancelColor","confirmColor","visibleItemCount","defaultIndex","dashed","textPosition","textSize","textColor","lineColor","width","height","marginTop","rules","errorType","labelPosition","labelWidth","labelAlign","labelStyle","leftIcon","leftIconStyle","marginBottom","hoverClass","customPrefix","labelPos","imgMode","radius","lazyLoad","showMenuByLongpress","errorIcon","showLoading","showError","fade","webp","customNavHeight","disabledColor","clearable","password","placeholder","placeholderClass","placeholderStyle","showWordLimit","confirmType","confirmHold","holdKeyboard","autoBlur","disableDefaultPadding","cursor","cursorSpacing","selectionStart","selectionEnd","adjustPosition","inputAlign","prefixIcon","prefixIconStyle","suffixIcon","suffixIconStyle","dotDisabled","showTips","showCancel","autoChange","direction","margin","showText","underLine","href","mpTips","showScrollbar","lowerThreshold","upperThreshold","offsetAccuracy","enableFlex","pagingEnabled","scrollable","scrollIntoView","scrollWithAnimation","enableBackToTop","preLoadScreen","anchor","vertical","timingFunction","loadingColor","loadmoreText","nomoreText","content","showConfirmButton","showCancelButton","buttonReverse","zoom","asyncClose","negativeTop","confirmButtonShape","safeAreaInsetTop","leftText","rightText","titleWidth","leftIconSize","leftIconColor","mainColor","autoBack","primary","warning","contentColor","tipsColor","lightColor","integer","disabledInput","asyncChange","inputWidth","showMinus","showPlus","decimalLength","longPress","buttonSize","disableMinus","disablePlus","opacity","copyLink","errorImg","loadingImg","pauseVideo","previewImg","setTitle","showImgMenu","columns","singleIndex","immediateChange","closeable","overlayStyle","closeIconPos","overlayOpacity","count","gutter","minCount","allowHalf","activeIcon","inactiveIcon","touchable","showHeight","toggle","closeText","openText","textIndent","indicatorWidth","indicatorBarWidth","indicatorColor","indicatorActiveColor","indicatorStyle","clearabled","showAction","actionStyle","actionText","inputStyle","searchIconColor","searchIconSize","placeholderColor","searchIcon","animation","subTitle","subColor","showLine","arrow","animate","rows","rowsWidth","rowsHeight","titleHeight","avatarSize","avatarShape","blockSize","blockColor","showValue","blockStyle","desc","offsetTop","autoClose","threshold","indicatorInactiveColor","indicatorMode","currentItemId","interval","previousMargin","nextMargin","acceleration","displayMultipleItems","easingFunction","swiperIndicator","switch","activeValue","inactiveValue","badgeStyle","activeStyle","inactiveStyle","lineWidth","lineHeight","lineBgSize","itemStyle","closeColor","plainFill","block","lines","decoration","wordWrap","autoHeight","showConfirmBar","isTab","back","copyText","showCopy","buttons","accept","compressed","camera","maxDuration","uploadIcon","uploadIconColor","useBeforeRead","imageMode","sizeType","multiple","deletable","maxSize","MAX_VALUE","fileList","uploadText","mask","topTips","indexListSticky"],"mappings":"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cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,c,ivBAIIlsC,UADAuuB,M,kRAIGsjB,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACApT,WACAqT,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAhI,WACAkE,WACAD,WACAgE,WACAC,WACAC,WACAjF,WACA/C,WACAiI,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAj2C,WACAk2C,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAC,WACAtvC,WACAuvC,YACAC,YACAC,YACAviE,YACAwiE,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAC,YACAhxC,YACA9K,YACA+7C,YACAjI,YACAkI,YACAC,YACAC,YACAC,Y,mHCnLQ,CAEX3E,YAAa,CACT36C,MAAM,EACNhS,MAAO,GACPuxD,YAAa,GACbC,QAAS,iBAAM,IACfngE,MAAO,GACPogE,WAAY,GACZC,oBAAoB,EACpBC,qBAAqB,EACrBC,SAAU,GACVC,qBAAqB,EACrBvN,MAAO,I,kHCbA,CAEXsI,MAAO,CACH7xD,KAAM,iBAAM,IACZ+2D,QAAS,GACTC,WAAY,IACZC,aAAc,GACdC,MAAO,EACPC,WAAY,cACZC,aAAc,aACdC,SAAU,EACVC,kBAAkB,EAClBC,SAAU,EACVC,UAAU,I,kHCbH,CAEX1F,MAAO,CACH7sD,MAAO,GACPyD,KAAM,UACN8tD,YAAa,GACbiB,UAAU,EACVC,UAAU,EACVC,OAAQ,QACR5kD,QAAQ,EACR6kD,SAAU,K,kHCVH,CAEX7F,OAAQ,CACJnqC,IAAK,GACLiwC,MAAO,SACPzgD,KAAM,GACNqD,KAAM,cACNL,KAAM,GACN09C,QAAS,UACTxpB,MAAO,UACPspB,SAAU,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","file":"common/vendor.js","sourcesContent":["import { initVueI18n } from '@dcloudio/uni-i18n';\r\nimport Vue from 'vue';\r\n\r\nlet realAtob;\r\n\r\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\r\n\r\nif (typeof atob !== 'function') {\r\n  realAtob = function (str) {\r\n    str = String(str).replace(/[\\t\\n\\f\\r ]+/g, '');\r\n    if (!b64re.test(str)) { throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\") }\r\n\r\n    // Adding the padding if missing, for semplicity\r\n    str += '=='.slice(2 - (str.length & 3));\r\n    var bitmap; var result = ''; var r1; var r2; var i = 0;\r\n    for (; i < str.length;) {\r\n      bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |\r\n                    (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));\r\n\r\n      result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)\r\n        : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)\r\n          : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);\r\n    }\r\n    return result\r\n  };\r\n} else {\r\n  // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法\r\n  realAtob = atob;\r\n}\r\n\r\nfunction b64DecodeUnicode (str) {\r\n  return decodeURIComponent(realAtob(str).split('').map(function (c) {\r\n    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n  }).join(''))\r\n}\r\n\r\nfunction getCurrentUserInfo () {\r\n  const token = ( wx).getStorageSync('uni_id_token') || '';\r\n  const tokenArr = token.split('.');\r\n  if (!token || tokenArr.length !== 3) {\r\n    return {\r\n      uid: null,\r\n      role: [],\r\n      permission: [],\r\n      tokenExpired: 0\r\n    }\r\n  }\r\n  let userInfo;\r\n  try {\r\n    userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));\r\n  } catch (error) {\r\n    throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message)\r\n  }\r\n  userInfo.tokenExpired = userInfo.exp * 1000;\r\n  delete userInfo.exp;\r\n  delete userInfo.iat;\r\n  return userInfo\r\n}\r\n\r\nfunction uniIdMixin (Vue) {\r\n  Vue.prototype.uniIDHasRole = function (roleId) {\r\n    const {\r\n      role\r\n    } = getCurrentUserInfo();\r\n    return role.indexOf(roleId) > -1\r\n  };\r\n  Vue.prototype.uniIDHasPermission = function (permissionId) {\r\n    const {\r\n      permission\r\n    } = getCurrentUserInfo();\r\n    return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1\r\n  };\r\n  Vue.prototype.uniIDTokenValid = function () {\r\n    const {\r\n      tokenExpired\r\n    } = getCurrentUserInfo();\r\n    return tokenExpired > Date.now()\r\n  };\r\n}\r\n\r\nconst _toString = Object.prototype.toString;\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nfunction isFn (fn) {\r\n  return typeof fn === 'function'\r\n}\r\n\r\nfunction isStr (str) {\r\n  return typeof str === 'string'\r\n}\r\n\r\nfunction isPlainObject (obj) {\r\n  return _toString.call(obj) === '[object Object]'\r\n}\r\n\r\nfunction hasOwn (obj, key) {\r\n  return hasOwnProperty.call(obj, key)\r\n}\r\n\r\nfunction noop () { }\r\n\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached (fn) {\r\n  const cache = Object.create(null);\r\n  return function cachedFn (str) {\r\n    const hit = cache[str];\r\n    return hit || (cache[str] = fn(str))\r\n  }\r\n}\r\n\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nconst camelizeRE = /-(\\w)/g;\r\nconst camelize = cached((str) => {\r\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\r\n});\r\n\r\nfunction sortObject (obj) {\r\n  const sortObj = {};\r\n  if (isPlainObject(obj)) {\r\n    Object.keys(obj).sort().forEach(key => {\r\n      sortObj[key] = obj[key];\r\n    });\r\n  }\r\n  return !Object.keys(sortObj) ? obj : sortObj\r\n}\r\n\r\nconst HOOKS = [\r\n  'invoke',\r\n  'success',\r\n  'fail',\r\n  'complete',\r\n  'returnValue'\r\n];\r\n\r\nconst globalInterceptors = {};\r\nconst scopedInterceptors = {};\r\n\r\nfunction mergeHook (parentVal, childVal) {\r\n  const res = childVal\r\n    ? parentVal\r\n      ? parentVal.concat(childVal)\r\n      : Array.isArray(childVal)\r\n        ? childVal : [childVal]\r\n    : parentVal;\r\n  return res\r\n    ? dedupeHooks(res)\r\n    : res\r\n}\r\n\r\nfunction dedupeHooks (hooks) {\r\n  const res = [];\r\n  for (let i = 0; i < hooks.length; i++) {\r\n    if (res.indexOf(hooks[i]) === -1) {\r\n      res.push(hooks[i]);\r\n    }\r\n  }\r\n  return res\r\n}\r\n\r\nfunction removeHook (hooks, hook) {\r\n  const index = hooks.indexOf(hook);\r\n  if (index !== -1) {\r\n    hooks.splice(index, 1);\r\n  }\r\n}\r\n\r\nfunction mergeInterceptorHook (interceptor, option) {\r\n  Object.keys(option).forEach(hook => {\r\n    if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n      interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\r\n    }\r\n  });\r\n}\r\n\r\nfunction removeInterceptorHook (interceptor, option) {\r\n  if (!interceptor || !option) {\r\n    return\r\n  }\r\n  Object.keys(option).forEach(hook => {\r\n    if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n      removeHook(interceptor[hook], option[hook]);\r\n    }\r\n  });\r\n}\r\n\r\nfunction addInterceptor (method, option) {\r\n  if (typeof method === 'string' && isPlainObject(option)) {\r\n    mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\r\n  } else if (isPlainObject(method)) {\r\n    mergeInterceptorHook(globalInterceptors, method);\r\n  }\r\n}\r\n\r\nfunction removeInterceptor (method, option) {\r\n  if (typeof method === 'string') {\r\n    if (isPlainObject(option)) {\r\n      removeInterceptorHook(scopedInterceptors[method], option);\r\n    } else {\r\n      delete scopedInterceptors[method];\r\n    }\r\n  } else if (isPlainObject(method)) {\r\n    removeInterceptorHook(globalInterceptors, method);\r\n  }\r\n}\r\n\r\nfunction wrapperHook (hook) {\r\n  return function (data) {\r\n    return hook(data) || data\r\n  }\r\n}\r\n\r\nfunction isPromise (obj) {\r\n  return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\r\n}\r\n\r\nfunction queue (hooks, data) {\r\n  let promise = false;\r\n  for (let i = 0; i < hooks.length; i++) {\r\n    const hook = hooks[i];\r\n    if (promise) {\r\n      promise = Promise.resolve(wrapperHook(hook));\r\n    } else {\r\n      const res = hook(data);\r\n      if (isPromise(res)) {\r\n        promise = Promise.resolve(res);\r\n      }\r\n      if (res === false) {\r\n        return {\r\n          then () { }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  return promise || {\r\n    then (callback) {\r\n      return callback(data)\r\n    }\r\n  }\r\n}\r\n\r\nfunction wrapperOptions (interceptor, options = {}) {\r\n  ['success', 'fail', 'complete'].forEach(name => {\r\n    if (Array.isArray(interceptor[name])) {\r\n      const oldCallback = options[name];\r\n      options[name] = function callbackInterceptor (res) {\r\n        queue(interceptor[name], res).then((res) => {\r\n          /* eslint-disable no-mixed-operators */\r\n          return isFn(oldCallback) && oldCallback(res) || res\r\n        });\r\n      };\r\n    }\r\n  });\r\n  return options\r\n}\r\n\r\nfunction wrapperReturnValue (method, returnValue) {\r\n  const returnValueHooks = [];\r\n  if (Array.isArray(globalInterceptors.returnValue)) {\r\n    returnValueHooks.push(...globalInterceptors.returnValue);\r\n  }\r\n  const interceptor = scopedInterceptors[method];\r\n  if (interceptor && Array.isArray(interceptor.returnValue)) {\r\n    returnValueHooks.push(...interceptor.returnValue);\r\n  }\r\n  returnValueHooks.forEach(hook => {\r\n    returnValue = hook(returnValue) || returnValue;\r\n  });\r\n  return returnValue\r\n}\r\n\r\nfunction getApiInterceptorHooks (method) {\r\n  const interceptor = Object.create(null);\r\n  Object.keys(globalInterceptors).forEach(hook => {\r\n    if (hook !== 'returnValue') {\r\n      interceptor[hook] = globalInterceptors[hook].slice();\r\n    }\r\n  });\r\n  const scopedInterceptor = scopedInterceptors[method];\r\n  if (scopedInterceptor) {\r\n    Object.keys(scopedInterceptor).forEach(hook => {\r\n      if (hook !== 'returnValue') {\r\n        interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\r\n      }\r\n    });\r\n  }\r\n  return interceptor\r\n}\r\n\r\nfunction invokeApi (method, api, options, ...params) {\r\n  const interceptor = getApiInterceptorHooks(method);\r\n  if (interceptor && Object.keys(interceptor).length) {\r\n    if (Array.isArray(interceptor.invoke)) {\r\n      const res = queue(interceptor.invoke, options);\r\n      return res.then((options) => {\r\n        return api(wrapperOptions(interceptor, options), ...params)\r\n      })\r\n    } else {\r\n      return api(wrapperOptions(interceptor, options), ...params)\r\n    }\r\n  }\r\n  return api(options, ...params)\r\n}\r\n\r\nconst promiseInterceptor = {\r\n  returnValue (res) {\r\n    if (!isPromise(res)) {\r\n      return res\r\n    }\r\n    return new Promise((resolve, reject) => {\r\n      res.then(res => {\r\n        if (res[0]) {\r\n          reject(res[0]);\r\n        } else {\r\n          resolve(res[1]);\r\n        }\r\n      });\r\n    })\r\n  }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n  /^\\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting/;\r\n\r\nconst CONTEXT_API_RE = /^create|Manager$/;\r\n\r\n// Context例外情况\r\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\r\n\r\n// 同步例外情况\r\nconst ASYNC_API = ['createBLEConnection', 'createPushMessage'];\r\n\r\nconst CALLBACK_API_RE = /^on|^off/;\r\n\r\nfunction isContextApi (name) {\r\n  return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\r\n}\r\nfunction isSyncApi (name) {\r\n  return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\r\n}\r\n\r\nfunction isCallbackApi (name) {\r\n  return CALLBACK_API_RE.test(name) && name !== 'onPush'\r\n}\r\n\r\nfunction handlePromise (promise) {\r\n  return promise.then(data => {\r\n    return [null, data]\r\n  })\r\n    .catch(err => [err])\r\n}\r\n\r\nfunction shouldPromise (name) {\r\n  if (\r\n    isContextApi(name) ||\r\n    isSyncApi(name) ||\r\n    isCallbackApi(name)\r\n  ) {\r\n    return false\r\n  }\r\n  return true\r\n}\r\n\r\n/* eslint-disable no-extend-native */\r\nif (!Promise.prototype.finally) {\r\n  Promise.prototype.finally = function (callback) {\r\n    const promise = this.constructor;\r\n    return this.then(\r\n      value => promise.resolve(callback()).then(() => value),\r\n      reason => promise.resolve(callback()).then(() => {\r\n        throw reason\r\n      })\r\n    )\r\n  };\r\n}\r\n\r\nfunction promisify (name, api) {\r\n  if (!shouldPromise(name)) {\r\n    return api\r\n  }\r\n  return function promiseApi (options = {}, ...params) {\r\n    if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\r\n      return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\r\n    }\r\n    return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\r\n      invokeApi(name, api, Object.assign({}, options, {\r\n        success: resolve,\r\n        fail: reject\r\n      }), ...params);\r\n    })))\r\n  }\r\n}\r\n\r\nconst EPS = 1e-4;\r\nconst BASE_DEVICE_WIDTH = 750;\r\nlet isIOS = false;\r\nlet deviceWidth = 0;\r\nlet deviceDPR = 0;\r\n\r\nfunction checkDeviceWidth () {\r\n  const {\r\n    platform,\r\n    pixelRatio,\r\n    windowWidth\r\n  } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\r\n\r\n  deviceWidth = windowWidth;\r\n  deviceDPR = pixelRatio;\r\n  isIOS = platform === 'ios';\r\n}\r\n\r\nfunction upx2px (number, newDeviceWidth) {\r\n  if (deviceWidth === 0) {\r\n    checkDeviceWidth();\r\n  }\r\n\r\n  number = Number(number);\r\n  if (number === 0) {\r\n    return 0\r\n  }\r\n  let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\r\n  if (result < 0) {\r\n    result = -result;\r\n  }\r\n  result = Math.floor(result + EPS);\r\n  if (result === 0) {\r\n    if (deviceDPR === 1 || !isIOS) {\r\n      result = 1;\r\n    } else {\r\n      result = 0.5;\r\n    }\r\n  }\r\n  return number < 0 ? -result : result\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\n\r\nconst messages = {};\r\n\r\nlet locale;\r\n\r\n{\r\n  locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;\r\n}\r\n\r\nfunction initI18nMessages () {\r\n  if (!isEnableLocale()) {\r\n    return\r\n  }\r\n  const localeKeys = Object.keys(__uniConfig.locales);\r\n  if (localeKeys.length) {\r\n    localeKeys.forEach((locale) => {\r\n      const curMessages = messages[locale];\r\n      const userMessages = __uniConfig.locales[locale];\r\n      if (curMessages) {\r\n        Object.assign(curMessages, userMessages);\r\n      } else {\r\n        messages[locale] = userMessages;\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\ninitI18nMessages();\r\n\r\nconst i18n = initVueI18n(\r\n  locale,\r\n   {}\r\n);\r\nconst t = i18n.t;\r\nconst i18nMixin = (i18n.mixin = {\r\n  beforeCreate () {\r\n    const unwatch = i18n.i18n.watchLocale(() => {\r\n      this.$forceUpdate();\r\n    });\r\n    this.$once('hook:beforeDestroy', function () {\r\n      unwatch();\r\n    });\r\n  },\r\n  methods: {\r\n    $$t (key, values) {\r\n      return t(key, values)\r\n    }\r\n  }\r\n});\r\nconst setLocale = i18n.setLocale;\r\nconst getLocale = i18n.getLocale;\r\n\r\nfunction initAppLocale (Vue, appVm, locale) {\r\n  const state = Vue.observable({\r\n    locale: locale || i18n.getLocale()\r\n  });\r\n  const localeWatchers = [];\r\n  appVm.$watchLocale = fn => {\r\n    localeWatchers.push(fn);\r\n  };\r\n  Object.defineProperty(appVm, '$locale', {\r\n    get () {\r\n      return state.locale\r\n    },\r\n    set (v) {\r\n      state.locale = v;\r\n      localeWatchers.forEach(watch => watch(v));\r\n    }\r\n  });\r\n}\r\n\r\nfunction isEnableLocale () {\r\n  return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length\r\n}\r\n\r\nfunction include (str, parts) {\r\n  return !!parts.find((part) => str.indexOf(part) !== -1)\r\n}\r\n\r\nfunction startsWith (str, parts) {\r\n  return parts.find((part) => str.indexOf(part) === 0)\r\n}\r\n\r\nfunction normalizeLocale (locale, messages) {\r\n  if (!locale) {\r\n    return\r\n  }\r\n  locale = locale.trim().replace(/_/g, '-');\r\n  if (messages && messages[locale]) {\r\n    return locale\r\n  }\r\n  locale = locale.toLowerCase();\r\n  if (locale === 'chinese') {\r\n    // 支付宝\r\n    return LOCALE_ZH_HANS\r\n  }\r\n  if (locale.indexOf('zh') === 0) {\r\n    if (locale.indexOf('-hans') > -1) {\r\n      return LOCALE_ZH_HANS\r\n    }\r\n    if (locale.indexOf('-hant') > -1) {\r\n      return LOCALE_ZH_HANT\r\n    }\r\n    if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n      return LOCALE_ZH_HANT\r\n    }\r\n    return LOCALE_ZH_HANS\r\n  }\r\n  const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n  if (lang) {\r\n    return lang\r\n  }\r\n}\r\n// export function initI18n() {\r\n//   const localeKeys = Object.keys(__uniConfig.locales || {})\r\n//   if (localeKeys.length) {\r\n//     localeKeys.forEach((locale) =>\r\n//       i18n.add(locale, __uniConfig.locales[locale])\r\n//     )\r\n//   }\r\n// }\r\n\r\nfunction getLocale$1 () {\r\n  // 优先使用 $locale\r\n  const app = getApp({\r\n    allowDefault: true\r\n  });\r\n  if (app && app.$vm) {\r\n    return app.$vm.$locale\r\n  }\r\n  return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN\r\n}\r\n\r\nfunction setLocale$1 (locale) {\r\n  const app = getApp();\r\n  if (!app) {\r\n    return false\r\n  }\r\n  const oldLocale = app.$vm.$locale;\r\n  if (oldLocale !== locale) {\r\n    app.$vm.$locale = locale;\r\n    onLocaleChangeCallbacks.forEach((fn) => fn({\r\n      locale\r\n    }));\r\n    return true\r\n  }\r\n  return false\r\n}\r\n\r\nconst onLocaleChangeCallbacks = [];\r\nfunction onLocaleChange (fn) {\r\n  if (onLocaleChangeCallbacks.indexOf(fn) === -1) {\r\n    onLocaleChangeCallbacks.push(fn);\r\n  }\r\n}\r\n\r\nif (typeof global !== 'undefined') {\r\n  global.getLocale = getLocale$1;\r\n}\r\n\r\nconst interceptors = {\r\n  promiseInterceptor\r\n};\r\n\r\nvar baseApi = /*#__PURE__*/Object.freeze({\r\n  __proto__: null,\r\n  upx2px: upx2px,\r\n  getLocale: getLocale$1,\r\n  setLocale: setLocale$1,\r\n  onLocaleChange: onLocaleChange,\r\n  addInterceptor: addInterceptor,\r\n  removeInterceptor: removeInterceptor,\r\n  interceptors: interceptors\r\n});\r\n\r\nfunction findExistsPageIndex (url) {\r\n  const pages = getCurrentPages();\r\n  let len = pages.length;\r\n  while (len--) {\r\n    const page = pages[len];\r\n    if (page.$page && page.$page.fullPath === url) {\r\n      return len\r\n    }\r\n  }\r\n  return -1\r\n}\r\n\r\nvar redirectTo = {\r\n  name (fromArgs) {\r\n    if (fromArgs.exists === 'back' && fromArgs.delta) {\r\n      return 'navigateBack'\r\n    }\r\n    return 'redirectTo'\r\n  },\r\n  args (fromArgs) {\r\n    if (fromArgs.exists === 'back' && fromArgs.url) {\r\n      const existsPageIndex = findExistsPageIndex(fromArgs.url);\r\n      if (existsPageIndex !== -1) {\r\n        const delta = getCurrentPages().length - 1 - existsPageIndex;\r\n        if (delta > 0) {\r\n          fromArgs.delta = delta;\r\n        }\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nvar previewImage = {\r\n  args (fromArgs) {\r\n    let currentIndex = parseInt(fromArgs.current);\r\n    if (isNaN(currentIndex)) {\r\n      return\r\n    }\r\n    const urls = fromArgs.urls;\r\n    if (!Array.isArray(urls)) {\r\n      return\r\n    }\r\n    const len = urls.length;\r\n    if (!len) {\r\n      return\r\n    }\r\n    if (currentIndex < 0) {\r\n      currentIndex = 0;\r\n    } else if (currentIndex >= len) {\r\n      currentIndex = len - 1;\r\n    }\r\n    if (currentIndex > 0) {\r\n      fromArgs.current = urls[currentIndex];\r\n      fromArgs.urls = urls.filter(\r\n        (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\r\n      );\r\n    } else {\r\n      fromArgs.current = urls[0];\r\n    }\r\n    return {\r\n      indicator: false,\r\n      loop: false\r\n    }\r\n  }\r\n};\r\n\r\nconst UUID_KEY = '__DC_STAT_UUID';\r\nlet deviceId;\r\nfunction useDeviceId (result) {\r\n  deviceId = deviceId || wx.getStorageSync(UUID_KEY);\r\n  if (!deviceId) {\r\n    deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);\r\n    wx.setStorage({\r\n      key: UUID_KEY,\r\n      data: deviceId\r\n    });\r\n  }\r\n  result.deviceId = deviceId;\r\n}\r\n\r\nfunction addSafeAreaInsets (result) {\r\n  if (result.safeArea) {\r\n    const safeArea = result.safeArea;\r\n    result.safeAreaInsets = {\r\n      top: safeArea.top,\r\n      left: safeArea.left,\r\n      right: result.windowWidth - safeArea.right,\r\n      bottom: result.screenHeight - safeArea.bottom\r\n    };\r\n  }\r\n}\r\n\r\nfunction populateParameters (result) {\r\n  const {\r\n    brand = '', model = '', system = '',\r\n    language = '', theme, version,\r\n    platform, fontSizeSetting,\r\n    SDKVersion, pixelRatio, deviceOrientation\r\n  } = result;\r\n  // const isQuickApp = \"mp-weixin\".indexOf('quickapp-webview') !== -1\r\n\r\n  // osName osVersion\r\n  let osName = '';\r\n  let osVersion = '';\r\n  {\r\n    osName = system.split(' ')[0] || '';\r\n    osVersion = system.split(' ')[1] || '';\r\n  }\r\n  let hostVersion = version;\r\n\r\n  // deviceType\r\n  const deviceType = getGetDeviceType(result, model);\r\n\r\n  // deviceModel\r\n  const deviceBrand = getDeviceBrand(brand);\r\n\r\n  // hostName\r\n  const _hostName = getHostName(result);\r\n\r\n  // deviceOrientation\r\n  let _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持\r\n\r\n  // devicePixelRatio\r\n  let _devicePixelRatio = pixelRatio;\r\n\r\n  // SDKVersion\r\n  let _SDKVersion = SDKVersion;\r\n\r\n  // hostLanguage\r\n  const hostLanguage = language.replace(/_/g, '-');\r\n\r\n  // wx.getAccountInfoSync\r\n\r\n  const parameters = {\r\n    appId: process.env.UNI_APP_ID,\r\n    appName: process.env.UNI_APP_NAME,\r\n    appVersion: process.env.UNI_APP_VERSION_NAME,\r\n    appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n    appLanguage: getAppLanguage(hostLanguage),\r\n    uniCompileVersion: process.env.UNI_COMPILER_VERSION,\r\n    uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\r\n    uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\r\n    deviceBrand,\r\n    deviceModel: model,\r\n    deviceType,\r\n    devicePixelRatio: _devicePixelRatio,\r\n    deviceOrientation: _deviceOrientation,\r\n    osName: osName.toLocaleLowerCase(),\r\n    osVersion,\r\n    hostTheme: theme,\r\n    hostVersion,\r\n    hostLanguage,\r\n    hostName: _hostName,\r\n    hostSDKVersion: _SDKVersion,\r\n    hostFontSizeSetting: fontSizeSetting,\r\n    windowTop: 0,\r\n    windowBottom: 0,\r\n    // TODO\r\n    osLanguage: undefined,\r\n    osTheme: undefined,\r\n    ua: undefined,\r\n    hostPackageName: undefined,\r\n    browserName: undefined,\r\n    browserVersion: undefined\r\n  };\r\n\r\n  Object.assign(result, parameters);\r\n}\r\n\r\nfunction getGetDeviceType (result, model) {\r\n  let deviceType = result.deviceType || 'phone';\r\n  {\r\n    const deviceTypeMaps = {\r\n      ipad: 'pad',\r\n      windows: 'pc',\r\n      mac: 'pc'\r\n    };\r\n    const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);\r\n    const _model = model.toLocaleLowerCase();\r\n    for (let index = 0; index < deviceTypeMapsKeys.length; index++) {\r\n      const _m = deviceTypeMapsKeys[index];\r\n      if (_model.indexOf(_m) !== -1) {\r\n        deviceType = deviceTypeMaps[_m];\r\n        break\r\n      }\r\n    }\r\n  }\r\n  return deviceType\r\n}\r\n\r\nfunction getDeviceBrand (brand) {\r\n  let deviceBrand = brand;\r\n  if (deviceBrand) {\r\n    deviceBrand = brand.toLocaleLowerCase();\r\n  }\r\n  return deviceBrand\r\n}\r\n\r\nfunction getAppLanguage (defaultLanguage) {\r\n  return getLocale$1\r\n    ? getLocale$1()\r\n    : defaultLanguage\r\n}\r\n\r\nfunction getHostName (result) {\r\n  const _platform =  'WeChat' ;\r\n  let _hostName = result.hostName || _platform; // mp-jd\r\n  {\r\n    if (result.environment) {\r\n      _hostName = result.environment;\r\n    } else if (result.host && result.host.env) {\r\n      _hostName = result.host.env;\r\n    }\r\n  }\r\n\r\n  return _hostName\r\n}\r\n\r\nvar getSystemInfo = {\r\n  returnValue: function (result) {\r\n    useDeviceId(result);\r\n    addSafeAreaInsets(result);\r\n    populateParameters(result);\r\n  }\r\n};\r\n\r\nvar showActionSheet = {\r\n  args (fromArgs) {\r\n    if (typeof fromArgs === 'object') {\r\n      fromArgs.alertText = fromArgs.title;\r\n    }\r\n  }\r\n};\r\n\r\nvar getAppBaseInfo = {\r\n  returnValue: function (result) {\r\n    const { version, language, SDKVersion, theme } = result;\r\n\r\n    const _hostName = getHostName(result);\r\n\r\n    const hostLanguage = language.replace('_', '-');\r\n\r\n    result = sortObject(Object.assign(result, {\r\n      appId: process.env.UNI_APP_ID,\r\n      appName: process.env.UNI_APP_NAME,\r\n      appVersion: process.env.UNI_APP_VERSION_NAME,\r\n      appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n      appLanguage: getAppLanguage(hostLanguage),\r\n      hostVersion: version,\r\n      hostLanguage,\r\n      hostName: _hostName,\r\n      hostSDKVersion: SDKVersion,\r\n      hostTheme: theme\r\n    }));\r\n  }\r\n};\r\n\r\nvar getDeviceInfo = {\r\n  returnValue: function (result) {\r\n    const { brand, model } = result;\r\n    const deviceType = getGetDeviceType(result, model);\r\n    const deviceBrand = getDeviceBrand(brand);\r\n    useDeviceId(result);\r\n\r\n    result = sortObject(Object.assign(result, {\r\n      deviceType,\r\n      deviceBrand,\r\n      deviceModel: model\r\n    }));\r\n  }\r\n};\r\n\r\nvar getWindowInfo = {\r\n  returnValue: function (result) {\r\n    addSafeAreaInsets(result);\r\n\r\n    result = sortObject(Object.assign(result, {\r\n      windowTop: 0,\r\n      windowBottom: 0\r\n    }));\r\n  }\r\n};\r\n\r\nvar getAppAuthorizeSetting = {\r\n  returnValue: function (result) {\r\n    const { locationReducedAccuracy } = result;\r\n\r\n    result.locationAccuracy = 'unsupported';\r\n    if (locationReducedAccuracy === true) {\r\n      result.locationAccuracy = 'reduced';\r\n    } else if (locationReducedAccuracy === false) {\r\n      result.locationAccuracy = 'full';\r\n    }\r\n  }\r\n};\r\n\r\n// import navigateTo from 'uni-helpers/navigate-to'\r\n\r\nconst protocols = {\r\n  redirectTo,\r\n  // navigateTo,  // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP\r\n  previewImage,\r\n  getSystemInfo,\r\n  getSystemInfoSync: getSystemInfo,\r\n  showActionSheet,\r\n  getAppBaseInfo,\r\n  getDeviceInfo,\r\n  getWindowInfo,\r\n  getAppAuthorizeSetting\r\n};\r\nconst todos = [\r\n  'vibrate',\r\n  'preloadPage',\r\n  'unPreloadPage',\r\n  'loadSubPackage'\r\n];\r\nconst canIUses = [];\r\n\r\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\r\n\r\nfunction processCallback (methodName, method, returnValue) {\r\n  return function (res) {\r\n    return method(processReturnValue(methodName, res, returnValue))\r\n  }\r\n}\r\n\r\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\r\n  if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\r\n    const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\r\n    if (isFn(argsOption)) {\r\n      argsOption = argsOption(fromArgs, toArgs) || {};\r\n    }\r\n    for (const key in fromArgs) {\r\n      if (hasOwn(argsOption, key)) {\r\n        let keyOption = argsOption[key];\r\n        if (isFn(keyOption)) {\r\n          keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\r\n        }\r\n        if (!keyOption) { // 不支持的参数\r\n          console.warn(`The '${methodName}' method of platform '微信小程序' does not support option '${key}'`);\r\n        } else if (isStr(keyOption)) { // 重写参数 key\r\n          toArgs[keyOption] = fromArgs[key];\r\n        } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\r\n          toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\r\n        }\r\n      } else if (CALLBACKS.indexOf(key) !== -1) {\r\n        if (isFn(fromArgs[key])) {\r\n          toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n        }\r\n      } else {\r\n        if (!keepFromArgs) {\r\n          toArgs[key] = fromArgs[key];\r\n        }\r\n      }\r\n    }\r\n    return toArgs\r\n  } else if (isFn(fromArgs)) {\r\n    fromArgs = processCallback(methodName, fromArgs, returnValue);\r\n  }\r\n  return fromArgs\r\n}\r\n\r\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\r\n  if (isFn(protocols.returnValue)) { // 处理通用 returnValue\r\n    res = protocols.returnValue(methodName, res);\r\n  }\r\n  return processArgs(methodName, res, returnValue, {}, keepReturnValue)\r\n}\r\n\r\nfunction wrapper (methodName, method) {\r\n  if (hasOwn(protocols, methodName)) {\r\n    const protocol = protocols[methodName];\r\n    if (!protocol) { // 暂不支持的 api\r\n      return function () {\r\n        console.error(`Platform '微信小程序' does not support '${methodName}'.`);\r\n      }\r\n    }\r\n    return function (arg1, arg2) { // 目前 api 最多两个参数\r\n      let options = protocol;\r\n      if (isFn(protocol)) {\r\n        options = protocol(arg1);\r\n      }\r\n\r\n      arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\r\n\r\n      const args = [arg1];\r\n      if (typeof arg2 !== 'undefined') {\r\n        args.push(arg2);\r\n      }\r\n      if (isFn(options.name)) {\r\n        methodName = options.name(arg1);\r\n      } else if (isStr(options.name)) {\r\n        methodName = options.name;\r\n      }\r\n      const returnValue = wx[methodName].apply(wx, args);\r\n      if (isSyncApi(methodName)) { // 同步 api\r\n        return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\r\n      }\r\n      return returnValue\r\n    }\r\n  }\r\n  return method\r\n}\r\n\r\nconst todoApis = Object.create(null);\r\n\r\nconst TODOS = [\r\n  'onTabBarMidButtonTap',\r\n  'subscribePush',\r\n  'unsubscribePush',\r\n  'onPush',\r\n  'offPush',\r\n  'share'\r\n];\r\n\r\nfunction createTodoApi (name) {\r\n  return function todoApi ({\r\n    fail,\r\n    complete\r\n  }) {\r\n    const res = {\r\n      errMsg: `${name}:fail method '${name}' not supported`\r\n    };\r\n    isFn(fail) && fail(res);\r\n    isFn(complete) && complete(res);\r\n  }\r\n}\r\n\r\nTODOS.forEach(function (name) {\r\n  todoApis[name] = createTodoApi(name);\r\n});\r\n\r\nvar providers = {\r\n  oauth: ['weixin'],\r\n  share: ['weixin'],\r\n  payment: ['wxpay'],\r\n  push: ['weixin']\r\n};\r\n\r\nfunction getProvider ({\r\n  service,\r\n  success,\r\n  fail,\r\n  complete\r\n}) {\r\n  let res = false;\r\n  if (providers[service]) {\r\n    res = {\r\n      errMsg: 'getProvider:ok',\r\n      service,\r\n      provider: providers[service]\r\n    };\r\n    isFn(success) && success(res);\r\n  } else {\r\n    res = {\r\n      errMsg: 'getProvider:fail service not found'\r\n    };\r\n    isFn(fail) && fail(res);\r\n  }\r\n  isFn(complete) && complete(res);\r\n}\r\n\r\nvar extraApi = /*#__PURE__*/Object.freeze({\r\n  __proto__: null,\r\n  getProvider: getProvider\r\n});\r\n\r\nconst getEmitter = (function () {\r\n  let Emitter;\r\n  return function getUniEmitter () {\r\n    if (!Emitter) {\r\n      Emitter = new Vue();\r\n    }\r\n    return Emitter\r\n  }\r\n})();\r\n\r\nfunction apply (ctx, method, args) {\r\n  return ctx[method].apply(ctx, args)\r\n}\r\n\r\nfunction $on () {\r\n  return apply(getEmitter(), '$on', [...arguments])\r\n}\r\nfunction $off () {\r\n  return apply(getEmitter(), '$off', [...arguments])\r\n}\r\nfunction $once () {\r\n  return apply(getEmitter(), '$once', [...arguments])\r\n}\r\nfunction $emit () {\r\n  return apply(getEmitter(), '$emit', [...arguments])\r\n}\r\n\r\nvar eventApi = /*#__PURE__*/Object.freeze({\r\n  __proto__: null,\r\n  $on: $on,\r\n  $off: $off,\r\n  $once: $once,\r\n  $emit: $emit\r\n});\r\n\r\n/**\r\n * 框架内 try-catch\r\n */\r\n/**\r\n * 开发者 try-catch\r\n */\r\nfunction tryCatch (fn) {\r\n  return function () {\r\n    try {\r\n      return fn.apply(fn, arguments)\r\n    } catch (e) {\r\n      // TODO\r\n      console.error(e);\r\n    }\r\n  }\r\n}\r\n\r\nfunction getApiCallbacks (params) {\r\n  const apiCallbacks = {};\r\n  for (const name in params) {\r\n    const param = params[name];\r\n    if (isFn(param)) {\r\n      apiCallbacks[name] = tryCatch(param);\r\n      delete params[name];\r\n    }\r\n  }\r\n  return apiCallbacks\r\n}\r\n\r\nlet cid;\r\nlet cidErrMsg;\r\nlet enabled;\r\n\r\nfunction normalizePushMessage (message) {\r\n  try {\r\n    return JSON.parse(message)\r\n  } catch (e) {}\r\n  return message\r\n}\r\n\r\nfunction invokePushCallback (\r\n  args\r\n) {\r\n  if (args.type === 'enabled') {\r\n    enabled = true;\r\n  } else if (args.type === 'clientId') {\r\n    cid = args.cid;\r\n    cidErrMsg = args.errMsg;\r\n    invokeGetPushCidCallbacks(cid, args.errMsg);\r\n  } else if (args.type === 'pushMsg') {\r\n    const message = {\r\n      type: 'receive',\r\n      data: normalizePushMessage(args.message)\r\n    };\r\n    for (let i = 0; i < onPushMessageCallbacks.length; i++) {\r\n      const callback = onPushMessageCallbacks[i];\r\n      callback(message);\r\n      // 该消息已被阻止\r\n      if (message.stopped) {\r\n        break\r\n      }\r\n    }\r\n  } else if (args.type === 'click') {\r\n    onPushMessageCallbacks.forEach((callback) => {\r\n      callback({\r\n        type: 'click',\r\n        data: normalizePushMessage(args.message)\r\n      });\r\n    });\r\n  }\r\n}\r\n\r\nconst getPushCidCallbacks = [];\r\n\r\nfunction invokeGetPushCidCallbacks (cid, errMsg) {\r\n  getPushCidCallbacks.forEach((callback) => {\r\n    callback(cid, errMsg);\r\n  });\r\n  getPushCidCallbacks.length = 0;\r\n}\r\n\r\nfunction getPushClientId (args) {\r\n  if (!isPlainObject(args)) {\r\n    args = {};\r\n  }\r\n  const {\r\n    success,\r\n    fail,\r\n    complete\r\n  } = getApiCallbacks(args);\r\n  const hasSuccess = isFn(success);\r\n  const hasFail = isFn(fail);\r\n  const hasComplete = isFn(complete);\r\n\r\n  Promise.resolve().then(() => {\r\n    if (typeof enabled === 'undefined') {\r\n      enabled = false;\r\n      cid = '';\r\n      cidErrMsg = 'uniPush is not enabled';\r\n    }\r\n    getPushCidCallbacks.push((cid, errMsg) => {\r\n      let res;\r\n      if (cid) {\r\n        res = {\r\n          errMsg: 'getPushClientId:ok',\r\n          cid\r\n        };\r\n        hasSuccess && success(res);\r\n      } else {\r\n        res = {\r\n          errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')\r\n        };\r\n        hasFail && fail(res);\r\n      }\r\n      hasComplete && complete(res);\r\n    });\r\n    if (typeof cid !== 'undefined') {\r\n      invokeGetPushCidCallbacks(cid, cidErrMsg);\r\n    }\r\n  });\r\n}\r\n\r\nconst onPushMessageCallbacks = [];\r\n// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现\r\nconst onPushMessage = (fn) => {\r\n  if (onPushMessageCallbacks.indexOf(fn) === -1) {\r\n    onPushMessageCallbacks.push(fn);\r\n  }\r\n};\r\n\r\nconst offPushMessage = (fn) => {\r\n  if (!fn) {\r\n    onPushMessageCallbacks.length = 0;\r\n  } else {\r\n    const index = onPushMessageCallbacks.indexOf(fn);\r\n    if (index > -1) {\r\n      onPushMessageCallbacks.splice(index, 1);\r\n    }\r\n  }\r\n};\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n  __proto__: null,\r\n  getPushClientId: getPushClientId,\r\n  onPushMessage: onPushMessage,\r\n  offPushMessage: offPushMessage,\r\n  invokePushCallback: invokePushCallback\r\n});\r\n\r\nconst MPPage = Page;\r\nconst MPComponent = Component;\r\n\r\nconst customizeRE = /:/g;\r\n\r\nconst customize = cached((str) => {\r\n  return camelize(str.replace(customizeRE, '-'))\r\n});\r\n\r\nfunction initTriggerEvent (mpInstance) {\r\n  const oldTriggerEvent = mpInstance.triggerEvent;\r\n  const newTriggerEvent = function (event, ...args) {\r\n    // 事件名统一转驼峰格式,仅处理:当前组件为 vue 组件、当前组件为 vue 组件子组件\r\n    if (this.$vm || (this.dataset && this.dataset.comType)) {\r\n      event = customize(event);\r\n    } else {\r\n      // 针对微信/QQ小程序单独补充驼峰格式事件,以兼容历史项目\r\n      const newEvent = customize(event);\r\n      if (newEvent !== event) {\r\n        oldTriggerEvent.apply(this, [newEvent, ...args]);\r\n      }\r\n    }\r\n    return oldTriggerEvent.apply(this, [event, ...args])\r\n  };\r\n  try {\r\n    // 京东小程序 triggerEvent 为只读\r\n    mpInstance.triggerEvent = newTriggerEvent;\r\n  } catch (error) {\r\n    mpInstance._triggerEvent = newTriggerEvent;\r\n  }\r\n}\r\n\r\nfunction initHook (name, options, isComponent) {\r\n  const oldHook = options[name];\r\n  if (!oldHook) {\r\n    options[name] = function () {\r\n      initTriggerEvent(this);\r\n    };\r\n  } else {\r\n    options[name] = function (...args) {\r\n      initTriggerEvent(this);\r\n      return oldHook.apply(this, args)\r\n    };\r\n  }\r\n}\r\nif (!MPPage.__$wrappered) {\r\n  MPPage.__$wrappered = true;\r\n  Page = function (options = {}) {\r\n    initHook('onLoad', options);\r\n    return MPPage(options)\r\n  };\r\n  Page.after = MPPage.after;\r\n\r\n  Component = function (options = {}) {\r\n    initHook('created', options);\r\n    return MPComponent(options)\r\n  };\r\n}\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n  'onPullDownRefresh',\r\n  'onReachBottom',\r\n  'onAddToFavorites',\r\n  'onShareTimeline',\r\n  'onShareAppMessage',\r\n  'onPageScroll',\r\n  'onResize',\r\n  'onTabItemTap'\r\n];\r\n\r\nfunction initMocks (vm, mocks) {\r\n  const mpInstance = vm.$mp[vm.mpType];\r\n  mocks.forEach(mock => {\r\n    if (hasOwn(mpInstance, mock)) {\r\n      vm[mock] = mpInstance[mock];\r\n    }\r\n  });\r\n}\r\n\r\nfunction hasHook (hook, vueOptions) {\r\n  if (!vueOptions) {\r\n    return true\r\n  }\r\n\r\n  if (Vue.options && Array.isArray(Vue.options[hook])) {\r\n    return true\r\n  }\r\n\r\n  vueOptions = vueOptions.default || vueOptions;\r\n\r\n  if (isFn(vueOptions)) {\r\n    if (isFn(vueOptions.extendOptions[hook])) {\r\n      return true\r\n    }\r\n    if (vueOptions.super &&\r\n      vueOptions.super.options &&\r\n      Array.isArray(vueOptions.super.options[hook])) {\r\n      return true\r\n    }\r\n    return false\r\n  }\r\n\r\n  if (isFn(vueOptions[hook])) {\r\n    return true\r\n  }\r\n  const mixins = vueOptions.mixins;\r\n  if (Array.isArray(mixins)) {\r\n    return !!mixins.find(mixin => hasHook(hook, mixin))\r\n  }\r\n}\r\n\r\nfunction initHooks (mpOptions, hooks, vueOptions) {\r\n  hooks.forEach(hook => {\r\n    if (hasHook(hook, vueOptions)) {\r\n      mpOptions[hook] = function (args) {\r\n        return this.$vm && this.$vm.__call_hook(hook, args)\r\n      };\r\n    }\r\n  });\r\n}\r\n\r\nfunction initUnknownHooks (mpOptions, vueOptions, excludes = []) {\r\n  findHooks(vueOptions).forEach((hook) => initHook$1(mpOptions, hook, excludes));\r\n}\r\n\r\nfunction findHooks (vueOptions, hooks = []) {\r\n  if (vueOptions) {\r\n    Object.keys(vueOptions).forEach((name) => {\r\n      if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {\r\n        hooks.push(name);\r\n      }\r\n    });\r\n  }\r\n  return hooks\r\n}\r\n\r\nfunction initHook$1 (mpOptions, hook, excludes) {\r\n  if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {\r\n    mpOptions[hook] = function (args) {\r\n      return this.$vm && this.$vm.__call_hook(hook, args)\r\n    };\r\n  }\r\n}\r\n\r\nfunction initVueComponent (Vue, vueOptions) {\r\n  vueOptions = vueOptions.default || vueOptions;\r\n  let VueComponent;\r\n  if (isFn(vueOptions)) {\r\n    VueComponent = vueOptions;\r\n  } else {\r\n    VueComponent = Vue.extend(vueOptions);\r\n  }\r\n  vueOptions = VueComponent.options;\r\n  return [VueComponent, vueOptions]\r\n}\r\n\r\nfunction initSlots (vm, vueSlots) {\r\n  if (Array.isArray(vueSlots) && vueSlots.length) {\r\n    const $slots = Object.create(null);\r\n    vueSlots.forEach(slotName => {\r\n      $slots[slotName] = true;\r\n    });\r\n    vm.$scopedSlots = vm.$slots = $slots;\r\n  }\r\n}\r\n\r\nfunction initVueIds (vueIds, mpInstance) {\r\n  vueIds = (vueIds || '').split(',');\r\n  const len = vueIds.length;\r\n\r\n  if (len === 1) {\r\n    mpInstance._$vueId = vueIds[0];\r\n  } else if (len === 2) {\r\n    mpInstance._$vueId = vueIds[0];\r\n    mpInstance._$vuePid = vueIds[1];\r\n  }\r\n}\r\n\r\nfunction initData (vueOptions, context) {\r\n  let data = vueOptions.data || {};\r\n  const methods = vueOptions.methods || {};\r\n\r\n  if (typeof data === 'function') {\r\n    try {\r\n      data = data.call(context); // 支持 Vue.prototype 上挂的数据\r\n    } catch (e) {\r\n      if (process.env.VUE_APP_DEBUG) {\r\n        console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\r\n      }\r\n    }\r\n  } else {\r\n    try {\r\n      // 对 data 格式化\r\n      data = JSON.parse(JSON.stringify(data));\r\n    } catch (e) { }\r\n  }\r\n\r\n  if (!isPlainObject(data)) {\r\n    data = {};\r\n  }\r\n\r\n  Object.keys(methods).forEach(methodName => {\r\n    if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\r\n      data[methodName] = methods[methodName];\r\n    }\r\n  });\r\n\r\n  return data\r\n}\r\n\r\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\r\n\r\nfunction createObserver (name) {\r\n  return function observer (newVal, oldVal) {\r\n    if (this.$vm) {\r\n      this.$vm[name] = newVal; // 为了触发其他非 render watcher\r\n    }\r\n  }\r\n}\r\n\r\nfunction initBehaviors (vueOptions, initBehavior) {\r\n  const vueBehaviors = vueOptions.behaviors;\r\n  const vueExtends = vueOptions.extends;\r\n  const vueMixins = vueOptions.mixins;\r\n\r\n  let vueProps = vueOptions.props;\r\n\r\n  if (!vueProps) {\r\n    vueOptions.props = vueProps = [];\r\n  }\r\n\r\n  const behaviors = [];\r\n  if (Array.isArray(vueBehaviors)) {\r\n    vueBehaviors.forEach(behavior => {\r\n      behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\r\n      if (behavior === 'uni://form-field') {\r\n        if (Array.isArray(vueProps)) {\r\n          vueProps.push('name');\r\n          vueProps.push('value');\r\n        } else {\r\n          vueProps.name = {\r\n            type: String,\r\n            default: ''\r\n          };\r\n          vueProps.value = {\r\n            type: [String, Number, Boolean, Array, Object, Date],\r\n            default: ''\r\n          };\r\n        }\r\n      }\r\n    });\r\n  }\r\n  if (isPlainObject(vueExtends) && vueExtends.props) {\r\n    behaviors.push(\r\n      initBehavior({\r\n        properties: initProperties(vueExtends.props, true)\r\n      })\r\n    );\r\n  }\r\n  if (Array.isArray(vueMixins)) {\r\n    vueMixins.forEach(vueMixin => {\r\n      if (isPlainObject(vueMixin) && vueMixin.props) {\r\n        behaviors.push(\r\n          initBehavior({\r\n            properties: initProperties(vueMixin.props, true)\r\n          })\r\n        );\r\n      }\r\n    });\r\n  }\r\n  return behaviors\r\n}\r\n\r\nfunction parsePropType (key, type, defaultValue, file) {\r\n  // [String]=>String\r\n  if (Array.isArray(type) && type.length === 1) {\r\n    return type[0]\r\n  }\r\n  return type\r\n}\r\n\r\nfunction initProperties (props, isBehavior = false, file = '', options) {\r\n  const properties = {};\r\n  if (!isBehavior) {\r\n    properties.vueId = {\r\n      type: String,\r\n      value: ''\r\n    };\r\n    {\r\n      if ( options.virtualHost) {\r\n        properties.virtualHostStyle = {\r\n          type: null,\r\n          value: ''\r\n        };\r\n        properties.virtualHostClass = {\r\n          type: null,\r\n          value: ''\r\n        };\r\n      }\r\n    }\r\n    // scopedSlotsCompiler auto\r\n    properties.scopedSlotsCompiler = {\r\n      type: String,\r\n      value: ''\r\n    };\r\n    properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\r\n      type: null,\r\n      value: [],\r\n      observer: function (newVal, oldVal) {\r\n        const $slots = Object.create(null);\r\n        newVal.forEach(slotName => {\r\n          $slots[slotName] = true;\r\n        });\r\n        this.setData({\r\n          $slots\r\n        });\r\n      }\r\n    };\r\n  }\r\n  if (Array.isArray(props)) { // ['title']\r\n    props.forEach(key => {\r\n      properties[key] = {\r\n        type: null,\r\n        observer: createObserver(key)\r\n      };\r\n    });\r\n  } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\r\n    Object.keys(props).forEach(key => {\r\n      const opts = props[key];\r\n      if (isPlainObject(opts)) { // title:{type:String,default:''}\r\n        let value = opts.default;\r\n        if (isFn(value)) {\r\n          value = value();\r\n        }\r\n\r\n        opts.type = parsePropType(key, opts.type);\r\n\r\n        properties[key] = {\r\n          type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\r\n          value,\r\n          observer: createObserver(key)\r\n        };\r\n      } else { // content:String\r\n        const type = parsePropType(key, opts);\r\n        properties[key] = {\r\n          type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\r\n          observer: createObserver(key)\r\n        };\r\n      }\r\n    });\r\n  }\r\n  return properties\r\n}\r\n\r\nfunction wrapper$1 (event) {\r\n  // TODO 又得兼容 mpvue 的 mp 对象\r\n  try {\r\n    event.mp = JSON.parse(JSON.stringify(event));\r\n  } catch (e) { }\r\n\r\n  event.stopPropagation = noop;\r\n  event.preventDefault = noop;\r\n\r\n  event.target = event.target || {};\r\n\r\n  if (!hasOwn(event, 'detail')) {\r\n    event.detail = {};\r\n  }\r\n\r\n  if (hasOwn(event, 'markerId')) {\r\n    event.detail = typeof event.detail === 'object' ? event.detail : {};\r\n    event.detail.markerId = event.markerId;\r\n  }\r\n\r\n  if (isPlainObject(event.detail)) {\r\n    event.target = Object.assign({}, event.target, event.detail);\r\n  }\r\n\r\n  return event\r\n}\r\n\r\nfunction getExtraValue (vm, dataPathsArray) {\r\n  let context = vm;\r\n  dataPathsArray.forEach(dataPathArray => {\r\n    const dataPath = dataPathArray[0];\r\n    const value = dataPathArray[2];\r\n    if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\r\n      const propPath = dataPathArray[1];\r\n      const valuePath = dataPathArray[3];\r\n\r\n      let vFor;\r\n      if (Number.isInteger(dataPath)) {\r\n        vFor = dataPath;\r\n      } else if (!dataPath) {\r\n        vFor = context;\r\n      } else if (typeof dataPath === 'string' && dataPath) {\r\n        if (dataPath.indexOf('#s#') === 0) {\r\n          vFor = dataPath.substr(3);\r\n        } else {\r\n          vFor = vm.__get_value(dataPath, context);\r\n        }\r\n      }\r\n\r\n      if (Number.isInteger(vFor)) {\r\n        context = value;\r\n      } else if (!propPath) {\r\n        context = vFor[value];\r\n      } else {\r\n        if (Array.isArray(vFor)) {\r\n          context = vFor.find(vForItem => {\r\n            return vm.__get_value(propPath, vForItem) === value\r\n          });\r\n        } else if (isPlainObject(vFor)) {\r\n          context = Object.keys(vFor).find(vForKey => {\r\n            return vm.__get_value(propPath, vFor[vForKey]) === value\r\n          });\r\n        } else {\r\n          console.error('v-for 暂不支持循环数据:', vFor);\r\n        }\r\n      }\r\n\r\n      if (valuePath) {\r\n        context = vm.__get_value(valuePath, context);\r\n      }\r\n    }\r\n  });\r\n  return context\r\n}\r\n\r\nfunction processEventExtra (vm, extra, event, __args__) {\r\n  const extraObj = {};\r\n\r\n  if (Array.isArray(extra) && extra.length) {\r\n    /**\r\n     *[\r\n     *    ['data.items', 'data.id', item.data.id],\r\n     *    ['metas', 'id', meta.id]\r\n     *],\r\n     *[\r\n     *    ['data.items', 'data.id', item.data.id],\r\n     *    ['metas', 'id', meta.id]\r\n     *],\r\n     *'test'\r\n     */\r\n    extra.forEach((dataPath, index) => {\r\n      if (typeof dataPath === 'string') {\r\n        if (!dataPath) { // model,prop.sync\r\n          extraObj['$' + index] = vm;\r\n        } else {\r\n          if (dataPath === '$event') { // $event\r\n            extraObj['$' + index] = event;\r\n          } else if (dataPath === 'arguments') {\r\n            extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__;\r\n          } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\r\n            extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\r\n          } else {\r\n            extraObj['$' + index] = vm.__get_value(dataPath);\r\n          }\r\n        }\r\n      } else {\r\n        extraObj['$' + index] = getExtraValue(vm, dataPath);\r\n      }\r\n    });\r\n  }\r\n\r\n  return extraObj\r\n}\r\n\r\nfunction getObjByArray (arr) {\r\n  const obj = {};\r\n  for (let i = 1; i < arr.length; i++) {\r\n    const element = arr[i];\r\n    obj[element[0]] = element[1];\r\n  }\r\n  return obj\r\n}\r\n\r\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\r\n  let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\r\n\r\n  // fixed 用户直接触发 mpInstance.triggerEvent\r\n  const __args__ = isPlainObject(event.detail)\r\n    ? event.detail.__args__ || [event.detail]\r\n    : [event.detail];\r\n\r\n  if (isCustom) { // 自定义事件\r\n    isCustomMPEvent = event.currentTarget &&\r\n      event.currentTarget.dataset &&\r\n      event.currentTarget.dataset.comType === 'wx';\r\n    if (!args.length) { // 无参数,直接传入 event 或 detail 数组\r\n      if (isCustomMPEvent) {\r\n        return [event]\r\n      }\r\n      return __args__\r\n    }\r\n  }\r\n\r\n  const extraObj = processEventExtra(vm, extra, event, __args__);\r\n\r\n  const ret = [];\r\n  args.forEach(arg => {\r\n    if (arg === '$event') {\r\n      if (methodName === '__set_model' && !isCustom) { // input v-model value\r\n        ret.push(event.target.value);\r\n      } else {\r\n        if (isCustom && !isCustomMPEvent) {\r\n          ret.push(__args__[0]);\r\n        } else { // wxcomponent 组件或内置组件\r\n          ret.push(event);\r\n        }\r\n      }\r\n    } else {\r\n      if (Array.isArray(arg) && arg[0] === 'o') {\r\n        ret.push(getObjByArray(arg));\r\n      } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\r\n        ret.push(extraObj[arg]);\r\n      } else {\r\n        ret.push(arg);\r\n      }\r\n    }\r\n  });\r\n\r\n  return ret\r\n}\r\n\r\nconst ONCE = '~';\r\nconst CUSTOM = '^';\r\n\r\nfunction isMatchEventType (eventType, optType) {\r\n  return (eventType === optType) ||\r\n    (\r\n      optType === 'regionchange' &&\r\n      (\r\n        eventType === 'begin' ||\r\n        eventType === 'end'\r\n      )\r\n    )\r\n}\r\n\r\nfunction getContextVm (vm) {\r\n  let $parent = vm.$parent;\r\n  // 父组件是 scoped slots 或者其他自定义组件时继续查找\r\n  while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\r\n    $parent = $parent.$parent;\r\n  }\r\n  return $parent && $parent.$parent\r\n}\r\n\r\nfunction handleEvent (event) {\r\n  event = wrapper$1(event);\r\n\r\n  // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\r\n  const dataset = (event.currentTarget || event.target).dataset;\r\n  if (!dataset) {\r\n    return console.warn('事件信息不存在')\r\n  }\r\n  const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\r\n  if (!eventOpts) {\r\n    return console.warn('事件信息不存在')\r\n  }\r\n\r\n  // [['handle',[1,2,a]],['handle1',[1,2,a]]]\r\n  const eventType = event.type;\r\n\r\n  const ret = [];\r\n\r\n  eventOpts.forEach(eventOpt => {\r\n    let type = eventOpt[0];\r\n    const eventsArray = eventOpt[1];\r\n\r\n    const isCustom = type.charAt(0) === CUSTOM;\r\n    type = isCustom ? type.slice(1) : type;\r\n    const isOnce = type.charAt(0) === ONCE;\r\n    type = isOnce ? type.slice(1) : type;\r\n\r\n    if (eventsArray && isMatchEventType(eventType, type)) {\r\n      eventsArray.forEach(eventArray => {\r\n        const methodName = eventArray[0];\r\n        if (methodName) {\r\n          let handlerCtx = this.$vm;\r\n          if (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n            handlerCtx = getContextVm(handlerCtx) || handlerCtx;\r\n          }\r\n          if (methodName === '$emit') {\r\n            handlerCtx.$emit.apply(handlerCtx,\r\n              processEventArgs(\r\n                this.$vm,\r\n                event,\r\n                eventArray[1],\r\n                eventArray[2],\r\n                isCustom,\r\n                methodName\r\n              ));\r\n            return\r\n          }\r\n          const handler = handlerCtx[methodName];\r\n          if (!isFn(handler)) {\r\n            const type = this.$vm.mpType === 'page' ? 'Page' : 'Component';\r\n            const path = this.route || this.is;\r\n            throw new Error(`${type} \"${path}\" does not have a method \"${methodName}\"`)\r\n          }\r\n          if (isOnce) {\r\n            if (handler.once) {\r\n              return\r\n            }\r\n            handler.once = true;\r\n          }\r\n          let params = processEventArgs(\r\n            this.$vm,\r\n            event,\r\n            eventArray[1],\r\n            eventArray[2],\r\n            isCustom,\r\n            methodName\r\n          );\r\n          params = Array.isArray(params) ? params : [];\r\n          // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\r\n          if (/=\\s*\\S+\\.eventParams\\s*\\|\\|\\s*\\S+\\[['\"]event-params['\"]\\]/.test(handler.toString())) {\r\n            // eslint-disable-next-line no-sparse-arrays\r\n            params = params.concat([, , , , , , , , , , event]);\r\n          }\r\n          ret.push(handler.apply(handlerCtx, params));\r\n        }\r\n      });\r\n    }\r\n  });\r\n\r\n  if (\r\n    eventType === 'input' &&\r\n    ret.length === 1 &&\r\n    typeof ret[0] !== 'undefined'\r\n  ) {\r\n    return ret[0]\r\n  }\r\n}\r\n\r\nconst eventChannels = {};\r\n\r\nconst eventChannelStack = [];\r\n\r\nfunction getEventChannel (id) {\r\n  if (id) {\r\n    const eventChannel = eventChannels[id];\r\n    delete eventChannels[id];\r\n    return eventChannel\r\n  }\r\n  return eventChannelStack.shift()\r\n}\r\n\r\nconst hooks = [\r\n  'onShow',\r\n  'onHide',\r\n  'onError',\r\n  'onPageNotFound',\r\n  'onThemeChange',\r\n  'onUnhandledRejection'\r\n];\r\n\r\nfunction initEventChannel () {\r\n  Vue.prototype.getOpenerEventChannel = function () {\r\n    // 微信小程序使用自身getOpenerEventChannel\r\n    {\r\n      return this.$scope.getOpenerEventChannel()\r\n    }\r\n  };\r\n  const callHook = Vue.prototype.__call_hook;\r\n  Vue.prototype.__call_hook = function (hook, args) {\r\n    if (hook === 'onLoad' && args && args.__id__) {\r\n      this.__eventChannel__ = getEventChannel(args.__id__);\r\n      delete args.__id__;\r\n    }\r\n    return callHook.call(this, hook, args)\r\n  };\r\n}\r\n\r\nfunction initScopedSlotsParams () {\r\n  const center = {};\r\n  const parents = {};\r\n\r\n  Vue.prototype.$hasScopedSlotsParams = function (vueId) {\r\n    const has = center[vueId];\r\n    if (!has) {\r\n      parents[vueId] = this;\r\n      this.$on('hook:destroyed', () => {\r\n        delete parents[vueId];\r\n      });\r\n    }\r\n    return has\r\n  };\r\n\r\n  Vue.prototype.$getScopedSlotsParams = function (vueId, name, key) {\r\n    const data = center[vueId];\r\n    if (data) {\r\n      const object = data[name] || {};\r\n      return key ? object[key] : object\r\n    } else {\r\n      parents[vueId] = this;\r\n      this.$on('hook:destroyed', () => {\r\n        delete parents[vueId];\r\n      });\r\n    }\r\n  };\r\n\r\n  Vue.prototype.$setScopedSlotsParams = function (name, value) {\r\n    const vueIds = this.$options.propsData.vueId;\r\n    if (vueIds) {\r\n      const vueId = vueIds.split(',')[0];\r\n      const object = center[vueId] = center[vueId] || {};\r\n      object[name] = value;\r\n      if (parents[vueId]) {\r\n        parents[vueId].$forceUpdate();\r\n      }\r\n    }\r\n  };\r\n\r\n  Vue.mixin({\r\n    destroyed () {\r\n      const propsData = this.$options.propsData;\r\n      const vueId = propsData && propsData.vueId;\r\n      if (vueId) {\r\n        delete center[vueId];\r\n        delete parents[vueId];\r\n      }\r\n    }\r\n  });\r\n}\r\n\r\nfunction parseBaseApp (vm, {\r\n  mocks,\r\n  initRefs\r\n}) {\r\n  initEventChannel();\r\n  {\r\n    initScopedSlotsParams();\r\n  }\r\n  if (vm.$options.store) {\r\n    Vue.prototype.$store = vm.$options.store;\r\n  }\r\n  uniIdMixin(Vue);\r\n\r\n  Vue.prototype.mpHost = \"mp-weixin\";\r\n\r\n  Vue.mixin({\r\n    beforeCreate () {\r\n      if (!this.$options.mpType) {\r\n        return\r\n      }\r\n\r\n      this.mpType = this.$options.mpType;\r\n\r\n      this.$mp = {\r\n        data: {},\r\n        [this.mpType]: this.$options.mpInstance\r\n      };\r\n\r\n      this.$scope = this.$options.mpInstance;\r\n\r\n      delete this.$options.mpType;\r\n      delete this.$options.mpInstance;\r\n      if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n\r\n        const app = getApp();\r\n        if (app.$vm && app.$vm.$i18n) {\r\n          this._i18n = app.$vm.$i18n;\r\n        }\r\n      }\r\n      if (this.mpType !== 'app') {\r\n        initRefs(this);\r\n        initMocks(this, mocks);\r\n      }\r\n    }\r\n  });\r\n\r\n  const appOptions = {\r\n    onLaunch (args) {\r\n      if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\r\n        return\r\n      }\r\n      {\r\n        if (wx.canIUse && !wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\r\n          console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\r\n        }\r\n      }\r\n\r\n      this.$vm = vm;\r\n\r\n      this.$vm.$mp = {\r\n        app: this\r\n      };\r\n\r\n      this.$vm.$scope = this;\r\n      // vm 上也挂载 globalData\r\n      this.$vm.globalData = this.globalData;\r\n\r\n      this.$vm._isMounted = true;\r\n      this.$vm.__call_hook('mounted', args);\r\n\r\n      this.$vm.__call_hook('onLaunch', args);\r\n    }\r\n  };\r\n\r\n  // 兼容旧版本 globalData\r\n  appOptions.globalData = vm.$options.globalData || {};\r\n  // 将 methods 中的方法挂在 getApp() 中\r\n  const methods = vm.$options.methods;\r\n  if (methods) {\r\n    Object.keys(methods).forEach(name => {\r\n      appOptions[name] = methods[name];\r\n    });\r\n  }\r\n\r\n  initAppLocale(Vue, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);\r\n\r\n  initHooks(appOptions, hooks);\r\n  initUnknownHooks(appOptions, vm.$options);\r\n\r\n  return appOptions\r\n}\r\n\r\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\r\n\r\nfunction findVmByVueId (vm, vuePid) {\r\n  const $children = vm.$children;\r\n  // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\r\n  for (let i = $children.length - 1; i >= 0; i--) {\r\n    const childVm = $children[i];\r\n    if (childVm.$scope._$vueId === vuePid) {\r\n      return childVm\r\n    }\r\n  }\r\n  // 反向递归查找\r\n  let parentVm;\r\n  for (let i = $children.length - 1; i >= 0; i--) {\r\n    parentVm = findVmByVueId($children[i], vuePid);\r\n    if (parentVm) {\r\n      return parentVm\r\n    }\r\n  }\r\n}\r\n\r\nfunction initBehavior (options) {\r\n  return Behavior(options)\r\n}\r\n\r\nfunction isPage () {\r\n  return !!this.route\r\n}\r\n\r\nfunction initRelation (detail) {\r\n  this.triggerEvent('__l', detail);\r\n}\r\n\r\nfunction selectAllComponents (mpInstance, selector, $refs) {\r\n  const components = mpInstance.selectAllComponents(selector);\r\n  components.forEach(component => {\r\n    const ref = component.dataset.ref;\r\n    $refs[ref] = component.$vm || component;\r\n    {\r\n      if (component.dataset.vueGeneric === 'scoped') {\r\n        component.selectAllComponents('.scoped-ref').forEach(scopedComponent => {\r\n          selectAllComponents(scopedComponent, selector, $refs);\r\n        });\r\n      }\r\n    }\r\n  });\r\n}\r\n\r\nfunction initRefs (vm) {\r\n  const mpInstance = vm.$scope;\r\n  Object.defineProperty(vm, '$refs', {\r\n    get () {\r\n      const $refs = {};\r\n      selectAllComponents(mpInstance, '.vue-ref', $refs);\r\n      // TODO 暂不考虑 for 中的 scoped\r\n      const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');\r\n      forComponents.forEach(component => {\r\n        const ref = component.dataset.ref;\r\n        if (!$refs[ref]) {\r\n          $refs[ref] = [];\r\n        }\r\n        $refs[ref].push(component.$vm || component);\r\n      });\r\n      return $refs\r\n    }\r\n  });\r\n}\r\n\r\nfunction handleLink (event) {\r\n  const {\r\n    vuePid,\r\n    vueOptions\r\n  } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\r\n\r\n  let parentVm;\r\n\r\n  if (vuePid) {\r\n    parentVm = findVmByVueId(this.$vm, vuePid);\r\n  }\r\n\r\n  if (!parentVm) {\r\n    parentVm = this.$vm;\r\n  }\r\n\r\n  vueOptions.parent = parentVm;\r\n}\r\n\r\nfunction parseApp (vm) {\r\n  return parseBaseApp(vm, {\r\n    mocks,\r\n    initRefs\r\n  })\r\n}\r\n\r\nfunction createApp (vm) {\r\n  App(parseApp(vm));\r\n  return vm\r\n}\r\n\r\nconst encodeReserveRE = /[!'()*]/g;\r\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\r\nconst commaRE = /%2C/g;\r\n\r\n// fixed encodeURIComponent which is more conformant to RFC3986:\r\n// - escapes [!'()*]\r\n// - preserve commas\r\nconst encode = str => encodeURIComponent(str)\r\n  .replace(encodeReserveRE, encodeReserveReplacer)\r\n  .replace(commaRE, ',');\r\n\r\nfunction stringifyQuery (obj, encodeStr = encode) {\r\n  const res = obj ? Object.keys(obj).map(key => {\r\n    const val = obj[key];\r\n\r\n    if (val === undefined) {\r\n      return ''\r\n    }\r\n\r\n    if (val === null) {\r\n      return encodeStr(key)\r\n    }\r\n\r\n    if (Array.isArray(val)) {\r\n      const result = [];\r\n      val.forEach(val2 => {\r\n        if (val2 === undefined) {\r\n          return\r\n        }\r\n        if (val2 === null) {\r\n          result.push(encodeStr(key));\r\n        } else {\r\n          result.push(encodeStr(key) + '=' + encodeStr(val2));\r\n        }\r\n      });\r\n      return result.join('&')\r\n    }\r\n\r\n    return encodeStr(key) + '=' + encodeStr(val)\r\n  }).filter(x => x.length > 0).join('&') : null;\r\n  return res ? `?${res}` : ''\r\n}\r\n\r\nfunction parseBaseComponent (vueComponentOptions, {\r\n  isPage,\r\n  initRelation\r\n} = {}) {\r\n  const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\r\n\r\n  const options = {\r\n    multipleSlots: true,\r\n    addGlobalClass: true,\r\n    ...(vueOptions.options || {})\r\n  };\r\n\r\n  {\r\n    // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\r\n    if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\r\n      Object.assign(options, vueOptions['mp-weixin'].options);\r\n    }\r\n  }\r\n\r\n  const componentOptions = {\r\n    options,\r\n    data: initData(vueOptions, Vue.prototype),\r\n    behaviors: initBehaviors(vueOptions, initBehavior),\r\n    properties: initProperties(vueOptions.props, false, vueOptions.__file, options),\r\n    lifetimes: {\r\n      attached () {\r\n        const properties = this.properties;\r\n\r\n        const options = {\r\n          mpType: isPage.call(this) ? 'page' : 'component',\r\n          mpInstance: this,\r\n          propsData: properties\r\n        };\r\n\r\n        initVueIds(properties.vueId, this);\r\n\r\n        // 处理父子关系\r\n        initRelation.call(this, {\r\n          vuePid: this._$vuePid,\r\n          vueOptions: options\r\n        });\r\n\r\n        // 初始化 vue 实例\r\n        this.$vm = new VueComponent(options);\r\n\r\n        // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\r\n        initSlots(this.$vm, properties.vueSlots);\r\n\r\n        // 触发首次 setData\r\n        this.$vm.$mount();\r\n      },\r\n      ready () {\r\n        // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\r\n        // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\r\n        if (this.$vm) {\r\n          this.$vm._isMounted = true;\r\n          this.$vm.__call_hook('mounted');\r\n          this.$vm.__call_hook('onReady');\r\n        }\r\n      },\r\n      detached () {\r\n        this.$vm && this.$vm.$destroy();\r\n      }\r\n    },\r\n    pageLifetimes: {\r\n      show (args) {\r\n        this.$vm && this.$vm.__call_hook('onPageShow', args);\r\n      },\r\n      hide () {\r\n        this.$vm && this.$vm.__call_hook('onPageHide');\r\n      },\r\n      resize (size) {\r\n        this.$vm && this.$vm.__call_hook('onPageResize', size);\r\n      }\r\n    },\r\n    methods: {\r\n      __l: handleLink,\r\n      __e: handleEvent\r\n    }\r\n  };\r\n  // externalClasses\r\n  if (vueOptions.externalClasses) {\r\n    componentOptions.externalClasses = vueOptions.externalClasses;\r\n  }\r\n\r\n  if (Array.isArray(vueOptions.wxsCallMethods)) {\r\n    vueOptions.wxsCallMethods.forEach(callMethod => {\r\n      componentOptions.methods[callMethod] = function (args) {\r\n        return this.$vm[callMethod](args)\r\n      };\r\n    });\r\n  }\r\n\r\n  if (isPage) {\r\n    return componentOptions\r\n  }\r\n  return [componentOptions, VueComponent]\r\n}\r\n\r\nfunction parseComponent (vueComponentOptions) {\r\n  return parseBaseComponent(vueComponentOptions, {\r\n    isPage,\r\n    initRelation\r\n  })\r\n}\r\n\r\nconst hooks$1 = [\r\n  'onShow',\r\n  'onHide',\r\n  'onUnload'\r\n];\r\n\r\nhooks$1.push(...PAGE_EVENT_HOOKS);\r\n\r\nfunction parseBasePage (vuePageOptions, {\r\n  isPage,\r\n  initRelation\r\n}) {\r\n  const pageOptions = parseComponent(vuePageOptions);\r\n\r\n  initHooks(pageOptions.methods, hooks$1, vuePageOptions);\r\n\r\n  pageOptions.methods.onLoad = function (query) {\r\n    this.options = query;\r\n    const copyQuery = Object.assign({}, query);\r\n    delete copyQuery.__id__;\r\n    this.$page = {\r\n      fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\r\n    };\r\n    this.$vm.$mp.query = query; // 兼容 mpvue\r\n    this.$vm.__call_hook('onLoad', query);\r\n  };\r\n  initUnknownHooks(pageOptions.methods, vuePageOptions, ['onReady']);\r\n\r\n  return pageOptions\r\n}\r\n\r\nfunction parsePage (vuePageOptions) {\r\n  return parseBasePage(vuePageOptions, {\r\n    isPage,\r\n    initRelation\r\n  })\r\n}\r\n\r\nfunction createPage (vuePageOptions) {\r\n  {\r\n    return Component(parsePage(vuePageOptions))\r\n  }\r\n}\r\n\r\nfunction createComponent (vueOptions) {\r\n  {\r\n    return Component(parseComponent(vueOptions))\r\n  }\r\n}\r\n\r\nfunction createSubpackageApp (vm) {\r\n  const appOptions = parseApp(vm);\r\n  const app = getApp({\r\n    allowDefault: true\r\n  });\r\n  vm.$scope = app;\r\n  const globalData = app.globalData;\r\n  if (globalData) {\r\n    Object.keys(appOptions.globalData).forEach(name => {\r\n      if (!hasOwn(globalData, name)) {\r\n        globalData[name] = appOptions.globalData[name];\r\n      }\r\n    });\r\n  }\r\n  Object.keys(appOptions).forEach(name => {\r\n    if (!hasOwn(app, name)) {\r\n      app[name] = appOptions[name];\r\n    }\r\n  });\r\n  if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n    wx.onAppShow((...args) => {\r\n      vm.__call_hook('onShow', args);\r\n    });\r\n  }\r\n  if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n    wx.onAppHide((...args) => {\r\n      vm.__call_hook('onHide', args);\r\n    });\r\n  }\r\n  if (isFn(appOptions.onLaunch)) {\r\n    const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n    vm.__call_hook('onLaunch', args);\r\n  }\r\n  return vm\r\n}\r\n\r\nfunction createPlugin (vm) {\r\n  const appOptions = parseApp(vm);\r\n  if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n    wx.onAppShow((...args) => {\r\n      vm.__call_hook('onShow', args);\r\n    });\r\n  }\r\n  if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n    wx.onAppHide((...args) => {\r\n      vm.__call_hook('onHide', args);\r\n    });\r\n  }\r\n  if (isFn(appOptions.onLaunch)) {\r\n    const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n    vm.__call_hook('onLaunch', args);\r\n  }\r\n  return vm\r\n}\r\n\r\ntodos.forEach(todoApi => {\r\n  protocols[todoApi] = false;\r\n});\r\n\r\ncanIUses.forEach(canIUseApi => {\r\n  const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\r\n    : canIUseApi;\r\n  if (!wx.canIUse(apiName)) {\r\n    protocols[canIUseApi] = false;\r\n  }\r\n});\r\n\r\nlet uni = {};\r\n\r\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\r\n  uni = new Proxy({}, {\r\n    get (target, name) {\r\n      if (hasOwn(target, name)) {\r\n        return target[name]\r\n      }\r\n      if (baseApi[name]) {\r\n        return baseApi[name]\r\n      }\r\n      if (api[name]) {\r\n        return promisify(name, api[name])\r\n      }\r\n      {\r\n        if (extraApi[name]) {\r\n          return promisify(name, extraApi[name])\r\n        }\r\n        if (todoApis[name]) {\r\n          return promisify(name, todoApis[name])\r\n        }\r\n      }\r\n      if (eventApi[name]) {\r\n        return eventApi[name]\r\n      }\r\n      if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {\r\n        return\r\n      }\r\n      return promisify(name, wrapper(name, wx[name]))\r\n    },\r\n    set (target, name, value) {\r\n      target[name] = value;\r\n      return true\r\n    }\r\n  });\r\n} else {\r\n  Object.keys(baseApi).forEach(name => {\r\n    uni[name] = baseApi[name];\r\n  });\r\n\r\n  {\r\n    Object.keys(todoApis).forEach(name => {\r\n      uni[name] = promisify(name, todoApis[name]);\r\n    });\r\n    Object.keys(extraApi).forEach(name => {\r\n      uni[name] = promisify(name, todoApis[name]);\r\n    });\r\n  }\r\n\r\n  Object.keys(eventApi).forEach(name => {\r\n    uni[name] = eventApi[name];\r\n  });\r\n\r\n  Object.keys(api).forEach(name => {\r\n    uni[name] = promisify(name, api[name]);\r\n  });\r\n\r\n  Object.keys(wx).forEach(name => {\r\n    if (hasOwn(wx, name) || hasOwn(protocols, name)) {\r\n      uni[name] = promisify(name, wrapper(name, wx[name]));\r\n    }\r\n  });\r\n}\r\n\r\nwx.createApp = createApp;\r\nwx.createPage = createPage;\r\nwx.createComponent = createComponent;\r\nwx.createSubpackageApp = createSubpackageApp;\r\nwx.createPlugin = createPlugin;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage, createPlugin, createSubpackageApp };\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const isArray = Array.isArray;\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst defaultDelimiters = ['{', '}'];\r\nclass BaseFormatter {\r\n    constructor() {\r\n        this._caches = Object.create(null);\r\n    }\r\n    interpolate(message, values, delimiters = defaultDelimiters) {\r\n        if (!values) {\r\n            return [message];\r\n        }\r\n        let tokens = this._caches[message];\r\n        if (!tokens) {\r\n            tokens = parse(message, delimiters);\r\n            this._caches[message] = tokens;\r\n        }\r\n        return compile(tokens, values);\r\n    }\r\n}\r\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\r\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\r\nfunction parse(format, [startDelimiter, endDelimiter]) {\r\n    const tokens = [];\r\n    let position = 0;\r\n    let text = '';\r\n    while (position < format.length) {\r\n        let char = format[position++];\r\n        if (char === startDelimiter) {\r\n            if (text) {\r\n                tokens.push({ type: 'text', value: text });\r\n            }\r\n            text = '';\r\n            let sub = '';\r\n            char = format[position++];\r\n            while (char !== undefined && char !== endDelimiter) {\r\n                sub += char;\r\n                char = format[position++];\r\n            }\r\n            const isClosed = char === endDelimiter;\r\n            const type = RE_TOKEN_LIST_VALUE.test(sub)\r\n                ? 'list'\r\n                : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\r\n                    ? 'named'\r\n                    : 'unknown';\r\n            tokens.push({ value: sub, type });\r\n        }\r\n        //  else if (char === '%') {\r\n        //   // when found rails i18n syntax, skip text capture\r\n        //   if (format[position] !== '{') {\r\n        //     text += char\r\n        //   }\r\n        // }\r\n        else {\r\n            text += char;\r\n        }\r\n    }\r\n    text && tokens.push({ type: 'text', value: text });\r\n    return tokens;\r\n}\r\nfunction compile(tokens, values) {\r\n    const compiled = [];\r\n    let index = 0;\r\n    const mode = isArray(values)\r\n        ? 'list'\r\n        : isObject(values)\r\n            ? 'named'\r\n            : 'unknown';\r\n    if (mode === 'unknown') {\r\n        return compiled;\r\n    }\r\n    while (index < tokens.length) {\r\n        const token = tokens[index];\r\n        switch (token.type) {\r\n            case 'text':\r\n                compiled.push(token.value);\r\n                break;\r\n            case 'list':\r\n                compiled.push(values[parseInt(token.value, 10)]);\r\n                break;\r\n            case 'named':\r\n                if (mode === 'named') {\r\n                    compiled.push(values[token.value]);\r\n                }\r\n                else {\r\n                    if (process.env.NODE_ENV !== 'production') {\r\n                        console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\r\n                    }\r\n                }\r\n                break;\r\n            case 'unknown':\r\n                if (process.env.NODE_ENV !== 'production') {\r\n                    console.warn(`Detect 'unknown' type of token!`);\r\n                }\r\n                break;\r\n        }\r\n        index++;\r\n    }\r\n    return compiled;\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst defaultFormatter = new BaseFormatter();\r\nfunction include(str, parts) {\r\n    return !!parts.find((part) => str.indexOf(part) !== -1);\r\n}\r\nfunction startsWith(str, parts) {\r\n    return parts.find((part) => str.indexOf(part) === 0);\r\n}\r\nfunction normalizeLocale(locale, messages) {\r\n    if (!locale) {\r\n        return;\r\n    }\r\n    locale = locale.trim().replace(/_/g, '-');\r\n    if (messages && messages[locale]) {\r\n        return locale;\r\n    }\r\n    locale = locale.toLowerCase();\r\n    if (locale.indexOf('zh') === 0) {\r\n        if (locale.indexOf('-hans') > -1) {\r\n            return LOCALE_ZH_HANS;\r\n        }\r\n        if (locale.indexOf('-hant') > -1) {\r\n            return LOCALE_ZH_HANT;\r\n        }\r\n        if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n            return LOCALE_ZH_HANT;\r\n        }\r\n        return LOCALE_ZH_HANS;\r\n    }\r\n    const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n    if (lang) {\r\n        return lang;\r\n    }\r\n}\r\nclass I18n {\r\n    constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\r\n        this.locale = LOCALE_EN;\r\n        this.fallbackLocale = LOCALE_EN;\r\n        this.message = {};\r\n        this.messages = {};\r\n        this.watchers = [];\r\n        if (fallbackLocale) {\r\n            this.fallbackLocale = fallbackLocale;\r\n        }\r\n        this.formater = formater || defaultFormatter;\r\n        this.messages = messages || {};\r\n        this.setLocale(locale || LOCALE_EN);\r\n        if (watcher) {\r\n            this.watchLocale(watcher);\r\n        }\r\n    }\r\n    setLocale(locale) {\r\n        const oldLocale = this.locale;\r\n        this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\r\n        if (!this.messages[this.locale]) {\r\n            // 可能初始化时不存在\r\n            this.messages[this.locale] = {};\r\n        }\r\n        this.message = this.messages[this.locale];\r\n        // 仅发生变化时,通知\r\n        if (oldLocale !== this.locale) {\r\n            this.watchers.forEach((watcher) => {\r\n                watcher(this.locale, oldLocale);\r\n            });\r\n        }\r\n    }\r\n    getLocale() {\r\n        return this.locale;\r\n    }\r\n    watchLocale(fn) {\r\n        const index = this.watchers.push(fn) - 1;\r\n        return () => {\r\n            this.watchers.splice(index, 1);\r\n        };\r\n    }\r\n    add(locale, message, override = true) {\r\n        const curMessages = this.messages[locale];\r\n        if (curMessages) {\r\n            if (override) {\r\n                Object.assign(curMessages, message);\r\n            }\r\n            else {\r\n                Object.keys(message).forEach((key) => {\r\n                    if (!hasOwn(curMessages, key)) {\r\n                        curMessages[key] = message[key];\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        else {\r\n            this.messages[locale] = message;\r\n        }\r\n    }\r\n    f(message, values, delimiters) {\r\n        return this.formater.interpolate(message, values, delimiters).join('');\r\n    }\r\n    t(key, locale, values) {\r\n        let message = this.message;\r\n        if (typeof locale === 'string') {\r\n            locale = normalizeLocale(locale, this.messages);\r\n            locale && (message = this.messages[locale]);\r\n        }\r\n        else {\r\n            values = locale;\r\n        }\r\n        if (!hasOwn(message, key)) {\r\n            console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\r\n            return key;\r\n        }\r\n        return this.formater.interpolate(message[key], values).join('');\r\n    }\r\n}\r\n\r\nfunction watchAppLocale(appVm, i18n) {\r\n    // 需要保证 watch 的触发在组件渲染之前\r\n    if (appVm.$watchLocale) {\r\n        // vue2\r\n        appVm.$watchLocale((newLocale) => {\r\n            i18n.setLocale(newLocale);\r\n        });\r\n    }\r\n    else {\r\n        appVm.$watch(() => appVm.$locale, (newLocale) => {\r\n            i18n.setLocale(newLocale);\r\n        });\r\n    }\r\n}\r\nfunction getDefaultLocale() {\r\n    if (typeof uni !== 'undefined' && uni.getLocale) {\r\n        return uni.getLocale();\r\n    }\r\n    // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\r\n    if (typeof global !== 'undefined' && global.getLocale) {\r\n        return global.getLocale();\r\n    }\r\n    return LOCALE_EN;\r\n}\r\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\r\n    // 兼容旧版本入参\r\n    if (typeof locale !== 'string') {\r\n        [locale, messages] = [\r\n            messages,\r\n            locale,\r\n        ];\r\n    }\r\n    if (typeof locale !== 'string') {\r\n        // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\r\n        locale = getDefaultLocale();\r\n    }\r\n    if (typeof fallbackLocale !== 'string') {\r\n        fallbackLocale =\r\n            (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\r\n                LOCALE_EN;\r\n    }\r\n    const i18n = new I18n({\r\n        locale,\r\n        fallbackLocale,\r\n        messages,\r\n        watcher,\r\n    });\r\n    let t = (key, values) => {\r\n        if (typeof getApp !== 'function') {\r\n            // app view\r\n            /* eslint-disable no-func-assign */\r\n            t = function (key, values) {\r\n                return i18n.t(key, values);\r\n            };\r\n        }\r\n        else {\r\n            let isWatchedAppLocale = false;\r\n            t = function (key, values) {\r\n                const appVm = getApp().$vm;\r\n                // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\r\n                // options: {\r\n                // \ttype: Array,\r\n                // \tdefault () {\r\n                // \t\treturn [{\r\n                // \t\t\ticon: 'shop',\r\n                // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\r\n                // \t\t}, {\r\n                // \t\t\ticon: 'cart',\r\n                // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\r\n                // \t\t}]\r\n                // \t}\r\n                // },\r\n                if (appVm) {\r\n                    // 触发响应式\r\n                    appVm.$locale;\r\n                    if (!isWatchedAppLocale) {\r\n                        isWatchedAppLocale = true;\r\n                        watchAppLocale(appVm, i18n);\r\n                    }\r\n                }\r\n                return i18n.t(key, values);\r\n            };\r\n        }\r\n        return t(key, values);\r\n    };\r\n    return {\r\n        i18n,\r\n        f(message, values, delimiters) {\r\n            return i18n.f(message, values, delimiters);\r\n        },\r\n        t(key, values) {\r\n            return t(key, values);\r\n        },\r\n        add(locale, message, override = true) {\r\n            return i18n.add(locale, message, override);\r\n        },\r\n        watch(fn) {\r\n            return i18n.watchLocale(fn);\r\n        },\r\n        getLocale() {\r\n            return i18n.getLocale();\r\n        },\r\n        setLocale(newLocale) {\r\n            return i18n.setLocale(newLocale);\r\n        },\r\n    };\r\n}\r\n\r\nconst isString = (val) => typeof val === 'string';\r\nlet formater;\r\nfunction hasI18nJson(jsonObj, delimiters) {\r\n    if (!formater) {\r\n        formater = new BaseFormatter();\r\n    }\r\n    return walkJsonObj(jsonObj, (jsonObj, key) => {\r\n        const value = jsonObj[key];\r\n        if (isString(value)) {\r\n            if (isI18nStr(value, delimiters)) {\r\n                return true;\r\n            }\r\n        }\r\n        else {\r\n            return hasI18nJson(value, delimiters);\r\n        }\r\n    });\r\n}\r\nfunction parseI18nJson(jsonObj, values, delimiters) {\r\n    if (!formater) {\r\n        formater = new BaseFormatter();\r\n    }\r\n    walkJsonObj(jsonObj, (jsonObj, key) => {\r\n        const value = jsonObj[key];\r\n        if (isString(value)) {\r\n            if (isI18nStr(value, delimiters)) {\r\n                jsonObj[key] = compileStr(value, values, delimiters);\r\n            }\r\n        }\r\n        else {\r\n            parseI18nJson(value, values, delimiters);\r\n        }\r\n    });\r\n    return jsonObj;\r\n}\r\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\r\n    if (!isI18nStr(jsonStr, delimiters)) {\r\n        return jsonStr;\r\n    }\r\n    if (!formater) {\r\n        formater = new BaseFormatter();\r\n    }\r\n    const localeValues = [];\r\n    Object.keys(locales).forEach((name) => {\r\n        if (name !== locale) {\r\n            localeValues.push({\r\n                locale: name,\r\n                values: locales[name],\r\n            });\r\n        }\r\n    });\r\n    localeValues.unshift({ locale, values: locales[locale] });\r\n    try {\r\n        return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\r\n    }\r\n    catch (e) { }\r\n    return jsonStr;\r\n}\r\nfunction isI18nStr(value, delimiters) {\r\n    return value.indexOf(delimiters[0]) > -1;\r\n}\r\nfunction compileStr(value, values, delimiters) {\r\n    return formater.interpolate(value, values, delimiters).join('');\r\n}\r\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\r\n    const value = jsonObj[key];\r\n    if (isString(value)) {\r\n        // 存在国际化\r\n        if (isI18nStr(value, delimiters)) {\r\n            jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\r\n            if (localeValues.length > 1) {\r\n                // 格式化国际化语言\r\n                const valueLocales = (jsonObj[key + 'Locales'] = {});\r\n                localeValues.forEach((localValue) => {\r\n                    valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\r\n                });\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        compileJsonObj(value, localeValues, delimiters);\r\n    }\r\n}\r\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\r\n    walkJsonObj(jsonObj, (jsonObj, key) => {\r\n        compileValue(jsonObj, key, localeValues, delimiters);\r\n    });\r\n    return jsonObj;\r\n}\r\nfunction walkJsonObj(jsonObj, walk) {\r\n    if (isArray(jsonObj)) {\r\n        for (let i = 0; i < jsonObj.length; i++) {\r\n            if (walk(jsonObj, i)) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    else if (isObject(jsonObj)) {\r\n        for (const key in jsonObj) {\r\n            if (walk(jsonObj, key)) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\nfunction resolveLocale(locales) {\r\n    return (locale) => {\r\n        if (!locale) {\r\n            return locale;\r\n        }\r\n        locale = normalizeLocale(locale) || locale;\r\n        return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\r\n    };\r\n}\r\nfunction resolveLocaleChain(locale) {\r\n    const chain = [];\r\n    const tokens = locale.split('-');\r\n    while (tokens.length) {\r\n        chain.push(tokens.join('-'));\r\n        tokens.pop();\r\n    }\r\n    return chain;\r\n}\r\n\r\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\r\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\n/*  */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n  return v === undefined || v === null\n}\n\nfunction isDef (v) {\n  return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n  return v === true\n}\n\nfunction isFalse (v) {\n  return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n  return (\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    // $flow-disable-line\n    typeof value === 'symbol' ||\n    typeof value === 'boolean'\n  )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n  return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n  return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n  return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n  var n = parseFloat(String(val));\n  return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n  return (\n    isDef(val) &&\n    typeof val.then === 'function' &&\n    typeof val.catch === 'function'\n  )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n  return val == null\n    ? ''\n    : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n      ? JSON.stringify(val, null, 2)\n      : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n  str,\n  expectsLowerCase\n) {\n  var map = Object.create(null);\n  var list = str.split(',');\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase\n    ? function (val) { return map[val.toLowerCase()]; }\n    : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n  var cache = Object.create(null);\n  return (function cachedFn (str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str))\n  })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n  function boundFn (a) {\n    var l = arguments.length;\n    return l\n      ? l > 1\n        ? fn.apply(ctx, arguments)\n        : fn.call(ctx, a)\n      : fn.call(ctx)\n  }\n\n  boundFn._length = fn.length;\n  return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n  return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n  ? nativeBind\n  : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n  return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n  return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n  var res = {};\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n  return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime()\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) { return i }\n  }\n  return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  }\n}\n\nvar ASSET_TYPES = [\n  'component',\n  'directive',\n  'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n  'beforeCreate',\n  'created',\n  'beforeMount',\n  'mounted',\n  'beforeUpdate',\n  'updated',\n  'beforeDestroy',\n  'destroyed',\n  'activated',\n  'deactivated',\n  'errorCaptured',\n  'serverPrefetch'\n];\n\n/*  */\n\n\n\nvar config = ({\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  // $flow-disable-line\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Warn handler for watcher warns\n   */\n  warnHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  // $flow-disable-line\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Perform updates asynchronously. Intended to be used by Vue Test Utils\n   * This will significantly reduce performance if set to false.\n   */\n  async: true,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/*  */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n  if (bailRE.test(path)) {\n    return\n  }\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) { return }\n      obj = obj[segments[i]];\n    }\n    return obj\n  }\n}\n\n/*  */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', ({\n      get: function get () {\n      }\n    })); // https://github.com/facebook/flow/issues/285\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n  return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n  typeof Symbol !== 'undefined' && isNative(Symbol) &&\n  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = /*@__PURE__*/(function () {\n    function Set () {\n      this.set = Object.create(null);\n    }\n    Set.prototype.has = function has (key) {\n      return this.set[key] === true\n    };\n    Set.prototype.add = function add (key) {\n      this.set[key] = true;\n    };\n    Set.prototype.clear = function clear () {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }());\n}\n\n/*  */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n  var classify = function (str) { return str\n    .replace(classifyRE, function (c) { return c.toUpperCase(); })\n    .replace(/[-_]/g, ''); };\n\n  warn = function (msg, vm) {\n    var trace = vm ? generateComponentTrace(vm) : '';\n\n    if (config.warnHandler) {\n      config.warnHandler.call(null, msg, vm, trace);\n    } else if (hasConsole && (!config.silent)) {\n      console.error((\"[Vue warn]: \" + msg + trace));\n    }\n  };\n\n  tip = function (msg, vm) {\n    if (hasConsole && (!config.silent)) {\n      console.warn(\"[Vue tip]: \" + msg + (\n        vm ? generateComponentTrace(vm) : ''\n      ));\n    }\n  };\n\n  formatComponentName = function (vm, includeFile) {\n    if (vm.$root === vm) {\n      if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n        return ('') + vm.$options.__file\n      }\n      return '<Root>'\n    }\n    var options = typeof vm === 'function' && vm.cid != null\n      ? vm.options\n      : vm._isVue\n        ? vm.$options || vm.constructor.options\n        : vm;\n    var name = options.name || options._componentTag;\n    var file = options.__file;\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (\n      (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n      (file && includeFile !== false ? (\" at \" + file) : '')\n    )\n  };\n\n  var repeat = function (str, n) {\n    var res = '';\n    while (n) {\n      if (n % 2 === 1) { res += str; }\n      if (n > 1) { str += str; }\n      n >>= 1;\n    }\n    return res\n  };\n\n  generateComponentTrace = function (vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n      while (vm && vm.$options.name !== 'PageBody') {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n        !vm.$options.isReserved && tree.push(vm);\n        vm = vm.$parent;\n      }\n      return '\\n\\nfound in\\n\\n' + tree\n        .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n            ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n            : formatComponentName(vm))); })\n        .join('\\n')\n    } else {\n      return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n    }\n  };\n}\n\n/*  */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n  this.id = uid++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n  if (Dep.SharedObject.target) {\n    Dep.SharedObject.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify () {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n  if (process.env.NODE_ENV !== 'production' && !config.async) {\n    // subs aren't sorted in scheduler if not running async\n    // we need to sort them now to make sure they fire in correct\n    // order\n    subs.sort(function (a, b) { return a.id - b.id; });\n  }\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n  Dep.SharedObject.targetStack.push(target);\n  Dep.SharedObject.target = target;\n  Dep.target = target;\n}\n\nfunction popTarget () {\n  Dep.SharedObject.targetStack.pop();\n  Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n  Dep.target = Dep.SharedObject.target;\n}\n\n/*  */\n\nvar VNode = function VNode (\n  tag,\n  data,\n  children,\n  text,\n  elm,\n  context,\n  componentOptions,\n  asyncFactory\n) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.fnContext = undefined;\n  this.fnOptions = undefined;\n  this.fnScopeId = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n  this.asyncFactory = asyncFactory;\n  this.asyncMeta = undefined;\n  this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n  return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n  if ( text === void 0 ) text = '';\n\n  var node = new VNode();\n  node.text = text;\n  node.isComment = true;\n  return node\n};\n\nfunction createTextVNode (val) {\n  return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n  var cloned = new VNode(\n    vnode.tag,\n    vnode.data,\n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(),\n    vnode.text,\n    vnode.elm,\n    vnode.context,\n    vnode.componentOptions,\n    vnode.asyncFactory\n  );\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.fnContext = vnode.fnContext;\n  cloned.fnOptions = vnode.fnOptions;\n  cloned.fnScopeId = vnode.fnScopeId;\n  cloned.asyncMeta = vnode.asyncMeta;\n  cloned.isCloned = true;\n  return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n  'push',\n  'pop',\n  'shift',\n  'unshift',\n  'splice',\n  'sort',\n  'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n    switch (method) {\n      case 'push':\n      case 'unshift':\n        inserted = args;\n        break\n      case 'splice':\n        inserted = args.slice(2);\n        break\n    }\n    if (inserted) { ob.observeArray(inserted); }\n    // notify change\n    ob.dep.notify();\n    return result\n  });\n});\n\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n  shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n  if (Array.isArray(value)) {\n    if (hasProto) {\n      {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n        if(value.push !== value.__proto__.push){\n          copyAugment(value, arrayMethods, arrayKeys);\n        } else {\n          protoAugment(value, arrayMethods);\n        }\n      }\n    } else {\n      copyAugment(value, arrayMethods, arrayKeys);\n    }\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n  var keys = Object.keys(obj);\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i]);\n  }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n  if (!isObject(value) || value instanceof VNode) {\n    return\n  }\n  var ob;\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (\n    shouldObserve &&\n    !isServerRendering() &&\n    (Array.isArray(value) || isPlainObject(value)) &&\n    Object.isExtensible(value) &&\n    !value._isVue\n  ) {\n    ob = new Observer(value);\n  }\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n  return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n  obj,\n  key,\n  val,\n  customSetter,\n  shallow\n) {\n  var dep = new Dep();\n\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n  if (property && property.configurable === false) {\n    return\n  }\n\n  // cater for pre-defined getter/setters\n  var getter = property && property.get;\n  var setter = property && property.set;\n  if ((!getter || setter) && arguments.length === 2) {\n    val = obj[key];\n  }\n\n  var childOb = !shallow && observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter () {\n      var value = getter ? getter.call(obj) : val;\n      if (Dep.SharedObject.target) { // fixed by xxxxxx\n        dep.depend();\n        if (childOb) {\n          childOb.dep.depend();\n          if (Array.isArray(value)) {\n            dependArray(value);\n          }\n        }\n      }\n      return value\n    },\n    set: function reactiveSetter (newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n      if (newVal === value || (newVal !== newVal && value !== value)) {\n        return\n      }\n      /* eslint-enable no-self-compare */\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n        customSetter();\n      }\n      // #7981: for accessor properties without setter\n      if (getter && !setter) { return }\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n      childOb = !shallow && observe(newVal);\n      dep.notify();\n    }\n  });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val\n  }\n  if (key in target && !(key in Object.prototype)) {\n    target[key] = val;\n    return val\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid adding reactive properties to a Vue instance or its root $data ' +\n      'at runtime - declare it upfront in the data option.'\n    );\n    return val\n  }\n  if (!ob) {\n    target[key] = val;\n    return val\n  }\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n  if (process.env.NODE_ENV !== 'production' &&\n    (isUndef(target) || isPrimitive(target))\n  ) {\n    warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n  }\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.splice(key, 1);\n    return\n  }\n  var ob = (target).__ob__;\n  if (target._isVue || (ob && ob.vmCount)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      'Avoid deleting properties on a Vue instance or its root $data ' +\n      '- just set it to null.'\n    );\n    return\n  }\n  if (!hasOwn(target, key)) {\n    return\n  }\n  delete target[key];\n  if (!ob) {\n    return\n  }\n  ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\n        \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n        'creation with the `new` keyword.'\n      );\n    }\n    return defaultStrat(parent, child)\n  };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n  if (!from) { return to }\n  var key, toVal, fromVal;\n\n  var keys = hasSymbol\n    ? Reflect.ownKeys(from)\n    : Object.keys(from);\n\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i];\n    // in case the object is already observed...\n    if (key === '__ob__') { continue }\n    toVal = to[key];\n    fromVal = from[key];\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (\n      toVal !== fromVal &&\n      isPlainObject(toVal) &&\n      isPlainObject(fromVal)\n    ) {\n      mergeData(toVal, fromVal);\n    }\n  }\n  return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal\n    }\n    if (!parentVal) {\n      return childVal\n    }\n    // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n    return function mergedDataFn () {\n      return mergeData(\n        typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n        typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n      )\n    }\n  } else {\n    return function mergedInstanceDataFn () {\n      // instance merge\n      var instanceData = typeof childVal === 'function'\n        ? childVal.call(vm, vm)\n        : childVal;\n      var defaultData = typeof parentVal === 'function'\n        ? parentVal.call(vm, vm)\n        : parentVal;\n      if (instanceData) {\n        return mergeData(instanceData, defaultData)\n      } else {\n        return defaultData\n      }\n    }\n  }\n}\n\nstrats.data = function (\n  parentVal,\n  childVal,\n  vm\n) {\n  if (!vm) {\n    if (childVal && typeof childVal !== 'function') {\n      process.env.NODE_ENV !== 'production' && warn(\n        'The \"data\" option should be a function ' +\n        'that returns a per-instance value in component ' +\n        'definitions.',\n        vm\n      );\n\n      return parentVal\n    }\n    return mergeDataOrFn(parentVal, childVal)\n  }\n\n  return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n  parentVal,\n  childVal\n) {\n  var res = childVal\n    ? parentVal\n      ? parentVal.concat(childVal)\n      : Array.isArray(childVal)\n        ? childVal\n        : [childVal]\n    : parentVal;\n  return res\n    ? dedupeHooks(res)\n    : res\n}\n\nfunction dedupeHooks (hooks) {\n  var res = [];\n  for (var i = 0; i < hooks.length; i++) {\n    if (res.indexOf(hooks[i]) === -1) {\n      res.push(hooks[i]);\n    }\n  }\n  return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  var res = Object.create(parentVal || null);\n  if (childVal) {\n    process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n    return extend(res, childVal)\n  } else {\n    return res\n  }\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  // work around Firefox's Object.prototype.watch...\n  if (parentVal === nativeWatch) { parentVal = undefined; }\n  if (childVal === nativeWatch) { childVal = undefined; }\n  /* istanbul ignore if */\n  if (!childVal) { return Object.create(parentVal || null) }\n  if (process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = {};\n  extend(ret, parentVal);\n  for (var key$1 in childVal) {\n    var parent = ret[key$1];\n    var child = childVal[key$1];\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n    ret[key$1] = parent\n      ? parent.concat(child)\n      : Array.isArray(child) ? child : [child];\n  }\n  return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n  parentVal,\n  childVal,\n  vm,\n  key\n) {\n  if (childVal && process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n  if (!parentVal) { return childVal }\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n  if (childVal) { extend(ret, childVal); }\n  return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n  return childVal === undefined\n    ? parentVal\n    : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n  for (var key in options.components) {\n    validateComponentName(key);\n  }\n}\n\nfunction validateComponentName (name) {\n  if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n    warn(\n      'Invalid component name: \"' + name + '\". Component names ' +\n      'should conform to valid custom element name in html5 specification.'\n    );\n  }\n  if (isBuiltInTag(name) || config.isReservedTag(name)) {\n    warn(\n      'Do not use built-in or reserved HTML elements as component ' +\n      'id: ' + name\n    );\n  }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n  var props = options.props;\n  if (!props) { return }\n  var res = {};\n  var i, val, name;\n  if (Array.isArray(props)) {\n    i = props.length;\n    while (i--) {\n      val = props[i];\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = { type: null };\n      } else if (process.env.NODE_ENV !== 'production') {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val)\n        ? val\n        : { type: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(props)) + \".\",\n      vm\n    );\n  }\n  options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n  var inject = options.inject;\n  if (!inject) { return }\n  var normalized = options.inject = {};\n  if (Array.isArray(inject)) {\n    for (var i = 0; i < inject.length; i++) {\n      normalized[inject[i]] = { from: inject[i] };\n    }\n  } else if (isPlainObject(inject)) {\n    for (var key in inject) {\n      var val = inject[key];\n      normalized[key] = isPlainObject(val)\n        ? extend({ from: key }, val)\n        : { from: val };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\n      \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n      \"but got \" + (toRawType(inject)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n  var dirs = options.directives;\n  if (dirs) {\n    for (var key in dirs) {\n      var def$$1 = dirs[key];\n      if (typeof def$$1 === 'function') {\n        dirs[key] = { bind: def$$1, update: def$$1 };\n      }\n    }\n  }\n}\n\nfunction assertObjectType (name, value, vm) {\n  if (!isPlainObject(value)) {\n    warn(\n      \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n      \"but got \" + (toRawType(value)) + \".\",\n      vm\n    );\n  }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n  parent,\n  child,\n  vm\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child, vm);\n  normalizeInject(child, vm);\n  normalizeDirectives(child);\n\n  // Apply extends and mixins on the child options,\n  // but only if it is a raw options object that isn't\n  // the result of another mergeOptions call.\n  // Only merged options has the _base property.\n  if (!child._base) {\n    if (child.extends) {\n      parent = mergeOptions(parent, child.extends, vm);\n    }\n    if (child.mixins) {\n      for (var i = 0, l = child.mixins.length; i < l; i++) {\n        parent = mergeOptions(parent, child.mixins[i], vm);\n      }\n    }\n  }\n\n  var options = {};\n  var key;\n  for (key in parent) {\n    mergeField(key);\n  }\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n  function mergeField (key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n  return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n  options,\n  type,\n  id,\n  warnMissing\n) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return\n  }\n  var assets = options[type];\n  // check local registration variations first\n  if (hasOwn(assets, id)) { return assets[id] }\n  var camelizedId = camelize(id);\n  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n  var PascalCaseId = capitalize(camelizedId);\n  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n  // fallback to prototype chain\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n  if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n    warn(\n      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n      options\n    );\n  }\n  return res\n}\n\n/*  */\n\n\n\nfunction validateProp (\n  key,\n  propOptions,\n  propsData,\n  vm\n) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key];\n  // boolean casting\n  var booleanIndex = getTypeIndex(Boolean, prop.type);\n  if (booleanIndex > -1) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (value === '' || value === hyphenate(key)) {\n      // only cast empty string / same name to boolean if\n      // boolean has higher priority\n      var stringIndex = getTypeIndex(String, prop.type);\n      if (stringIndex < 0 || booleanIndex < stringIndex) {\n        value = true;\n      }\n    }\n  }\n  // check default value\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key);\n    // since the default value is a fresh copy,\n    // make sure to observe it.\n    var prevShouldObserve = shouldObserve;\n    toggleObserving(true);\n    observe(value);\n    toggleObserving(prevShouldObserve);\n  }\n  if (\n    process.env.NODE_ENV !== 'production' &&\n    // skip validation for weex recycle-list child component props\n    !(false)\n  ) {\n    assertProp(prop, key, value, vm, absent);\n  }\n  return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined\n  }\n  var def = prop.default;\n  // warn against non-factory defaults for Object & Array\n  if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n    warn(\n      'Invalid default value for prop \"' + key + '\": ' +\n      'Props with type Object/Array must use a factory function ' +\n      'to return the default value.',\n      vm\n    );\n  }\n  // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n  if (vm && vm.$options.propsData &&\n    vm.$options.propsData[key] === undefined &&\n    vm._props[key] !== undefined\n  ) {\n    return vm._props[key]\n  }\n  // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n  return typeof def === 'function' && getType(prop.type) !== 'Function'\n    ? def.call(vm)\n    : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n  prop,\n  name,\n  value,\n  vm,\n  absent\n) {\n  if (prop.required && absent) {\n    warn(\n      'Missing required prop: \"' + name + '\"',\n      vm\n    );\n    return\n  }\n  if (value == null && !prop.required) {\n    return\n  }\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i]);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n\n  if (!valid) {\n    warn(\n      getInvalidTypeMessage(name, value, expectedTypes),\n      vm\n    );\n    return\n  }\n  var validator = prop.validator;\n  if (validator) {\n    if (!validator(value)) {\n      warn(\n        'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n        vm\n      );\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n  var valid;\n  var expectedType = getType(type);\n  if (simpleCheckRE.test(expectedType)) {\n    var t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    // for primitive wrapper objects\n    if (!valid && t === 'object') {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid: valid,\n    expectedType: expectedType\n  }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n  var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n  return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n  return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n  if (!Array.isArray(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1\n  }\n  for (var i = 0, len = expectedTypes.length; i < len; i++) {\n    if (isSameType(expectedTypes[i], type)) {\n      return i\n    }\n  }\n  return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n  var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n    \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n  var expectedType = expectedTypes[0];\n  var receivedType = toRawType(value);\n  var expectedValue = styleValue(value, expectedType);\n  var receivedValue = styleValue(value, receivedType);\n  // check if we need to specify expected value\n  if (expectedTypes.length === 1 &&\n      isExplicable(expectedType) &&\n      !isBoolean(expectedType, receivedType)) {\n    message += \" with value \" + expectedValue;\n  }\n  message += \", got \" + receivedType + \" \";\n  // check if we need to specify received value\n  if (isExplicable(receivedType)) {\n    message += \"with value \" + receivedValue + \".\";\n  }\n  return message\n}\n\nfunction styleValue (value, type) {\n  if (type === 'String') {\n    return (\"\\\"\" + value + \"\\\"\")\n  } else if (type === 'Number') {\n    return (\"\" + (Number(value)))\n  } else {\n    return (\"\" + value)\n  }\n}\n\nfunction isExplicable (value) {\n  var explicitTypes = ['string', 'number', 'boolean'];\n  return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/*  */\n\nfunction handleError (err, vm, info) {\n  // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n  // See: https://github.com/vuejs/vuex/issues/1505\n  pushTarget();\n  try {\n    if (vm) {\n      var cur = vm;\n      while ((cur = cur.$parent)) {\n        var hooks = cur.$options.errorCaptured;\n        if (hooks) {\n          for (var i = 0; i < hooks.length; i++) {\n            try {\n              var capture = hooks[i].call(cur, err, vm, info) === false;\n              if (capture) { return }\n            } catch (e) {\n              globalHandleError(e, cur, 'errorCaptured hook');\n            }\n          }\n        }\n      }\n    }\n    globalHandleError(err, vm, info);\n  } finally {\n    popTarget();\n  }\n}\n\nfunction invokeWithErrorHandling (\n  handler,\n  context,\n  args,\n  vm,\n  info\n) {\n  var res;\n  try {\n    res = args ? handler.apply(context, args) : handler.call(context);\n    if (res && !res._isVue && isPromise(res) && !res._handled) {\n      res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n      // issue #9511\n      // avoid catch triggering multiple times when nested calls\n      res._handled = true;\n    }\n  } catch (e) {\n    handleError(e, vm, info);\n  }\n  return res\n}\n\nfunction globalHandleError (err, vm, info) {\n  if (config.errorHandler) {\n    try {\n      return config.errorHandler.call(null, err, vm, info)\n    } catch (e) {\n      // if the user intentionally throws the original error in the handler,\n      // do not log it twice\n      if (e !== err) {\n        logError(e, null, 'config.errorHandler');\n      }\n    }\n  }\n  logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n  }\n  /* istanbul ignore else */\n  if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n    console.error(err);\n  } else {\n    throw err\n  }\n}\n\n/*  */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n  pending = false;\n  var copies = callbacks.slice(0);\n  callbacks.length = 0;\n  for (var i = 0; i < copies.length; i++) {\n    copies[i]();\n  }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n  var p = Promise.resolve();\n  timerFunc = function () {\n    p.then(flushCallbacks);\n    // In problematic UIWebViews, Promise.then doesn't completely break, but\n    // it can get stuck in a weird state where callbacks are pushed into the\n    // microtask queue but the queue isn't being flushed, until the browser\n    // needs to do some other work, e.g. handle a timer. Therefore we can\n    // \"force\" the microtask queue to be flushed by adding an empty timer.\n    if (isIOS) { setTimeout(noop); }\n  };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n  isNative(MutationObserver) ||\n  // PhantomJS and iOS 7.x\n  MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n  // Use MutationObserver where native Promise is not available,\n  // e.g. PhantomJS, iOS7, Android 4.4\n  // (#6466 MutationObserver is unreliable in IE11)\n  var counter = 1;\n  var observer = new MutationObserver(flushCallbacks);\n  var textNode = document.createTextNode(String(counter));\n  observer.observe(textNode, {\n    characterData: true\n  });\n  timerFunc = function () {\n    counter = (counter + 1) % 2;\n    textNode.data = String(counter);\n  };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n  // Fallback to setImmediate.\n  // Technically it leverages the (macro) task queue,\n  // but it is still a better choice than setTimeout.\n  timerFunc = function () {\n    setImmediate(flushCallbacks);\n  };\n} else {\n  // Fallback to setTimeout.\n  timerFunc = function () {\n    setTimeout(flushCallbacks, 0);\n  };\n}\n\nfunction nextTick (cb, ctx) {\n  var _resolve;\n  callbacks.push(function () {\n    if (cb) {\n      try {\n        cb.call(ctx);\n      } catch (e) {\n        handleError(e, ctx, 'nextTick');\n      }\n    } else if (_resolve) {\n      _resolve(ctx);\n    }\n  });\n  if (!pending) {\n    pending = true;\n    timerFunc();\n  }\n  // $flow-disable-line\n  if (!cb && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve) {\n      _resolve = resolve;\n    })\n  }\n}\n\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n  var allowedGlobals = makeMap(\n    'Infinity,undefined,NaN,isFinite,isNaN,' +\n    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n    'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function (target, key) {\n    warn(\n      \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n      'referenced during render. Make sure that this property is reactive, ' +\n      'either in the data option, or for class-based components, by ' +\n      'initializing the property. ' +\n      'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n      target\n    );\n  };\n\n  var warnReservedPrefix = function (target, key) {\n    warn(\n      \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n      'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n      'prevent conflicts with Vue internals. ' +\n      'See: https://vuejs.org/v2/api/#data',\n      target\n    );\n  };\n\n  var hasProxy =\n    typeof Proxy !== 'undefined' && isNative(Proxy);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set (target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n          return false\n        } else {\n          target[key] = value;\n          return true\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has (target, key) {\n      var has = key in target;\n      var isAllowed = allowedGlobals(key) ||\n        (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n      if (!has && !isAllowed) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return has || !isAllowed\n    }\n  };\n\n  var getHandler = {\n    get: function get (target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        if (key in target.$data) { warnReservedPrefix(target, key); }\n        else { warnNonPresent(target, key); }\n      }\n      return target[key]\n    }\n  };\n\n  initProxy = function initProxy (vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped\n        ? getHandler\n        : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n\n/*  */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n  _traverse(val, seenObjects);\n  seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n  if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n    return\n  }\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n    if (seen.has(depId)) {\n      return\n    }\n    seen.add(depId);\n  }\n  if (isA) {\n    i = val.length;\n    while (i--) { _traverse(val[i], seen); }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n    while (i--) { _traverse(val[keys[i]], seen); }\n  }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n  if (\n    perf &&\n    perf.mark &&\n    perf.measure &&\n    perf.clearMarks &&\n    perf.clearMeasures\n  ) {\n    mark = function (tag) { return perf.mark(tag); };\n    measure = function (name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag);\n      // perf.clearMeasures(name)\n    };\n  }\n}\n\n/*  */\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  }\n});\n\nfunction createFnInvoker (fns, vm) {\n  function invoker () {\n    var arguments$1 = arguments;\n\n    var fns = invoker.fns;\n    if (Array.isArray(fns)) {\n      var cloned = fns.slice();\n      for (var i = 0; i < cloned.length; i++) {\n        invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n      }\n    } else {\n      // return handler return value for single handlers\n      return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n    }\n  }\n  invoker.fns = fns;\n  return invoker\n}\n\nfunction updateListeners (\n  on,\n  oldOn,\n  add,\n  remove$$1,\n  createOnceHandler,\n  vm\n) {\n  var name, def$$1, cur, old, event;\n  for (name in on) {\n    def$$1 = cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n    if (isUndef(cur)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n        vm\n      );\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur, vm);\n      }\n      if (isTrue(event.once)) {\n        cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n      }\n      add(event.name, cur, event.capture, event.passive, event.params);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\n// fixed by xxxxxx (mp properties)\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\n  var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\n  if (isUndef(propOptions)) {\n    return res\n  }\n  var externalClasses = Ctor.options.mpOptions.externalClasses || [];\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      var result = checkProp(res, props, key, altKey, true) ||\n          checkProp(res, attrs, key, altKey, false);\n      // externalClass\n      if (\n        result &&\n        res[key] &&\n        externalClasses.indexOf(altKey) !== -1 &&\n        context[camelize(res[key])]\n      ) {\n        // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n        res[key] = context[camelize(res[key])];\n      }\n    }\n  }\n  return res\n}\n\nfunction extractPropsFromVNodeData (\n  data,\n  Ctor,\n  tag,\n  context// fixed by xxxxxx\n) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n  if (isUndef(propOptions)) {\n    // fixed by xxxxxx\n    return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n  }\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n      if (process.env.NODE_ENV !== 'production') {\n        var keyInLowerCase = key.toLowerCase();\n        if (\n          key !== keyInLowerCase &&\n          attrs && hasOwn(attrs, keyInLowerCase)\n        ) {\n          tip(\n            \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n            (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n            \" \\\"\" + key + \"\\\". \" +\n            \"Note that HTML attributes are case-insensitive and camelCased \" +\n            \"props need to use their kebab-case equivalents when using in-DOM \" +\n            \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n          );\n        }\n      }\n      checkProp(res, props, key, altKey, true) ||\n      checkProp(res, attrs, key, altKey, false);\n    }\n  }\n  // fixed by xxxxxx\n  return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n  res,\n  hash,\n  key,\n  altKey,\n  preserve\n) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n      if (!preserve) {\n        delete hash[key];\n      }\n      return true\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n      if (!preserve) {\n        delete hash[altKey];\n      }\n      return true\n    }\n  }\n  return false\n}\n\n/*  */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children)\n    }\n  }\n  return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n  return isPrimitive(children)\n    ? [createTextVNode(children)]\n    : Array.isArray(children)\n      ? normalizeArrayChildren(children)\n      : undefined\n}\n\nfunction isTextNode (node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n  var res = [];\n  var i, c, lastIndex, last;\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n    if (isUndef(c) || typeof c === 'boolean') { continue }\n    lastIndex = res.length - 1;\n    last = res[lastIndex];\n    //  nested\n    if (Array.isArray(c)) {\n      if (c.length > 0) {\n        c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n        // merge adjacent text nodes\n        if (isTextNode(c[0]) && isTextNode(last)) {\n          res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n          c.shift();\n        }\n        res.push.apply(res, c);\n      }\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        res[lastIndex] = createTextVNode(last.text + c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[lastIndex] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) &&\n          isDef(c.tag) &&\n          isUndef(c.key) &&\n          isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n        res.push(c);\n      }\n    }\n  }\n  return res\n}\n\n/*  */\n\nfunction initProvide (vm) {\n  var provide = vm.$options.provide;\n  if (provide) {\n    vm._provided = typeof provide === 'function'\n      ? provide.call(vm)\n      : provide;\n  }\n}\n\nfunction initInjections (vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n  if (result) {\n    toggleObserving(false);\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production') {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\n            \"Avoid mutating an injected value directly since the changes will be \" +\n            \"overwritten whenever the provided component re-renders. \" +\n            \"injection being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        });\n      } else {\n        defineReactive$$1(vm, key, result[key]);\n      }\n    });\n    toggleObserving(true);\n  }\n}\n\nfunction resolveInject (inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    var result = Object.create(null);\n    var keys = hasSymbol\n      ? Reflect.ownKeys(inject)\n      : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      // #6574 in case the inject object is observed...\n      if (key === '__ob__') { continue }\n      var provideKey = inject[key].from;\n      var source = vm;\n      while (source) {\n        if (source._provided && hasOwn(source._provided, provideKey)) {\n          result[key] = source._provided[provideKey];\n          break\n        }\n        source = source.$parent;\n      }\n      if (!source) {\n        if ('default' in inject[key]) {\n          var provideDefault = inject[key].default;\n          result[key] = typeof provideDefault === 'function'\n            ? provideDefault.call(vm)\n            : provideDefault;\n        } else if (process.env.NODE_ENV !== 'production') {\n          warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n        }\n      }\n    }\n    return result\n  }\n}\n\n/*  */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n  children,\n  context\n) {\n  if (!children || !children.length) {\n    return {}\n  }\n  var slots = {};\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    var data = child.data;\n    // remove slot attribute if the node is resolved as a Vue slot node\n    if (data && data.attrs && data.attrs.slot) {\n      delete data.attrs.slot;\n    }\n    // named slots should only be respected if the vnode was rendered in the\n    // same context.\n    if ((child.context === context || child.fnContext === context) &&\n      data && data.slot != null\n    ) {\n      var name = data.slot;\n      var slot = (slots[name] || (slots[name] = []));\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children || []);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      // fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page\n      if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){\n        (slots['page'] || (slots['page'] = [])).push(child);\n      }else{\n        (slots.default || (slots.default = [])).push(child);\n      }\n    }\n  }\n  // ignore slots that contains only whitespace\n  for (var name$1 in slots) {\n    if (slots[name$1].every(isWhitespace)) {\n      delete slots[name$1];\n    }\n  }\n  return slots\n}\n\nfunction isWhitespace (node) {\n  return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/*  */\n\nfunction normalizeScopedSlots (\n  slots,\n  normalSlots,\n  prevSlots\n) {\n  var res;\n  var hasNormalSlots = Object.keys(normalSlots).length > 0;\n  var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n  var key = slots && slots.$key;\n  if (!slots) {\n    res = {};\n  } else if (slots._normalized) {\n    // fast path 1: child component re-render only, parent did not change\n    return slots._normalized\n  } else if (\n    isStable &&\n    prevSlots &&\n    prevSlots !== emptyObject &&\n    key === prevSlots.$key &&\n    !hasNormalSlots &&\n    !prevSlots.$hasNormal\n  ) {\n    // fast path 2: stable scoped slots w/ no normal slots to proxy,\n    // only need to normalize once\n    return prevSlots\n  } else {\n    res = {};\n    for (var key$1 in slots) {\n      if (slots[key$1] && key$1[0] !== '$') {\n        res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n      }\n    }\n  }\n  // expose normal slots on scopedSlots\n  for (var key$2 in normalSlots) {\n    if (!(key$2 in res)) {\n      res[key$2] = proxyNormalSlot(normalSlots, key$2);\n    }\n  }\n  // avoriaz seems to mock a non-extensible $scopedSlots object\n  // and when that is passed down this would cause an error\n  if (slots && Object.isExtensible(slots)) {\n    (slots)._normalized = res;\n  }\n  def(res, '$stable', isStable);\n  def(res, '$key', key);\n  def(res, '$hasNormal', hasNormalSlots);\n  return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n  var normalized = function () {\n    var res = arguments.length ? fn.apply(null, arguments) : fn({});\n    res = res && typeof res === 'object' && !Array.isArray(res)\n      ? [res] // single vnode\n      : normalizeChildren(res);\n    return res && (\n      res.length === 0 ||\n      (res.length === 1 && res[0].isComment) // #9658\n    ) ? undefined\n      : res\n  };\n  // this is a slot using the new v-slot syntax without scope. although it is\n  // compiled as a scoped slot, render fn users would expect it to be present\n  // on this.$slots because the usage is semantically a normal slot.\n  if (fn.proxy) {\n    Object.defineProperty(normalSlots, key, {\n      get: normalized,\n      enumerable: true,\n      configurable: true\n    });\n  }\n  return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n  return function () { return slots[key]; }\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n  val,\n  render\n) {\n  var ret, i, l, keys, key;\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i, i, i); // fixed by xxxxxx\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx\n    }\n  } else if (isObject(val)) {\n    if (hasSymbol && val[Symbol.iterator]) {\n      ret = [];\n      var iterator = val[Symbol.iterator]();\n      var result = iterator.next();\n      while (!result.done) {\n        ret.push(render(result.value, ret.length, i, i++)); // fixed by xxxxxx\n        result = iterator.next();\n      }\n    } else {\n      keys = Object.keys(val);\n      ret = new Array(keys.length);\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[i] = render(val[key], key, i, i); // fixed by xxxxxx\n      }\n    }\n  }\n  if (!isDef(ret)) {\n    ret = [];\n  }\n  (ret)._isVList = true;\n  return ret\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n  name,\n  fallback,\n  props,\n  bindObject\n) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  var nodes;\n  if (scopedSlotFn) { // scoped slot\n    props = props || {};\n    if (bindObject) {\n      if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n        warn(\n          'slot v-bind without argument expects an Object',\n          this\n        );\n      }\n      props = extend(extend({}, bindObject), props);\n    }\n    // fixed by xxxxxx app-plus scopedSlot\n    nodes = scopedSlotFn(props, this, props._i) || fallback;\n  } else {\n    nodes = this.$slots[name] || fallback;\n  }\n\n  var target = props && props.slot;\n  if (target) {\n    return this.$createElement('template', { slot: target }, nodes)\n  } else {\n    return nodes\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/*  */\n\nfunction isKeyNotMatch (expect, actual) {\n  if (Array.isArray(expect)) {\n    return expect.indexOf(actual) === -1\n  } else {\n    return expect !== actual\n  }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n  eventKeyCode,\n  key,\n  builtInKeyCode,\n  eventKeyName,\n  builtInKeyName\n) {\n  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName)\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key\n  }\n}\n\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n  data,\n  tag,\n  value,\n  asProp,\n  isSync\n) {\n  if (value) {\n    if (!isObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-bind without argument expects an Object or Array value',\n        this\n      );\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n      var hash;\n      var loop = function ( key ) {\n        if (\n          key === 'class' ||\n          key === 'style' ||\n          isReservedAttribute(key)\n        ) {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key)\n            ? data.domProps || (data.domProps = {})\n            : data.attrs || (data.attrs = {});\n        }\n        var camelizedKey = camelize(key);\n        var hyphenatedKey = hyphenate(key);\n        if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n          hash[key] = value[key];\n\n          if (isSync) {\n            var on = data.on || (data.on = {});\n            on[(\"update:\" + key)] = function ($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      };\n\n      for (var key in value) loop( key );\n    }\n  }\n  return data\n}\n\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n  index,\n  isInFor\n) {\n  var cached = this._staticTrees || (this._staticTrees = []);\n  var tree = cached[index];\n  // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree.\n  if (tree && !isInFor) {\n    return tree\n  }\n  // otherwise, render a fresh tree.\n  tree = cached[index] = this.$options.staticRenderFns[index].call(\n    this._renderProxy,\n    null,\n    this // for render fns generated for functional component templates\n  );\n  markStatic(tree, (\"__static__\" + index), false);\n  return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n  tree,\n  index,\n  key\n) {\n  markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n  return tree\n}\n\nfunction markStatic (\n  tree,\n  key,\n  isOnce\n) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n\n/*  */\n\nfunction bindObjectListeners (data, value) {\n  if (value) {\n    if (!isPlainObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        'v-on without argument expects an Object value',\n        this\n      );\n    } else {\n      var on = data.on = data.on ? extend({}, data.on) : {};\n      for (var key in value) {\n        var existing = on[key];\n        var ours = value[key];\n        on[key] = existing ? [].concat(existing, ours) : ours;\n      }\n    }\n  }\n  return data\n}\n\n/*  */\n\nfunction resolveScopedSlots (\n  fns, // see flow/vnode\n  res,\n  // the following are added in 2.6\n  hasDynamicKeys,\n  contentHashKey\n) {\n  res = res || { $stable: !hasDynamicKeys };\n  for (var i = 0; i < fns.length; i++) {\n    var slot = fns[i];\n    if (Array.isArray(slot)) {\n      resolveScopedSlots(slot, res, hasDynamicKeys);\n    } else if (slot) {\n      // marker for reverse proxying v-slot without scope on this.$slots\n      if (slot.proxy) {\n        slot.fn.proxy = true;\n      }\n      res[slot.key] = slot.fn;\n    }\n  }\n  if (contentHashKey) {\n    (res).$key = contentHashKey;\n  }\n  return res\n}\n\n/*  */\n\nfunction bindDynamicKeys (baseObj, values) {\n  for (var i = 0; i < values.length; i += 2) {\n    var key = values[i];\n    if (typeof key === 'string' && key) {\n      baseObj[values[i]] = values[i + 1];\n    } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n      // null is a special value for explicitly removing a binding\n      warn(\n        (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n        this\n      );\n    }\n  }\n  return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n  return typeof value === 'string' ? symbol + value : value\n}\n\n/*  */\n\nfunction installRenderHelpers (target) {\n  target._o = markOnce;\n  target._n = toNumber;\n  target._s = toString;\n  target._l = renderList;\n  target._t = renderSlot;\n  target._q = looseEqual;\n  target._i = looseIndexOf;\n  target._m = renderStatic;\n  target._f = resolveFilter;\n  target._k = checkKeyCodes;\n  target._b = bindObjectProps;\n  target._v = createTextVNode;\n  target._e = createEmptyVNode;\n  target._u = resolveScopedSlots;\n  target._g = bindObjectListeners;\n  target._d = bindDynamicKeys;\n  target._p = prependModifier;\n}\n\n/*  */\n\nfunction FunctionalRenderContext (\n  data,\n  props,\n  children,\n  parent,\n  Ctor\n) {\n  var this$1 = this;\n\n  var options = Ctor.options;\n  // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n  var contextVm;\n  if (hasOwn(parent, '_uid')) {\n    contextVm = Object.create(parent);\n    // $flow-disable-line\n    contextVm._original = parent;\n  } else {\n    // the context vm passed in is a functional context as well.\n    // in this case we want to make sure we are able to get a hold to the\n    // real context instance.\n    contextVm = parent;\n    // $flow-disable-line\n    parent = parent._original;\n  }\n  var isCompiled = isTrue(options._compiled);\n  var needNormalization = !isCompiled;\n\n  this.data = data;\n  this.props = props;\n  this.children = children;\n  this.parent = parent;\n  this.listeners = data.on || emptyObject;\n  this.injections = resolveInject(options.inject, parent);\n  this.slots = function () {\n    if (!this$1.$slots) {\n      normalizeScopedSlots(\n        data.scopedSlots,\n        this$1.$slots = resolveSlots(children, parent)\n      );\n    }\n    return this$1.$slots\n  };\n\n  Object.defineProperty(this, 'scopedSlots', ({\n    enumerable: true,\n    get: function get () {\n      return normalizeScopedSlots(data.scopedSlots, this.slots())\n    }\n  }));\n\n  // support for compiled functional template\n  if (isCompiled) {\n    // exposing $options for renderStatic()\n    this.$options = options;\n    // pre-resolve slots for renderSlot()\n    this.$slots = this.slots();\n    this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n  }\n\n  if (options._scopeId) {\n    this._c = function (a, b, c, d) {\n      var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n      if (vnode && !Array.isArray(vnode)) {\n        vnode.fnScopeId = options._scopeId;\n        vnode.fnContext = parent;\n      }\n      return vnode\n    };\n  } else {\n    this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n  }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n  Ctor,\n  propsData,\n  data,\n  contextVm,\n  children\n) {\n  var options = Ctor.options;\n  var props = {};\n  var propOptions = options.props;\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || emptyObject);\n    }\n  } else {\n    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n    if (isDef(data.props)) { mergeProps(props, data.props); }\n  }\n\n  var renderContext = new FunctionalRenderContext(\n    data,\n    props,\n    children,\n    contextVm,\n    Ctor\n  );\n\n  var vnode = options.render.call(null, renderContext._c, renderContext);\n\n  if (vnode instanceof VNode) {\n    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n  } else if (Array.isArray(vnode)) {\n    var vnodes = normalizeChildren(vnode) || [];\n    var res = new Array(vnodes.length);\n    for (var i = 0; i < vnodes.length; i++) {\n      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n    }\n    return res\n  }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n  // #7817 clone node before setting fnContext, otherwise if the node is reused\n  // (e.g. it was from a cached normal slot) the fnContext causes named slots\n  // that should not be matched to match.\n  var clone = cloneVNode(vnode);\n  clone.fnContext = contextVm;\n  clone.fnOptions = options;\n  if (process.env.NODE_ENV !== 'production') {\n    (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n  }\n  if (data.slot) {\n    (clone.data || (clone.data = {})).slot = data.slot;\n  }\n  return clone\n}\n\nfunction mergeProps (to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n  init: function init (vnode, hydrating) {\n    if (\n      vnode.componentInstance &&\n      !vnode.componentInstance._isDestroyed &&\n      vnode.data.keepAlive\n    ) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    } else {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(\n        vnode,\n        activeInstance\n      );\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    }\n  },\n\n  prepatch: function prepatch (oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(\n      child,\n      options.propsData, // updated props\n      options.listeners, // updated listeners\n      vnode, // new parent vnode\n      options.children // new children\n    );\n  },\n\n  insert: function insert (vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isMounted) {\n      callHook(componentInstance, 'onServiceCreated');\n      callHook(componentInstance, 'onServiceAttached');\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  },\n\n  destroy: function destroy (vnode) {\n    var componentInstance = vnode.componentInstance;\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true /* direct */);\n      }\n    }\n  }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n  Ctor,\n  data,\n  context,\n  children,\n  tag\n) {\n  if (isUndef(Ctor)) {\n    return\n  }\n\n  var baseCtor = context.$options._base;\n\n  // plain options object: turn it into a constructor\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  }\n\n  // if at this stage it's not a constructor or an async component factory,\n  // reject.\n  if (typeof Ctor !== 'function') {\n    if (process.env.NODE_ENV !== 'production') {\n      warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n    }\n    return\n  }\n\n  // async component\n  var asyncFactory;\n  if (isUndef(Ctor.cid)) {\n    asyncFactory = Ctor;\n    Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n    if (Ctor === undefined) {\n      // return a placeholder node for async component, which is rendered\n      // as a comment node but preserves all the raw information for the node.\n      // the information will be used for async server-rendering and hydration.\n      return createAsyncPlaceholder(\n        asyncFactory,\n        data,\n        context,\n        children,\n        tag\n      )\n    }\n  }\n\n  data = data || {};\n\n  // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n  resolveConstructorOptions(Ctor);\n\n  // transform component v-model data into props & events\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  }\n\n  // extract props\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx\n\n  // functional component\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children)\n  }\n\n  // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n  var listeners = data.on;\n  // replace with listeners with .native modifier\n  // so it gets processed during parent component patch.\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners & slot\n\n    // work around flow\n    var slot = data.slot;\n    data = {};\n    if (slot) {\n      data.slot = slot;\n    }\n  }\n\n  // install component management hooks onto the placeholder node\n  installComponentHooks(data);\n\n  // return a placeholder vnode\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\n    (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n    data, undefined, undefined, undefined, context,\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n    asyncFactory\n  );\n\n  return vnode\n}\n\nfunction createComponentInstanceForVnode (\n  vnode, // we know it's MountedComponentVNode but flow doesn't\n  parent // activeInstance in lifecycle state\n) {\n  var options = {\n    _isComponent: true,\n    _parentVnode: vnode,\n    parent: parent\n  };\n  // check inline-template render functions\n  var inlineTemplate = vnode.data.inlineTemplate;\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n  return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n  var hooks = data.hook || (data.hook = {});\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var existing = hooks[key];\n    var toMerge = componentVNodeHooks[key];\n    if (existing !== toMerge && !(existing && existing._merged)) {\n      hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n    }\n  }\n}\n\nfunction mergeHook$1 (f1, f2) {\n  var merged = function (a, b) {\n    // flow complains about extra args which is why we use any\n    f1(a, b);\n    f2(a, b);\n  };\n  merged._merged = true;\n  return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n  var prop = (options.model && options.model.prop) || 'value';\n  var event = (options.model && options.model.event) || 'input'\n  ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  var existing = on[event];\n  var callback = data.model.callback;\n  if (isDef(existing)) {\n    if (\n      Array.isArray(existing)\n        ? existing.indexOf(callback) === -1\n        : existing !== callback\n    ) {\n      on[event] = [callback].concat(existing);\n    }\n  } else {\n    on[event] = callback;\n  }\n}\n\n/*  */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType,\n  alwaysNormalize\n) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n  return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n  context,\n  tag,\n  data,\n  children,\n  normalizationType\n) {\n  if (isDef(data) && isDef((data).__ob__)) {\n    process.env.NODE_ENV !== 'production' && warn(\n      \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n      'Always create fresh vnode data objects in each render!',\n      context\n    );\n    return createEmptyVNode()\n  }\n  // object syntax in v-bind\n  if (isDef(data) && isDef(data.is)) {\n    tag = data.is;\n  }\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode()\n  }\n  // warn against non-primitive key\n  if (process.env.NODE_ENV !== 'production' &&\n    isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n  ) {\n    {\n      warn(\n        'Avoid using non-primitive value as key, ' +\n        'use string/number value instead.',\n        context\n      );\n    }\n  }\n  // support single function children as default scoped slot\n  if (Array.isArray(children) &&\n    typeof children[0] === 'function'\n  ) {\n    data = data || {};\n    data.scopedSlots = { default: children[0] };\n    children.length = 0;\n  }\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n  var vnode, ns;\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n        warn(\n          (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n          context\n        );\n      }\n      vnode = new VNode(\n        config.parsePlatformTagName(tag), data, children,\n        undefined, undefined, context\n      );\n    } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(\n        tag, data, children,\n        undefined, undefined, context\n      );\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n  if (Array.isArray(vnode)) {\n    return vnode\n  } else if (isDef(vnode)) {\n    if (isDef(ns)) { applyNS(vnode, ns); }\n    if (isDef(data)) { registerDeepBindings(data); }\n    return vnode\n  } else {\n    return createEmptyVNode()\n  }\n}\n\nfunction applyNS (vnode, ns, force) {\n  vnode.ns = ns;\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    ns = undefined;\n    force = true;\n  }\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n      if (isDef(child.tag) && (\n        isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n        applyNS(child, ns, force);\n      }\n    }\n  }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n  if (isObject(data.style)) {\n    traverse(data.style);\n  }\n  if (isObject(data.class)) {\n    traverse(data.class);\n  }\n}\n\n/*  */\n\nfunction initRender (vm) {\n  vm._vnode = null; // the root of the child tree\n  vm._staticTrees = null; // v-once cached trees\n  var options = vm.$options;\n  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject;\n  // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n  // normalization is always applied for the public version, used in\n  // user-written render functions.\n  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n  // $attrs & $listeners are exposed for easier HOC creation.\n  // they need to be reactive so that HOCs using them are always updated\n  var parentData = parentVnode && parentVnode.data;\n\n  /* istanbul ignore else */\n  if (process.env.NODE_ENV !== 'production') {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n    }, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n    }, true);\n  } else {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n  }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n  // install runtime convenience helpers\n  installRenderHelpers(Vue.prototype);\n\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this)\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var _parentVnode = ref._parentVnode;\n\n    if (_parentVnode) {\n      vm.$scopedSlots = normalizeScopedSlots(\n        _parentVnode.data.scopedSlots,\n        vm.$slots,\n        vm.$scopedSlots\n      );\n    }\n\n    // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n    vm.$vnode = _parentVnode;\n    // render self\n    var vnode;\n    try {\n      // There's no need to maintain a stack because all render fns are called\n      // separately from one another. Nested component's render fns are called\n      // when parent component is patched.\n      currentRenderingInstance = vm;\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render\");\n      // return error render result,\n      // or previous vnode to prevent render error causing blank component\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n        try {\n          vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n        } catch (e) {\n          handleError(e, vm, \"renderError\");\n          vnode = vm._vnode;\n        }\n      } else {\n        vnode = vm._vnode;\n      }\n    } finally {\n      currentRenderingInstance = null;\n    }\n    // if the returned array contains only a single node, allow it\n    if (Array.isArray(vnode) && vnode.length === 1) {\n      vnode = vnode[0];\n    }\n    // return empty vnode in case the render function errored out\n    if (!(vnode instanceof VNode)) {\n      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n        warn(\n          'Multiple root nodes returned from render function. Render function ' +\n          'should return a single root node.',\n          vm\n        );\n      }\n      vnode = createEmptyVNode();\n    }\n    // set parent\n    vnode.parent = _parentVnode;\n    return vnode\n  };\n}\n\n/*  */\n\nfunction ensureCtor (comp, base) {\n  if (\n    comp.__esModule ||\n    (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n  ) {\n    comp = comp.default;\n  }\n  return isObject(comp)\n    ? base.extend(comp)\n    : comp\n}\n\nfunction createAsyncPlaceholder (\n  factory,\n  data,\n  context,\n  children,\n  tag\n) {\n  var node = createEmptyVNode();\n  node.asyncFactory = factory;\n  node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n  return node\n}\n\nfunction resolveAsyncComponent (\n  factory,\n  baseCtor\n) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved\n  }\n\n  var owner = currentRenderingInstance;\n  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n    // already pending\n    factory.owners.push(owner);\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp\n  }\n\n  if (owner && !isDef(factory.owners)) {\n    var owners = factory.owners = [owner];\n    var sync = true;\n    var timerLoading = null;\n    var timerTimeout = null\n\n    ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n    var forceRender = function (renderCompleted) {\n      for (var i = 0, l = owners.length; i < l; i++) {\n        (owners[i]).$forceUpdate();\n      }\n\n      if (renderCompleted) {\n        owners.length = 0;\n        if (timerLoading !== null) {\n          clearTimeout(timerLoading);\n          timerLoading = null;\n        }\n        if (timerTimeout !== null) {\n          clearTimeout(timerTimeout);\n          timerTimeout = null;\n        }\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor);\n      // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n      if (!sync) {\n        forceRender(true);\n      } else {\n        owners.length = 0;\n      }\n    });\n\n    var reject = once(function (reason) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed to resolve async component: \" + (String(factory)) +\n        (reason ? (\"\\nReason: \" + reason) : '')\n      );\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender(true);\n      }\n    });\n\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (isPromise(res)) {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isPromise(res.component)) {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            timerLoading = setTimeout(function () {\n              timerLoading = null;\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender(false);\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          timerTimeout = setTimeout(function () {\n            timerTimeout = null;\n            if (isUndef(factory.resolved)) {\n              reject(\n                process.env.NODE_ENV !== 'production'\n                  ? (\"timeout (\" + (res.timeout) + \"ms)\")\n                  : null\n              );\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false;\n    // return in case resolved synchronously\n    return factory.loading\n      ? factory.loadingComp\n      : factory.resolved\n  }\n}\n\n/*  */\n\nfunction isAsyncPlaceholder (node) {\n  return node.isComment && node.asyncFactory\n}\n\n/*  */\n\nfunction getFirstComponentChild (children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n        return c\n      }\n    }\n  }\n}\n\n/*  */\n\n/*  */\n\nfunction initEvents (vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false;\n  // init parent attached events\n  var listeners = vm.$options._parentListeners;\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add (event, fn) {\n  target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n  target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n  var _target = target;\n  return function onceHandler () {\n    var res = fn.apply(null, arguments);\n    if (res !== null) {\n      _target.$off(event, onceHandler);\n    }\n  }\n}\n\nfunction updateComponentListeners (\n  vm,\n  listeners,\n  oldListeners\n) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n  target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n  var hookRE = /^hook:/;\n  Vue.prototype.$on = function (event, fn) {\n    var vm = this;\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        vm.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn);\n      // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n    function on () {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var vm = this;\n    // all\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm\n    }\n    // array of events\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        vm.$off(event[i$1], fn);\n      }\n      return vm\n    }\n    // specific event\n    var cbs = vm._events[event];\n    if (!cbs) {\n      return vm\n    }\n    if (!fn) {\n      vm._events[event] = null;\n      return vm\n    }\n    // specific handler\n    var cb;\n    var i = cbs.length;\n    while (i--) {\n      cb = cbs[i];\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break\n      }\n    }\n    return vm\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n    if (process.env.NODE_ENV !== 'production') {\n      var lowerCaseEvent = event.toLowerCase();\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\n          \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n          (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n          \"Note that HTML attributes are case-insensitive and you cannot use \" +\n          \"v-on to listen to camelCase events when using in-DOM templates. \" +\n          \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n        );\n      }\n    }\n    var cbs = vm._events[event];\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      var info = \"event handler for \\\"\" + event + \"\\\"\";\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n      }\n    }\n    return vm\n  };\n}\n\n/*  */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n  var prevActiveInstance = activeInstance;\n  activeInstance = vm;\n  return function () {\n    activeInstance = prevActiveInstance;\n  }\n}\n\nfunction initLifecycle (vm) {\n  var options = vm.$options;\n\n  // locate first non-abstract parent\n  var parent = options.parent;\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n\n  vm.$children = [];\n  vm.$refs = {};\n\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode;\n    // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n    restoreActiveInstance();\n    // update __vue__ reference\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    }\n    // if parent is an HOC, update its $el as well\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    }\n    // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n    if (vm._isBeingDestroyed) {\n      return\n    }\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true;\n    // remove self from parent\n    var parent = vm.$parent;\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    }\n    // teardown watchers\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n    var i = vm._watchers.length;\n    while (i--) {\n      vm._watchers[i].teardown();\n    }\n    // remove reference from data ob\n    // frozen object may not have observer.\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    }\n    // call the last hook...\n    vm._isDestroyed = true;\n    // invoke destroy hooks on current rendered tree\n    vm.__patch__(vm._vnode, null);\n    // fire destroyed hook\n    callHook(vm, 'destroyed');\n    // turn off all instance listeners.\n    vm.$off();\n    // remove __vue__ reference\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    }\n    // release circular reference (#6759)\n    if (vm.$vnode) {\n      vm.$vnode.parent = null;\n    }\n  };\n}\n\nfunction updateChildComponent (\n  vm,\n  propsData,\n  listeners,\n  parentVnode,\n  renderChildren\n) {\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = true;\n  }\n\n  // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren.\n\n  // check if there are dynamic scopedSlots (hand-written or compiled but with\n  // dynamic slot names). Static scoped slots compiled from template has the\n  // \"$stable\" marker.\n  var newScopedSlots = parentVnode.data.scopedSlots;\n  var oldScopedSlots = vm.$scopedSlots;\n  var hasDynamicScopedSlot = !!(\n    (newScopedSlots && !newScopedSlots.$stable) ||\n    (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n    (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n  );\n\n  // Any static slot children from the parent may have changed during parent's\n  // update. Dynamic scoped slots may also have changed. In such cases, a forced\n  // update is necessary to ensure correctness.\n  var needsForceUpdate = !!(\n    renderChildren ||               // has new static slots\n    vm.$options._renderChildren ||  // has old static slots\n    hasDynamicScopedSlot\n  );\n\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n  if (vm._vnode) { // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n  vm.$options._renderChildren = renderChildren;\n\n  // update $attrs and $listeners hash\n  // these are also reactive so they may trigger child update if the child\n  // used them during render\n  vm.$attrs = parentVnode.data.attrs || emptyObject;\n  vm.$listeners = listeners || emptyObject;\n\n  // update props\n  if (propsData && vm.$options.props) {\n    toggleObserving(false);\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      var propOptions = vm.$options.props; // wtf flow?\n      props[key] = validateProp(key, propOptions, propsData, vm);\n    }\n    toggleObserving(true);\n    // keep a copy of raw propsData\n    vm.$options.propsData = propsData;\n  }\n  \n  // fixed by xxxxxx update properties(mp runtime)\n  vm._$updateProperties && vm._$updateProperties(vm);\n  \n  // update listeners\n  listeners = listeners || emptyObject;\n  var oldListeners = vm.$options._parentListeners;\n  vm.$options._parentListeners = listeners;\n  updateComponentListeners(vm, listeners, oldListeners);\n\n  // resolve slots + force update if has children\n  if (needsForceUpdate) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = false;\n  }\n}\n\nfunction isInInactiveTree (vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) { return true }\n  }\n  return false\n}\n\nfunction activateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  } else if (vm._directInactive) {\n    return\n  }\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n    if (isInInactiveTree(vm)) {\n      return\n    }\n  }\n  if (!vm._inactive) {\n    vm._inactive = true;\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook (vm, hook) {\n  // #7573 disable dep collection when invoking lifecycle hooks\n  pushTarget();\n  var handlers = vm.$options[hook];\n  var info = hook + \" hook\";\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n    }\n  }\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n  popTarget();\n}\n\n/*  */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n  if (process.env.NODE_ENV !== 'production') {\n    circular = {};\n  }\n  waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n  var performance = window.performance;\n  if (\n    performance &&\n    typeof performance.now === 'function' &&\n    getNow() > document.createEvent('Event').timeStamp\n  ) {\n    // if the event timestamp, although evaluated AFTER the Date.now(), is\n    // smaller than it, it means the event is using a hi-res timestamp,\n    // and we need to use the hi-res version for event listener timestamps as\n    // well.\n    getNow = function () { return performance.now(); };\n  }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n  currentFlushTimestamp = getNow();\n  flushing = true;\n  var watcher, id;\n\n  // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n  queue.sort(function (a, b) { return a.id - b.id; });\n\n  // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n    if (watcher.before) {\n      watcher.before();\n    }\n    id = watcher.id;\n    has[id] = null;\n    watcher.run();\n    // in dev build, check and stop circular updates.\n    if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn(\n          'You may have an infinite update loop ' + (\n            watcher.user\n              ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n              : \"in a component render function.\"\n          ),\n          watcher.vm\n        );\n        break\n      }\n    }\n  }\n\n  // keep copies of post queues before resetting state\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n\n  resetSchedulerState();\n\n  // call component updated and activated hooks\n  callActivatedHooks(activatedQueue);\n  callUpdatedHooks(updatedQueue);\n\n  // devtool hook\n  /* istanbul ignore if */\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdatedHooks (queue) {\n  var i = queue.length;\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n    if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true /* true */);\n  }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n  var id = watcher.id;\n  if (has[id] == null) {\n    has[id] = true;\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n      queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n      waiting = true;\n\n      if (process.env.NODE_ENV !== 'production' && !config.async) {\n        flushSchedulerQueue();\n        return\n      }\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n\n/*  */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n  vm,\n  expOrFn,\n  cb,\n  options,\n  isRenderWatcher\n) {\n  this.vm = vm;\n  if (isRenderWatcher) {\n    vm._watcher = this;\n  }\n  vm._watchers.push(this);\n  // options\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n    this.before = options.before;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression = process.env.NODE_ENV !== 'production'\n    ? expOrFn.toString()\n    : '';\n  // parse expression for getter\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n    if (!this.getter) {\n      this.getter = noop;\n      process.env.NODE_ENV !== 'production' && warn(\n        \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n        'Watcher only accepts simple dot-delimited paths. ' +\n        'For full control, use a function instead.',\n        vm\n      );\n    }\n  }\n  this.value = this.lazy\n    ? undefined\n    : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n  try {\n    value = this.getter.call(vm, vm);\n  } catch (e) {\n    if (this.user) {\n      handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n    } else {\n      throw e\n    }\n  } finally {\n    // \"touch\" every property so they are all tracked as\n    // dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n    popTarget();\n    this.cleanupDeps();\n  }\n  return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n  var id = dep.id;\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n  var i = this.deps.length;\n  while (i--) {\n    var dep = this.deps[i];\n    if (!this.newDepIds.has(dep.id)) {\n      dep.removeSub(this);\n    }\n  }\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n  if (this.active) {\n    var value = this.get();\n    if (\n      value !== this.value ||\n      // Deep watchers and watchers on Object/Arrays should fire even\n      // when the value is the same, because the value may\n      // have mutated.\n      isObject(value) ||\n      this.deep\n    ) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n      if (this.user) {\n        try {\n          this.cb.call(this.vm, value, oldValue);\n        } catch (e) {\n          handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n        }\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n  this.value = this.get();\n  this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n  var i = this.deps.length;\n  while (i--) {\n    this.deps[i].depend();\n  }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n    var i = this.deps.length;\n    while (i--) {\n      this.deps[i].removeSub(this);\n    }\n    this.active = false;\n  }\n};\n\n/*  */\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter () {\n    return this[sourceKey][key]\n  };\n  sharedPropertyDefinition.set = function proxySetter (val) {\n    this[sourceKey][key] = val;\n  };\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n  if (opts.props) { initProps(vm, opts.props); }\n  if (opts.methods) { initMethods(vm, opts.methods); }\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true /* asRootData */);\n  }\n  if (opts.computed) { initComputed(vm, opts.computed); }\n  if (opts.watch && opts.watch !== nativeWatch) {\n    initWatch(vm, opts.watch);\n  }\n}\n\nfunction initProps (vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {};\n  // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent;\n  // root instance props should be converted\n  if (!isRoot) {\n    toggleObserving(false);\n  }\n  var loop = function ( key ) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      var hyphenatedKey = hyphenate(key);\n      if (isReservedAttribute(hyphenatedKey) ||\n          config.isReservedAttr(hyphenatedKey)) {\n        warn(\n          (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n          vm\n        );\n      }\n      defineReactive$$1(props, key, value, function () {\n        if (!isRoot && !isUpdatingChildComponent) {\n          {\n            if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 observer 在 setData callback 之后触发,直接忽略该 warn\n                return\n            }\n            //fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警\n            if(\n                key === 'value' && \n                Array.isArray(vm.$options.behaviors) &&\n                vm.$options.behaviors.indexOf('uni://form-field') !== -1\n              ){\n              return\n            }\n            if(vm._getFormData){\n              return\n            }\n            var $parent = vm.$parent;\n            while($parent){\n              if($parent.__next_tick_pending){\n                return  \n              }\n              $parent = $parent.$parent;\n            }\n          }\n          warn(\n            \"Avoid mutating a prop directly since the value will be \" +\n            \"overwritten whenever the parent component re-renders. \" +\n            \"Instead, use a data or computed property based on the prop's \" +\n            \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n            vm\n          );\n        }\n      });\n    } else {\n      defineReactive$$1(props, key, value);\n    }\n    // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) loop( key );\n  toggleObserving(true);\n}\n\nfunction initData (vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function'\n    ? getData(data, vm)\n    : data || {};\n  if (!isPlainObject(data)) {\n    data = {};\n    process.env.NODE_ENV !== 'production' && warn(\n      'data functions should return an object:\\n' +\n      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n      vm\n    );\n  }\n  // proxy data on instance\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var methods = vm.$options.methods;\n  var i = keys.length;\n  while (i--) {\n    var key = keys[i];\n    if (process.env.NODE_ENV !== 'production') {\n      if (methods && hasOwn(methods, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n          vm\n        );\n      }\n    }\n    if (props && hasOwn(props, key)) {\n      process.env.NODE_ENV !== 'production' && warn(\n        \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n        \"Use prop default value instead.\",\n        vm\n      );\n    } else if (!isReserved(key)) {\n      proxy(vm, \"_data\", key);\n    }\n  }\n  // observe data\n  observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n  // #7573 disable dep collection when invoking data getters\n  pushTarget();\n  try {\n    return data.call(vm, vm)\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {}\n  } finally {\n    popTarget();\n  }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n  // $flow-disable-line\n  var watchers = vm._computedWatchers = Object.create(null);\n  // computed properties are just getters during SSR\n  var isSSR = isServerRendering();\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n    if (process.env.NODE_ENV !== 'production' && getter == null) {\n      warn(\n        (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n        vm\n      );\n    }\n\n    if (!isSSR) {\n      // create internal watcher for the computed property.\n      watchers[key] = new Watcher(\n        vm,\n        getter || noop,\n        noop,\n        computedWatcherOptions\n      );\n    }\n\n    // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (process.env.NODE_ENV !== 'production') {\n      if (key in vm.$data) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed (\n  target,\n  key,\n  userDef\n) {\n  var shouldCache = !isServerRendering();\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = shouldCache\n      ? createComputedGetter(key)\n      : createGetterInvoker(userDef);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get\n      ? shouldCache && userDef.cache !== false\n        ? createComputedGetter(key)\n        : createGetterInvoker(userDef.get)\n      : noop;\n    sharedPropertyDefinition.set = userDef.set || noop;\n  }\n  if (process.env.NODE_ENV !== 'production' &&\n      sharedPropertyDefinition.set === noop) {\n    sharedPropertyDefinition.set = function () {\n      warn(\n        (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n        this\n      );\n    };\n  }\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n  return function computedGetter () {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n      if (Dep.SharedObject.target) {// fixed by xxxxxx\n        watcher.depend();\n      }\n      return watcher.value\n    }\n  }\n}\n\nfunction createGetterInvoker(fn) {\n  return function computedGetter () {\n    return fn.call(this, this)\n  }\n}\n\nfunction initMethods (vm, methods) {\n  var props = vm.$options.props;\n  for (var key in methods) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof methods[key] !== 'function') {\n        warn(\n          \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n          \"Did you reference the function correctly?\",\n          vm\n        );\n      }\n      if (props && hasOwn(props, key)) {\n        warn(\n          (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n          vm\n        );\n      }\n      if ((key in vm) && isReserved(key)) {\n        warn(\n          \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n          \"Avoid defining component methods that start with _ or $.\"\n        );\n      }\n    }\n    vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n  }\n}\n\nfunction initWatch (vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher (\n  vm,\n  expOrFn,\n  handler,\n  options\n) {\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n  return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n  dataDef.get = function () { return this._data };\n  var propsDef = {};\n  propsDef.get = function () { return this._props };\n  if (process.env.NODE_ENV !== 'production') {\n    dataDef.set = function () {\n      warn(\n        'Avoid replacing instance root $data. ' +\n        'Use nested data properties instead.',\n        this\n      );\n    };\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (\n    expOrFn,\n    cb,\n    options\n  ) {\n    var vm = this;\n    if (isPlainObject(cb)) {\n      return createWatcher(vm, expOrFn, cb, options)\n    }\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n    if (options.immediate) {\n      try {\n        cb.call(vm, watcher.value);\n      } catch (error) {\n        handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n      }\n    }\n    return function unwatchFn () {\n      watcher.teardown();\n    }\n  };\n}\n\n/*  */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this;\n    // a uid\n    vm._uid = uid$3++;\n\n    var startTag, endTag;\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      startTag = \"vue-perf-start:\" + (vm._uid);\n      endTag = \"vue-perf-end:\" + (vm._uid);\n      mark(startTag);\n    }\n\n    // a flag to avoid this being observed\n    vm._isVue = true;\n    // merge options\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(\n        resolveConstructorOptions(vm.constructor),\n        options || {},\n        vm\n      );\n    }\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n      initProxy(vm);\n    } else {\n      vm._renderProxy = vm;\n    }\n    // expose real self\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    !vm._$fallback && initInjections(vm); // resolve injections before data/props  \n    initState(vm);\n    !vm._$fallback && initProvide(vm); // resolve provide after data/props\n    !vm._$fallback && callHook(vm, 'created');      \n\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent (vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options);\n  // doing this because it's faster than dynamic enumeration.\n  var parentVnode = options._parentVnode;\n  opts.parent = options.parent;\n  opts._parentVnode = parentVnode;\n\n  var vnodeComponentOptions = parentVnode.componentOptions;\n  opts.propsData = vnodeComponentOptions.propsData;\n  opts._parentListeners = vnodeComponentOptions.listeners;\n  opts._renderChildren = vnodeComponentOptions.children;\n  opts._componentTag = vnodeComponentOptions.tag;\n\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n  var options = Ctor.options;\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions;\n      // check if there are any late-modified/attached options (#4976)\n      var modifiedOptions = resolveModifiedOptions(Ctor);\n      // update base extend options\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n  return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var sealed = Ctor.sealedOptions;\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) { modified = {}; }\n      modified[key] = latest[key];\n    }\n  }\n  return modified\n}\n\nfunction Vue (options) {\n  if (process.env.NODE_ENV !== 'production' &&\n    !(this instanceof Vue)\n  ) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n  this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/*  */\n\nfunction initUse (Vue) {\n  Vue.use = function (plugin) {\n    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n    if (installedPlugins.indexOf(plugin) > -1) {\n      return this\n    }\n\n    // additional parameters\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n    installedPlugins.push(plugin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initMixin$1 (Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this\n  };\n}\n\n/*  */\n\nfunction initExtend (Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n\n  /**\n   * Class inheritance\n   */\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId]\n    }\n\n    var name = extendOptions.name || Super.options.name;\n    if (process.env.NODE_ENV !== 'production' && name) {\n      validateComponentName(name);\n    }\n\n    var Sub = function VueComponent (options) {\n      this._init(options);\n    };\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(\n      Super.options,\n      extendOptions\n    );\n    Sub['super'] = Super;\n\n    // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    }\n\n    // allow further extension/mixin/plugin usage\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use;\n\n    // create asset registers, so extended classes\n    // can have their private assets too.\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    });\n    // enable recursive self-lookup\n    if (name) {\n      Sub.options.components[name] = Sub;\n    }\n\n    // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options);\n\n    // cache constructor\n    cachedCtors[SuperId] = Sub;\n    return Sub\n  };\n}\n\nfunction initProps$1 (Comp) {\n  var props = Comp.options.props;\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1 (Comp) {\n  var computed = Comp.options.computed;\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n\n/*  */\n\nfunction initAssetRegisters (Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (\n      id,\n      definition\n    ) {\n      if (!definition) {\n        return this.options[type + 's'][id]\n      } else {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && type === 'component') {\n          validateComponentName(id);\n        }\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = { bind: definition, update: definition };\n        }\n        this.options[type + 's'][id] = definition;\n        return definition\n      }\n    };\n  });\n}\n\n/*  */\n\n\n\nfunction getComponentName (opts) {\n  return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n  if (Array.isArray(pattern)) {\n    return pattern.indexOf(name) > -1\n  } else if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name)\n  }\n  /* istanbul ignore next */\n  return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n  var cache = keepAliveInstance.cache;\n  var keys = keepAliveInstance.keys;\n  var _vnode = keepAliveInstance._vnode;\n  for (var key in cache) {\n    var cachedNode = cache[key];\n    if (cachedNode) {\n      var name = getComponentName(cachedNode.componentOptions);\n      if (name && !filter(name)) {\n        pruneCacheEntry(cache, key, keys, _vnode);\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry (\n  cache,\n  key,\n  keys,\n  current\n) {\n  var cached$$1 = cache[key];\n  if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n    cached$$1.componentInstance.$destroy();\n  }\n  cache[key] = null;\n  remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n\n  props: {\n    include: patternTypes,\n    exclude: patternTypes,\n    max: [String, Number]\n  },\n\n  created: function created () {\n    this.cache = Object.create(null);\n    this.keys = [];\n  },\n\n  destroyed: function destroyed () {\n    for (var key in this.cache) {\n      pruneCacheEntry(this.cache, key, this.keys);\n    }\n  },\n\n  mounted: function mounted () {\n    var this$1 = this;\n\n    this.$watch('include', function (val) {\n      pruneCache(this$1, function (name) { return matches(val, name); });\n    });\n    this.$watch('exclude', function (val) {\n      pruneCache(this$1, function (name) { return !matches(val, name); });\n    });\n  },\n\n  render: function render () {\n    var slot = this.$slots.default;\n    var vnode = getFirstComponentChild(slot);\n    var componentOptions = vnode && vnode.componentOptions;\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      var ref = this;\n      var include = ref.include;\n      var exclude = ref.exclude;\n      if (\n        // not included\n        (include && (!name || !matches(include, name))) ||\n        // excluded\n        (exclude && name && matches(exclude, name))\n      ) {\n        return vnode\n      }\n\n      var ref$1 = this;\n      var cache = ref$1.cache;\n      var keys = ref$1.keys;\n      var key = vnode.key == null\n        // same constructor may get registered as different local components\n        // so cid alone is not enough (#3269)\n        ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n        : vnode.key;\n      if (cache[key]) {\n        vnode.componentInstance = cache[key].componentInstance;\n        // make current key freshest\n        remove(keys, key);\n        keys.push(key);\n      } else {\n        cache[key] = vnode;\n        keys.push(key);\n        // prune oldest entry\n        if (this.max && keys.length > parseInt(this.max)) {\n          pruneCacheEntry(cache, keys[0], keys, this._vnode);\n        }\n      }\n\n      vnode.data.keepAlive = true;\n    }\n    return vnode || (slot && slot[0])\n  }\n};\n\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n\n/*  */\n\nfunction initGlobalAPI (Vue) {\n  // config\n  var configDef = {};\n  configDef.get = function () { return config; };\n  if (process.env.NODE_ENV !== 'production') {\n    configDef.set = function () {\n      warn(\n        'Do not replace the Vue.config object, set individual fields instead.'\n      );\n    };\n  }\n  Object.defineProperty(Vue, 'config', configDef);\n\n  // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick;\n\n  // 2.6 explicit observable API\n  Vue.observable = function (obj) {\n    observe(obj);\n    return obj\n  };\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  });\n\n  // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n  Vue.options._base = Vue;\n\n  extend(Vue.options.components, builtInComponents);\n\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n  get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n  get: function get () {\n    /* istanbul ignore next */\n    return this.$vnode && this.$vnode.ssrContext\n  }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n  value: FunctionalRenderContext\n});\n\nVue.version = '2.6.11';\n\n/**\n * https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js\n */\nvar ARRAYTYPE = '[object Array]';\nvar OBJECTTYPE = '[object Object]';\n// const FUNCTIONTYPE = '[object Function]'\n\nfunction diff(current, pre) {\n    var result = {};\n    syncKeys(current, pre);\n    _diff(current, pre, '', result);\n    return result\n}\n\nfunction syncKeys(current, pre) {\n    if (current === pre) { return }\n    var rootCurrentType = type(current);\n    var rootPreType = type(pre);\n    if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {\n        if(Object.keys(current).length >= Object.keys(pre).length){\n            for (var key in pre) {\n                var currentValue = current[key];\n                if (currentValue === undefined) {\n                    current[key] = null;\n                } else {\n                    syncKeys(currentValue, pre[key]);\n                }\n            }\n        }\n    } else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {\n        if (current.length >= pre.length) {\n            pre.forEach(function (item, index) {\n                syncKeys(current[index], item);\n            });\n        }\n    }\n}\n\nfunction _diff(current, pre, path, result) {\n    if (current === pre) { return }\n    var rootCurrentType = type(current);\n    var rootPreType = type(pre);\n    if (rootCurrentType == OBJECTTYPE) {\n        if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {\n            setResult(result, path, current);\n        } else {\n            var loop = function ( key ) {\n                var currentValue = current[key];\n                var preValue = pre[key];\n                var currentType = type(currentValue);\n                var preType = type(preValue);\n                if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {\n                    if (currentValue !== pre[key]) {\n                        setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n                    }\n                } else if (currentType == ARRAYTYPE) {\n                    if (preType != ARRAYTYPE) {\n                        setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n                    } else {\n                        if (currentValue.length < preValue.length) {\n                            setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n                        } else {\n                            currentValue.forEach(function (item, index) {\n                                _diff(item, preValue[index], (path == '' ? '' : path + \".\") + key + '[' + index + ']', result);\n                            });\n                        }\n                    }\n                } else if (currentType == OBJECTTYPE) {\n                    if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {\n                        setResult(result, (path == '' ? '' : path + \".\") + key, currentValue);\n                    } else {\n                        for (var subKey in currentValue) {\n                            _diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + \".\") + key + '.' + subKey, result);\n                        }\n                    }\n                }\n            };\n\n            for (var key in current) loop( key );\n        }\n    } else if (rootCurrentType == ARRAYTYPE) {\n        if (rootPreType != ARRAYTYPE) {\n            setResult(result, path, current);\n        } else {\n            if (current.length < pre.length) {\n                setResult(result, path, current);\n            } else {\n                current.forEach(function (item, index) {\n                    _diff(item, pre[index], path + '[' + index + ']', result);\n                });\n            }\n        }\n    } else {\n        setResult(result, path, current);\n    }\n}\n\nfunction setResult(result, k, v) {\n    // if (type(v) != FUNCTIONTYPE) {\n        result[k] = v;\n    // }\n}\n\nfunction type(obj) {\n    return Object.prototype.toString.call(obj)\n}\n\n/*  */\n\nfunction flushCallbacks$1(vm) {\n    if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {\n        if (process.env.VUE_APP_DEBUG) {\n            var mpInstance = vm.$scope;\n            console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n                ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');\n        }\n        var copies = vm.__next_tick_callbacks.slice(0);\n        vm.__next_tick_callbacks.length = 0;\n        for (var i = 0; i < copies.length; i++) {\n            copies[i]();\n        }\n    }\n}\n\nfunction hasRenderWatcher(vm) {\n    return queue.find(function (watcher) { return vm._watcher === watcher; })\n}\n\nfunction nextTick$1(vm, cb) {\n    //1.nextTick 之前 已 setData 且 setData 还未回调完成\n    //2.nextTick 之前存在 render watcher\n    if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {\n        if(process.env.VUE_APP_DEBUG){\n            var mpInstance = vm.$scope;\n            console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +\n                ']:nextVueTick');\n        }\n        return nextTick(cb, vm)\n    }else{\n        if(process.env.VUE_APP_DEBUG){\n            var mpInstance$1 = vm.$scope;\n            console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +\n                ']:nextMPTick');\n        }\n    }\n    var _resolve;\n    if (!vm.__next_tick_callbacks) {\n        vm.__next_tick_callbacks = [];\n    }\n    vm.__next_tick_callbacks.push(function () {\n        if (cb) {\n            try {\n                cb.call(vm);\n            } catch (e) {\n                handleError(e, vm, 'nextTick');\n            }\n        } else if (_resolve) {\n            _resolve(vm);\n        }\n    });\n    // $flow-disable-line\n    if (!cb && typeof Promise !== 'undefined') {\n        return new Promise(function (resolve) {\n            _resolve = resolve;\n        })\n    }\n}\n\n/*  */\n\nfunction cloneWithData(vm) {\n  // 确保当前 vm 所有数据被同步\n  var ret = Object.create(null);\n  var dataKeys = [].concat(\n    Object.keys(vm._data || {}),\n    Object.keys(vm._computedWatchers || {}));\n\n  dataKeys.reduce(function(ret, key) {\n    ret[key] = vm[key];\n    return ret\n  }, ret);\n\n  // vue-composition-api\n  var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;\n  var rawBindings = compositionApiState && compositionApiState.rawBindings;\n  if (rawBindings) {\n    Object.keys(rawBindings).forEach(function (key) {\n      ret[key] = vm[key];\n    });\n  }\n\n  //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据\n  Object.assign(ret, vm.$mp.data || {});\n  if (\n    Array.isArray(vm.$options.behaviors) &&\n    vm.$options.behaviors.indexOf('uni://form-field') !== -1\n  ) { //form-field\n    ret['name'] = vm.name;\n    ret['value'] = vm.value;\n  }\n\n  return JSON.parse(JSON.stringify(ret))\n}\n\nvar patch = function(oldVnode, vnode) {\n  var this$1 = this;\n\n  if (vnode === null) { //destroy\n    return\n  }\n  if (this.mpType === 'page' || this.mpType === 'component') {\n    var mpInstance = this.$scope;\n    var data = Object.create(null);\n    try {\n      data = cloneWithData(this);\n    } catch (err) {\n      console.error(err);\n    }\n    data.__webviewId__ = mpInstance.data.__webviewId__;\n    var mpData = Object.create(null);\n    Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据\n      mpData[key] = mpInstance.data[key];\n    });\n    var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);\n    if (Object.keys(diffData).length) {\n      if (process.env.VUE_APP_DEBUG) {\n        console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +\n          ']差量更新',\n          JSON.stringify(diffData));\n      }\n      this.__next_tick_pending = true;\n      mpInstance.setData(diffData, function () {\n        this$1.__next_tick_pending = false;\n        flushCallbacks$1(this$1);\n      });\n    } else {\n      flushCallbacks$1(this);\n    }\n  }\n};\n\n/*  */\n\nfunction createEmptyRender() {\n\n}\n\nfunction mountComponent$1(\n  vm,\n  el,\n  hydrating\n) {\n  if (!vm.mpType) {//main.js 中的 new Vue\n    return vm\n  }\n  if (vm.mpType === 'app') {\n    vm.$options.render = createEmptyRender;\n  }\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyRender;\n    if (process.env.NODE_ENV !== 'production') {\n      /* istanbul ignore if */\n      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n        vm.$options.el || el) {\n        warn(\n          'You are using the runtime-only build of Vue where the template ' +\n          'compiler is not available. Either pre-compile the templates into ' +\n          'render functions, or use the compiler-included build.',\n          vm\n        );\n      } else {\n        warn(\n          'Failed to mount component: template or render function not defined.',\n          vm\n        );\n      }\n    }\n  }\n  \n  !vm._$fallback && callHook(vm, 'beforeMount');\n\n  var updateComponent = function () {\n    vm._update(vm._render(), hydrating);\n  };\n\n  // we set this to vm._watcher inside the watcher's constructor\n  // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  // component's mounted hook), which relies on vm._watcher being already defined\n  new Watcher(vm, updateComponent, noop, {\n    before: function before() {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }\n  }, true /* isRenderWatcher */);\n  hydrating = false;\n  return vm\n}\n\n/*  */\n\nfunction renderClass (\n  staticClass,\n  dynamicClass\n) {\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass))\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction concat (a, b) {\n  return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n  if (Array.isArray(value)) {\n    return stringifyArray(value)\n  }\n  if (isObject(value)) {\n    return stringifyObject(value)\n  }\n  if (typeof value === 'string') {\n    return value\n  }\n  /* istanbul ignore next */\n  return ''\n}\n\nfunction stringifyArray (value) {\n  var res = '';\n  var stringified;\n  for (var i = 0, l = value.length; i < l; i++) {\n    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n      if (res) { res += ' '; }\n      res += stringified;\n    }\n  }\n  return res\n}\n\nfunction stringifyObject (value) {\n  var res = '';\n  for (var key in value) {\n    if (value[key]) {\n      if (res) { res += ' '; }\n      res += key;\n    }\n  }\n  return res\n}\n\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res\n});\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle)\n  }\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle)\n  }\n  return bindingStyle\n}\n\n/*  */\n\nvar MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];\n\nfunction getTarget(obj, path) {\n  var parts = path.split('.');\n  var key = parts[0];\n  if (key.indexOf('__$n') === 0) { //number index\n    key = parseInt(key.replace('__$n', ''));\n  }\n  if (parts.length === 1) {\n    return obj[key]\n  }\n  return getTarget(obj[key], parts.slice(1).join('.'))\n}\n\nfunction internalMixin(Vue) {\n\n  Vue.config.errorHandler = function(err, vm, info) {\n    Vue.util.warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n    console.error(err);\n    /* eslint-disable no-undef */\n    var app = typeof getApp === 'function' && getApp();\n    if (app && app.onError) {\n      app.onError(err);\n    }\n  };\n\n  var oldEmit = Vue.prototype.$emit;\n\n  Vue.prototype.$emit = function(event) {\n    if (this.$scope && event) {\n      var triggerEvent = this.$scope['_triggerEvent'] || this.$scope['triggerEvent'];\n      if (triggerEvent) {\n        triggerEvent.call(this.$scope, event, {\n          __args__: toArray(arguments, 1)\n        });\n      }\n    }\n    return oldEmit.apply(this, arguments)\n  };\n\n  Vue.prototype.$nextTick = function(fn) {\n    return nextTick$1(this, fn)\n  };\n\n  MP_METHODS.forEach(function (method) {\n    Vue.prototype[method] = function(args) {\n      if (this.$scope && this.$scope[method]) {\n        return this.$scope[method](args)\n      }\n      // mp-alipay\n      if (typeof my === 'undefined') {\n        return\n      }\n      if (method === 'createSelectorQuery') {\n        /* eslint-disable no-undef */\n        return my.createSelectorQuery(args)\n      } else if (method === 'createIntersectionObserver') {\n        /* eslint-disable no-undef */\n        return my.createIntersectionObserver(args)\n      }\n      // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent\n    };\n  });\n\n  Vue.prototype.__init_provide = initProvide;\n\n  Vue.prototype.__init_injections = initInjections;\n\n  Vue.prototype.__call_hook = function(hook, args) {\n    var vm = this;\n    // #7573 disable dep collection when invoking lifecycle hooks\n    pushTarget();\n    var handlers = vm.$options[hook];\n    var info = hook + \" hook\";\n    var ret;\n    if (handlers) {\n      for (var i = 0, j = handlers.length; i < j; i++) {\n        ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);\n      }\n    }\n    if (vm._hasHookEvent) {\n      vm.$emit('hook:' + hook, args);\n    }\n    popTarget();\n    return ret\n  };\n\n  Vue.prototype.__set_model = function(target, key, value, modifiers) {\n    if (Array.isArray(modifiers)) {\n      if (modifiers.indexOf('trim') !== -1) {\n        value = value.trim();\n      }\n      if (modifiers.indexOf('number') !== -1) {\n        value = this._n(value);\n      }\n    }\n    if (!target) {\n      target = this;\n    }\n    // 解决动态属性添加\n    Vue.set(target, key, value);\n  };\n\n  Vue.prototype.__set_sync = function(target, key, value) {\n    if (!target) {\n      target = this;\n    }\n    // 解决动态属性添加\n    Vue.set(target, key, value);\n  };\n\n  Vue.prototype.__get_orig = function(item) {\n    if (isPlainObject(item)) {\n      return item['$orig'] || item\n    }\n    return item\n  };\n\n  Vue.prototype.__get_value = function(dataPath, target) {\n    return getTarget(target || this, dataPath)\n  };\n\n\n  Vue.prototype.__get_class = function(dynamicClass, staticClass) {\n    return renderClass(staticClass, dynamicClass)\n  };\n\n  Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {\n    if (!dynamicStyle && !staticStyle) {\n      return ''\n    }\n    var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);\n    var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;\n    return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + \":\" + (styleObj[name])); }).join(';')\n  };\n\n  Vue.prototype.__map = function(val, iteratee) {\n    //TODO 暂不考虑 string\n    var ret, i, l, keys, key;\n    if (Array.isArray(val)) {\n      ret = new Array(val.length);\n      for (i = 0, l = val.length; i < l; i++) {\n        ret[i] = iteratee(val[i], i);\n      }\n      return ret\n    } else if (isObject(val)) {\n      keys = Object.keys(val);\n      ret = Object.create(null);\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[key] = iteratee(val[key], key, i);\n      }\n      return ret\n    } else if (typeof val === 'number') {\n      ret = new Array(val);\n      for (i = 0, l = val; i < l; i++) {\n        // 第一个参数暂时仍和小程序一致\n        ret[i] = iteratee(i, i);\n      }\n      return ret\n    }\n    return []\n  };\n\n}\n\n/*  */\n\nvar LIFECYCLE_HOOKS$1 = [\n    //App\n    'onLaunch',\n    'onShow',\n    'onHide',\n    'onUniNViewMessage',\n    'onPageNotFound',\n    'onThemeChange',\n    'onError',\n    'onUnhandledRejection',\n    //Page\n    'onInit',\n    'onLoad',\n    // 'onShow',\n    'onReady',\n    // 'onHide',\n    'onUnload',\n    'onPullDownRefresh',\n    'onReachBottom',\n    'onTabItemTap',\n    'onAddToFavorites',\n    'onShareTimeline',\n    'onShareAppMessage',\n    'onResize',\n    'onPageScroll',\n    'onNavigationBarButtonTap',\n    'onBackPress',\n    'onNavigationBarSearchInputChanged',\n    'onNavigationBarSearchInputConfirmed',\n    'onNavigationBarSearchInputClicked',\n    //Component\n    // 'onReady', // 兼容旧版本,应该移除该事件\n    'onPageShow',\n    'onPageHide',\n    'onPageResize',\n    'onUploadDouyinVideo'\n];\nfunction lifecycleMixin$1(Vue) {\n\n    //fixed vue-class-component\n    var oldExtend = Vue.extend;\n    Vue.extend = function(extendOptions) {\n        extendOptions = extendOptions || {};\n\n        var methods = extendOptions.methods;\n        if (methods) {\n            Object.keys(methods).forEach(function (methodName) {\n                if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {\n                    extendOptions[methodName] = methods[methodName];\n                    delete methods[methodName];\n                }\n            });\n        }\n\n        return oldExtend.call(this, extendOptions)\n    };\n\n    var strategies = Vue.config.optionMergeStrategies;\n    var mergeHook = strategies.created;\n    LIFECYCLE_HOOKS$1.forEach(function (hook) {\n        strategies[hook] = mergeHook;\n    });\n\n    Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;\n}\n\n/*  */\n\n// install platform patch function\nVue.prototype.__patch__ = patch;\n\n// public mount method\nVue.prototype.$mount = function(\n    el ,\n    hydrating \n) {\n    return mountComponent$1(this, el, hydrating)\n};\n\nlifecycleMixin$1(Vue);\ninternalMixin(Vue);\n\n/*  */\n\nexport default Vue;\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode, /* vue-cli only */\n  components, // fixed by xxxxxx auto components\n  renderjs // fixed by xxxxxx renderjs\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // fixed by xxxxxx auto components\n  if (components) {\n    if (!options.components) {\n      options.components = {}\n    }\n    var hasOwn = Object.prototype.hasOwnProperty\n    for (var name in components) {\n      if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {\n        options.components[name] = components[name]\n      }\n    }\n  }\n  // fixed by xxxxxx renderjs\n  if (renderjs) {\n    (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {\n      this[renderjs.__module] = this\n    });\n    (options.mixins || (options.mixins = [])).push(renderjs)\n  }\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","// 看到此报错,是因为没有配置vue.config.js的【transpileDependencies】,详见:https://www.uviewui.com/components/npmSetting.html#_5-cli模式额外配置\r\nconst pleaseSetTranspileDependencies = {}, babelTest = pleaseSetTranspileDependencies?.test\r\n\r\n\r\n\r\n// 引入全局mixin\r\nimport mixin from './libs/mixin/mixin.js'\r\n// 小程序特有的mixin\r\nimport mpMixin from './libs/mixin/mpMixin.js'\r\n// 全局挂载引入http相关请求拦截插件\r\nimport Request from './libs/luch-request'\r\n\r\n// 路由封装\r\nimport route from './libs/util/route.js'\r\n// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制\r\nimport colorGradient from './libs/function/colorGradient.js'\r\n\r\n// 规则检验\r\nimport test from './libs/function/test.js'\r\n// 防抖方法\r\nimport debounce from './libs/function/debounce.js'\r\n// 节流方法\r\nimport throttle from './libs/function/throttle.js'\r\n// 公共文件写入的方法\r\nimport index from './libs/function/index.js'\r\n\r\n// 配置信息\r\nimport config from './libs/config/config.js'\r\n// props配置信息\r\nimport props from './libs/config/props.js'\r\n// 各个需要fixed的地方的z-index配置文件\r\nimport zIndex from './libs/config/zIndex.js'\r\n// 关于颜色的配置,特殊场景使用\r\nimport color from './libs/config/color.js'\r\n// 平台\r\nimport platform from './libs/function/platform'\r\n\r\nconst $u = {\r\n    route,\r\n    date: index.timeFormat, // 另名date\r\n    colorGradient: colorGradient.colorGradient,\r\n    hexToRgb: colorGradient.hexToRgb,\r\n    rgbToHex: colorGradient.rgbToHex,\r\n    colorToRgba: colorGradient.colorToRgba,\r\n    test,\r\n    type: ['primary', 'success', 'error', 'warning', 'info'],\r\n    http: new Request(),\r\n    config, // uView配置信息相关,比如版本号\r\n    zIndex,\r\n    debounce,\r\n    throttle,\r\n    mixin,\r\n    mpMixin,\r\n    props,\r\n    ...index,\r\n    color,\r\n    platform\r\n}\r\n\r\n// $u挂载到uni对象上\r\nuni.$u = $u\r\n\r\nconst install = (Vue) => {\r\n    // 时间格式化,同时两个名称,date和timeFormat\r\n    Vue.filter('timeFormat', (timestamp, format) => uni.$u.timeFormat(timestamp, format))\r\n    Vue.filter('date', (timestamp, format) => uni.$u.timeFormat(timestamp, format))\r\n    // 将多久以前的方法,注入到全局过滤器\r\n    Vue.filter('timeFrom', (timestamp, format) => uni.$u.timeFrom(timestamp, format))\r\n    // 同时挂载到uni和Vue.prototype中\r\n\r\n    // 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的\r\n    Vue.prototype.$u = $u\r\n    Vue.mixin(mixin)\r\n\r\n}\r\n\r\nexport default {\r\n    install\r\n}\r\n","module.exports = {\r\n    // 定义每个组件都可能需要用到的外部样式以及类名\r\n    props: {\r\n        // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式\r\n        customStyle: {\r\n            type: [Object, String],\r\n            default: () => ({})\r\n        },\r\n        customClass: {\r\n            type: String,\r\n            default: ''\r\n        },\r\n        // 跳转的页面路径\r\n        url: {\r\n            type: String,\r\n            default: ''\r\n        },\r\n        // 页面跳转的类型\r\n        linkType: {\r\n            type: String,\r\n            default: 'navigateTo'\r\n        }\r\n    },\r\n    data() {\r\n        return {}\r\n    },\r\n    onLoad() {\r\n        // getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出\r\n        this.$u.getRect = this.$uGetRect\r\n    },\r\n    created() {\r\n        // 组件当中,只有created声明周期,为了能在组件使用,故也在created中将方法挂载到$u\r\n        this.$u.getRect = this.$uGetRect\r\n    },\r\n    computed: {\r\n        // 在2.x版本中,将会把$u挂载到uni对象下,导致在模板中无法使用uni.$u.xxx形式\r\n        // 所以这里通过computed计算属性将其附加到this.$u上,就可以在模板或者js中使用uni.$u.xxx\r\n        // 只在nvue环境通过此方式引入完整的$u,其他平台会出现性能问题,非nvue则按需引入(主要原因是props过大)\r\n        $u() {\r\n\r\n            // 在非nvue端,移除props,http,mixin等对象,避免在小程序setData时数据过大影响性能\r\n            return uni.$u.deepMerge(uni.$u, {\r\n                props: undefined,\r\n                http: undefined,\r\n                mixin: undefined\r\n            })\r\n\r\n\r\n\r\n\r\n        },\r\n        /**\r\n         * 生成bem规则类名\r\n         * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class=\"[bem()]\"的形式进行同用\r\n         * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式\r\n         * @param {String} name 组件名称\r\n         * @param {Array} fixed 一直会存在的类名\r\n         * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名\r\n         * @returns {Array|string}\r\n         */\r\n        bem() {\r\n            return function (name, fixed, change) {\r\n                // 类名前缀\r\n                const prefix = `u-${name}--`\r\n                const classes = {}\r\n                if (fixed) {\r\n                    fixed.map((item) => {\r\n                        // 这里的类名,会一直存在\r\n                        classes[prefix + this[item]] = true\r\n                    })\r\n                }\r\n                if (change) {\r\n                    change.map((item) => {\r\n                        // 这里的类名,会根据this[item]的值为true或者false,而进行添加或者移除某一个类\r\n                        this[item] ? (classes[prefix + item] = this[item]) : (delete classes[prefix + item])\r\n                    })\r\n                }\r\n                return Object.keys(classes)\r\n                    // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有\",\",而导致失效\r\n\r\n\r\n\r\n            }\r\n        }\r\n    },\r\n    methods: {\r\n        // 跳转某一个页面\r\n        openPage(urlKey = 'url') {\r\n            const url = this[urlKey]\r\n            if (url) {\r\n                // 执行类似uni.navigateTo的方法\r\n                uni[this.linkType]({\r\n                    url\r\n                })\r\n            }\r\n        },\r\n        // 查询节点信息\r\n        // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)\r\n        // 解决办法为在组件根部再套一个没有任何作用的view元素\r\n        $uGetRect(selector, all) {\r\n            return new Promise((resolve) => {\r\n                uni.createSelectorQuery()\r\n                    .in(this)[all ? 'selectAll' : 'select'](selector)\r\n                    .boundingClientRect((rect) => {\r\n                        if (all && Array.isArray(rect) && rect.length) {\r\n                            resolve(rect)\r\n                        }\r\n                        if (!all && rect) {\r\n                            resolve(rect)\r\n                        }\r\n                    })\r\n                    .exec()\r\n            })\r\n        },\r\n        getParentData(parentName = '') {\r\n            // 避免在created中去定义parent变量\r\n            if (!this.parent) this.parent = {}\r\n            // 这里的本质原理是,通过获取父组件实例(也即类似u-radio的父组件u-radio-group的this)\r\n            // 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性\r\n            // 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化\r\n            // 此处并不会自动更新子组件的数据,而是依赖父组件u-radio-group去监听data的变化,手动调用更新子组件的方法去重新获取\r\n            this.parent = uni.$u.$parent.call(this, parentName)\r\n            if (this.parent.children) {\r\n                // 如果父组件的children不存在本组件的实例,才将本实例添加到父组件的children中\r\n                this.parent.children.indexOf(this) === -1 && this.parent.children.push(this)\r\n            }\r\n            if (this.parent && this.parentData) {\r\n                // 历遍parentData中的属性,将parent中的同名属性赋值给parentData\r\n                Object.keys(this.parentData).map((key) => {\r\n                    this.parentData[key] = this.parent[key]\r\n                })\r\n            }\r\n        },\r\n        // 阻止事件冒泡\r\n        preventEvent(e) {\r\n            e && typeof (e.stopPropagation) === 'function' && e.stopPropagation()\r\n        },\r\n        // 空操作\r\n        noop(e) {\r\n            this.preventEvent(e)\r\n        }\r\n    },\r\n    onReachBottom() {\r\n        uni.$emit('uOnReachBottom')\r\n    },\r\n    beforeDestroy() {\r\n        // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况\r\n        // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱\r\n        if (this.parent && uni.$u.test.array(this.parent.children)) {\r\n            // 组件销毁时,移除父组件中的children数组中对应的实例\r\n            const childrenList = this.parent.children\r\n            childrenList.map((child, index) => {\r\n                // 如果相等,则移除\r\n                if (child === this) {\r\n                    childrenList.splice(index, 1)\r\n                }\r\n            })\r\n        }\r\n    }\r\n}\r\n","export default {\r\n\r\n    // 将自定义节点设置成虚拟的,更加接近Vue组件的表现,能更好的使用flex属性\r\n    options: {\r\n        virtualHost: true\r\n    }\r\n\r\n}\r\n","import Request from './core/Request'\r\n\r\nexport default Request\r\n","/**\r\n * @Class Request\r\n * @description luch-request http请求插件\r\n * @version 3.0.7\r\n * @Author lu-ch\r\n * @Date 2021-09-04\r\n * @Email webwork.s@qq.com\r\n * 文档: https://www.quanzhan.co/luch-request/\r\n * github: https://github.com/lei-mu/luch-request\r\n * DCloud: http://ext.dcloud.net.cn/plugin?id=392\r\n * HBuilderX: beat-3.0.4 alpha-3.0.4\r\n */\r\n\r\nimport dispatchRequest from './dispatchRequest'\r\nimport InterceptorManager from './InterceptorManager'\r\nimport mergeConfig from './mergeConfig'\r\nimport defaults from './defaults'\r\nimport { isPlainObject } from '../utils'\r\nimport clone from '../utils/clone'\r\n\r\nexport default class Request {\r\n    /**\r\n   * @param {Object} arg - 全局配置\r\n   * @param {String} arg.baseURL - 全局根路径\r\n   * @param {Object} arg.header - 全局header\r\n   * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式\r\n   * @param {String} arg.dataType = [json] - 全局默认的dataType\r\n   * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持\r\n   * @param {Object} arg.custom - 全局默认的自定义参数\r\n   * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序\r\n   * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+)\r\n   * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+)\r\n   * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+)\r\n   * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300\r\n   */\r\n    constructor(arg = {}) {\r\n        if (!isPlainObject(arg)) {\r\n            arg = {}\r\n            console.warn('设置全局参数必须接收一个Object')\r\n        }\r\n        this.config = clone({ ...defaults, ...arg })\r\n        this.interceptors = {\r\n            request: new InterceptorManager(),\r\n            response: new InterceptorManager()\r\n        }\r\n    }\r\n\r\n    /**\r\n   * @Function\r\n   * @param {Request~setConfigCallback} f - 设置全局默认配置\r\n   */\r\n    setConfig(f) {\r\n        this.config = f(this.config)\r\n    }\r\n\r\n    middleware(config) {\r\n        config = mergeConfig(this.config, config)\r\n        const chain = [dispatchRequest, undefined]\r\n        let promise = Promise.resolve(config)\r\n\r\n        this.interceptors.request.forEach((interceptor) => {\r\n            chain.unshift(interceptor.fulfilled, interceptor.rejected)\r\n        })\r\n\r\n        this.interceptors.response.forEach((interceptor) => {\r\n            chain.push(interceptor.fulfilled, interceptor.rejected)\r\n        })\r\n\r\n        while (chain.length) {\r\n            promise = promise.then(chain.shift(), chain.shift())\r\n        }\r\n\r\n        return promise\r\n    }\r\n\r\n    /**\r\n   * @Function\r\n   * @param {Object} config - 请求配置项\r\n   * @prop {String} options.url - 请求路径\r\n   * @prop {Object} options.data - 请求参数\r\n   * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型\r\n   * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse\r\n   * @prop {Object} [options.header = config.header] - 请求header\r\n   * @prop {Object} [options.method = config.method] - 请求方法\r\n   * @returns {Promise<unknown>}\r\n   */\r\n    request(config = {}) {\r\n        return this.middleware(config)\r\n    }\r\n\r\n    get(url, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            method: 'GET',\r\n            ...options\r\n        })\r\n    }\r\n\r\n    post(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'POST',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n    put(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'PUT',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n\r\n    delete(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'DELETE',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n\r\n    connect(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'CONNECT',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n\r\n    head(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'HEAD',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n\r\n    options(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'OPTIONS',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n\r\n    trace(url, data, options = {}) {\r\n        return this.middleware({\r\n            url,\r\n            data,\r\n            method: 'TRACE',\r\n            ...options\r\n        })\r\n    }\r\n\r\n\r\n\r\n    upload(url, config = {}) {\r\n        config.url = url\r\n        config.method = 'UPLOAD'\r\n        return this.middleware(config)\r\n    }\r\n\r\n    download(url, config = {}) {\r\n        config.url = url\r\n        config.method = 'DOWNLOAD'\r\n        return this.middleware(config)\r\n    }\r\n}\r\n\r\n/**\r\n * setConfig回调\r\n * @return {Object} - 返回操作后的config\r\n * @callback Request~setConfigCallback\r\n * @param {Object} config - 全局默认config\r\n */\r\n","import adapter from '../adapters/index'\r\n\r\nexport default (config) => adapter(config)\r\n","import buildURL from '../helpers/buildURL'\r\nimport buildFullPath from '../core/buildFullPath'\r\nimport settle from '../core/settle'\r\nimport { isUndefined } from '../utils'\r\n\r\n/**\r\n * 返回可选值存在的配置\r\n * @param {Array} keys - 可选值数组\r\n * @param {Object} config2 - 配置\r\n * @return {{}} - 存在的配置项\r\n */\r\nconst mergeKeys = (keys, config2) => {\r\n    const config = {}\r\n    keys.forEach((prop) => {\r\n        if (!isUndefined(config2[prop])) {\r\n            config[prop] = config2[prop]\r\n        }\r\n    })\r\n    return config\r\n}\r\nexport default (config) => new Promise((resolve, reject) => {\r\n    const fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params)\r\n    const _config = {\r\n        url: fullPath,\r\n        header: config.header,\r\n        complete: (response) => {\r\n            config.fullPath = fullPath\r\n            response.config = config\r\n            try {\r\n                // 对可能字符串不是json 的情况容错\r\n                if (typeof response.data === 'string') {\r\n                    response.data = JSON.parse(response.data)\r\n                }\r\n                // eslint-disable-next-line no-empty\r\n            } catch (e) {\r\n            }\r\n            settle(resolve, reject, response)\r\n        }\r\n    }\r\n    let requestTask\r\n    if (config.method === 'UPLOAD') {\r\n        delete _config.header['content-type']\r\n        delete _config.header['Content-Type']\r\n        const otherConfig = {\r\n\r\n\r\n\r\n            filePath: config.filePath,\r\n            name: config.name\r\n        }\r\n        const optionalKeys = [\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n            'formData'\r\n        ]\r\n        requestTask = uni.uploadFile({ ..._config, ...otherConfig, ...mergeKeys(optionalKeys, config) })\r\n    } else if (config.method === 'DOWNLOAD') {\r\n\r\n\r\n\r\n\r\n\r\n        requestTask = uni.downloadFile(_config)\r\n    } else {\r\n        const optionalKeys = [\r\n            'data',\r\n            'method',\r\n\r\n            'timeout',\r\n\r\n            'dataType',\r\n\r\n            'responseType',\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        ]\r\n        requestTask = uni.request({ ..._config, ...mergeKeys(optionalKeys, config) })\r\n    }\r\n    if (config.getTask) {\r\n        config.getTask(requestTask, config)\r\n    }\r\n})\r\n","'use strict'\r\n\r\nimport * as utils from '../utils'\r\n\r\nfunction encode(val) {\r\n    return encodeURIComponent(val)\r\n        .replace(/%40/gi, '@')\r\n        .replace(/%3A/gi, ':')\r\n        .replace(/%24/g, '$')\r\n        .replace(/%2C/gi, ',')\r\n        .replace(/%20/g, '+')\r\n        .replace(/%5B/gi, '[')\r\n        .replace(/%5D/gi, ']')\r\n}\r\n\r\n/**\r\n * Build a URL by appending params to the end\r\n *\r\n * @param {string} url The base of the url (e.g., http://www.google.com)\r\n * @param {object} [params] The params to be appended\r\n * @returns {string} The formatted url\r\n */\r\nexport default function buildURL(url, params) {\r\n    /* eslint no-param-reassign:0 */\r\n    if (!params) {\r\n        return url\r\n    }\r\n\r\n    let serializedParams\r\n    if (utils.isURLSearchParams(params)) {\r\n        serializedParams = params.toString()\r\n    } else {\r\n        const parts = []\r\n\r\n        utils.forEach(params, (val, key) => {\r\n            if (val === null || typeof val === 'undefined') {\r\n                return\r\n            }\r\n\r\n            if (utils.isArray(val)) {\r\n                key = `${key}[]`\r\n            } else {\r\n                val = [val]\r\n            }\r\n\r\n            utils.forEach(val, (v) => {\r\n                if (utils.isDate(v)) {\r\n                    v = v.toISOString()\r\n                } else if (utils.isObject(v)) {\r\n                    v = JSON.stringify(v)\r\n                }\r\n                parts.push(`${encode(key)}=${encode(v)}`)\r\n            })\r\n        })\r\n\r\n        serializedParams = parts.join('&')\r\n    }\r\n\r\n    if (serializedParams) {\r\n        const hashmarkIndex = url.indexOf('#')\r\n        if (hashmarkIndex !== -1) {\r\n            url = url.slice(0, hashmarkIndex)\r\n        }\r\n\r\n        url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams\r\n    }\r\n\r\n    return url\r\n}\r\n","'use strict'\r\n\r\n// utils is a library of generic helper functions non-specific to axios\r\n\r\nconst { toString } = Object.prototype\r\n\r\n/**\r\n * Determine if a value is an Array\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Array, otherwise false\r\n */\r\nexport function isArray(val) {\r\n    return toString.call(val) === '[object Array]'\r\n}\r\n\r\n/**\r\n * Determine if a value is an Object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Object, otherwise false\r\n */\r\nexport function isObject(val) {\r\n    return val !== null && typeof val === 'object'\r\n}\r\n\r\n/**\r\n * Determine if a value is a Date\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Date, otherwise false\r\n */\r\nexport function isDate(val) {\r\n    return toString.call(val) === '[object Date]'\r\n}\r\n\r\n/**\r\n * Determine if a value is a URLSearchParams object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\r\n */\r\nexport function isURLSearchParams(val) {\r\n    return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams\r\n}\r\n\r\n/**\r\n * Iterate over an Array or an Object invoking a function for each item.\r\n *\r\n * If `obj` is an Array callback will be called passing\r\n * the value, index, and complete array for each item.\r\n *\r\n * If 'obj' is an Object callback will be called passing\r\n * the value, key, and complete object for each property.\r\n *\r\n * @param {Object|Array} obj The object to iterate\r\n * @param {Function} fn The callback to invoke for each item\r\n */\r\nexport function forEach(obj, fn) {\r\n    // Don't bother if no value provided\r\n    if (obj === null || typeof obj === 'undefined') {\r\n        return\r\n    }\r\n\r\n    // Force an array if not already something iterable\r\n    if (typeof obj !== 'object') {\r\n    /* eslint no-param-reassign:0 */\r\n        obj = [obj]\r\n    }\r\n\r\n    if (isArray(obj)) {\r\n    // Iterate over array values\r\n        for (let i = 0, l = obj.length; i < l; i++) {\r\n            fn.call(null, obj[i], i, obj)\r\n        }\r\n    } else {\r\n    // Iterate over object keys\r\n        for (const key in obj) {\r\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n                fn.call(null, obj[key], key, obj)\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * 是否为boolean 值\r\n * @param val\r\n * @returns {boolean}\r\n */\r\nexport function isBoolean(val) {\r\n    return typeof val === 'boolean'\r\n}\r\n\r\n/**\r\n * 是否为真正的对象{} new Object\r\n * @param {any} obj - 检测的对象\r\n * @returns {boolean}\r\n */\r\nexport function isPlainObject(obj) {\r\n    return Object.prototype.toString.call(obj) === '[object Object]'\r\n}\r\n\r\n/**\r\n * Function equal to merge with the difference being that no reference\r\n * to original objects is kept.\r\n *\r\n * @see merge\r\n * @param {Object} obj1 Object to merge\r\n * @returns {Object} Result of all merge properties\r\n */\r\nexport function deepMerge(/* obj1, obj2, obj3, ... */) {\r\n    const result = {}\r\n    function assignValue(val, key) {\r\n        if (typeof result[key] === 'object' && typeof val === 'object') {\r\n            result[key] = deepMerge(result[key], val)\r\n        } else if (typeof val === 'object') {\r\n            result[key] = deepMerge({}, val)\r\n        } else {\r\n            result[key] = val\r\n        }\r\n    }\r\n    for (let i = 0, l = arguments.length; i < l; i++) {\r\n        forEach(arguments[i], assignValue)\r\n    }\r\n    return result\r\n}\r\n\r\nexport function isUndefined(val) {\r\n    return typeof val === 'undefined'\r\n}\r\n","'use strict'\r\n\r\nimport isAbsoluteURL from '../helpers/isAbsoluteURL'\r\nimport combineURLs from '../helpers/combineURLs'\r\n\r\n/**\r\n * Creates a new URL by combining the baseURL with the requestedURL,\r\n * only when the requestedURL is not already an absolute URL.\r\n * If the requestURL is absolute, this function returns the requestedURL untouched.\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} requestedURL Absolute or relative URL to combine\r\n * @returns {string} The combined full path\r\n */\r\nexport default function buildFullPath(baseURL, requestedURL) {\r\n    if (baseURL && !isAbsoluteURL(requestedURL)) {\r\n        return combineURLs(baseURL, requestedURL)\r\n    }\r\n    return requestedURL\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Determines whether the specified URL is absolute\r\n *\r\n * @param {string} url The URL to test\r\n * @returns {boolean} True if the specified URL is absolute, otherwise false\r\n */\r\nexport default function isAbsoluteURL(url) {\r\n    // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\r\n    // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\r\n    // by any combination of letters, digits, plus, period, or hyphen.\r\n    return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url)\r\n}\r\n","'use strict'\r\n\r\n/**\r\n * Creates a new URL by combining the specified URLs\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} relativeURL The relative URL\r\n * @returns {string} The combined URL\r\n */\r\nexport default function combineURLs(baseURL, relativeURL) {\r\n    return relativeURL\r\n        ? `${baseURL.replace(/\\/+$/, '')}/${relativeURL.replace(/^\\/+/, '')}`\r\n        : baseURL\r\n}\r\n","/**\r\n * Resolve or reject a Promise based on response status.\r\n *\r\n * @param {Function} resolve A function that resolves the promise.\r\n * @param {Function} reject A function that rejects the promise.\r\n * @param {object} response The response.\r\n */\r\nexport default function settle(resolve, reject, response) {\r\n    const { validateStatus } = response.config\r\n    const status = response.statusCode\r\n    if (status && (!validateStatus || validateStatus(status))) {\r\n        resolve(response)\r\n    } else {\r\n        reject(response)\r\n    }\r\n}\r\n","'use strict'\r\n\r\nfunction InterceptorManager() {\r\n    this.handlers = []\r\n}\r\n\r\n/**\r\n * Add a new interceptor to the stack\r\n *\r\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\r\n * @param {Function} rejected The function to handle `reject` for a `Promise`\r\n *\r\n * @return {Number} An ID used to remove interceptor later\r\n */\r\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\r\n    this.handlers.push({\r\n        fulfilled,\r\n        rejected\r\n    })\r\n    return this.handlers.length - 1\r\n}\r\n\r\n/**\r\n * Remove an interceptor from the stack\r\n *\r\n * @param {Number} id The ID that was returned by `use`\r\n */\r\nInterceptorManager.prototype.eject = function eject(id) {\r\n    if (this.handlers[id]) {\r\n        this.handlers[id] = null\r\n    }\r\n}\r\n\r\n/**\r\n * Iterate over all the registered interceptors\r\n *\r\n * This method is particularly useful for skipping over any\r\n * interceptors that may have become `null` calling `eject`.\r\n *\r\n * @param {Function} fn The function to call for each interceptor\r\n */\r\nInterceptorManager.prototype.forEach = function forEach(fn) {\r\n    this.handlers.forEach((h) => {\r\n        if (h !== null) {\r\n            fn(h)\r\n        }\r\n    })\r\n}\r\n\r\nexport default InterceptorManager\r\n","import { deepMerge, isUndefined } from '../utils'\r\n\r\n/**\r\n * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局\r\n * @param {Array} keys - 配置项\r\n * @param {Object} globalsConfig - 当前的全局配置\r\n * @param {Object} config2 - 局部配置\r\n * @return {{}}\r\n */\r\nconst mergeKeys = (keys, globalsConfig, config2) => {\r\n    const config = {}\r\n    keys.forEach((prop) => {\r\n        if (!isUndefined(config2[prop])) {\r\n            config[prop] = config2[prop]\r\n        } else if (!isUndefined(globalsConfig[prop])) {\r\n            config[prop] = globalsConfig[prop]\r\n        }\r\n    })\r\n    return config\r\n}\r\n/**\r\n *\r\n * @param globalsConfig - 当前实例的全局配置\r\n * @param config2 - 当前的局部配置\r\n * @return - 合并后的配置\r\n */\r\nexport default (globalsConfig, config2 = {}) => {\r\n    const method = config2.method || globalsConfig.method || 'GET'\r\n    let config = {\r\n        baseURL: globalsConfig.baseURL || '',\r\n        method,\r\n        url: config2.url || '',\r\n        params: config2.params || {},\r\n        custom: { ...(globalsConfig.custom || {}), ...(config2.custom || {}) },\r\n        header: deepMerge(globalsConfig.header || {}, config2.header || {})\r\n    }\r\n    const defaultToConfig2Keys = ['getTask', 'validateStatus']\r\n    config = { ...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2) }\r\n\r\n    // eslint-disable-next-line no-empty\r\n    if (method === 'DOWNLOAD') {\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n    } else if (method === 'UPLOAD') {\r\n        delete config.header['content-type']\r\n        delete config.header['Content-Type']\r\n        const uploadKeys = [\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n            'filePath',\r\n            'name',\r\n\r\n\r\n\r\n            'formData'\r\n        ]\r\n        uploadKeys.forEach((prop) => {\r\n            if (!isUndefined(config2[prop])) {\r\n                config[prop] = config2[prop]\r\n            }\r\n        })\r\n\r\n\r\n\r\n\r\n\r\n    } else {\r\n        const defaultsKeys = [\r\n            'data',\r\n\r\n            'timeout',\r\n\r\n            'dataType',\r\n\r\n            'responseType',\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        ]\r\n        config = { ...config, ...mergeKeys(defaultsKeys, globalsConfig, config2) }\r\n    }\r\n\r\n    return config\r\n}\r\n","/**\r\n * 默认的全局配置\r\n */\r\n\r\nexport default {\r\n    baseURL: '',\r\n    header: {},\r\n    method: 'GET',\r\n    dataType: 'json',\r\n\r\n    responseType: 'text',\r\n\r\n    custom: {},\r\n\r\n    timeout: 60000,\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n    validateStatus: function validateStatus(status) {\r\n        return status >= 200 && status < 300\r\n    }\r\n}\r\n","/* eslint-disable */\r\nvar clone = (function() {\r\n  'use strict';\r\n\r\n  function _instanceof(obj, type) {\r\n    return type != null && obj instanceof type;\r\n  }\r\n\r\n  var nativeMap;\r\n  try {\r\n    nativeMap = Map;\r\n  } catch(_) {\r\n    // maybe a reference error because no `Map`. Give it a dummy value that no\r\n    // value will ever be an instanceof.\r\n    nativeMap = function() {};\r\n  }\r\n\r\n  var nativeSet;\r\n  try {\r\n    nativeSet = Set;\r\n  } catch(_) {\r\n    nativeSet = function() {};\r\n  }\r\n\r\n  var nativePromise;\r\n  try {\r\n    nativePromise = Promise;\r\n  } catch(_) {\r\n    nativePromise = function() {};\r\n  }\r\n\r\n  /**\r\n   * Clones (copies) an Object using deep copying.\r\n   *\r\n   * This function supports circular references by default, but if you are certain\r\n   * there are no circular references in your object, you can save some CPU time\r\n   * by calling clone(obj, false).\r\n   *\r\n   * Caution: if `circular` is false and `parent` contains circular references,\r\n   * your program may enter an infinite loop and crash.\r\n   *\r\n   * @param `parent` - the object to be cloned\r\n   * @param `circular` - set to true if the object to be cloned may contain\r\n   *    circular references. (optional - true by default)\r\n   * @param `depth` - set to a number if the object is only to be cloned to\r\n   *    a particular depth. (optional - defaults to Infinity)\r\n   * @param `prototype` - sets the prototype to be used when cloning an object.\r\n   *    (optional - defaults to parent prototype).\r\n   * @param `includeNonEnumerable` - set to true if the non-enumerable properties\r\n   *    should be cloned as well. Non-enumerable properties on the prototype\r\n   *    chain will be ignored. (optional - false by default)\r\n   */\r\n  function clone(parent, circular, depth, prototype, includeNonEnumerable) {\r\n    if (typeof circular === 'object') {\r\n      depth = circular.depth;\r\n      prototype = circular.prototype;\r\n      includeNonEnumerable = circular.includeNonEnumerable;\r\n      circular = circular.circular;\r\n    }\r\n    // maintain two arrays for circular references, where corresponding parents\r\n    // and children have the same index\r\n    var allParents = [];\r\n    var allChildren = [];\r\n\r\n    var useBuffer = typeof Buffer != 'undefined';\r\n\r\n    if (typeof circular == 'undefined')\r\n      circular = true;\r\n\r\n    if (typeof depth == 'undefined')\r\n      depth = Infinity;\r\n\r\n    // recurse this function so we don't reset allParents and allChildren\r\n    function _clone(parent, depth) {\r\n      // cloning null always returns null\r\n      if (parent === null)\r\n        return null;\r\n\r\n      if (depth === 0)\r\n        return parent;\r\n\r\n      var child;\r\n      var proto;\r\n      if (typeof parent != 'object') {\r\n        return parent;\r\n      }\r\n\r\n      if (_instanceof(parent, nativeMap)) {\r\n        child = new nativeMap();\r\n      } else if (_instanceof(parent, nativeSet)) {\r\n        child = new nativeSet();\r\n      } else if (_instanceof(parent, nativePromise)) {\r\n        child = new nativePromise(function (resolve, reject) {\r\n          parent.then(function(value) {\r\n            resolve(_clone(value, depth - 1));\r\n          }, function(err) {\r\n            reject(_clone(err, depth - 1));\r\n          });\r\n        });\r\n      } else if (clone.__isArray(parent)) {\r\n        child = [];\r\n      } else if (clone.__isRegExp(parent)) {\r\n        child = new RegExp(parent.source, __getRegExpFlags(parent));\r\n        if (parent.lastIndex) child.lastIndex = parent.lastIndex;\r\n      } else if (clone.__isDate(parent)) {\r\n        child = new Date(parent.getTime());\r\n      } else if (useBuffer && Buffer.isBuffer(parent)) {\r\n        if (Buffer.from) {\r\n          // Node.js >= 5.10.0\r\n          child = Buffer.from(parent);\r\n        } else {\r\n          // Older Node.js versions\r\n          child = new Buffer(parent.length);\r\n          parent.copy(child);\r\n        }\r\n        return child;\r\n      } else if (_instanceof(parent, Error)) {\r\n        child = Object.create(parent);\r\n      } else {\r\n        if (typeof prototype == 'undefined') {\r\n          proto = Object.getPrototypeOf(parent);\r\n          child = Object.create(proto);\r\n        }\r\n        else {\r\n          child = Object.create(prototype);\r\n          proto = prototype;\r\n        }\r\n      }\r\n\r\n      if (circular) {\r\n        var index = allParents.indexOf(parent);\r\n\r\n        if (index != -1) {\r\n          return allChildren[index];\r\n        }\r\n        allParents.push(parent);\r\n        allChildren.push(child);\r\n      }\r\n\r\n      if (_instanceof(parent, nativeMap)) {\r\n        parent.forEach(function(value, key) {\r\n          var keyChild = _clone(key, depth - 1);\r\n          var valueChild = _clone(value, depth - 1);\r\n          child.set(keyChild, valueChild);\r\n        });\r\n      }\r\n      if (_instanceof(parent, nativeSet)) {\r\n        parent.forEach(function(value) {\r\n          var entryChild = _clone(value, depth - 1);\r\n          child.add(entryChild);\r\n        });\r\n      }\r\n\r\n      for (var i in parent) {\r\n        var attrs = Object.getOwnPropertyDescriptor(parent, i);\r\n        if (attrs) {\r\n          child[i] = _clone(parent[i], depth - 1);\r\n        }\r\n\r\n        try {\r\n          var objProperty = Object.getOwnPropertyDescriptor(parent, i);\r\n          if (objProperty.set === 'undefined') {\r\n            // no setter defined. Skip cloning this property\r\n            continue;\r\n          }\r\n          child[i] = _clone(parent[i], depth - 1);\r\n        } catch(e){\r\n          if (e instanceof TypeError) {\r\n            // when in strict mode, TypeError will be thrown if child[i] property only has a getter\r\n            // we can't do anything about this, other than inform the user that this property cannot be set.\r\n            continue\r\n          } else if (e instanceof ReferenceError) {\r\n            //this may happen in non strict mode\r\n            continue\r\n          }\r\n        }\r\n\r\n      }\r\n\r\n      if (Object.getOwnPropertySymbols) {\r\n        var symbols = Object.getOwnPropertySymbols(parent);\r\n        for (var i = 0; i < symbols.length; i++) {\r\n          // Don't need to worry about cloning a symbol because it is a primitive,\r\n          // like a number or string.\r\n          var symbol = symbols[i];\r\n          var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\r\n          if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\r\n            continue;\r\n          }\r\n          child[symbol] = _clone(parent[symbol], depth - 1);\r\n          Object.defineProperty(child, symbol, descriptor);\r\n        }\r\n      }\r\n\r\n      if (includeNonEnumerable) {\r\n        var allPropertyNames = Object.getOwnPropertyNames(parent);\r\n        for (var i = 0; i < allPropertyNames.length; i++) {\r\n          var propertyName = allPropertyNames[i];\r\n          var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\r\n          if (descriptor && descriptor.enumerable) {\r\n            continue;\r\n          }\r\n          child[propertyName] = _clone(parent[propertyName], depth - 1);\r\n          Object.defineProperty(child, propertyName, descriptor);\r\n        }\r\n      }\r\n\r\n      return child;\r\n    }\r\n\r\n    return _clone(parent, depth);\r\n  }\r\n\r\n  /**\r\n   * Simple flat clone using prototype, accepts only objects, usefull for property\r\n   * override on FLAT configuration object (no nested props).\r\n   *\r\n   * USE WITH CAUTION! This may not behave as you wish if you do not know how this\r\n   * works.\r\n   */\r\n  clone.clonePrototype = function clonePrototype(parent) {\r\n    if (parent === null)\r\n      return null;\r\n\r\n    var c = function () {};\r\n    c.prototype = parent;\r\n    return new c();\r\n  };\r\n\r\n// private utility functions\r\n\r\n  function __objToStr(o) {\r\n    return Object.prototype.toString.call(o);\r\n  }\r\n  clone.__objToStr = __objToStr;\r\n\r\n  function __isDate(o) {\r\n    return typeof o === 'object' && __objToStr(o) === '[object Date]';\r\n  }\r\n  clone.__isDate = __isDate;\r\n\r\n  function __isArray(o) {\r\n    return typeof o === 'object' && __objToStr(o) === '[object Array]';\r\n  }\r\n  clone.__isArray = __isArray;\r\n\r\n  function __isRegExp(o) {\r\n    return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\r\n  }\r\n  clone.__isRegExp = __isRegExp;\r\n\r\n  function __getRegExpFlags(re) {\r\n    var flags = '';\r\n    if (re.global) flags += 'g';\r\n    if (re.ignoreCase) flags += 'i';\r\n    if (re.multiline) flags += 'm';\r\n    return flags;\r\n  }\r\n  clone.__getRegExpFlags = __getRegExpFlags;\r\n\r\n  return clone;\r\n})();\r\n\r\nexport default clone\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","/**\r\n * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷\r\n * 并且带有路由拦截功能\r\n */\r\n\r\nclass Router {\r\n    constructor() {\r\n        // 原始属性定义\r\n        this.config = {\r\n            type: 'navigateTo',\r\n            url: '',\r\n            delta: 1, // navigateBack页面后退时,回退的层数\r\n            params: {}, // 传递的参数\r\n            animationType: 'pop-in', // 窗口动画,只在APP有效\r\n            animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效\r\n            intercept: false // 是否需要拦截\r\n        }\r\n        // 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文\r\n        // 这里在构造函数中进行this绑定\r\n        this.route = this.route.bind(this)\r\n    }\r\n\r\n    // 判断url前面是否有\"/\",如果没有则加上,否则无法跳转\r\n    addRootPath(url) {\r\n        return url[0] === '/' ? url : `/${url}`\r\n    }\r\n\r\n    // 整合路由参数\r\n    mixinParam(url, params) {\r\n        url = url && this.addRootPath(url)\r\n\r\n        // 使用正则匹配,主要依据是判断是否有\"/\",\"?\",\"=\"等,如“/page/index/index?name=mary\"\r\n        // 如果有url中有get参数,转换后无需带上\"?\"\r\n        let query = ''\r\n        if (/.*\\/.*\\?.*=.*/.test(url)) {\r\n            // object对象转为get类型的参数\r\n            query = uni.$u.queryParams(params, false)\r\n            // 因为已有get参数,所以后面拼接的参数需要带上\"&\"隔开\r\n            return url += `&${query}`\r\n        }\r\n        // 直接拼接参数,因为此处url中没有后面的query参数,也就没有\"?/&\"之类的符号\r\n        query = uni.$u.queryParams(params)\r\n        return url += query\r\n    }\r\n\r\n    // 对外的方法名称\r\n    async route(options = {}, params = {}) {\r\n        // 合并用户的配置和内部的默认配置\r\n        let mergeConfig = {}\r\n\r\n        if (typeof options === 'string') {\r\n            // 如果options为字符串,则为route(url, params)的形式\r\n            mergeConfig.url = this.mixinParam(options, params)\r\n            mergeConfig.type = 'navigateTo'\r\n        } else {\r\n            mergeConfig = uni.$u.deepClone(options, this.config)\r\n            // 否则正常使用mergeConfig中的url和params进行拼接\r\n            mergeConfig.url = this.mixinParam(options.url, options.params)\r\n        }\r\n\r\n        // 如果本次跳转的路径和本页面路径一致,不执行跳转,防止用户快速点击跳转按钮,造成多次跳转同一个页面的问题\r\n        if (mergeConfig.url === uni.$u.page()) return\r\n\r\n        if (params.intercept) {\r\n            this.config.intercept = params.intercept\r\n        }\r\n        // params参数也带给拦截器\r\n        mergeConfig.params = params\r\n        // 合并内外部参数\r\n        mergeConfig = uni.$u.deepMerge(this.config, mergeConfig)\r\n        // 判断用户是否定义了拦截器\r\n        if (typeof uni.$u.routeIntercept === 'function') {\r\n            // 定一个promise,根据用户执行resolve(true)或者resolve(false)来决定是否进行路由跳转\r\n            const isNext = await new Promise((resolve, reject) => {\r\n                uni.$u.routeIntercept(mergeConfig, resolve)\r\n            })\r\n            // 如果isNext为true,则执行路由跳转\r\n            isNext && this.openPage(mergeConfig)\r\n        } else {\r\n            this.openPage(mergeConfig)\r\n        }\r\n    }\r\n\r\n    // 执行路由跳转\r\n    openPage(config) {\r\n        // 解构参数\r\n        const {\r\n            url,\r\n            type,\r\n            delta,\r\n            animationType,\r\n            animationDuration\r\n        } = config\r\n        if (config.type == 'navigateTo' || config.type == 'to') {\r\n            uni.navigateTo({\r\n                url,\r\n                animationType,\r\n                animationDuration\r\n            })\r\n        }\r\n        if (config.type == 'redirectTo' || config.type == 'redirect') {\r\n            uni.redirectTo({\r\n                url\r\n            })\r\n        }\r\n        if (config.type == 'switchTab' || config.type == 'tab') {\r\n            uni.switchTab({\r\n                url\r\n            })\r\n        }\r\n        if (config.type == 'reLaunch' || config.type == 'launch') {\r\n            uni.reLaunch({\r\n                url\r\n            })\r\n        }\r\n        if (config.type == 'navigateBack' || config.type == 'back') {\r\n            uni.navigateBack({\r\n                delta\r\n            })\r\n        }\r\n    }\r\n}\r\n\r\nexport default (new Router()).route\r\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n  return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n  Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n  // Restore the original runtime.\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  // Remove the global property added by runtime.js.\n  try {\n    delete g.regeneratorRuntime;\n  } catch(e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  var inModule = typeof module === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      // If regeneratorRuntime is defined globally and we're in a module,\n      // make the exports object identical to regeneratorRuntime.\n      module.exports = runtime;\n    }\n    // Don't bother evaluating the rest of this file if the runtime was\n    // already defined globally.\n    return;\n  }\n\n  // Define the runtime globally (as expected by generated code) as either\n  // module.exports (if we're in a module) or a new, empty object.\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  runtime.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  runtime.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  runtime.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  runtime.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return runtime.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  runtime.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  runtime.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n})(\n  // In sloppy mode, unbound `this` refers to the global object, fallback to\n  // Function constructor if we're in global strict mode. That is sadly a form\n  // of indirect eval which violates Content Security Policy.\n  (function() {\n    return this || (typeof self === \"object\" && self);\n  })() || Function(\"return this\")()\n);\n","/**\r\n * 求两个颜色之间的渐变值\r\n * @param {string} startColor 开始的颜色\r\n * @param {string} endColor 结束的颜色\r\n * @param {number} step 颜色等分的份额\r\n * */\r\nfunction colorGradient(startColor = 'rgb(0, 0, 0)', endColor = 'rgb(255, 255, 255)', step = 10) {\r\n    const startRGB = hexToRgb(startColor, false) // 转换为rgb数组模式\r\n    const startR = startRGB[0]\r\n    const startG = startRGB[1]\r\n    const startB = startRGB[2]\r\n\r\n    const endRGB = hexToRgb(endColor, false)\r\n    const endR = endRGB[0]\r\n    const endG = endRGB[1]\r\n    const endB = endRGB[2]\r\n\r\n    const sR = (endR - startR) / step // 总差值\r\n    const sG = (endG - startG) / step\r\n    const sB = (endB - startB) / step\r\n    const colorArr = []\r\n    for (let i = 0; i < step; i++) {\r\n        // 计算每一步的hex值\r\n        let hex = rgbToHex(`rgb(${Math.round((sR * i + startR))},${Math.round((sG * i + startG))},${Math.round((sB\r\n\t\t\t* i + startB))})`)\r\n        // 确保第一个颜色值为startColor的值\r\n        if (i === 0) hex = rgbToHex(startColor)\r\n        // 确保最后一个颜色值为endColor的值\r\n        if (i === step - 1) hex = rgbToHex(endColor)\r\n        colorArr.push(hex)\r\n    }\r\n    return colorArr\r\n}\r\n\r\n// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)\r\nfunction hexToRgb(sColor, str = true) {\r\n    const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n    sColor = String(sColor).toLowerCase()\r\n    if (sColor && reg.test(sColor)) {\r\n        if (sColor.length === 4) {\r\n            let sColorNew = '#'\r\n            for (let i = 1; i < 4; i += 1) {\r\n                sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))\r\n            }\r\n            sColor = sColorNew\r\n        }\r\n        // 处理六位的颜色值\r\n        const sColorChange = []\r\n        for (let i = 1; i < 7; i += 2) {\r\n            sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`))\r\n        }\r\n        if (!str) {\r\n            return sColorChange\r\n        }\r\n        return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})`\r\n    } if (/^(rgb|RGB)/.test(sColor)) {\r\n        const arr = sColor.replace(/(?:\\(|\\)|rgb|RGB)*/g, '').split(',')\r\n        return arr.map((val) => Number(val))\r\n    }\r\n    return sColor\r\n}\r\n\r\n// 将rgb表示方式转换为hex表示方式\r\nfunction rgbToHex(rgb) {\r\n    const _this = rgb\r\n    const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n    if (/^(rgb|RGB)/.test(_this)) {\r\n        const aColor = _this.replace(/(?:\\(|\\)|rgb|RGB)*/g, '').split(',')\r\n        let strHex = '#'\r\n        for (let i = 0; i < aColor.length; i++) {\r\n            let hex = Number(aColor[i]).toString(16)\r\n            hex = String(hex).length == 1 ? `${0}${hex}` : hex // 保证每个rgb的值为2位\r\n            if (hex === '0') {\r\n                hex += hex\r\n            }\r\n            strHex += hex\r\n        }\r\n        if (strHex.length !== 7) {\r\n            strHex = _this\r\n        }\r\n        return strHex\r\n    } if (reg.test(_this)) {\r\n        const aNum = _this.replace(/#/, '').split('')\r\n        if (aNum.length === 6) {\r\n            return _this\r\n        } if (aNum.length === 3) {\r\n            let numHex = '#'\r\n            for (let i = 0; i < aNum.length; i += 1) {\r\n                numHex += (aNum[i] + aNum[i])\r\n            }\r\n            return numHex\r\n        }\r\n    } else {\r\n        return _this\r\n    }\r\n}\r\n\r\n/**\r\n* JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n* sHex为传入的十六进制的色值\r\n* alpha为rgba的透明度\r\n*/\r\nfunction colorToRgba(color, alpha) {\r\n    color = rgbToHex(color)\r\n    // 十六进制颜色值的正则表达式\r\n    const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n    /* 16进制颜色转为RGB格式 */\r\n    let sColor = String(color).toLowerCase()\r\n    if (sColor && reg.test(sColor)) {\r\n        if (sColor.length === 4) {\r\n            let sColorNew = '#'\r\n            for (let i = 1; i < 4; i += 1) {\r\n                sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))\r\n            }\r\n            sColor = sColorNew\r\n        }\r\n        // 处理六位的颜色值\r\n        const sColorChange = []\r\n        for (let i = 1; i < 7; i += 2) {\r\n            sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`))\r\n        }\r\n        // return sColorChange.join(',')\r\n        return `rgba(${sColorChange.join(',')},${alpha})`\r\n    }\r\n\r\n    return sColor\r\n}\r\n\r\nexport default {\r\n    colorGradient,\r\n    hexToRgb,\r\n    rgbToHex,\r\n    colorToRgba\r\n}\r\n","/**\r\n * 验证电子邮箱格式\r\n */\r\nfunction email(value) {\r\n    return /^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证手机格式\r\n */\r\nfunction mobile(value) {\r\n    return /^1[23456789]\\d{9}$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证URL格式\r\n */\r\nfunction url(value) {\r\n    return /^((https|http|ftp|rtsp|mms):\\/\\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\\/?)|(\\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\\/?)$/\r\n        .test(value)\r\n}\r\n\r\n/**\r\n * 验证日期格式\r\n */\r\nfunction date(value) {\r\n    if (!value) return false\r\n    // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳\r\n    if (number(value)) value = +value\r\n    return !/Invalid|NaN/.test(new Date(value).toString())\r\n}\r\n\r\n/**\r\n * 验证ISO类型的日期格式\r\n */\r\nfunction dateISO(value) {\r\n    return /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证十进制数字\r\n */\r\nfunction number(value) {\r\n    return /^[\\+-]?(\\d+\\.?\\d*|\\.\\d+|\\d\\.\\d+e\\+\\d+)$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证字符串\r\n */\r\nfunction string(value) {\r\n    return typeof value === 'string'\r\n}\r\n\r\n/**\r\n * 验证整数\r\n */\r\nfunction digits(value) {\r\n    return /^\\d+$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证身份证号码\r\n */\r\nfunction idCard(value) {\r\n    return /^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/.test(\r\n        value\r\n    )\r\n}\r\n\r\n/**\r\n * 是否车牌号\r\n */\r\nfunction carNo(value) {\r\n    // 新能源车牌\r\n    const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/\r\n    // 旧车牌\r\n    const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/\r\n    if (value.length === 7) {\r\n        return creg.test(value)\r\n    } if (value.length === 8) {\r\n        return xreg.test(value)\r\n    }\r\n    return false\r\n}\r\n\r\n/**\r\n * 金额,只允许2位小数\r\n */\r\nfunction amount(value) {\r\n    // 金额,只允许保留两位小数\r\n    return /^[1-9]\\d*(,\\d{3})*(\\.\\d{1,2})?$|^0\\.\\d{1,2}$/.test(value)\r\n}\r\n\r\n/**\r\n * 中文\r\n */\r\nfunction chinese(value) {\r\n    const reg = /^[\\u4e00-\\u9fa5]+$/gi\r\n    return reg.test(value)\r\n}\r\n\r\n/**\r\n * 只能输入字母\r\n */\r\nfunction letter(value) {\r\n    return /^[a-zA-Z]*$/.test(value)\r\n}\r\n\r\n/**\r\n * 只能是字母或者数字\r\n */\r\nfunction enOrNum(value) {\r\n    // 英文或者数字\r\n    const reg = /^[0-9a-zA-Z]*$/g\r\n    return reg.test(value)\r\n}\r\n\r\n/**\r\n * 验证是否包含某个值\r\n */\r\nfunction contains(value, param) {\r\n    return value.indexOf(param) >= 0\r\n}\r\n\r\n/**\r\n * 验证一个值范围[min, max]\r\n */\r\nfunction range(value, param) {\r\n    return value >= param[0] && value <= param[1]\r\n}\r\n\r\n/**\r\n * 验证一个长度范围[min, max]\r\n */\r\nfunction rangeLength(value, param) {\r\n    return value.length >= param[0] && value.length <= param[1]\r\n}\r\n\r\n/**\r\n * 是否固定电话\r\n */\r\nfunction landline(value) {\r\n    const reg = /^\\d{3,4}-\\d{7,8}(-\\d{3,4})?$/\r\n    return reg.test(value)\r\n}\r\n\r\n/**\r\n * 判断是否为空\r\n */\r\nfunction empty(value) {\r\n    switch (typeof value) {\r\n    case 'undefined':\r\n        return true\r\n    case 'string':\r\n        if (value.replace(/(^[ \\t\\n\\r]*)|([ \\t\\n\\r]*$)/g, '').length == 0) return true\r\n        break\r\n    case 'boolean':\r\n        if (!value) return true\r\n        break\r\n    case 'number':\r\n        if (value === 0 || isNaN(value)) return true\r\n        break\r\n    case 'object':\r\n        if (value === null || value.length === 0) return true\r\n        for (const i in value) {\r\n            return false\r\n        }\r\n        return true\r\n    }\r\n    return false\r\n}\r\n\r\n/**\r\n * 是否json字符串\r\n */\r\nfunction jsonString(value) {\r\n    if (typeof value === 'string') {\r\n        try {\r\n            const obj = JSON.parse(value)\r\n            if (typeof obj === 'object' && obj) {\r\n                return true\r\n            }\r\n            return false\r\n        } catch (e) {\r\n            return false\r\n        }\r\n    }\r\n    return false\r\n}\r\n\r\n/**\r\n * 是否数组\r\n */\r\nfunction array(value) {\r\n    if (typeof Array.isArray === 'function') {\r\n        return Array.isArray(value)\r\n    }\r\n    return Object.prototype.toString.call(value) === '[object Array]'\r\n}\r\n\r\n/**\r\n * 是否对象\r\n */\r\nfunction object(value) {\r\n    return Object.prototype.toString.call(value) === '[object Object]'\r\n}\r\n\r\n/**\r\n * 是否短信验证码\r\n */\r\nfunction code(value, len = 6) {\r\n    return new RegExp(`^\\\\d{${len}}$`).test(value)\r\n}\r\n\r\n/**\r\n * 是否函数方法\r\n * @param {Object} value\r\n */\r\nfunction func(value) {\r\n    return typeof value === 'function'\r\n}\r\n\r\n/**\r\n * 是否promise对象\r\n * @param {Object} value\r\n */\r\nfunction promise(value) {\r\n    return object(value) && func(value.then) && func(value.catch)\r\n}\r\n\r\n/** 是否图片格式\r\n * @param {Object} value\r\n */\r\nfunction image(value) {\r\n    const newValue = value.split('?')[0]\r\n    const IMAGE_REGEXP = /\\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i\r\n    return IMAGE_REGEXP.test(newValue)\r\n}\r\n\r\n/**\r\n * 是否视频格式\r\n * @param {Object} value\r\n */\r\nfunction video(value) {\r\n    const VIDEO_REGEXP = /\\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i\r\n    return VIDEO_REGEXP.test(value)\r\n}\r\n\r\n/**\r\n * 是否为正则对象\r\n * @param {Object}\r\n * @return {Boolean}\r\n */\r\nfunction regExp(o) {\r\n    return o && Object.prototype.toString.call(o) === '[object RegExp]'\r\n}\r\n\r\nexport default {\r\n    email,\r\n    mobile,\r\n    url,\r\n    date,\r\n    dateISO,\r\n    number,\r\n    digits,\r\n    idCard,\r\n    carNo,\r\n    amount,\r\n    chinese,\r\n    letter,\r\n    enOrNum,\r\n    contains,\r\n    range,\r\n    rangeLength,\r\n    empty,\r\n    isEmpty: empty,\r\n    jsonString,\r\n    landline,\r\n    object,\r\n    array,\r\n    code,\r\n    func,\r\n    promise,\r\n    video,\r\n    image,\r\n    regExp,\r\n    string\r\n}\r\n","let timeout = null\r\n\r\n/**\r\n * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数\r\n *\r\n * @param {Function} func 要执行的回调函数\r\n * @param {Number} wait 延时的时间\r\n * @param {Boolean} immediate 是否立即执行\r\n * @return null\r\n */\r\nfunction debounce(func, wait = 500, immediate = false) {\r\n    // 清除定时器\r\n    if (timeout !== null) clearTimeout(timeout)\r\n    // 立即执行,此类情况一般用不到\r\n    if (immediate) {\r\n        const callNow = !timeout\r\n        timeout = setTimeout(() => {\r\n            timeout = null\r\n        }, wait)\r\n        if (callNow) typeof func === 'function' && func()\r\n    } else {\r\n        // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法\r\n        timeout = setTimeout(() => {\r\n            typeof func === 'function' && func()\r\n        }, wait)\r\n    }\r\n}\r\n\r\nexport default debounce\r\n","let timer; let\r\n    flag\r\n/**\r\n * 节流原理:在一定时间内,只能触发一次\r\n *\r\n * @param {Function} func 要执行的回调函数\r\n * @param {Number} wait 延时的时间\r\n * @param {Boolean} immediate 是否立即执行\r\n * @return null\r\n */\r\nfunction throttle(func, wait = 500, immediate = true) {\r\n    if (immediate) {\r\n        if (!flag) {\r\n            flag = true\r\n            // 如果是立即执行,则在wait毫秒内开始时执行\r\n            typeof func === 'function' && func()\r\n            timer = setTimeout(() => {\r\n                flag = false\r\n            }, wait)\r\n        }\r\n    } else if (!flag) {\r\n        flag = true\r\n        // 如果是非立即执行,则在wait毫秒内的结束处执行\r\n        timer = setTimeout(() => {\r\n            flag = false\r\n            typeof func === 'function' && func()\r\n        }, wait)\r\n    }\r\n}\r\nexport default throttle\r\n","import test from './test.js'\r\nimport { round } from './digit.js'\r\n/**\r\n * @description 如果value小于min,取min;如果value大于max,取max\r\n * @param {number} min \r\n * @param {number} max \r\n * @param {number} value\r\n */\r\nfunction range(min = 0, max = 0, value = 0) {\r\n\treturn Math.max(min, Math.min(max, Number(value)))\r\n}\r\n\r\n/**\r\n * @description 用于获取用户传递值的px值  如果用户传递了\"xxpx\"或者\"xxrpx\",取出其数值部分,如果是\"xxxrpx\"还需要用过uni.upx2px进行转换\r\n * @param {number|string} value 用户传递值的px值\r\n * @param {boolean} unit \r\n * @returns {number|string}\r\n */\r\nfunction getPx(value, unit = false) {\r\n\tif (test.number(value)) {\r\n\t\treturn unit ? `${value}px` : Number(value)\r\n\t}\r\n\t// 如果带有rpx,先取出其数值部分,再转为px值\r\n\tif (/(rpx|upx)$/.test(value)) {\r\n\t\treturn unit ? `${uni.upx2px(parseInt(value))}px` : Number(uni.upx2px(parseInt(value)))\r\n\t}\r\n\treturn unit ? `${parseInt(value)}px` : parseInt(value)\r\n}\r\n\r\n/**\r\n * @description 进行延时,以达到可以简写代码的目的 比如: await uni.$u.sleep(20)将会阻塞20ms\r\n * @param {number} value 堵塞时间 单位ms 毫秒\r\n * @returns {Promise} 返回promise\r\n */\r\nfunction sleep(value = 30) {\r\n\treturn new Promise((resolve) => {\r\n\t\tsetTimeout(() => {\r\n\t\t\tresolve()\r\n\t\t}, value)\r\n\t})\r\n}\r\n/**\r\n * @description 运行期判断平台\r\n * @returns {string} 返回所在平台(小写) \r\n * @link 运行期判断平台 https://uniapp.dcloud.io/frame?id=判断平台\r\n */\r\nfunction os() {\r\n\treturn uni.getSystemInfoSync().platform.toLowerCase()\r\n}\r\n/**\r\n * @description 获取系统信息同步接口\r\n * @link 获取系统信息同步接口 https://uniapp.dcloud.io/api/system/info?id=getsysteminfosync \r\n */\r\nfunction sys() {\r\n\treturn uni.getSystemInfoSync()\r\n}\r\n\r\n/**\r\n * @description 取一个区间数\r\n * @param {Number} min 最小值\r\n * @param {Number} max 最大值\r\n */\r\nfunction random(min, max) {\r\n\tif (min >= 0 && max > 0 && max >= min) {\r\n\t\tconst gab = max - min + 1\r\n\t\treturn Math.floor(Math.random() * gab + min)\r\n\t}\r\n\treturn 0\r\n}\r\n\r\n/**\r\n * @param {Number} len uuid的长度\r\n * @param {Boolean} firstU 将返回的首字母置为\"u\"\r\n * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制\r\n */\r\nfunction guid(len = 32, firstU = true, radix = null) {\r\n\tconst chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')\r\n\tconst uuid = []\r\n\tradix = radix || chars.length\r\n\r\n\tif (len) {\r\n\t\t// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位\r\n\t\tfor (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]\r\n\t} else {\r\n\t\tlet r\r\n\t\t// rfc4122标准要求返回的uuid中,某些位为固定的字符\r\n\t\tuuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'\r\n\t\tuuid[14] = '4'\r\n\r\n\t\tfor (let i = 0; i < 36; i++) {\r\n\t\t\tif (!uuid[i]) {\r\n\t\t\t\tr = 0 | Math.random() * 16\r\n\t\t\t\tuuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class\r\n\tif (firstU) {\r\n\t\tuuid.shift()\r\n\t\treturn `u${uuid.join('')}`\r\n\t}\r\n\treturn uuid.join('')\r\n}\r\n\r\n/**\r\n* @description 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法\r\n   this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx\r\n   这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name\r\n   值(默认为undefined),就是查找最顶层的$parent\r\n*  @param {string|undefined} name 父组件的参数名\r\n*/\r\nfunction $parent(name = undefined) {\r\n\tlet parent = this.$parent\r\n\t// 通过while历遍,这里主要是为了H5需要多层解析的问题\r\n\twhile (parent) {\r\n\t\t// 父组件\r\n\t\tif (parent.$options && parent.$options.name !== name) {\r\n\t\t\t// 如果组件的name不相等,继续上一级寻找\r\n\t\t\tparent = parent.$parent\r\n\t\t} else {\r\n\t\t\treturn parent\r\n\t\t}\r\n\t}\r\n\treturn false\r\n}\r\n\r\n/**\r\n * @description 样式转换\r\n * 对象转字符串,或者字符串转对象\r\n * @param {object | string} customStyle 需要转换的目标\r\n * @param {String} target 转换的目的,object-转为对象,string-转为字符串\r\n * @returns {object|string}\r\n */\r\nfunction addStyle(customStyle, target = 'object') {\r\n\t// 字符串转字符串,对象转对象情形,直接返回\r\n\tif (test.empty(customStyle) || typeof(customStyle) === 'object' && target === 'object' || target === 'string' &&\r\n\t\ttypeof(customStyle) === 'string') {\r\n\t\treturn customStyle\r\n\t}\r\n\t// 字符串转对象\r\n\tif (target === 'object') {\r\n\t\t// 去除字符串样式中的两端空格(中间的空格不能去掉,比如padding: 20px 0如果去掉了就错了),空格是无用的\r\n\t\tcustomStyle = trim(customStyle)\r\n\t\t// 根据\";\"将字符串转为数组形式\r\n\t\tconst styleArray = customStyle.split(';')\r\n\t\tconst style = {}\r\n\t\t// 历遍数组,拼接成对象\r\n\t\tfor (let i = 0; i < styleArray.length; i++) {\r\n\t\t\t// 'font-size:20px;color:red;',如此最后字符串有\";\"的话,会导致styleArray最后一个元素为空字符串,这里需要过滤\r\n\t\t\tif (styleArray[i]) {\r\n\t\t\t\tconst item = styleArray[i].split(':')\r\n\t\t\t\tstyle[trim(item[0])] = trim(item[1])\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn style\r\n\t}\r\n\t// 这里为对象转字符串形式\r\n\tlet string = ''\r\n\tfor (const i in customStyle) {\r\n\t\t// 驼峰转为中划线的形式,否则css内联样式,无法识别驼峰样式属性名\r\n\t\tconst key = i.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n\t\tstring += `${key}:${customStyle[i]};`\r\n\t}\r\n\t// 去除两端空格\r\n\treturn trim(string)\r\n}\r\n\r\n/**\r\n * @description 添加单位,如果有rpx,upx,%,px等单位结尾或者值为auto,直接返回,否则加上px单位结尾\r\n * @param {string|number} value 需要添加单位的值\r\n * @param {string} unit 添加的单位名 比如px\r\n */\r\nfunction addUnit(value = 'auto', unit = uni?.$u?.config?.unit ?? 'px') {\r\n\tvalue = String(value)\r\n\t// 用uView内置验证规则中的number判断是否为数值\r\n\treturn test.number(value) ? `${value}${unit}` : value\r\n}\r\n\r\n/**\r\n * @description 深度克隆\r\n * @param {object} obj 需要深度克隆的对象\r\n * @returns {*} 克隆后的对象或者原值(不是对象)\r\n */\r\nfunction deepClone(obj) {\r\n\t// 对常见的“非”值,直接返回原来值\r\n\tif ([null, undefined, NaN, false].includes(obj)) return obj\r\n\tif (typeof obj !== 'object' && typeof obj !== 'function') {\r\n\t\t// 原始类型直接返回\r\n\t\treturn obj\r\n\t}\r\n\tconst o = test.array(obj) ? [] : {}\r\n\tfor (const i in obj) {\r\n\t\tif (obj.hasOwnProperty(i)) {\r\n\t\t\to[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]\r\n\t\t}\r\n\t}\r\n\treturn o\r\n}\r\n\r\n/**\r\n * @description JS对象深度合并\r\n * @param {object} target 需要拷贝的对象\r\n * @param {object} source 拷贝的来源对象\r\n * @returns {object|boolean} 深度合并后的对象或者false(入参有不是对象)\r\n */\r\nfunction deepMerge(target = {}, source = {}) {\r\n\ttarget = deepClone(target)\r\n\tif (typeof target !== 'object' || typeof source !== 'object') return false\r\n\tfor (const prop in source) {\r\n\t\tif (!source.hasOwnProperty(prop)) continue\r\n\t\tif (prop in target) {\r\n\t\t\tif (typeof target[prop] !== 'object') {\r\n\t\t\t\ttarget[prop] = source[prop]\r\n\t\t\t} else if (typeof source[prop] !== 'object') {\r\n\t\t\t\ttarget[prop] = source[prop]\r\n\t\t\t} else if (target[prop].concat && source[prop].concat) {\r\n\t\t\t\ttarget[prop] = target[prop].concat(source[prop])\r\n\t\t\t} else {\r\n\t\t\t\ttarget[prop] = deepMerge(target[prop], source[prop])\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttarget[prop] = source[prop]\r\n\t\t}\r\n\t}\r\n\treturn target\r\n}\r\n\r\n/**\r\n * @description error提示\r\n * @param {*} err 错误内容\r\n */\r\nfunction error(err) {\r\n\t// 开发环境才提示,生产环境不会提示\r\n\tif (process.env.NODE_ENV === 'development') {\r\n\t\tconsole.error(`uView提示:${err}`)\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 打乱数组\r\n * @param {array} array 需要打乱的数组\r\n * @returns {array} 打乱后的数组\r\n */\r\nfunction randomArray(array = []) {\r\n\t// 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0\r\n\treturn array.sort(() => Math.random() - 0.5)\r\n}\r\n\r\n// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序\r\n// 所以这里做一个兼容polyfill的兼容处理\r\nif (!String.prototype.padStart) {\r\n\t// 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解\r\n\tString.prototype.padStart = function(maxLength, fillString = ' ') {\r\n\t\tif (Object.prototype.toString.call(fillString) !== '[object String]') {\r\n\t\t\tthrow new TypeError(\r\n\t\t\t\t'fillString must be String'\r\n\t\t\t)\r\n\t\t}\r\n\t\tconst str = this\r\n\t\t// 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉\r\n\t\tif (str.length >= maxLength) return String(str)\r\n\r\n\t\tconst fillLength = maxLength - str.length\r\n\t\tlet times = Math.ceil(fillLength / fillString.length)\r\n\t\twhile (times >>= 1) {\r\n\t\t\tfillString += fillString\r\n\t\t\tif (times === 1) {\r\n\t\t\t\tfillString += fillString\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fillString.slice(0, fillLength) + str\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 格式化时间\r\n * @param {String|Number} dateTime 需要格式化的时间戳\r\n * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd\r\n * @returns {string} 返回格式化后的字符串\r\n */\r\n function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {\r\n  let date\r\n\t// 若传入时间为假值,则取当前时间\r\n  if (!dateTime) {\r\n    date = new Date()\r\n  }\r\n  // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)\r\n  else if (/^\\d{10}$/.test(dateTime?.toString().trim())) {\r\n    date = new Date(dateTime * 1000)\r\n  }\r\n  // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容\r\n  else if (typeof dateTime === 'string' && /^\\d+$/.test(dateTime.trim())) {\r\n    date = new Date(Number(dateTime))\r\n  }\r\n  // 其他都认为符合 RFC 2822 规范\r\n  else {\r\n    // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间\r\n    date = new Date(\r\n      typeof dateTime === 'string'\r\n        ? dateTime.replace(/-/g, '/')\r\n        : dateTime\r\n    )\r\n  }\r\n\r\n\tconst timeSource = {\r\n\t\t'y': date.getFullYear().toString(), // 年\r\n\t\t'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月\r\n\t\t'd': date.getDate().toString().padStart(2, '0'), // 日\r\n\t\t'h': date.getHours().toString().padStart(2, '0'), // 时\r\n\t\t'M': date.getMinutes().toString().padStart(2, '0'), // 分\r\n\t\t's': date.getSeconds().toString().padStart(2, '0') // 秒\r\n\t\t// 有其他格式化字符需求可以继续添加,必须转化成字符串\r\n\t}\r\n\r\n  for (const key in timeSource) {\r\n    const [ret] = new RegExp(`${key}+`).exec(formatStr) || []\r\n    if (ret) {\r\n      // 年可能只需展示两位\r\n      const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0\r\n      formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))\r\n    }\r\n  }\r\n\r\n  return formatStr\r\n}\r\n\r\n/**\r\n * @description 时间戳转为多久之前\r\n * @param {String|Number} timestamp 时间戳\r\n * @param {String|Boolean} format \r\n * 格式化规则如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;\r\n * 如果为布尔值false,无论什么时间,都返回多久以前的格式\r\n * @returns {string} 转化后的内容\r\n */\r\nfunction timeFrom(timestamp = null, format = 'yyyy-mm-dd') {\r\n\tif (timestamp == null) timestamp = Number(new Date())\r\n\ttimestamp = parseInt(timestamp)\r\n\t// 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位)\r\n\tif (timestamp.toString().length == 10) timestamp *= 1000\r\n\tlet timer = (new Date()).getTime() - timestamp\r\n\ttimer = parseInt(timer / 1000)\r\n\t// 如果小于5分钟,则返回\"刚刚\",其他以此类推\r\n\tlet tips = ''\r\n\tswitch (true) {\r\n\t\tcase timer < 300:\r\n\t\t\ttips = '刚刚'\r\n\t\t\tbreak\r\n\t\tcase timer >= 300 && timer < 3600:\r\n\t\t\ttips = `${parseInt(timer / 60)}分钟前`\r\n\t\t\tbreak\r\n\t\tcase timer >= 3600 && timer < 86400:\r\n\t\t\ttips = `${parseInt(timer / 3600)}小时前`\r\n\t\t\tbreak\r\n\t\tcase timer >= 86400 && timer < 2592000:\r\n\t\t\ttips = `${parseInt(timer / 86400)}天前`\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t\t\t// 如果format为false,则无论什么时间戳,都显示xx之前\r\n\t\t\tif (format === false) {\r\n\t\t\t\tif (timer >= 2592000 && timer < 365 * 86400) {\r\n\t\t\t\t\ttips = `${parseInt(timer / (86400 * 30))}个月前`\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttips = `${parseInt(timer / (86400 * 365))}年前`\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttips = timeFormat(timestamp, format)\r\n\t\t\t}\r\n\t}\r\n\treturn tips\r\n}\r\n\r\n/**\r\n * @description 去除空格\r\n * @param String str 需要去除空格的字符串\r\n * @param String pos both(左右)|left|right|all 默认both\r\n */\r\nfunction trim(str, pos = 'both') {\r\n\tstr = String(str)\r\n\tif (pos == 'both') {\r\n\t\treturn str.replace(/^\\s+|\\s+$/g, '')\r\n\t}\r\n\tif (pos == 'left') {\r\n\t\treturn str.replace(/^\\s*/, '')\r\n\t}\r\n\tif (pos == 'right') {\r\n\t\treturn str.replace(/(\\s*$)/g, '')\r\n\t}\r\n\tif (pos == 'all') {\r\n\t\treturn str.replace(/\\s+/g, '')\r\n\t}\r\n\treturn str\r\n}\r\n\r\n/**\r\n * @description 对象转url参数\r\n * @param {object} data,对象\r\n * @param {Boolean} isPrefix,是否自动加上\"?\"\r\n * @param {string} arrayFormat 规则 indices|brackets|repeat|comma\r\n */\r\nfunction queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') {\r\n\tconst prefix = isPrefix ? '?' : ''\r\n\tconst _result = []\r\n\tif (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets'\r\n\tfor (const key in data) {\r\n\t\tconst value = data[key]\r\n\t\t// 去掉为空的参数\r\n\t\tif (['', undefined, null].indexOf(value) >= 0) {\r\n\t\t\tcontinue\r\n\t\t}\r\n\t\t// 如果值为数组,另行处理\r\n\t\tif (value.constructor === Array) {\r\n\t\t\t// e.g. {ids: [1, 2, 3]}\r\n\t\t\tswitch (arrayFormat) {\r\n\t\t\t\tcase 'indices':\r\n\t\t\t\t\t// 结果: ids[0]=1&ids[1]=2&ids[2]=3\r\n\t\t\t\t\tfor (let i = 0; i < value.length; i++) {\r\n\t\t\t\t\t\t_result.push(`${key}[${i}]=${value[i]}`)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'brackets':\r\n\t\t\t\t\t// 结果: ids[]=1&ids[]=2&ids[]=3\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}[]=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'repeat':\r\n\t\t\t\t\t// 结果: ids=1&ids=2&ids=3\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'comma':\r\n\t\t\t\t\t// 结果: ids=1,2,3\r\n\t\t\t\t\tlet commaStr = ''\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\tcommaStr += (commaStr ? ',' : '') + _value\r\n\t\t\t\t\t})\r\n\t\t\t\t\t_result.push(`${key}=${commaStr}`)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}[]=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_result.push(`${key}=${value}`)\r\n\t\t}\r\n\t}\r\n\treturn _result.length ? prefix + _result.join('&') : ''\r\n}\r\n\r\n/**\r\n * 显示消息提示框\r\n * @param {String} title 提示的内容,长度与 icon 取值有关。\r\n * @param {Number} duration 提示的延迟时间,单位毫秒,默认:2000\r\n */\r\nfunction toast(title, duration = 2000) {\r\n\tuni.showToast({\r\n\t\ttitle: String(title),\r\n\t\ticon: 'none',\r\n\t\tduration\r\n\t})\r\n}\r\n\r\n/**\r\n * @description 根据主题type值,获取对应的图标\r\n * @param {String} type 主题名称,primary|info|error|warning|success\r\n * @param {boolean} fill 是否使用fill填充实体的图标\r\n */\r\nfunction type2icon(type = 'success', fill = false) {\r\n\t// 如果非预置值,默认为success\r\n\tif (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success'\r\n\tlet iconName = ''\r\n\t// 目前(2019-12-12),info和primary使用同一个图标\r\n\tswitch (type) {\r\n\t\tcase 'primary':\r\n\t\t\ticonName = 'info-circle'\r\n\t\t\tbreak\r\n\t\tcase 'info':\r\n\t\t\ticonName = 'info-circle'\r\n\t\t\tbreak\r\n\t\tcase 'error':\r\n\t\t\ticonName = 'close-circle'\r\n\t\t\tbreak\r\n\t\tcase 'warning':\r\n\t\t\ticonName = 'error-circle'\r\n\t\t\tbreak\r\n\t\tcase 'success':\r\n\t\t\ticonName = 'checkmark-circle'\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t\t\ticonName = 'checkmark-circle'\r\n\t}\r\n\t// 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的\r\n\tif (fill) iconName += '-fill'\r\n\treturn iconName\r\n}\r\n\r\n/**\r\n * @description 数字格式化\r\n * @param {number|string} number 要格式化的数字\r\n * @param {number} decimals 保留几位小数\r\n * @param {string} decimalPoint 小数点符号\r\n * @param {string} thousandsSeparator 千分位符号\r\n * @returns {string} 格式化后的数字\r\n */\r\nfunction priceFormat(number, decimals = 0, decimalPoint = '.', thousandsSeparator = ',') {\r\n\tnumber = (`${number}`).replace(/[^0-9+-Ee.]/g, '')\r\n\tconst n = !isFinite(+number) ? 0 : +number\r\n\tconst prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)\r\n\tconst sep = (typeof thousandsSeparator === 'undefined') ? ',' : thousandsSeparator\r\n\tconst dec = (typeof decimalPoint === 'undefined') ? '.' : decimalPoint\r\n\tlet s = ''\r\n\r\n\ts = (prec ? round(n, prec) + '' : `${Math.round(n)}`).split('.')\r\n\tconst re = /(-?\\d+)(\\d{3})/\r\n\twhile (re.test(s[0])) {\r\n\t\ts[0] = s[0].replace(re, `$1${sep}$2`)\r\n\t}\r\n\t\r\n\tif ((s[1] || '').length < prec) {\r\n\t\ts[1] = s[1] || ''\r\n\t\ts[1] += new Array(prec - s[1].length + 1).join('0')\r\n\t}\r\n\treturn s.join(dec)\r\n}\r\n\r\n/**\r\n * @description 获取duration值\r\n * 如果带有ms或者s直接返回,如果大于一定值,认为是ms单位,小于一定值,认为是s单位\r\n * 比如以30位阈值,那么300大于30,可以理解为用户想要的是300ms,而不是想花300s去执行一个动画\r\n * @param {String|number} value 比如: \"1s\"|\"100ms\"|1|100\r\n * @param {boolean} unit  提示: 如果是false 默认返回number\r\n * @return {string|number} \r\n */\r\nfunction getDuration(value, unit = true) {\r\n\tconst valueNum = parseInt(value)\r\n\tif (unit) {\r\n\t\tif (/s$/.test(value)) return value\r\n\t\treturn value > 30 ? `${value}ms` : `${value}s`\r\n\t}\r\n\tif (/ms$/.test(value)) return valueNum\r\n\tif (/s$/.test(value)) return valueNum > 30 ? valueNum : valueNum * 1000\r\n\treturn valueNum\r\n}\r\n\r\n/**\r\n * @description 日期的月或日补零操作\r\n * @param {String} value 需要补零的值\r\n */\r\nfunction padZero(value) {\r\n\treturn `00${value}`.slice(-2)\r\n}\r\n\r\n/**\r\n * @description 在u-form的子组件内容发生变化,或者失去焦点时,尝试通知u-form执行校验方法\r\n * @param {*} instance\r\n * @param {*} event\r\n */\r\nfunction formValidate(instance, event) {\r\n\tconst formItem = uni.$u.$parent.call(instance, 'u-form-item')\r\n\tconst form = uni.$u.$parent.call(instance, 'u-form')\r\n\t// 如果发生变化的input或者textarea等,其父组件中有u-form-item或者u-form等,就执行form的validate方法\r\n\t// 同时将form-item的pros传递给form,让其进行精确对象验证\r\n\tif (formItem && form) {\r\n\t\tform.validateField(formItem.prop, () => {}, event)\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式\r\n * @param {object} obj 对象\r\n * @param {string} key 需要获取的属性字段\r\n * @returns {*}\r\n */\r\nfunction getProperty(obj, key) {\r\n\tif (!obj) {\r\n\t\treturn\r\n\t}\r\n\tif (typeof key !== 'string' || key === '') {\r\n\t\treturn ''\r\n\t}\r\n\tif (key.indexOf('.') !== -1) {\r\n\t\tconst keys = key.split('.')\r\n\t\tlet firstObj = obj[keys[0]] || {}\r\n\r\n\t\tfor (let i = 1; i < keys.length; i++) {\r\n\t\t\tif (firstObj) {\r\n\t\t\t\tfirstObj = firstObj[keys[i]]\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn firstObj\r\n\t}\r\n\treturn obj[key]\r\n}\r\n\r\n/**\r\n * @description 设置对象的属性值,如果'a.b.c'的形式进行设置\r\n * @param {object} obj 对象\r\n * @param {string} key 需要设置的属性\r\n * @param {string} value 设置的值\r\n */\r\nfunction setProperty(obj, key, value) {\r\n\tif (!obj) {\r\n\t\treturn\r\n\t}\r\n\t// 递归赋值\r\n\tconst inFn = function(_obj, keys, v) {\r\n\t\t// 最后一个属性key\r\n\t\tif (keys.length === 1) {\r\n\t\t\t_obj[keys[0]] = v\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// 0~length-1个key\r\n\t\twhile (keys.length > 1) {\r\n\t\t\tconst k = keys[0]\r\n\t\t\tif (!_obj[k] || (typeof _obj[k] !== 'object')) {\r\n\t\t\t\t_obj[k] = {}\r\n\t\t\t}\r\n\t\t\tconst key = keys.shift()\r\n\t\t\t// 自调用判断是否存在属性,不存在则自动创建对象\r\n\t\t\tinFn(_obj[k], keys, v)\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof key !== 'string' || key === '') {\r\n\r\n\t} else if (key.indexOf('.') !== -1) { // 支持多层级赋值操作\r\n\t\tconst keys = key.split('.')\r\n\t\tinFn(obj, keys, value)\r\n\t} else {\r\n\t\tobj[key] = value\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 获取当前页面路径\r\n */\r\nfunction page() {\r\n\tconst pages = getCurrentPages()\r\n\t// 某些特殊情况下(比如页面进行redirectTo时的一些时机),pages可能为空数组\r\n\treturn `/${pages[pages.length - 1]?.route ?? ''}`\r\n}\r\n\r\n/**\r\n * @description 获取当前路由栈实例数组\r\n */\r\nfunction pages() {\r\n\tconst pages = getCurrentPages()\r\n\treturn pages\r\n}\r\n\r\n/**\r\n * @description 修改uView内置属性值\r\n * @param {object} props 修改内置props属性\r\n * @param {object} config 修改内置config属性\r\n * @param {object} color 修改内置color属性\r\n * @param {object} zIndex 修改内置zIndex属性\r\n */\r\nfunction setConfig({\r\n\tprops = {},\r\n\tconfig = {},\r\n\tcolor = {},\r\n\tzIndex = {}\r\n}) {\r\n\tconst {\r\n\t\tdeepMerge,\r\n\t} = uni.$u\r\n\tuni.$u.config = deepMerge(uni.$u.config, config)\r\n\tuni.$u.props = deepMerge(uni.$u.props, props)\r\n\tuni.$u.color = deepMerge(uni.$u.color, color)\r\n\tuni.$u.zIndex = deepMerge(uni.$u.zIndex, zIndex)\r\n}\r\n\r\nexport default {\r\n\trange,\r\n\tgetPx,\r\n\tsleep,\r\n\tos,\r\n\tsys,\r\n\trandom,\r\n\tguid,\r\n\t$parent,\r\n\taddStyle,\r\n\taddUnit,\r\n\tdeepClone,\r\n\tdeepMerge,\r\n\terror,\r\n\trandomArray,\r\n\ttimeFormat,\r\n\ttimeFrom,\r\n\ttrim,\r\n\tqueryParams,\r\n\ttoast,\r\n\ttype2icon,\r\n\tpriceFormat,\r\n\tgetDuration,\r\n\tpadZero,\r\n\tformValidate,\r\n\tgetProperty,\r\n\tsetProperty,\r\n\tpage,\r\n\tpages,\r\n\tsetConfig\r\n}\r\n","let _boundaryCheckingState = true; // 是否进行越界检查的全局开关\r\n\r\n/**\r\n * 把错误的数据转正\r\n * @private\r\n * @example strip(0.09999999999999998)=0.1\r\n */\r\nfunction strip(num, precision = 15) {\r\n  return +parseFloat(Number(num).toPrecision(precision));\r\n}\r\n\r\n/**\r\n * Return digits length of a number\r\n * @private\r\n * @param {*number} num Input number\r\n */\r\nfunction digitLength(num) {\r\n  // Get digit length of e\r\n  const eSplit = num.toString().split(/[eE]/);\r\n  const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\r\n  return len > 0 ? len : 0;\r\n}\r\n\r\n/**\r\n * 把小数转成整数,如果是小数则放大成整数\r\n * @private\r\n * @param {*number} num 输入数\r\n */\r\nfunction float2Fixed(num) {\r\n  if (num.toString().indexOf('e') === -1) {\r\n    return Number(num.toString().replace('.', ''));\r\n  }\r\n  const dLen = digitLength(num);\r\n  return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);\r\n}\r\n\r\n/**\r\n * 检测数字是否越界,如果越界给出提示\r\n * @private\r\n * @param {*number} num 输入数\r\n */\r\nfunction checkBoundary(num) {\r\n  if (_boundaryCheckingState) {\r\n    if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {\r\n      console.warn(`${num} 超出了精度限制,结果可能不正确`);\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * 把递归操作扁平迭代化\r\n * @param {number[]} arr 要操作的数字数组\r\n * @param {function} operation 迭代操作\r\n * @private\r\n */\r\nfunction iteratorOperation(arr, operation) {\r\n  const [num1, num2, ...others] = arr;\r\n  let res = operation(num1, num2);\r\n\r\n  others.forEach((num) => {\r\n    res = operation(res, num);\r\n  });\r\n\r\n  return res;\r\n}\r\n\r\n/**\r\n * 高精度乘法\r\n * @export\r\n */\r\nexport function times(...nums) {\r\n  if (nums.length > 2) {\r\n    return iteratorOperation(nums, times);\r\n  }\r\n\r\n  const [num1, num2] = nums;\r\n  const num1Changed = float2Fixed(num1);\r\n  const num2Changed = float2Fixed(num2);\r\n  const baseNum = digitLength(num1) + digitLength(num2);\r\n  const leftValue = num1Changed * num2Changed;\r\n\r\n  checkBoundary(leftValue);\r\n\r\n  return leftValue / Math.pow(10, baseNum);\r\n}\r\n\r\n/**\r\n * 高精度加法\r\n * @export\r\n */\r\nexport function plus(...nums) {\r\n  if (nums.length > 2) {\r\n    return iteratorOperation(nums, plus);\r\n  }\r\n\r\n  const [num1, num2] = nums;\r\n  // 取最大的小数位\r\n  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\r\n  // 把小数都转为整数然后再计算\r\n  return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;\r\n}\r\n\r\n/**\r\n * 高精度减法\r\n * @export\r\n */\r\nexport function minus(...nums) {\r\n  if (nums.length > 2) {\r\n    return iteratorOperation(nums, minus);\r\n  }\r\n\r\n  const [num1, num2] = nums;\r\n  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\r\n  return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;\r\n}\r\n\r\n/**\r\n * 高精度除法\r\n * @export\r\n */\r\nexport function divide(...nums) {\r\n  if (nums.length > 2) {\r\n    return iteratorOperation(nums, divide);\r\n  }\r\n\r\n  const [num1, num2] = nums;\r\n  const num1Changed = float2Fixed(num1);\r\n  const num2Changed = float2Fixed(num2);\r\n  checkBoundary(num1Changed);\r\n  checkBoundary(num2Changed);\r\n  // 重要,这里必须用strip进行修正\r\n  return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));\r\n}\r\n\r\n/**\r\n * 四舍五入\r\n * @export\r\n */\r\nexport function round(num, ratio) {\r\n  const base = Math.pow(10, ratio);\r\n  let result = divide(Math.round(Math.abs(times(num, base))), base);\r\n  if (num < 0 && result !== 0) {\r\n    result = times(result, -1);\r\n  }\r\n  // 位数不足则补0\r\n  return result;\r\n}\r\n\r\n/**\r\n * 是否进行边界检查,默认开启\r\n * @param flag 标记开关,true 为开启,false 为关闭,默认为 true\r\n * @export\r\n */\r\nexport function enableBoundaryChecking(flag = true) {\r\n  _boundaryCheckingState = flag;\r\n}\r\n\r\n\r\nexport default {\r\n  times,\r\n  plus,\r\n  minus,\r\n  divide,\r\n  round,\r\n  enableBoundaryChecking,\r\n};\r\n\r\n","// 此版本发布于2022-04-19\r\nconst version = '2.0.31'\r\n\r\n// 开发环境才提示,生产环境不会提示\r\nif (process.env.NODE_ENV === 'development') {\r\n\tconsole.log(`\\n %c uView V${version} %c https://www.uviewui.com/ \\n\\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #ffffff; padding:5px 0;');\r\n}\r\n\r\nexport default {\r\n    v: version,\r\n    version,\r\n    // 主题名称\r\n    type: [\r\n        'primary',\r\n        'success',\r\n        'info',\r\n        'error',\r\n        'warning'\r\n    ],\r\n    // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持\r\n    color: {\r\n        'u-primary': '#2979ff',\r\n        'u-warning': '#ff9900',\r\n        'u-success': '#19be6b',\r\n        'u-error': '#fa3534',\r\n        'u-info': '#909399',\r\n        'u-main-color': '#303133',\r\n        'u-content-color': '#606266',\r\n        'u-tips-color': '#909399',\r\n        'u-light-color': '#c0c4cc'\r\n    },\r\n\t// 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx\r\n\tunit: 'px'\r\n}\r\n","/**\r\n * 此文件的作用为统一配置所有组件的props参数\r\n * 借此用户可以全局覆盖组件的props默认值\r\n * 无需在每个引入组件的页面中都配置一次\r\n */\r\nimport config from './config'\r\n\r\nimport actionSheet from './props/actionSheet.js'\r\nimport album from './props/album.js'\r\nimport alert from './props/alert.js'\r\nimport avatar from './props/avatar'\r\nimport avatarGroup from './props/avatarGroup'\r\nimport backtop from './props/backtop'\r\nimport badge from './props/badge'\r\nimport button from './props/button'\r\nimport calendar from './props/calendar'\r\nimport carKeyboard from './props/carKeyboard'\r\nimport cell from './props/cell'\r\nimport cellGroup from './props/cellGroup'\r\nimport checkbox from './props/checkbox'\r\nimport checkboxGroup from './props/checkboxGroup'\r\nimport circleProgress from './props/circleProgress'\r\nimport code from './props/code'\r\nimport codeInput from './props/codeInput'\r\nimport col from './props/col'\r\nimport collapse from './props/collapse'\r\nimport collapseItem from './props/collapseItem'\r\nimport columnNotice from './props/columnNotice'\r\nimport countDown from './props/countDown'\r\nimport countTo from './props/countTo'\r\nimport datetimePicker from './props/datetimePicker'\r\nimport divider from './props/divider'\r\nimport empty from './props/empty'\r\nimport form from './props/form'\r\nimport formItem from './props/formItem'\r\nimport gap from './props/gap'\r\nimport grid from './props/grid'\r\nimport gridItem from './props/gridItem'\r\nimport icon from './props/icon'\r\nimport image from './props/image'\r\nimport indexAnchor from './props/indexAnchor'\r\nimport indexList from './props/indexList'\r\nimport input from './props/input'\r\nimport keyboard from './props/keyboard'\r\nimport line from './props/line'\r\nimport lineProgress from './props/lineProgress'\r\nimport link from './props/link'\r\nimport list from './props/list'\r\nimport listItem from './props/listItem'\r\nimport loadingIcon from './props/loadingIcon'\r\nimport loadingPage from './props/loadingPage'\r\nimport loadmore from './props/loadmore'\r\nimport modal from './props/modal'\r\nimport navbar from './props/navbar'\r\nimport noNetwork from './props/noNetwork'\r\nimport noticeBar from './props/noticeBar'\r\nimport notify from './props/notify'\r\nimport numberBox from './props/numberBox'\r\nimport numberKeyboard from './props/numberKeyboard'\r\nimport overlay from './props/overlay'\r\nimport parse from './props/parse'\r\nimport picker from './props/picker'\r\nimport popup from './props/popup'\r\nimport radio from './props/radio'\r\nimport radioGroup from './props/radioGroup'\r\nimport rate from './props/rate'\r\nimport readMore from './props/readMore'\r\nimport row from './props/row'\r\nimport rowNotice from './props/rowNotice'\r\nimport scrollList from './props/scrollList'\r\nimport search from './props/search'\r\nimport section from './props/section'\r\nimport skeleton from './props/skeleton'\r\nimport slider from './props/slider'\r\nimport statusBar from './props/statusBar'\r\nimport steps from './props/steps'\r\nimport stepsItem from './props/stepsItem'\r\nimport sticky from './props/sticky'\r\nimport subsection from './props/subsection'\r\nimport swipeAction from './props/swipeAction'\r\nimport swipeActionItem from './props/swipeActionItem'\r\nimport swiper from './props/swiper'\r\nimport swipterIndicator from './props/swipterIndicator'\r\nimport _switch from './props/switch'\r\nimport tabbar from './props/tabbar'\r\nimport tabbarItem from './props/tabbarItem'\r\nimport tabs from './props/tabs'\r\nimport tag from './props/tag'\r\nimport text from './props/text'\r\nimport textarea from './props/textarea'\r\nimport toast from './props/toast'\r\nimport toolbar from './props/toolbar'\r\nimport tooltip from './props/tooltip'\r\nimport transition from './props/transition'\r\nimport upload from './props/upload'\r\n\r\nconst {\r\n    color\r\n} = config\r\n\r\nexport default {\r\n    ...actionSheet,\r\n    ...album,\r\n    ...alert,\r\n    ...avatar,\r\n    ...avatarGroup,\r\n    ...backtop,\r\n    ...badge,\r\n    ...button,\r\n    ...calendar,\r\n    ...carKeyboard,\r\n    ...cell,\r\n    ...cellGroup,\r\n    ...checkbox,\r\n    ...checkboxGroup,\r\n    ...circleProgress,\r\n    ...code,\r\n    ...codeInput,\r\n    ...col,\r\n    ...collapse,\r\n    ...collapseItem,\r\n    ...columnNotice,\r\n    ...countDown,\r\n    ...countTo,\r\n    ...datetimePicker,\r\n    ...divider,\r\n    ...empty,\r\n    ...form,\r\n    ...formItem,\r\n    ...gap,\r\n    ...grid,\r\n    ...gridItem,\r\n    ...icon,\r\n    ...image,\r\n    ...indexAnchor,\r\n    ...indexList,\r\n    ...input,\r\n    ...keyboard,\r\n    ...line,\r\n    ...lineProgress,\r\n    ...link,\r\n    ...list,\r\n    ...listItem,\r\n    ...loadingIcon,\r\n    ...loadingPage,\r\n    ...loadmore,\r\n    ...modal,\r\n    ...navbar,\r\n    ...noNetwork,\r\n    ...noticeBar,\r\n    ...notify,\r\n    ...numberBox,\r\n    ...numberKeyboard,\r\n    ...overlay,\r\n    ...parse,\r\n    ...picker,\r\n    ...popup,\r\n    ...radio,\r\n    ...radioGroup,\r\n    ...rate,\r\n    ...readMore,\r\n    ...row,\r\n    ...rowNotice,\r\n    ...scrollList,\r\n    ...search,\r\n    ...section,\r\n    ...skeleton,\r\n    ...slider,\r\n    ...statusBar,\r\n    ...steps,\r\n    ...stepsItem,\r\n    ...sticky,\r\n    ...subsection,\r\n    ...swipeAction,\r\n    ...swipeActionItem,\r\n    ...swiper,\r\n    ...swipterIndicator,\r\n    ..._switch,\r\n    ...tabbar,\r\n    ...tabbarItem,\r\n    ...tabs,\r\n    ...tag,\r\n    ...text,\r\n    ...textarea,\r\n    ...toast,\r\n    ...toolbar,\r\n    ...tooltip,\r\n    ...transition,\r\n    ...upload\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:44:35\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/actionSheet.js\r\n */\r\nexport default {\r\n    // action-sheet组件\r\n    actionSheet: {\r\n        show: false,\r\n        title: '',\r\n        description: '',\r\n        actions: () => [],\r\n        index: '',\r\n        cancelText: '',\r\n        closeOnClickAction: true,\r\n        safeAreaInsetBottom: true,\r\n        openType: '',\r\n        closeOnClickOverlay: true,\r\n        round: 0\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:47:24\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/album.js\r\n */\r\nexport default {\r\n    // album 组件\r\n    album: {\r\n        urls: () => [],\r\n        keyName: '',\r\n        singleSize: 180,\r\n        multipleSize: 70,\r\n        space: 6,\r\n        singleMode: 'scaleToFill',\r\n        multipleMode: 'aspectFill',\r\n        maxCount: 9,\r\n        previewFullImage: true,\r\n        rowCount: 3,\r\n        showMore: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:48:53\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/alert.js\r\n */\r\nexport default {\r\n    // alert警告组件\r\n    alert: {\r\n        title: '',\r\n        type: 'warning',\r\n        description: '',\r\n        closable: false,\r\n        showIcon: false,\r\n        effect: 'light',\r\n        center: false,\r\n        fontSize: 14\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:49:22\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/avatar.js\r\n */\r\nexport default {\r\n    // avatar 组件\r\n    avatar: {\r\n        src: '',\r\n        shape: 'circle',\r\n        size: 40,\r\n        mode: 'scaleToFill',\r\n        text: '',\r\n        bgColor: '#c0c4cc',\r\n        color: '#ffffff',\r\n        fontSize: 18,\r\n        icon: '',\r\n        mpAvatar: false,\r\n        randomBgColor: false,\r\n        defaultUrl: '',\r\n        colorIndex: '',\r\n        name: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:49:55\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/avatarGroup.js\r\n */\r\nexport default {\r\n    // avatarGroup 组件\r\n    avatarGroup: {\r\n        urls: () => [],\r\n        maxCount: 5,\r\n        shape: 'circle',\r\n        mode: 'scaleToFill',\r\n        showMore: true,\r\n        size: 40,\r\n        keyName: '',\r\n        gap: 0.5,\r\n\t\textraValue: 0\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:50:18\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/backtop.js\r\n */\r\nexport default {\r\n    // backtop组件\r\n    backtop: {\r\n        mode: 'circle',\r\n        icon: 'arrow-upward',\r\n        text: '',\r\n        duration: 100,\r\n        scrollTop: 0,\r\n        top: 400,\r\n        bottom: 100,\r\n        right: 20,\r\n        zIndex: 9,\r\n        iconStyle: () => ({\r\n            color: '#909399',\r\n            fontSize: '19px'\r\n        })\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-23 19:51:50\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/badge.js\r\n */\r\nexport default {\r\n    // 徽标数组件\r\n    badge: {\r\n        isDot: false,\r\n        value: '',\r\n        show: true,\r\n        max: 999,\r\n        type: 'error',\r\n        showZero: false,\r\n        bgColor: null,\r\n        color: null,\r\n        shape: 'circle',\r\n        numberType: 'overflow',\r\n        offset: () => [],\r\n        inverted: false,\r\n        absolute: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:51:27\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/button.js\r\n */\r\nexport default {\r\n    // button组件\r\n    button: {\r\n        hairline: false,\r\n        type: 'info',\r\n        size: 'normal',\r\n        shape: 'square',\r\n        plain: false,\r\n        disabled: false,\r\n        loading: false,\r\n        loadingText: '',\r\n        loadingMode: 'spinner',\r\n        loadingSize: 15,\r\n        openType: '',\r\n        formType: '',\r\n        appParameter: '',\r\n        hoverStopPropagation: true,\r\n        lang: 'en',\r\n        sessionFrom: '',\r\n        sendMessageTitle: '',\r\n        sendMessagePath: '',\r\n        sendMessageImg: '',\r\n        showMessageCard: false,\r\n        dataName: '',\r\n        throttleTime: 0,\r\n        hoverStartTime: 0,\r\n        hoverStayTime: 200,\r\n        text: '',\r\n        icon: '',\r\n        iconColor: '',\r\n        color: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:52:43\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/calendar.js\r\n */\r\nexport default {\r\n    // calendar 组件\r\n    calendar: {\r\n        title: '日期选择',\r\n        showTitle: true,\r\n        showSubtitle: true,\r\n        mode: 'single',\r\n        startText: '开始',\r\n        endText: '结束',\r\n        customList: () => [],\r\n        color: '#3c9cff',\r\n        minDate: 0,\r\n        maxDate: 0,\r\n        defaultDate: null,\r\n        maxCount: Number.MAX_SAFE_INTEGER, // Infinity\r\n        rowHeight: 56,\r\n        formatter: null,\r\n        showLunar: false,\r\n        showMark: true,\r\n        confirmText: '确定',\r\n        confirmDisabledText: '确定',\r\n        show: false,\r\n        closeOnClickOverlay: false,\r\n        readonly: false,\r\n        showConfirm: true,\r\n        maxRange: Number.MAX_SAFE_INTEGER, // Infinity\r\n        rangePrompt: '',\r\n        showRangePrompt: true,\r\n        allowSameDay: false,\r\n\t\tround: 0,\r\n\t\tmonthNum: 3\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:53:20\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/carKeyboard.js\r\n */\r\nexport default {\r\n    // 车牌号键盘\r\n    carKeyboard: {\r\n        random: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-23 20:53:09\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/cell.js\r\n */\r\nexport default {\r\n\t// cell组件的props\r\n\tcell: {\r\n\t\tcustomClass: '',\r\n\t\ttitle: '',\r\n\t\tlabel: '',\r\n\t\tvalue: '',\r\n\t\ticon: '',\r\n\t\tdisabled: false,\r\n\t\tborder: true,\r\n\t\tcenter: false,\r\n\t\turl: '',\r\n\t\tlinkType: 'navigateTo',\r\n\t\tclickable: false,\r\n\t\tisLink: false,\r\n\t\trequired: false,\r\n\t\tarrowDirection: '',\r\n\t\ticonStyle: {},\r\n\t\trightIconStyle: {},\r\n\t\trightIcon: 'arrow-right',\r\n\t\ttitleStyle: {},\r\n\t\tsize: '',\r\n\t\tstop: true,\r\n\t\tname: ''\r\n\t}\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:54:16\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/cellGroup.js\r\n */\r\nexport default {\r\n    // cell-group组件的props\r\n    cellGroup: {\r\n        title: '',\r\n        border: true,\r\n        customStyle: {}\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-23 21:06:59\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/checkbox.js\r\n */\r\nexport default {\r\n    // checkbox组件\r\n    checkbox: {\r\n        name: '',\r\n        shape: '',\r\n        size: '',\r\n        checkbox: false,\r\n        disabled: '',\r\n        activeColor: '',\r\n        inactiveColor: '',\r\n        iconSize: '',\r\n        iconColor: '',\r\n        label: '',\r\n        labelSize: '',\r\n        labelColor: '',\r\n        labelDisabled: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:54:47\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/checkboxGroup.js\r\n */\r\nexport default {\r\n    // checkbox-group组件\r\n    checkboxGroup: {\r\n        name: '',\r\n        value: () => [],\r\n        shape: 'square',\r\n        disabled: false,\r\n        activeColor: '#2979ff',\r\n        inactiveColor: '#c8c9cc',\r\n        size: 18,\r\n        placement: 'row',\r\n        labelSize: 14,\r\n        labelColor: '#303133',\r\n        labelDisabled: false,\r\n        iconColor: '#ffffff',\r\n        iconSize: 12,\r\n        iconPlacement: 'left',\r\n        borderBottom: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:55:02\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/circleProgress.js\r\n */\r\nexport default {\r\n    // circleProgress 组件\r\n    circleProgress: {\r\n        percentage: 30\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:55:27\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/code.js\r\n */\r\n\r\nexport default {\r\n    // code 组件\r\n    code: {\r\n        seconds: 60,\r\n        startText: '获取验证码',\r\n        changeText: 'X秒重新获取',\r\n        endText: '重新获取',\r\n        keepRunning: false,\r\n        uniqueKey: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:55:58\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/codeInput.js\r\n */\r\nexport default {\r\n    // codeInput 组件\r\n    codeInput: {\r\n        maxlength: 6,\r\n        dot: false,\r\n        mode: 'box',\r\n        hairline: false,\r\n        space: 10,\r\n        value: '',\r\n        focus: false,\r\n        bold: false,\r\n        color: '#606266',\r\n        fontSize: 18,\r\n        size: 35,\r\n        disabledKeyboard: false,\r\n        borderColor: '#c9cacc',\r\n\t\tdisabledDot: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:56:12\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/col.js\r\n */\r\nexport default {\r\n    // col 组件\r\n    col: {\r\n        span: 12,\r\n        offset: 0,\r\n        justify: 'start',\r\n        align: 'stretch',\r\n        textAlign: 'left'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:56:30\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/collapse.js\r\n */\r\nexport default {\r\n    // collapse 组件\r\n    collapse: {\r\n        value: null,\r\n        accordion: false,\r\n        border: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:56:42\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/collapseItem.js\r\n */\r\nexport default {\r\n    // collapseItem 组件\r\n    collapseItem: {\r\n        title: '',\r\n        value: '',\r\n        label: '',\r\n        disabled: false,\r\n        isLink: true,\r\n        clickable: true,\r\n        border: true,\r\n        align: 'left',\r\n        name: '',\r\n        icon: '',\r\n        duration: 300\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:57:16\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/columnNotice.js\r\n */\r\nexport default {\r\n    // columnNotice 组件\r\n    columnNotice: {\r\n        text: '',\r\n        icon: 'volume',\r\n        mode: '',\r\n        color: '#f9ae3d',\r\n        bgColor: '#fdf6ec',\r\n        fontSize: 14,\r\n        speed: 80,\r\n        step: false,\r\n        duration: 1500,\r\n        disableTouch: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:11:29\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/countDown.js\r\n */\r\nexport default {\r\n    // u-count-down 计时器组件\r\n    countDown: {\r\n        time: 0,\r\n        format: 'HH:mm:ss',\r\n        autoStart: true,\r\n        millisecond: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:57:32\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/countTo.js\r\n */\r\nexport default {\r\n    // countTo 组件\r\n    countTo: {\r\n        startVal: 0,\r\n        endVal: 0,\r\n        duration: 2000,\r\n        autoplay: true,\r\n        decimals: 0,\r\n        useEasing: true,\r\n        decimal: '.',\r\n        color: '#606266',\r\n        fontSize: 22,\r\n        bold: false,\r\n        separator: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:57:48\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/datetimePicker.js\r\n */\r\nexport default {\r\n    // datetimePicker 组件\r\n    datetimePicker: {\r\n        show: false,\r\n        showToolbar: true,\r\n        value: '',\r\n        title: '',\r\n        mode: 'datetime',\r\n        maxDate: new Date(new Date().getFullYear() + 10, 0, 1).getTime(),\r\n        minDate: new Date(new Date().getFullYear() - 10, 0, 1).getTime(),\r\n        minHour: 0,\r\n        maxHour: 23,\r\n        minMinute: 0,\r\n        maxMinute: 59,\r\n        filter: null,\r\n        formatter: null,\r\n        loading: false,\r\n        itemHeight: 44,\r\n        cancelText: '取消',\r\n        confirmText: '确认',\r\n        cancelColor: '#909193',\r\n        confirmColor: '#3c9cff',\r\n        visibleItemCount: 5,\r\n        closeOnClickOverlay: false,\r\n        defaultIndex: () => []\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:58:03\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/divider.js\r\n */\r\nexport default {\r\n    // divider组件\r\n    divider: {\r\n        dashed: false,\r\n        hairline: true,\r\n        dot: false,\r\n        textPosition: 'center',\r\n        text: '',\r\n        textSize: 14,\r\n        textColor: '#909399',\r\n        lineColor: '#dcdfe6'\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:03:27\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/empty.js\r\n */\r\nexport default {\r\n    // empty组件\r\n    empty: {\r\n        icon: '',\r\n        text: '',\r\n        textColor: '#c0c4cc',\r\n        textSize: 14,\r\n        iconColor: '#c0c4cc',\r\n        iconSize: 90,\r\n        mode: 'data',\r\n        width: 160,\r\n        height: 160,\r\n        show: true,\r\n        marginTop: 0\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:03:49\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/form.js\r\n */\r\nexport default {\r\n    // form 组件\r\n    form: {\r\n        model: () => ({}),\r\n        rules: () => ({}),\r\n        errorType: 'message',\r\n        borderBottom: true,\r\n        labelPosition: 'left',\r\n        labelWidth: 45,\r\n        labelAlign: 'left',\r\n        labelStyle: () => ({})\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:04:32\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/formItem.js\r\n */\r\nexport default {\r\n    // formItem 组件\r\n    formItem: {\r\n        label: '',\r\n        prop: '',\r\n        borderBottom: '',\r\n        labelWidth: '',\r\n        rightIcon: '',\r\n        leftIcon: '',\r\n        required: false,\r\n        leftIconStyle: '',\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:05:25\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/gap.js\r\n */\r\nexport default {\r\n    // gap组件\r\n    gap: {\r\n        bgColor: 'transparent',\r\n        height: 20,\r\n        marginTop: 0,\r\n        marginBottom: 0,\r\n        customStyle: {}\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:05:57\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/grid.js\r\n */\r\nexport default {\r\n    // grid组件\r\n    grid: {\r\n        col: 3,\r\n        border: false,\r\n        align: 'left'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:06:13\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/gridItem.js\r\n */\r\nexport default {\r\n    // grid-item组件\r\n    gridItem: {\r\n        name: null,\r\n        bgColor: 'transparent'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 18:00:14\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/icon.js\r\n */\r\nimport config from '../config'\r\n\r\nconst {\r\n    color\r\n} = config\r\nexport default {\r\n    // icon组件\r\n    icon: {\r\n        name: '',\r\n        color: color['u-content-color'],\r\n        size: '16px',\r\n        bold: false,\r\n        index: '',\r\n        hoverClass: '',\r\n        customPrefix: 'uicon',\r\n        label: '',\r\n        labelPos: 'right',\r\n        labelSize: '15px',\r\n        labelColor: color['u-content-color'],\r\n        space: '3px',\r\n        imgMode: '',\r\n        width: '',\r\n        height: '',\r\n        top: 0,\r\n        stop: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:01:51\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/image.js\r\n */\r\nexport default {\r\n    // image组件\r\n    image: {\r\n        src: '',\r\n        mode: 'aspectFill',\r\n        width: '300',\r\n        height: '225',\r\n        shape: 'square',\r\n        radius: 0,\r\n        lazyLoad: true,\r\n        showMenuByLongpress: true,\r\n        loadingIcon: 'photo',\r\n        errorIcon: 'error-circle',\r\n        showLoading: true,\r\n        showError: true,\r\n        fade: true,\r\n        webp: false,\r\n        duration: 500,\r\n        bgColor: '#f3f4f6'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:13:15\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/indexAnchor.js\r\n */\r\nexport default {\r\n    // indexAnchor 组件\r\n    indexAnchor: {\r\n        text: '',\r\n        color: '#606266',\r\n        size: 14,\r\n        bgColor: '#dedede',\r\n        height: 32\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:13:35\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/indexList.js\r\n */\r\nexport default {\r\n    // indexList 组件\r\n    indexList: {\r\n        inactiveColor: '#606266',\r\n        activeColor: '#5677fc',\r\n        indexList: () => [],\r\n        sticky: true,\r\n        customNavHeight: 0\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:13:55\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/input.js\r\n */\r\nexport default {\r\n\t// index 组件\r\n\tinput: {\r\n\t\tvalue: '',\r\n\t\ttype: 'text',\r\n\t\tfixed: false,\r\n\t\tdisabled: false,\r\n\t\tdisabledColor: '#f5f7fa',\r\n\t\tclearable: false,\r\n\t\tpassword: false,\r\n\t\tmaxlength: -1,\r\n\t\tplaceholder: null,\r\n\t\tplaceholderClass: 'input-placeholder',\r\n\t\tplaceholderStyle: 'color: #c0c4cc',\r\n\t\tshowWordLimit: false,\r\n\t\tconfirmType: 'done',\r\n\t\tconfirmHold: false,\r\n\t\tholdKeyboard: false,\r\n\t\tfocus: false,\r\n\t\tautoBlur: false,\r\n\t\tdisableDefaultPadding: false,\r\n\t\tcursor: -1,\r\n\t\tcursorSpacing: 30,\r\n\t\tselectionStart: -1,\r\n\t\tselectionEnd: -1,\r\n\t\tadjustPosition: true,\r\n\t\tinputAlign: 'left',\r\n\t\tfontSize: '15px',\r\n\t\tcolor: '#303133',\r\n\t\tprefixIcon: '',\r\n\t\tprefixIconStyle: '',\r\n\t\tsuffixIcon: '',\r\n\t\tsuffixIconStyle: '',\r\n\t\tborder: 'surround',\r\n\t\treadonly: false,\r\n\t\tshape: 'square',\r\n\t\tformatter: null\r\n\t}\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:07:49\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/keyboard.js\r\n */\r\nexport default {\r\n    // 键盘组件\r\n    keyboard: {\r\n        mode: 'number',\r\n        dotDisabled: false,\r\n        tooltip: true,\r\n        showTips: true,\r\n        tips: '',\r\n        showCancel: true,\r\n        showConfirm: true,\r\n        random: false,\r\n        safeAreaInsetBottom: true,\r\n        closeOnClickOverlay: true,\r\n        show: false,\r\n        overlay: true,\r\n        zIndex: 10075,\r\n        cancelText: '取消',\r\n        confirmText: '确定',\r\n        autoChange: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:04:49\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/line.js\r\n */\r\nexport default {\r\n    // line组件\r\n    line: {\r\n        color: '#d6d7d9',\r\n        length: '100%',\r\n        direction: 'row',\r\n        hairline: true,\r\n        margin: 0,\r\n        dashed: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:14:11\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/lineProgress.js\r\n */\r\nexport default {\r\n    // lineProgress 组件\r\n    lineProgress: {\r\n        activeColor: '#19be6b',\r\n        inactiveColor: '#ececec',\r\n        percentage: 0,\r\n        showText: true,\r\n        height: 12\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:45:36\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/link.js\r\n */\r\nimport config from '../config'\r\n\r\nconst {\r\n    color\r\n} = config\r\nexport default {\r\n    // link超链接组件props参数\r\n    link: {\r\n        color: color['u-primary'],\r\n        fontSize: 15,\r\n        underLine: false,\r\n        href: '',\r\n        mpTips: '链接已复制,请在浏览器打开',\r\n        lineColor: '',\r\n        text: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:14:53\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/list.js\r\n */\r\nexport default {\r\n    // list 组件\r\n    list: {\r\n        showScrollbar: false,\r\n        lowerThreshold: 50,\r\n        upperThreshold: 0,\r\n        scrollTop: 0,\r\n        offsetAccuracy: 10,\r\n        enableFlex: false,\r\n        pagingEnabled: false,\r\n        scrollable: true,\r\n        scrollIntoView: '',\r\n        scrollWithAnimation: false,\r\n        enableBackToTop: false,\r\n        height: 0,\r\n        width: 0,\r\n        preLoadScreen: 1\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:15:40\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/listItem.js\r\n */\r\nexport default {\r\n    // listItem 组件\r\n    listItem: {\r\n        anchor: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:45:47\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/loadingIcon.js\r\n */\r\nimport config from '../config'\r\n\r\nconst {\r\n    color\r\n} = config\r\nexport default {\r\n    // loading-icon加载中图标组件\r\n    loadingIcon: {\r\n        show: true,\r\n        color: color['u-tips-color'],\r\n        textColor: color['u-tips-color'],\r\n        vertical: false,\r\n        mode: 'spinner',\r\n        size: 24,\r\n        textSize: 15,\r\n        text: '',\r\n        timingFunction: 'ease-in-out',\r\n        duration: 1200,\r\n        inactiveColor: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:00:23\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/loadingPage.js\r\n */\r\nexport default {\r\n    // loading-page组件\r\n    loadingPage: {\r\n        loadingText: '正在加载',\r\n        image: '',\r\n        loadingMode: 'circle',\r\n        loading: false,\r\n        bgColor: '#ffffff',\r\n        color: '#C8C8C8',\r\n        fontSize: 19,\r\n        loadingColor: '#C8C8C8'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:15:26\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/loadmore.js\r\n */\r\nexport default {\r\n    // loadmore 组件\r\n    loadmore: {\r\n        status: 'loadmore',\r\n        bgColor: 'transparent',\r\n        icon: true,\r\n        fontSize: 14,\r\n        color: '#606266',\r\n        loadingIcon: 'spinner',\r\n        loadmoreText: '加载更多',\r\n        loadingText: '正在加载...',\r\n        nomoreText: '没有更多了',\r\n        isDot: false,\r\n        iconColor: '#b7b7b7',\r\n        marginTop: 10,\r\n        marginBottom: 10,\r\n        height: 'auto',\r\n        line: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:15:59\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/modal.js\r\n */\r\nexport default {\r\n    // modal 组件\r\n    modal: {\r\n        show: false,\r\n        title: '',\r\n        content: '',\r\n        confirmText: '确认',\r\n        cancelText: '取消',\r\n        showConfirmButton: true,\r\n        showCancelButton: false,\r\n        confirmColor: '#2979ff',\r\n        cancelColor: '#606266',\r\n        buttonReverse: false,\r\n        zoom: true,\r\n        asyncClose: false,\r\n        closeOnClickOverlay: false,\r\n        negativeTop: 0,\r\n        width: '650rpx',\r\n        confirmButtonShape: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:16:18\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/navbar.js\r\n */\r\nimport color from '../color'\r\nexport default {\r\n    // navbar 组件\r\n    navbar: {\r\n        safeAreaInsetTop: true,\r\n        placeholder: false,\r\n        fixed: true,\r\n        border: false,\r\n        leftIcon: 'arrow-left',\r\n        leftText: '',\r\n        rightText: '',\r\n        rightIcon: '',\r\n        title: '',\r\n        bgColor: '#ffffff',\r\n        titleWidth: '400rpx',\r\n        height: '44px',\r\n\t\tleftIconSize: 20,\r\n\t\tleftIconColor: color.mainColor,\r\n\t\tautoBack: false,\r\n\t\ttitleStyle: ''\r\n    }\r\n\r\n}\r\n","// 为了让用户能够自定义主题,会逐步弃用此文件,各颜色通过css提供\r\n// 为了给某些特殊场景使用和向后兼容,无需删除此文件(2020-06-20)\r\nconst color = {\r\n    primary: '#3c9cff',\r\n    info: '#909399',\r\n    default: '#909399',\r\n    warning: '#f9ae3d',\r\n    error: '#f56c6c',\r\n    success: '#5ac725',\r\n    mainColor: '#303133',\r\n    contentColor: '#606266',\r\n    tipsColor: '#909399',\r\n    lightColor: '#c0c4cc',\r\n    borderColor: '#e4e7ed'\r\n}\r\n\r\nexport default color\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:16:39\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/noNetwork.js\r\n */\r\nexport default {\r\n    // noNetwork\r\n    noNetwork: {\r\n        tips: '哎呀,网络信号丢失',\r\n        zIndex: '',\r\n        image: 'data:image/png;base64,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'\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:17:13\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/noticeBar.js\r\n */\r\nexport default {\r\n    // noticeBar\r\n    noticeBar: {\r\n        text: () => [],\r\n        direction: 'row',\r\n        step: false,\r\n        icon: 'volume',\r\n        mode: '',\r\n        color: '#f9ae3d',\r\n        bgColor: '#fdf6ec',\r\n        speed: 80,\r\n        fontSize: 14,\r\n        duration: 2000,\r\n        disableTouch: true,\r\n        url: '',\r\n        linkType: 'navigateTo'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:10:21\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/notify.js\r\n */\r\nexport default {\r\n    // notify组件\r\n    notify: {\r\n        top: 0,\r\n        type: 'primary',\r\n        color: '#ffffff',\r\n        bgColor: '',\r\n        message: '',\r\n        duration: 3000,\r\n        fontSize: 15,\r\n        safeAreaInsetTop: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:11:46\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/numberBox.js\r\n */\r\nexport default {\r\n    // 步进器组件\r\n    numberBox: {\r\n        name: '',\r\n        value: 0,\r\n        min: 1,\r\n        max: Number.MAX_SAFE_INTEGER,\r\n        step: 1,\r\n        integer: false,\r\n        disabled: false,\r\n        disabledInput: false,\r\n        asyncChange: false,\r\n        inputWidth: 35,\r\n        showMinus: true,\r\n        showPlus: true,\r\n        decimalLength: null,\r\n        longPress: true,\r\n        color: '#323233',\r\n        buttonSize: 30,\r\n        bgColor: '#EBECEE',\r\n        cursorSpacing: 100,\r\n        disableMinus: false,\r\n        disablePlus: false,\r\n        iconStyle: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:08:05\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/numberKeyboard.js\r\n */\r\nexport default {\r\n    // 数字键盘\r\n    numberKeyboard: {\r\n        mode: 'number',\r\n        dotDisabled: false,\r\n        random: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:06:50\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/overlay.js\r\n */\r\nexport default {\r\n    // overlay组件\r\n    overlay: {\r\n        show: false,\r\n        zIndex: 10070,\r\n        duration: 300,\r\n        opacity: 0.5\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:17:33\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/parse.js\r\n */\r\nexport default {\r\n    // parse\r\n    parse: {\r\n        copyLink: true,\r\n        errorImg: '',\r\n        lazyLoad: false,\r\n        loadingImg: '',\r\n        pauseVideo: true,\r\n        previewImg: true,\r\n        setTitle: true,\r\n        showImgMenu: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:18:20\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/picker.js\r\n */\r\nexport default {\r\n    // picker\r\n    picker: {\r\n        show: false,\r\n        showToolbar: true,\r\n        title: '',\r\n        columns: () => [],\r\n        loading: false,\r\n        itemHeight: 44,\r\n        cancelText: '取消',\r\n        confirmText: '确定',\r\n        cancelColor: '#909193',\r\n        confirmColor: '#3c9cff',\r\n        singleIndex: 0,\r\n        visibleItemCount: 5,\r\n        keyName: 'text',\r\n        closeOnClickOverlay: false,\r\n        defaultIndex: () => [],\r\n\t\timmediateChange: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:06:33\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/popup.js\r\n */\r\nexport default {\r\n    // popup组件\r\n    popup: {\r\n        show: false,\r\n        overlay: true,\r\n        mode: 'bottom',\r\n        duration: 300,\r\n        closeable: false,\r\n        overlayStyle: () => {},\r\n        closeOnClickOverlay: true,\r\n        zIndex: 10075,\r\n        safeAreaInsetBottom: true,\r\n        safeAreaInsetTop: false,\r\n        closeIconPos: 'top-right',\r\n        round: 0,\r\n        zoom: true,\r\n        bgColor: '',\r\n        overlayOpacity: 0.5\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:02:34\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/radio.js\r\n */\r\nexport default {\r\n    // radio组件\r\n    radio: {\r\n        name: '',\r\n        shape: '',\r\n        disabled: '',\r\n        labelDisabled: '',\r\n        activeColor: '',\r\n        inactiveColor: '',\r\n        iconSize: '',\r\n        labelSize: '',\r\n        label: '',\r\n        labelColor: '',\r\n        size: '',\r\n        iconColor: '',\r\n        placement: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:03:12\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/radioGroup.js\r\n */\r\nexport default {\r\n    // radio-group组件\r\n    radioGroup: {\r\n        value: '',\r\n        disabled: false,\r\n        shape: 'circle',\r\n        activeColor: '#2979ff',\r\n        inactiveColor: '#c8c9cc',\r\n        name: '',\r\n        size: 18,\r\n        placement: 'row',\r\n        label: '',\r\n        labelColor: '#303133',\r\n        labelSize: 14,\r\n        labelDisabled: false,\r\n        iconColor: '#ffffff',\r\n        iconSize: 12,\r\n        borderBottom: false,\r\n        iconPlacement: 'left'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:05:09\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/rate.js\r\n */\r\nexport default {\r\n    // rate组件\r\n    rate: {\r\n        value: 1,\r\n        count: 5,\r\n        disabled: false,\r\n        size: 18,\r\n        inactiveColor: '#b2b2b2',\r\n        activeColor: '#FA3534',\r\n        gutter: 4,\r\n        minCount: 1,\r\n        allowHalf: false,\r\n        activeIcon: 'star-fill',\r\n        inactiveIcon: 'star',\r\n        touchable: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:18:41\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/readMore.js\r\n */\r\nexport default {\r\n    // readMore\r\n    readMore: {\r\n        showHeight: 400,\r\n        toggle: false,\r\n        closeText: '展开阅读全文',\r\n        openText: '收起',\r\n        color: '#2979ff',\r\n        fontSize: 14,\r\n        textIndent: '2em',\r\n        name: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:18:58\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/row.js\r\n */\r\nexport default {\r\n    // row\r\n    row: {\r\n        gutter: 0,\r\n        justify: 'start',\r\n        align: 'center'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:19:13\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/rowNotice.js\r\n */\r\nexport default {\r\n    // rowNotice\r\n    rowNotice: {\r\n        text: '',\r\n        icon: 'volume',\r\n        mode: '',\r\n        color: '#f9ae3d',\r\n        bgColor: '#fdf6ec',\r\n        fontSize: 14,\r\n        speed: 80\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:19:28\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/scrollList.js\r\n */\r\nexport default {\r\n    // scrollList\r\n    scrollList: {\r\n        indicatorWidth: 50,\r\n        indicatorBarWidth: 20,\r\n        indicator: true,\r\n        indicatorColor: '#f2f2f2',\r\n        indicatorActiveColor: '#3c9cff',\r\n        indicatorStyle: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:19:45\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/search.js\r\n */\r\nexport default {\r\n    // search\r\n    search: {\r\n        shape: 'round',\r\n        bgColor: '#f2f2f2',\r\n        placeholder: '请输入关键字',\r\n        clearabled: true,\r\n        focus: false,\r\n        showAction: true,\r\n        actionStyle: () => ({}),\r\n        actionText: '搜索',\r\n        inputAlign: 'left',\r\n        inputStyle: () => ({}),\r\n        disabled: false,\r\n        borderColor: 'transparent',\r\n        searchIconColor: '#909399',\r\n        searchIconSize: 22,\r\n        color: '#606266',\r\n        placeholderColor: '#909399',\r\n        searchIcon: 'search',\r\n        margin: '0',\r\n        animation: false,\r\n        value: '',\r\n        maxlength: '-1',\r\n        height: 32,\r\n        label: null\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:07:33\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/section.js\r\n */\r\nexport default {\r\n    // u-section组件\r\n    section: {\r\n        title: '',\r\n        subTitle: '更多',\r\n        right: true,\r\n        fontSize: 15,\r\n        bold: true,\r\n        color: '#303133',\r\n        subColor: '#909399',\r\n        showLine: true,\r\n        lineColor: '',\r\n        arrow: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:20:14\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/skeleton.js\r\n */\r\nexport default {\r\n    // skeleton\r\n    skeleton: {\r\n        loading: true,\r\n        animate: true,\r\n        rows: 0,\r\n        rowsWidth: '100%',\r\n        rowsHeight: 18,\r\n        title: true,\r\n        titleWidth: '50%',\r\n        titleHeight: 18,\r\n        avatar: false,\r\n        avatarSize: 32,\r\n        avatarShape: 'circle'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:08:25\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/slider.js\r\n */\r\nexport default {\r\n    // slider组件\r\n    slider: {\r\n        value: 0,\r\n        blockSize: 18,\r\n        min: 0,\r\n        max: 100,\r\n        step: 1,\r\n        activeColor: '#2979ff',\r\n        inactiveColor: '#c0c4cc',\r\n        blockColor: '#ffffff',\r\n        showValue: false,\r\n\t\tdisabled:false,\r\n        blockStyle: () => {}\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:20:39\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/statusBar.js\r\n */\r\nexport default {\r\n    // statusBar\r\n    statusBar: {\r\n        bgColor: 'transparent'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:12:37\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/steps.js\r\n */\r\nexport default {\r\n    // steps组件\r\n    steps: {\r\n        direction: 'row',\r\n        current: 0,\r\n        activeColor: '#3c9cff',\r\n        inactiveColor: '#969799',\r\n        activeIcon: '',\r\n        inactiveIcon: '',\r\n        dot: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:12:55\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/stepsItem.js\r\n */\r\nexport default {\r\n    // steps-item组件\r\n    stepsItem: {\r\n        title: '',\r\n        desc: '',\r\n        iconSize: 17,\r\n        error: false\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:01:30\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/sticky.js\r\n */\r\nexport default {\r\n    // sticky组件\r\n    sticky: {\r\n        offsetTop: 0,\r\n        customNavHeight: 0,\r\n        disabled: false,\r\n        bgColor: 'transparent',\r\n        zIndex: '',\r\n        index: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:12:20\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/subsection.js\r\n */\r\nexport default {\r\n    // subsection组件\r\n    subsection: {\r\n        list: [],\r\n        current: 0,\r\n        activeColor: '#3c9cff',\r\n        inactiveColor: '#303133',\r\n        mode: 'button',\r\n        fontSize: 12,\r\n        bold: true,\r\n        bgColor: '#eeeeef',\r\n\t\tkeyName: 'name'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:00:42\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/swipeAction.js\r\n */\r\nexport default {\r\n    // swipe-action组件\r\n    swipeAction: {\r\n        autoClose: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:01:13\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/swipeActionItem.js\r\n */\r\nexport default {\r\n    // swipeActionItem 组件\r\n    swipeActionItem: {\r\n        show: false,\r\n        name: '',\r\n        disabled: false,\r\n        threshold: 20,\r\n        autoClose: true,\r\n        options: [],\r\n        duration: 300\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:21:38\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/swiper.js\r\n */\r\nexport default {\r\n    // swiper 组件\r\n    swiper: {\r\n        list: () => [],\r\n        indicator: false,\r\n        indicatorActiveColor: '#FFFFFF',\r\n        indicatorInactiveColor: 'rgba(255, 255, 255, 0.35)',\r\n        indicatorStyle: '',\r\n        indicatorMode: 'line',\r\n        autoplay: true,\r\n        current: 0,\r\n        currentItemId: '',\r\n        interval: 3000,\r\n        duration: 300,\r\n        circular: false,\r\n        previousMargin: 0,\r\n        nextMargin: 0,\r\n        acceleration: false,\r\n        displayMultipleItems: 1,\r\n        easingFunction: 'default',\r\n        keyName: 'url',\r\n        imgMode: 'aspectFill',\r\n        height: 130,\r\n        bgColor: '#f3f4f6',\r\n        radius: 4,\r\n        loading: false,\r\n        showTitle: false\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:22:07\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/swiperIndicator.js\r\n */\r\nexport default {\r\n    // swiperIndicator 组件\r\n    swiperIndicator: {\r\n        length: 0,\r\n        current: 0,\r\n        indicatorActiveColor: '',\r\n        indicatorInactiveColor: '',\r\n\t\tindicatorMode: 'line'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:22:24\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/switch.js\r\n */\r\nexport default {\r\n    // switch\r\n    switch: {\r\n        loading: false,\r\n        disabled: false,\r\n        size: 25,\r\n        activeColor: '#2979ff',\r\n        inactiveColor: '#ffffff',\r\n        value: false,\r\n        activeValue: true,\r\n        inactiveValue: false,\r\n        asyncChange: false,\r\n        space: 0\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:22:40\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/tabbar.js\r\n */\r\nexport default {\r\n    // tabbar\r\n    tabbar: {\r\n        value: null,\r\n        safeAreaInsetBottom: true,\r\n        border: true,\r\n        zIndex: 1,\r\n        activeColor: '#1989fa',\r\n        inactiveColor: '#7d7e80',\r\n        fixed: true,\r\n        placeholder: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:22:55\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/tabbarItem.js\r\n */\r\nexport default {\r\n    //\r\n    tabbarItem: {\r\n        name: null,\r\n        icon: '',\r\n        badge: null,\r\n        dot: false,\r\n        text: '',\r\n        badgeStyle: 'top: 6px;right:2px;'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:23:14\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/tabs.js\r\n */\r\nexport default {\r\n    //\r\n    tabs: {\r\n        duration: 300,\r\n        list: () => [],\r\n        lineColor: '#3c9cff',\r\n        activeStyle: () => ({\r\n            color: '#303133'\r\n        }),\r\n        inactiveStyle: () => ({\r\n            color: '#606266'\r\n        }),\r\n        lineWidth: 20,\r\n        lineHeight: 3,\r\n        lineBgSize: 'cover',\r\n        itemStyle: () => ({\r\n            height: '44px'\r\n        }),\r\n        scrollable: true,\r\n\t\tcurrent: 0,\r\n\t\tkeyName: 'name'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:23:37\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/tag.js\r\n */\r\nexport default {\r\n    // tag 组件\r\n    tag: {\r\n        type: 'primary',\r\n        disabled: false,\r\n        size: 'medium',\r\n        shape: 'square',\r\n        text: '',\r\n        bgColor: '',\r\n        color: '',\r\n        borderColor: '',\r\n        closeColor: '#C6C7CB',\r\n        name: '',\r\n        plainFill: false,\r\n        plain: false,\r\n        closable: false,\r\n        show: true,\r\n        icon: ''\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:23:58\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/text.js\r\n */\r\nexport default {\r\n    // text 组件\r\n    text: {\r\n        type: '',\r\n        show: true,\r\n        text: '',\r\n        prefixIcon: '',\r\n        suffixIcon: '',\r\n        mode: '',\r\n        href: '',\r\n        format: '',\r\n        call: false,\r\n        openType: '',\r\n        bold: false,\r\n        block: false,\r\n        lines: '',\r\n        color: '#303133',\r\n        size: 15,\r\n        iconStyle: () => ({\r\n            fontSize: '15px'\r\n        }),\r\n        decoration: 'none',\r\n        margin: 0,\r\n        lineHeight: '',\r\n        align: 'left',\r\n        wordWrap: 'normal'\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:24:32\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/textarea.js\r\n */\r\nexport default {\r\n\t// textarea 组件\r\n\ttextarea: {\r\n\t\tvalue: '',\r\n\t\tplaceholder: '',\r\n\t\tplaceholderClass: 'textarea-placeholder',\r\n\t\tplaceholderStyle: 'color: #c0c4cc',\r\n\t\theight: 70,\r\n\t\tconfirmType: '',\r\n\t\tdisabled: false,\r\n\t\tcount: false,\r\n\t\tfocus: false,\r\n\t\tautoHeight: false,\r\n\t\tfixed: false,\r\n\t\tcursorSpacing: 0,\r\n\t\tcursor: '',\r\n\t\tshowConfirmBar: true,\r\n\t\tselectionStart: -1,\r\n\t\tselectionEnd: -1,\r\n\t\tadjustPosition: true,\r\n\t\tdisableDefaultPadding: false,\r\n\t\tholdKeyboard: false,\r\n\t\tmaxlength: 140,\r\n\t\tborder: 'surround',\r\n\t\tformatter: null\r\n\t}\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:07:07\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/toast.js\r\n */\r\nexport default {\r\n    // toast组件\r\n    toast: {\r\n        zIndex: 10090,\r\n        loading: false,\r\n        text: '',\r\n        icon: '',\r\n        type: '',\r\n        loadingMode: '',\r\n        show: '',\r\n        overlay: false,\r\n        position: 'center',\r\n        params: () => {},\r\n        duration: 2000,\r\n        isTab: false,\r\n        url: '',\r\n        callback: null,\r\n        back: false\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:24:55\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/toolbar.js\r\n */\r\nexport default {\r\n    // toolbar 组件\r\n    toolbar: {\r\n        show: true,\r\n        cancelText: '取消',\r\n        confirmText: '确认',\r\n        cancelColor: '#909193',\r\n        confirmColor: '#3c9cff',\r\n        title: ''\r\n    }\r\n\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:25:14\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/tooltip.js\r\n */\r\nexport default {\r\n    // tooltip 组件\r\n    tooltip: {\r\n        text: '',\r\n        copyText: '',\r\n        size: 14,\r\n        color: '#606266',\r\n        bgColor: 'transparent',\r\n        direction: 'top',\r\n        zIndex: 10071,\r\n        showCopy: true,\r\n        buttons: () => [],\r\n        overlay: true,\r\n        showToast: true\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 16:59:00\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/transition.js\r\n */\r\nexport default {\r\n    // transition动画组件的props\r\n    transition: {\r\n        show: false,\r\n        mode: 'fade',\r\n        duration: '300',\r\n        timingFunction: 'ease-out'\r\n    }\r\n}\r\n","/*\r\n * @Author       : LQ\r\n * @Description  :\r\n * @version      : 1.0\r\n * @Date         : 2021-08-20 16:44:21\r\n * @LastAuthor   : LQ\r\n * @lastTime     : 2021-08-20 17:09:50\r\n * @FilePath     : /u-view2.0/uview-ui/libs/config/props/upload.js\r\n */\r\nexport default {\r\n\t// upload组件\r\n\tupload: {\r\n\t\taccept: 'image',\r\n\t\tcapture: () => ['album', 'camera'],\r\n\t\tcompressed: true,\r\n\t\tcamera: 'back',\r\n\t\tmaxDuration: 60,\r\n\t\tuploadIcon: 'camera-fill',\r\n\t\tuploadIconColor: '#D3D4D6',\r\n\t\tuseBeforeRead: false,\r\n\t\tpreviewFullImage: true,\r\n\t\tmaxCount: 52,\r\n\t\tdisabled: false,\r\n\t\timageMode: 'aspectFill',\r\n\t\tname: '',\r\n\t\tsizeType: () => ['original', 'compressed'],\r\n\t\tmultiple: false,\r\n\t\tdeletable: true,\r\n\t\tmaxSize: Number.MAX_VALUE,\r\n\t\tfileList: () => [],\r\n\t\tuploadText: '',\r\n\t\twidth: 80,\r\n\t\theight: 80,\r\n\t\tpreviewImage: true\r\n\t}\r\n}\r\n","// uniapp在H5中各API的z-index值如下:\r\n/**\r\n * actionsheet: 999\r\n * modal: 999\r\n * navigate: 998\r\n * tabbar: 998\r\n * toast: 999\r\n */\r\n\r\nexport default {\r\n    toast: 10090,\r\n    noNetwork: 10080,\r\n    // popup包含popup,actionsheet,keyboard,picker的值\r\n    popup: 10075,\r\n    mask: 10070,\r\n    navbar: 980,\r\n    topTips: 975,\r\n    sticky: 970,\r\n    indexListSticky: 965\r\n}\r\n","/**\r\n * 注意:\r\n * 此部分内容,在vue-cli模式下,需要在vue.config.js加入如下内容才有效:\r\n * module.exports = {\r\n *     transpileDependencies: ['uview-v2']\r\n * }\r\n */\r\n\r\nlet platform = 'none'\r\n\r\n\r\n\r\n\r\n\r\n\r\nplatform = 'vue2'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nplatform = 'weixin'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nplatform = 'mp'\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport default platform\r\n","export default {\r\n\tprops: {\r\n\t\t// 是否开启顶部安全区适配\r\n\t\tsafeAreaInsetTop: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: uni.$u.props.navbar.safeAreaInsetTop\r\n\t\t},\r\n\t\t// 固定在顶部时,是否生成一个等高元素,以防止塌陷\r\n\t\tplaceholder: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: uni.$u.props.navbar.placeholder\r\n\t\t},\r\n\t\t// 是否固定在顶部\r\n\t\tfixed: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: uni.$u.props.navbar.fixed\r\n\t\t},\r\n\t\t// 是否显示下边框\r\n\t\tborder: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: uni.$u.props.navbar.border\r\n\t\t},\r\n\t\t// 左边的图标\r\n\t\tleftIcon: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.leftIcon\r\n\t\t},\r\n\t\t// 左边的提示文字\r\n\t\tleftText: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.leftText\r\n\t\t},\r\n\t\t// 左右的提示文字\r\n\t\trightText: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.rightText\r\n\t\t},\r\n\t\t// 右边的图标\r\n\t\trightIcon: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.rightIcon\r\n\t\t},\r\n\t\t// 标题\r\n\t\ttitle: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: uni.$u.props.navbar.title\r\n\t\t},\r\n\t\t// 背景颜色\r\n\t\tbgColor: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.bgColor\r\n\t\t},\r\n\t\t// 标题的宽度\r\n\t\ttitleWidth: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: uni.$u.props.navbar.titleWidth\r\n\t\t},\r\n\t\t// 导航栏高度\r\n\t\theight: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: uni.$u.props.navbar.height\r\n\t\t},\r\n\t\t// 左侧返回图标的大小\r\n\t\tleftIconSize: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: uni.$u.props.navbar.leftIconSize\r\n\t\t},\r\n\t\t// 左侧返回图标的颜色\r\n\t\tleftIconColor: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: uni.$u.props.navbar.leftIconColor\r\n\t\t},\r\n\t\t// 点击左侧区域(返回图标),是否自动返回上一页\r\n\t\tautoBack: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: uni.$u.props.navbar.autoBack\r\n\t\t},\r\n\t\t// 标题的样式,对象或字符串\r\n\t\ttitleStyle: {\r\n\t\t\ttype: [String, Object],\r\n\t\t\tdefault: uni.$u.props.navbar.titleStyle\r\n\t\t}\r\n\t}\r\n}\r\n","export default {\r\n    props: {\r\n        // 列表数组,元素可为字符串,如为对象可通过keyName指定目标属性名\r\n        list: {\r\n            type: Array,\r\n            default: uni.$u.props.swiper.list\r\n        },\r\n        // 是否显示面板指示器\r\n        indicator: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.indicator\r\n        },\r\n        // 指示器非激活颜色\r\n        indicatorActiveColor: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.indicatorActiveColor\r\n        },\r\n        // 指示器的激活颜色\r\n        indicatorInactiveColor: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.indicatorInactiveColor\r\n        },\r\n        // 指示器样式,可通过bottom,left,right进行定位\r\n        indicatorStyle: {\r\n            type: [String, Object],\r\n            default: uni.$u.props.swiper.indicatorStyle\r\n        },\r\n        // 指示器模式,line-线型,dot-点型\r\n        indicatorMode: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.indicatorMode\r\n        },\r\n        // 是否自动切换\r\n        autoplay: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.autoplay\r\n        },\r\n        // 当前所在滑块的 index\r\n        current: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.current\r\n        },\r\n        // 当前所在滑块的 item-id ,不能与 current 被同时指定\r\n        currentItemId: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.currentItemId\r\n        },\r\n        // 滑块自动切换时间间隔\r\n        interval: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.interval\r\n        },\r\n        // 滑块切换过程所需时间\r\n        duration: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.duration\r\n        },\r\n        // 播放到末尾后是否重新回到开头\r\n        circular: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.circular\r\n        },\r\n        // 前边距,可用于露出前一项的一小部分,nvue和支付宝不支持\r\n        previousMargin: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.previousMargin\r\n        },\r\n        // 后边距,可用于露出后一项的一小部分,nvue和支付宝不支持\r\n        nextMargin: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.nextMargin\r\n        },\r\n        // 当开启时,会根据滑动速度,连续滑动多屏,支付宝不支持\r\n        acceleration: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.acceleration\r\n        },\r\n        // 同时显示的滑块数量,nvue、支付宝小程序不支持\r\n        displayMultipleItems: {\r\n            type: Number,\r\n            default: uni.$u.props.swiper.displayMultipleItems\r\n        },\r\n        // 指定swiper切换缓动动画类型,有效值:default、linear、easeInCubic、easeOutCubic、easeInOutCubic\r\n        // 只对微信小程序有效\r\n        easingFunction: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.easingFunction\r\n        },\r\n        // list数组中指定对象的目标属性名\r\n        keyName: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.keyName\r\n        },\r\n        // 图片的裁剪模式\r\n        imgMode: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.imgMode\r\n        },\r\n        // 组件高度\r\n        height: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.height\r\n        },\r\n        // 背景颜色\r\n        bgColor: {\r\n            type: String,\r\n            default: uni.$u.props.swiper.bgColor\r\n        },\r\n        // 组件圆角,数值或带单位的字符串\r\n        radius: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiper.radius\r\n        },\r\n        // 是否加载中\r\n        loading: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.loading\r\n        },\r\n        // 是否显示标题,要求数组对象中有title属性\r\n        showTitle: {\r\n            type: Boolean,\r\n            default: uni.$u.props.swiper.showTitle\r\n        }\r\n    }\r\n}\r\n","export default {\r\n    props: {\r\n        bgColor: {\r\n            type: String,\r\n            default: uni.$u.props.statusBar.bgColor\r\n        }\r\n    }\r\n}\r\n","export default {\r\n    'uicon-level': '\\ue693',\r\n    'uicon-column-line': '\\ue68e',\r\n    'uicon-checkbox-mark': '\\ue807',\r\n    'uicon-folder': '\\ue7f5',\r\n    'uicon-movie': '\\ue7f6',\r\n    'uicon-star-fill': '\\ue669',\r\n    'uicon-star': '\\ue65f',\r\n    'uicon-phone-fill': '\\ue64f',\r\n    'uicon-phone': '\\ue622',\r\n    'uicon-apple-fill': '\\ue881',\r\n    'uicon-chrome-circle-fill': '\\ue885',\r\n    'uicon-backspace': '\\ue67b',\r\n    'uicon-attach': '\\ue632',\r\n    'uicon-cut': '\\ue948',\r\n    'uicon-empty-car': '\\ue602',\r\n    'uicon-empty-coupon': '\\ue682',\r\n    'uicon-empty-address': '\\ue646',\r\n    'uicon-empty-favor': '\\ue67c',\r\n    'uicon-empty-permission': '\\ue686',\r\n    'uicon-empty-news': '\\ue687',\r\n    'uicon-empty-search': '\\ue664',\r\n    'uicon-github-circle-fill': '\\ue887',\r\n    'uicon-rmb': '\\ue608',\r\n    'uicon-person-delete-fill': '\\ue66a',\r\n    'uicon-reload': '\\ue788',\r\n    'uicon-order': '\\ue68f',\r\n    'uicon-server-man': '\\ue6bc',\r\n    'uicon-search': '\\ue62a',\r\n    'uicon-fingerprint': '\\ue955',\r\n    'uicon-more-dot-fill': '\\ue630',\r\n    'uicon-scan': '\\ue662',\r\n    'uicon-share-square': '\\ue60b',\r\n    'uicon-map': '\\ue61d',\r\n    'uicon-map-fill': '\\ue64e',\r\n    'uicon-tags': '\\ue629',\r\n    'uicon-tags-fill': '\\ue651',\r\n    'uicon-bookmark-fill': '\\ue63b',\r\n    'uicon-bookmark': '\\ue60a',\r\n    'uicon-eye': '\\ue613',\r\n    'uicon-eye-fill': '\\ue641',\r\n    'uicon-mic': '\\ue64a',\r\n    'uicon-mic-off': '\\ue649',\r\n    'uicon-calendar': '\\ue66e',\r\n    'uicon-calendar-fill': '\\ue634',\r\n    'uicon-trash': '\\ue623',\r\n    'uicon-trash-fill': '\\ue658',\r\n    'uicon-play-left': '\\ue66d',\r\n    'uicon-play-right': '\\ue610',\r\n    'uicon-minus': '\\ue618',\r\n    'uicon-plus': '\\ue62d',\r\n    'uicon-info': '\\ue653',\r\n    'uicon-info-circle': '\\ue7d2',\r\n    'uicon-info-circle-fill': '\\ue64b',\r\n    'uicon-question': '\\ue715',\r\n    'uicon-error': '\\ue6d3',\r\n    'uicon-close': '\\ue685',\r\n    'uicon-checkmark': '\\ue6a8',\r\n    'uicon-android-circle-fill': '\\ue67e',\r\n    'uicon-android-fill': '\\ue67d',\r\n    'uicon-ie': '\\ue87b',\r\n    'uicon-IE-circle-fill': '\\ue889',\r\n    'uicon-google': '\\ue87a',\r\n    'uicon-google-circle-fill': '\\ue88a',\r\n    'uicon-setting-fill': '\\ue872',\r\n    'uicon-setting': '\\ue61f',\r\n    'uicon-minus-square-fill': '\\ue855',\r\n    'uicon-plus-square-fill': '\\ue856',\r\n    'uicon-heart': '\\ue7df',\r\n    'uicon-heart-fill': '\\ue851',\r\n    'uicon-camera': '\\ue7d7',\r\n    'uicon-camera-fill': '\\ue870',\r\n    'uicon-more-circle': '\\ue63e',\r\n    'uicon-more-circle-fill': '\\ue645',\r\n    'uicon-chat': '\\ue620',\r\n    'uicon-chat-fill': '\\ue61e',\r\n    'uicon-bag-fill': '\\ue617',\r\n    'uicon-bag': '\\ue619',\r\n    'uicon-error-circle-fill': '\\ue62c',\r\n    'uicon-error-circle': '\\ue624',\r\n    'uicon-close-circle': '\\ue63f',\r\n    'uicon-close-circle-fill': '\\ue637',\r\n    'uicon-checkmark-circle': '\\ue63d',\r\n    'uicon-checkmark-circle-fill': '\\ue635',\r\n    'uicon-question-circle-fill': '\\ue666',\r\n    'uicon-question-circle': '\\ue625',\r\n    'uicon-share': '\\ue631',\r\n    'uicon-share-fill': '\\ue65e',\r\n    'uicon-shopping-cart': '\\ue621',\r\n    'uicon-shopping-cart-fill': '\\ue65d',\r\n    'uicon-bell': '\\ue609',\r\n    'uicon-bell-fill': '\\ue640',\r\n    'uicon-list': '\\ue650',\r\n    'uicon-list-dot': '\\ue616',\r\n    'uicon-zhihu': '\\ue6ba',\r\n    'uicon-zhihu-circle-fill': '\\ue709',\r\n    'uicon-zhifubao': '\\ue6b9',\r\n    'uicon-zhifubao-circle-fill': '\\ue6b8',\r\n    'uicon-weixin-circle-fill': '\\ue6b1',\r\n    'uicon-weixin-fill': '\\ue6b2',\r\n    'uicon-twitter-circle-fill': '\\ue6ab',\r\n    'uicon-twitter': '\\ue6aa',\r\n    'uicon-taobao-circle-fill': '\\ue6a7',\r\n    'uicon-taobao': '\\ue6a6',\r\n    'uicon-weibo-circle-fill': '\\ue6a5',\r\n    'uicon-weibo': '\\ue6a4',\r\n    'uicon-qq-fill': '\\ue6a1',\r\n    'uicon-qq-circle-fill': '\\ue6a0',\r\n    'uicon-moments-circel-fill': '\\ue69a',\r\n    'uicon-moments': '\\ue69b',\r\n    'uicon-qzone': '\\ue695',\r\n    'uicon-qzone-circle-fill': '\\ue696',\r\n    'uicon-baidu-circle-fill': '\\ue680',\r\n    'uicon-baidu': '\\ue681',\r\n    'uicon-facebook-circle-fill': '\\ue68a',\r\n    'uicon-facebook': '\\ue689',\r\n    'uicon-car': '\\ue60c',\r\n    'uicon-car-fill': '\\ue636',\r\n    'uicon-warning-fill': '\\ue64d',\r\n    'uicon-warning': '\\ue694',\r\n    'uicon-clock-fill': '\\ue638',\r\n    'uicon-clock': '\\ue60f',\r\n    'uicon-edit-pen': '\\ue612',\r\n    'uicon-edit-pen-fill': '\\ue66b',\r\n    'uicon-email': '\\ue611',\r\n    'uicon-email-fill': '\\ue642',\r\n    'uicon-minus-circle': '\\ue61b',\r\n    'uicon-minus-circle-fill': '\\ue652',\r\n    'uicon-plus-circle': '\\ue62e',\r\n    'uicon-plus-circle-fill': '\\ue661',\r\n    'uicon-file-text': '\\ue663',\r\n    'uicon-file-text-fill': '\\ue665',\r\n    'uicon-pushpin': '\\ue7e3',\r\n    'uicon-pushpin-fill': '\\ue86e',\r\n    'uicon-grid': '\\ue673',\r\n    'uicon-grid-fill': '\\ue678',\r\n    'uicon-play-circle': '\\ue647',\r\n    'uicon-play-circle-fill': '\\ue655',\r\n    'uicon-pause-circle-fill': '\\ue654',\r\n    'uicon-pause': '\\ue8fa',\r\n    'uicon-pause-circle': '\\ue643',\r\n    'uicon-eye-off': '\\ue648',\r\n    'uicon-eye-off-outline': '\\ue62b',\r\n    'uicon-gift-fill': '\\ue65c',\r\n    'uicon-gift': '\\ue65b',\r\n    'uicon-rmb-circle-fill': '\\ue657',\r\n    'uicon-rmb-circle': '\\ue677',\r\n    'uicon-kefu-ermai': '\\ue656',\r\n    'uicon-server-fill': '\\ue751',\r\n    'uicon-coupon-fill': '\\ue8c4',\r\n    'uicon-coupon': '\\ue8ae',\r\n    'uicon-integral': '\\ue704',\r\n    'uicon-integral-fill': '\\ue703',\r\n    'uicon-home-fill': '\\ue964',\r\n    'uicon-home': '\\ue965',\r\n    'uicon-hourglass-half-fill': '\\ue966',\r\n    'uicon-hourglass': '\\ue967',\r\n    'uicon-account': '\\ue628',\r\n    'uicon-plus-people-fill': '\\ue626',\r\n    'uicon-minus-people-fill': '\\ue615',\r\n    'uicon-account-fill': '\\ue614',\r\n    'uicon-thumb-down-fill': '\\ue726',\r\n    'uicon-thumb-down': '\\ue727',\r\n    'uicon-thumb-up': '\\ue733',\r\n    'uicon-thumb-up-fill': '\\ue72f',\r\n    'uicon-lock-fill': '\\ue979',\r\n    'uicon-lock-open': '\\ue973',\r\n    'uicon-lock-opened-fill': '\\ue974',\r\n    'uicon-lock': '\\ue97a',\r\n    'uicon-red-packet-fill': '\\ue690',\r\n    'uicon-photo-fill': '\\ue98b',\r\n    'uicon-photo': '\\ue98d',\r\n    'uicon-volume-off-fill': '\\ue659',\r\n    'uicon-volume-off': '\\ue644',\r\n    'uicon-volume-fill': '\\ue670',\r\n    'uicon-volume': '\\ue633',\r\n    'uicon-red-packet': '\\ue691',\r\n    'uicon-download': '\\ue63c',\r\n    'uicon-arrow-up-fill': '\\ue6b0',\r\n    'uicon-arrow-down-fill': '\\ue600',\r\n    'uicon-play-left-fill': '\\ue675',\r\n    'uicon-play-right-fill': '\\ue676',\r\n    'uicon-rewind-left-fill': '\\ue679',\r\n    'uicon-rewind-right-fill': '\\ue67a',\r\n    'uicon-arrow-downward': '\\ue604',\r\n    'uicon-arrow-leftward': '\\ue601',\r\n    'uicon-arrow-rightward': '\\ue603',\r\n    'uicon-arrow-upward': '\\ue607',\r\n    'uicon-arrow-down': '\\ue60d',\r\n    'uicon-arrow-right': '\\ue605',\r\n    'uicon-arrow-left': '\\ue60e',\r\n    'uicon-arrow-up': '\\ue606',\r\n    'uicon-skip-back-left': '\\ue674',\r\n    'uicon-skip-forward-right': '\\ue672',\r\n    'uicon-rewind-right': '\\ue66f',\r\n    'uicon-rewind-left': '\\ue671',\r\n    'uicon-arrow-right-double': '\\ue68d',\r\n    'uicon-arrow-left-double': '\\ue68c',\r\n    'uicon-wifi-off': '\\ue668',\r\n    'uicon-wifi': '\\ue667',\r\n    'uicon-empty-data': '\\ue62f',\r\n    'uicon-empty-history': '\\ue684',\r\n    'uicon-empty-list': '\\ue68b',\r\n    'uicon-empty-page': '\\ue627',\r\n    'uicon-empty-order': '\\ue639',\r\n    'uicon-man': '\\ue697',\r\n    'uicon-woman': '\\ue69c',\r\n    'uicon-man-add': '\\ue61c',\r\n    'uicon-man-add-fill': '\\ue64c',\r\n    'uicon-man-delete': '\\ue61a',\r\n    'uicon-man-delete-fill': '\\ue66a',\r\n    'uicon-zh': '\\ue70a',\r\n    'uicon-en': '\\ue692'\r\n}\r\n","export default {\r\n    props: {\r\n        // 图标类名\r\n        name: {\r\n            type: String,\r\n            default: uni.$u.props.icon.name\r\n        },\r\n        // 图标颜色,可接受主题色\r\n        color: {\r\n            type: String,\r\n            default: uni.$u.props.icon.color\r\n        },\r\n        // 字体大小,单位px\r\n        size: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.size\r\n        },\r\n        // 是否显示粗体\r\n        bold: {\r\n            type: Boolean,\r\n            default: uni.$u.props.icon.bold\r\n        },\r\n        // 点击图标的时候传递事件出去的index(用于区分点击了哪一个)\r\n        index: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.index\r\n        },\r\n        // 触摸图标时的类名\r\n        hoverClass: {\r\n            type: String,\r\n            default: uni.$u.props.icon.hoverClass\r\n        },\r\n        // 自定义扩展前缀,方便用户扩展自己的图标库\r\n        customPrefix: {\r\n            type: String,\r\n            default: uni.$u.props.icon.customPrefix\r\n        },\r\n        // 图标右边或者下面的文字\r\n        label: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.label\r\n        },\r\n        // label的位置,只能右边或者下边\r\n        labelPos: {\r\n            type: String,\r\n            default: uni.$u.props.icon.labelPos\r\n        },\r\n        // label的大小\r\n        labelSize: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.labelSize\r\n        },\r\n        // label的颜色\r\n        labelColor: {\r\n            type: String,\r\n            default: uni.$u.props.icon.labelColor\r\n        },\r\n        // label与图标的距离\r\n        space: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.space\r\n        },\r\n        // 图片的mode\r\n        imgMode: {\r\n            type: String,\r\n            default: uni.$u.props.icon.imgMode\r\n        },\r\n        // 用于显示图片小图标时,图片的宽度\r\n        width: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.width\r\n        },\r\n        // 用于显示图片小图标时,图片的高度\r\n        height: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.height\r\n        },\r\n        // 用于解决某些情况下,让图标垂直居中的用途\r\n        top: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.icon.top\r\n        },\r\n        // 是否阻止事件传播\r\n        stop: {\r\n            type: Boolean,\r\n            default: uni.$u.props.icon.stop\r\n        }\r\n    }\r\n}\r\n","export default {\r\n    props: {\r\n        // 是否显示组件\r\n        show: {\r\n            type: Boolean,\r\n            default: uni.$u.props.loadingIcon.show\r\n        },\r\n        // 颜色\r\n        color: {\r\n            type: String,\r\n            default: uni.$u.props.loadingIcon.color\r\n        },\r\n        // 提示文字颜色\r\n        textColor: {\r\n            type: String,\r\n            default: uni.$u.props.loadingIcon.textColor\r\n        },\r\n        // 文字和图标是否垂直排列\r\n        vertical: {\r\n            type: Boolean,\r\n            default: uni.$u.props.loadingIcon.vertical\r\n        },\r\n        // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形\r\n        mode: {\r\n            type: String,\r\n            default: uni.$u.props.loadingIcon.mode\r\n        },\r\n        // 图标大小,单位默认px\r\n        size: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.loadingIcon.size\r\n        },\r\n        // 文字大小\r\n        textSize: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.loadingIcon.textSize\r\n        },\r\n        // 文字内容\r\n        text: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.loadingIcon.text\r\n        },\r\n        // 动画模式\r\n        timingFunction: {\r\n            type: String,\r\n            default: uni.$u.props.loadingIcon.timingFunction\r\n        },\r\n        // 动画执行周期时间\r\n        duration: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.loadingIcon.duration\r\n        },\r\n        // mode=circle时的暗边颜色\r\n        inactiveColor: {\r\n            type: String,\r\n            default: uni.$u.props.loadingIcon.inactiveColor\r\n        }\r\n    }\r\n}\r\n","export default {\r\n    props: {\r\n        // 轮播的长度\r\n        length: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiperIndicator.length\r\n        },\r\n        // 当前处于活动状态的轮播的索引\r\n        current: {\r\n            type: [String, Number],\r\n            default: uni.$u.props.swiperIndicator.current\r\n        },\r\n        // 指示器非激活颜色\r\n        indicatorActiveColor: {\r\n            type: String,\r\n            default: uni.$u.props.swiperIndicator.indicatorActiveColor\r\n        },\r\n        // 指示器的激活颜色\r\n        indicatorInactiveColor: {\r\n            type: String,\r\n            default: uni.$u.props.swiperIndicator.indicatorInactiveColor\r\n        },\r\n\t\t// 指示器模式,line-线型,dot-点型\r\n\t\tindicatorMode: {\r\n\t\t    type: String,\r\n\t\t    default: uni.$u.props.swiperIndicator.indicatorMode\r\n\t\t}\r\n    }\r\n}\r\n"],"sourceRoot":""}