{"version":3,"sources":["../node_modules/react/index.js","../node_modules/react-intl-universal/lib/index.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/prop-types/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/webpack/buildin/global.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/qs/lib/utils.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/object-assign/index.js","../node_modules/react-is/index.js","../node_modules/qs/lib/formats.js","../node_modules/react-dom/index.js","../node_modules/react-lazyload/lib/index.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/qs/lib/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../node_modules/tslib/tslib.es6.js","../../src/util/compatibility.ts","../../src/util/polyfill.ts","../../node_modules/blueimp-md5/js/md5.js","../../src/util/cookie.ts","../../src/util/uuid.ts","../../src/config/global.ts","../../src/io/iframe.ts","../../node_modules/ua-parser-js/src/ua-parser.js","../../src/util/ua.ts","../../src/io/beacon.ts","../../src/io/index.ts","../../src/io/util.ts","../../src/io/xhr.ts","../../src/util/const.ts","../../src/util/index.ts","../../src/proto/base.ts","../../src/core/logger.ts","../../src/config/types.ts","../../src/proto/v3/client_event.ts","../../src/proto/v2/client_event.ts","../../src/core/show-event.ts","../../src/core/task-event.ts","../../src/core/custom.ts","../../src/util/increment-id.ts","../../src/core/log.ts","../../src/config/base-params.ts","../../src/core/url-package.ts","../../src/proto/v2/client_common.ts","../../src/util/yoda.ts","../../src/util/events.ts","../../src/util/device-detect.ts","../../src/core/common.ts","../../src/core/index.ts","../../src/config/index.ts","../../src/plugins/base.ts","../../src/plugins/crashMonitor/index.ts","../../src/plugins/fpsMonitor/index.ts","../../src/util/timing.ts","../../src/util/console.ts","../../src/plugins/timingMonitor/index.ts","../../src/plugins/radar/timing.ts","../../src/plugins/radar/const.ts","../../node_modules/web-vitals/dist/web-vitals.es5.min.js","../../src/plugins/radar/utils.ts","../../src/plugins/radar/base.ts","../../src/bridge/types.ts","../../src/plugins/radar/plugin.ts","../../src/plugins/radar/navigation.ts","../../src/plugins/radar/resource.ts","../../node_modules/@ks/xhook/dist/xhook.js","../../src/plugins/radar/xhr.ts","../../src/plugins/radar/error.ts","../../src/plugins/radar/radar.ts","../../src/plugins/radar/placeholder.ts","../../src/plugins/autoPV/index.ts","../../src/entries/browser-full.ts","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@loadable/component/dist/loadable.esm.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/intl/index.js","../node_modules/intl/lib/core.js","../node_modules/escape-html/index.js","../node_modules/cookie/index.js","../node_modules/querystring-es3/index.js","../node_modules/querystring-es3/decode.js","../node_modules/querystring-es3/encode.js","../node_modules/invariant/browser.js","../node_modules/console-polyfill/index.js","../node_modules/lodash.merge/index.js","../node_modules/webpack/buildin/module.js","../node_modules/react-lazyload/lib/utils/event.js","../node_modules/react-lazyload/lib/utils/scrollParent.js","../node_modules/react-lazyload/lib/utils/debounce.js","../node_modules/react-lazyload/lib/utils/throttle.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/events/events.js","../node_modules/intl-messageformat-parser/lib/types.js","../node_modules/intl-messageformat-parser/lib/parser.js","../node_modules/intl-messageformat-parser/lib/normalize.js","../node_modules/intl-messageformat-parser/lib/index.js","../node_modules/intl-format-cache/lib/index.js","../node_modules/intl-messageformat-parser/lib/skeleton.js","../node_modules/intl-messageformat/lib/formatters.js","../node_modules/intl-messageformat/lib/core.js","../node_modules/intl-messageformat/lib/index.js"],"names":["module","exports","require","_interopDefault","ex","React","IntlMessageFormat","escapeHtml","cookie","queryParser","invariant","merge","currency","numberFormat","i","length","style","defaultFormats","number","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","String","defaultMessage","d","msg","this","ReactIntlUniversal","instance","TypeError","classCallCheck","options","currentLocale","locales","warningHandler","_console","console","warn","apply","arguments","fallbackLocale","value","variables","intlGetHook","e","log","_options","formats","getDescendantProp","assign","indexOf","format","err","message","get","el","createElement","dangerouslySetInnerHTML","__html","messageDescriptor","id","getHTML","undefined","getLocaleFromURL","getLocaleFromCookie","getLocaleFromLocalStorage","getLocaleFromBrowser","Promise","resolve","reject","cookieLocaleKey","params","parse","document","localStorageLocaleKey","window","localStorage","getItem","urlLocaleKey","query","location","search","split","locale","reduce","a","b","navigator","language","userLanguage","BrowserRouter","history","createHistory","render","children","Component","resolveToLocation","to","currentLocation","normalizeToLocation","createLocation","forwardRefShim","C","forwardRef","LinkAnchor","innerRef","navigate","onClick","rest","event","isModifiedEvent","forwardedRef","Link","component","replace","RouterContext","context","href","method","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","className","exact","isActiveProp","isActive","locationProp","sensitive","strict","styleProp","toLocation","path","escapedPath","match","matchPath","classnames","joinClassnames","_extends","source","hasOwnProperty","call","historyContext","name","createContext","createNamedContext","Router","computeRootMatch","url","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","unlisten","state","staticContext","HistoryContext","Lifecycle","onMount","componentDidUpdate","onUpdate","prevProps","onUnmount","cache","cacheCount","generatePath","generator","pathToRegexp","compilePath","pretty","Redirect","computedMatch","push","prevLocation","locationsAreEqual","Array","concat","matched","cacheKey","pathCache","keys","result","regexp","end","values","memo","Route","addLeadingSlash","stripBasename","basename","base","createURL","createPath","staticHandler","methodName","noop","Switch","child","element","useContext","useHistory","useLocation","_inheritsLoose","subClass","superClass","create","constructor","__proto__","prefix","condition","Error","isAbsolute","charAt","spliceOne","list","index","k","n","pop","resolvePathname","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","join","substr","valueOf","obj","valueEqual","isArray","every","item","aValue","bValue","stripLeadingSlash","toLowerCase","hasBasename","stripTrailingSlash","slice","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","fn","listener","filter","notifyListeners","_len","args","_key","forEach","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","toString","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","splice","canGo","_objectWithoutPropertiesLoose","excluded","sourceKeys","_slicedToArray","arr","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","unsupportedIterableToArray","_classCallCheck","_defineProperties","_createClass","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","_typeof","_possibleConstructorReturn","self","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","Super","NewTarget","_setPrototypeOf","p","_inherits","g","Function","_assertThisInitialized","ReferenceError","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_defineProperty","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","test","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","has","hexTable","array","toUpperCase","arrayToObject","plainObjects","acc","combine","compact","queue","prop","refs","j","val","compacted","compactQueue","decode","str","decoder","charset","strWithoutPlus","unescape","decodeURIComponent","encode","defaultEncoder","string","escape","$0","parseInt","out","c","charCodeAt","isBuffer","isRegExp","maybeMap","mapped","allowPrototypes","mergeTarget","targetItem","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","global","createEventEmitter","handlers","on","handler","off","h","set","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","Provider","_Component","_this","emitter","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","x","y","PropTypes","isRequired","Consumer","_Component2","_this2","getValue","observedBits","_proto2","isarray","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","res","tokens","defaultDelimiter","delimiter","exec","m","escaped","offset","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","matches","flags","opts","data","encodeURIComponent","token","segment","JSON","stringify","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","fromCharCode","test3","letter","shouldUseNative","s","percentTwenties","util","Format","RFC1738","RFC3986","formatters","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","error","forceVisible","forceCheck","lazyload","_react","_react2","_interopRequireDefault","_propTypes2","_event","_scrollParent2","_debounce2","_throttle2","__esModule","default","defaultBoundingClientRect","LISTEN_FLAG","pending","passiveEventSupported","passiveEvent","passive","checkVisible","node","ref","HTMLElement","parent","overflow","ownerDocument","documentElement","parentTop","parentLeft","parentHeight","parentWidth","_parent$getBoundingCl","getBoundingClientRect","top","left","height","width","windowInnerHeight","innerHeight","clientHeight","windowInnerWidth","innerWidth","clientWidth","intersectionTop","intersectionLeft","intersectionHeight","intersectionWidth","_node$getBoundingClie","offsetTop","offsetLeft","offsets","checkOverflowVisible","offsetWidth","offsetHeight","getClientRects","elementHeight","_node$getBoundingClie2","checkNormalVisible","visible","once","forceUpdate","unmountIfInvisible","purgePending","lazyLoadHandler","delayType","finalLazyLoadHandler","LazyLoad","setRef","bind","scrollport","scrollContainer","needResetFinalLazyLoadHandler","debounce","throttle","setAttribute","scroll","resize","removeAttribute","_props2","placeholder","classNamePrefix","bool","oneOfType","arrayOf","getDisplayName","WrappedComponent","LazyLoadDecorated","factory","define","OldCookies","Cookies","api","noConflict","extend","attributes","init","converter","defaults","expires","toUTCString","write","stringifiedAttributes","attributeName","json","jar","cookies","read","getJSON","remove","withConverter","_createForOfIteratorHelper","allowArrayLike","it","F","f","normalCompletion","didErr","step","_e2","__extends","__","t","__rest","__awaiter","thisArg","_arguments","P","fulfilled","rejected","then","__generator","body","_","label","sent","trys","ops","verb","v","op","commonGlobal","setTimeout","setInterval","_WEBLOGGER_MOCKED_WINDOW_","querySelectorAll","screen","hostname","origin","setItem","nextSource","nextKey","oThis","aArgs","fToBind","fBound","currentThis","FNOP","searchElement","O","abs","Infinity","hasDontEnumBug","dontEnums","T","kValue","findIndex","predicate","$","safeAdd","lsw","md5cmn","q","num","cnt","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","input","output","length32","rstr2binl","length8","rstr2hex","hexTab","str2rstrUTF8","rawMD5","rstrMD5","rawHMACMD5","bkey","ipad","opad","rstrHMACMD5","md5","raw","hexHMACMD5","hexMD5","parseCookieString","text","shouldDecode","decodeValue","cookieParts","cookieName","cookieValue","cookieNameValue","cookiesMap","getCookie","useCaches","setCookie","domain","secure","createCookieString","nanoId","ts","randomer","resolveTopLevelDomain","ret","did","generateDID","setFullYear","getFullYear","uuid","page","randomStr","getTime","GlobalConfig","proto","sessionId","isDebug","isBridge","updateConfig","commonHideStyle","sendData","iframe","appendChild","contentWindow","cssText","createIframe","form","enctype","createForm","appendDataToForm","submit","onload","removeChild","FUNC_TYPE","OBJ_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","regexes","extensions","mergedRegexes","str1","str2","lowerize","major","version","trim","mapper","rgx","arrays","regex","maps","browser","oldsafari","device","amazon","model","sprint","vendor","os","windows","cpu","engine","UAParser","uastring","getResult","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","DEVICE","EMBEDDED","ENGINE","OS","jQuery","Zepto","parser","uaInfo","getUAInfo","needCompatible","supportsPushState","enableBeacon","timeout","sendIframe","sendBeacon","formData","FormData","append","transToFormData","xhr","XMLHttpRequest","open","status","response","ontimeout","onerror","send","sendXHR","forceUseBeacon","ksOverseaAppList","ksAppList","addMonitor","evtTarget","evtName","attachEvent","removeMonitor","detachEvent","leftPad","ch","pad","isInApp","inApp","fakeRaf","fakeCaf","clearTimeout","parseQueryString","queryString","stringifyQuery","paramsString","queries","composedPath","ele","tagName","getStringBytes","dataStr","byteLen","Number","NaN","kpnFromUA","rules","tmp","rule","getDefaultKpn","kpnInCookie","kpnInUA","getUrlAndQueryFromUrl","queryIndex","getMappingPage","urlPackage","urlMap","parsed","mappingPage","Base","urlChangeEventId","devHost","dataTrackHost","testHost","xhrGet","getReportUrl","viewHost","reportHost","loggerUrl","Hosts","v2","production","round","development","v3","Apis","radar","getUrl","env","Global","drained","logQueue","errorQueue","sendingQuery","radarUrl","flush","sendLogs","drain","flushErrorLogs","updateBase","commonPackage","updateUrls","config","logger","webloggerSwitch","sessionStorage","loggerSessionId","loggerHost","handshakeApi","getCookieReportUrl","getWebPageReportUrl","loggerEnv","getLoggerReportUrl","getCommonPackageJSON","isV2","increaseHTTPSeqId","toJSON","buildLogPackage","logs","buildV2Package","buildV3Package","common","sendPackage","errHandler","sender","immediate","setAdditionalSeqIdPackage","getEventType","common_package","batchWaitTimer","wait","sendRadar","radarPackage","logPackage","h5_extra_attr","http_seq_id","client_timestamp","merged","currentLog","destory","compensateTimer","NetworkPackageType","AdditionalSeqIdPackageChannel","Platform","Container","PageType","ElementStatus","PageShowAction","ActionStatus","ActionType","SubAction","Direction","TaskStatus","OperationType","TaskOperations","EventTypes","ClientEvent","networkType","unknown","UNKNOWN_NETWORK","none","NOT_CONNECTED","wifi","WIFI","MOBILE_4G","MOBILE_3G","MOBILE_2G","ShowType","TaskEventType","PageCategory","ElementType","ShowActionType","ResultPackageDomain","ClickType","firstLoad","enterTime","currentUrlPackage","referUrlPackage","beginTime","contentPackage","actionType","auto","url_package","refer_url_package","page2","commonInfo","UNKNOWN_STATUS","SUCCESS","UNKNOWN_ACTION_TYPE","CLICK","sub_action","PAGE_ENTER","actionPB","ENTER","first_load","stay_length","LEAVE","PAGE_LEAVE","RESUME","PAGE_RESUME","PAGE_PAUSE","showType","ClientEventV3","PAGE_AUTO","PAGE_CUSTOM","ClientEventV2","PAGE","show_event","time_cost","ELEMENT","element_package","taskType","operationDirection","click_event","direction","UNKNOWN2","task_event","action2","USER_OPERATION","operation_type","operation_direction","session_id","extra","runtimeIdMap","genId","Storage","getLocalStorageItem","setLocalStorageItem","GMT","timeZoneGMTOffset","getTimezoneOffset","client_increment_id","event_id","time_zone","genIncrementId","isCustomStatEvent","stat_package","custom_stat_event","event_package","custom_event","logFactory","ReportEvent","ShowEvent","customData","CustomStatEvent","TaskEvent","BASE","device_id","global_id","union_id","user_id","product","channel","version_name","package_name","product_name","network_type","container","H5","service_name","sub_biz","need_encrypt","safety_id","experiment","initPackageKeys","validator","ClientCommon","_yoda","pageType","identity","page_type","NATIVE","MINA","UNKNOWN_PAGE_TYPE","update","getRealUrlPackage","events","eventName","deleteArray","emit","devices","getResolution","resolution","ratio","devicePixelRatio","floor","getGPU","gpu","glRenderContext","getContext","debugRenderInfo","getExtension","getParameter","UNMASKED_RENDERER_WEBGL","getModel","toLocaleLowerCase","Product","TimePackageSyncStatus","yodaResolve","yodaAlready","initYoda","ready","register","namespace","isSupportBridge","isSupport","tool","canIUse","canUse","KSwitchSampling","getWebviewLoadPerf","webview","sendRadarLog","setClientLog","network","connection","mozConnection","webkitConnection","effectiveType","platform","UNKNOWN_PLATFORM","ANDROID_PHONE_H5","OUTSIDE_ANDROID_H5","IPHONE_H5","OUTSIDE_IOS_H5","PC_WEB","GLOBAL","ReactNative","NativeModules","isReactNative","REACT_NATIVE","WEB","mergeOptions","getOSVersion","transformCommonPackage","initPackage","identity_package","network_package","app_package","ClientCommonV2","baseKey","subKey","baseValue","CommonPackage","logConfig","version_code","device_package","os_version","sdk_version","checkMustProps","lastDotIndex","mixinOptions","DefaultH5ExtraAttr","app_version_name","eventType","additional_seq_id_package","NORMAL","channel_seq_id","CHANNEL_INCREMENT_ID_KEY","custom_type","custom_seq_id","V2_INCREMENT_ID_KEY","increaseH5SeqId","isCustom","setH5ClientTimestamp","seq_id","setChannel","queryStringRes","queryChannel","getVersionName","getChannel","setBridgeInfo","info","bridge_info","getH5ExtraAttr","innerKey","initYodaDeviceInfo","system","getDeviceInfo","mod","initYodaAppInfo","getAppInfo","userId","appver","host_product","sdk_name","pluginIndex","getSessionId","isWillClosed","yoda","SampledPageMap","Logger","plugins","beforeUnload","plugin","baseOption","maxBatchLength","sampleRate","sampleRateFn","sampled","initConfig","initUrlPackage","commomPackage","addPlugins","initBuildInPlugins","yodaUtils","cookieUtils","uaUtils","io","isInYoda","getKswitchData","kswitchData","host","getPageSampled","option","updateCurrentUrlPackage","referer","referUrl","referType","referrer","UrlPackage","currentUrl","matchedOverAll","level","radarConfigs","curLevel","overwrite","overall","sort","r1","r2","r","updateReferUrlPackage","updateCommonPackage","addPluginInstance","pluginInstance","weblog","plug","pluginOptions","unplug","destroy","unplugAll","generateLog","generateLogName","getCommonProps","pageParams","PV","urlPage","SHOW","CUSTOM","eventId","taskParams","immediately","isSendSampled","collect","sendImmediately","EventEmitter","_GLOBAL_KS_WEBLOGGER_","defaultOptions","updateInterval","crashThreshold","monitorId","historyMoniorInfo","stop","clearInterval","updateIntervalId","removeItem","historyMoniorString","start","checkHistoryCrash","now","time","performance","memory","monitorInfo","limit","jsHeapSizeLimit","total","totalJSHeapSize","used","usedJSHeapSize","BasePlugin","interval","decimals","count","fps","loop","fpsTick","fpsTickId","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","raf","loopBeginTime","loopId","loopEndTime","calculate","handle","cancelAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","caf","toFixed","perf","performanceTiming","timing","getEntriesByType","perfMap","dnsLookup","tcpConnection","resourceLoad","jsCost","custom","getEntries","pageTimeInfo","firstJSTimeInfo","initiatorType","domComplete","fetchStart","documentContentLoaded","load","timeToFirstByte","firstScreen","endPoint","navigationTiming","whiteScreen","perfInfo","costMap","mark","Plugin","optionKey","PluginPlaceholder","radarOptions","sampling","samplingControl","autoRegister","TimingMonitor","redirectStart","navigationStart","RADAR_KEY","LEGACY_RADAR_KEY","ERROR_KEY","KEY","domPerfMap","redirect","dns","dns_start","tcp","tcp_start","redirect_count","redirectCount","ssl","secureConnectionStart","connectEnd","ssl_start","ttfb","trans","dom_parse","dom_parse_start","blank","fb","dom_ready","resource","fp","firstPaintInfo","ceil","startTime","duration","js_cost","tti","protocol","nextHopProtocol","dom_num","all","apiPerfMap","fetch_start","cachedSkip","size","encodedBodySize","noThrottle","file","res_type","cached","transferSize","domainLookupStart","resPerfMap","DEFAULT_IGNORE_LIST","webviewPerfMap","to_webview_page_start","to_webview_page_show","to_webview_pre_create","to_webview_created","to_webview_start_load","to_webview_did_start_load","to_webview_did_end_load","to_navigation_start","to_fetch_start","to_connect_start","to_dom_ready","to_total","to_fmp","loadTimestamp","navigation_start_time","fetch_start_time","dns_start_time","dns_end_time","connect_start_time","ssl_start_time","request_start_time","response_start_time","response_end_time","dom_interactive_time","dom_loading_time","dom_ready_time","load_event_time","fmp_time","isFinal","PerformanceObserver","supportedEntryTypes","includes","observe","buffered","persisted","u","timeStamp","visibilityState","isUnloading","l","disconnect","reProtocol","isInURLWhiteList","ignoreList","domainPath","some","whiteURL","radarCost","radarPoint","costName","endTime","chromeMetric","chromeMetricConfig","collectFn","processingStart","takeRecords","perfMetrics","onFirstInputDelay","entryType","cancelable","hadRecentInput","radarWarnLog","debug","getUAList","uaList","getWebViewType","Yoda","WebViewType","WebView","formatLoadTime","KWAI_KPN","kpn","queueConfig","batchTimer","startedLoadReport","radarSessionId","isInKwai","isUsingBridge","isUsingLegacy","isUsingDetachedReport","isSupportedYodaConcat","customDimension","lastRadarLogId","computedSamplingAgain","realSampledList","observeResource","reportPerformance","asyncReportTiming","observeChromeMetrics","entryTypes","chromeMetricCallback","opt","logCollect","collectChromeMetrics","metric","asyncMetricCollectDone","radarCostResult","costItem","beforeFlush","commonLogData","project_id","projectId","radar_session_id","sended","httpReportFirst","addRadarStatEvent","serviceName","subBiz","needEncrypt","realtime","h5ExtraAttr","isKSwitchSampled","rand","use","ctx","usedPlugin","created","upadteUrlPackage","computedRealSampled","KSwitchSampled","allSample","theSample","yodaCollectErrorDataDestroy","loadEventEnd","detail","startPoint","isNaN","EVENT","dimension","event_type","src","webViewType","yoda_version","when","onPerfReport","allPerf","subDimension","logData","radarLoadSampling","radarApiSampling","apiSampling","radarErrorSampling","errorSampling","radarResourceSampling","resourceSampling","radarCustomSampling","customSampling","radarEventSampling","eventSampling","decorateLog","kv","lastLoadData","find","loadLog","squashData","commomParams","removeStashedLog","sendImmediate","commonLog","formatYodaRadarData","empytLoadData","logId","logSended","saveWebviewEntry","hasReportBase","record","fmp","webviewPerf","loadTimeout","reportOnUnload","reportFirstScreen","check4Tab","sepDimension","LOAD","getWebviewLoadData","Utils","timeData","userStart","pageStart","renderTime","radarFmp","loadTime","webviewTiming","webviewEntry","loadReport","delay","play_clicked","play_idr","play_first_screen","RadarPlugin","onResError","isScriptError","RES","failed","res_path","lineno","AFTER","BEFORE","COMMON_EVENTS","FIRE","NativeFetch","NativeFormData","NativeXMLHttp","OFF","ON","UPLOAD_EVENTS","WINDOW","XHookFetchRequest","XHookFormData","XHookHttpRequest","XMLHTTP","convertHeaders","depricatedProp","fakeEvent","mergeObjects","msie","nullify","proxyEvents","useragent","xhook","_base","__indexOf","WorkerGlobalScope","dst","_error","clone","_has","msieEventObject","createEventObject","Event","nodeStyle","legacylistener","shift","fire","enable","disable","headers","dest","header","$1","$2","fd","checked","files","currentState","emitFinal","emitReadyState","facade","hasError","hasErrorHandler","readBody","readHead","request","setReadyState","transiting","writeBody","writeHead","statusText","getAllResponseHeaders","responseType","xml","responseXML","responseText","finalUrl","responseURL","async","hooks","hook","onreadystatechange","addWithCredentials","withCredentials","user","pass","headerNames","modk","_j","_len1","_ref1","_k","_len2","_ref2","_ref3","upload","setRequestHeader","userResponse","head","progress","abort","lName","getResponseHeader","overrideMimeType","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","readyState","afterHooks","beforeHooks","Request","getRequest","processBefore","Headers","Response","param","amd","validXhook","logList","perfList","beforeHook","requestURLCompletion","afterHook","req","infoStatus","customizeRadarStatus","contentLength","getResponseSize","responseData","judgedResponse","isResponseError","API","mergeAPIPerf","listItem","itemAPI","listItemAPI","perfSize","NATIVE_FORM_DATA","before","after","errorTimeInterval","logInfo","error_type","SCRIPT","error_cons_type","reason","stack","filename","line","col","colno","isSameErrorAndReport","onPromiseError","VIDEO","ERROR","getSameErrorIndex","MORE_REPORTED","CUSTOM_DIM_KEY","radarIgnoreList","customReported","validOption","NavigationPlugin","unuseResourcePlugin","ResourcePlugin","unuseAPIPlugin","APIPlugin","unuseErrorPlugin","ErrorPlugin","Radar","metric_value","metric_name","reportTimePoint","perfNow","extra_info","webview_type","headlessTestReport","playClicked","playIDR","playBlock","playError","setDimensions","paramKey","RadarRoot","willunload","oldPushState","oldReplaceState","visibilityChange","autoPVFilter","proxyPushState","title","urlChange","proxyReplaceState","BaseWeblogger","autoPV","crash","FpsMonitor","CrashMonitor","AutoPV","RadarPlaceHolder","Factory","Weblog","framesToPop","Context","createLoadable","_ref$resolve","_render","onLoad","loadable","loadableConstructor","ctor","requireAsync","resolveConstructor","_getCacheKey","InnerLoadable","_React$Component","loading","promise","__chunkExtractor","requireSync","ssr","loadSync","addChunk","chunkName","isReady","mounted","loadAsync","triggerOnLoad","prevState","safeSetState","loadedModule","Loadable","getCacheKey","getCache","setCache","_this3","_this$props","suspense","_this$props2","propFallback","fallback","_this$state","cachedResult","EnhancedInnerLoadable","extractor","preload","lazy","_createLoadable","_createLoadable$1","current","loadable$1","lazy$1","loadable$2","lib","for","w","z","A","B","D","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","E","updater","G","H","isReactComponent","I","isPureReactComponent","J","K","L","__self","__source","M","$$typeof","_owner","Q","R","keyPrefix","func","S","U","V","W","aa","X","N","Y","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","_ctor","_status","_result","useCallback","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","currentTarget","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","bb","cb","db","eb","gb","hb","ib","jb","kb","lb","mb","nb","pb","qb","tag","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","nodeName","xb","_valueTracker","setValue","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","selected","defaultSelected","disabled","Ib","Jb","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeType","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","ac","bc","WeakMap","Map","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","setProperty","nd","menuitem","area","br","embed","hr","img","keygen","link","meta","track","wbr","od","pd","is","qd","rd","sd","td","ud","vd","nextSibling","wd","contains","compareDocumentPosition","xd","HTMLIFrameElement","yd","contentEditable","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","se","ve","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","date","datetime","email","month","password","range","tel","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","view","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","shared","effects","vg","wg","suspenseConfig","payload","xg","yg","zg","ca","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","Mg","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","mode","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","gi","hi","pendingContext","ni","pi","qi","ii","retryTime","ji","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onclick","createElementNS","createTextNode","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Set","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","Ri","insertBefore","_reactRootContainer","Si","Ti","display","Ui","Vi","add","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","fj","gj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","vb","Uj","Vj","Wj","hidden","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","jk","kk","unmount","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","instanceOf","objectOf","oneOf","shape","checkPropTypes","IntlPolyfill","Intl","__applyLocaleSensitivePrototypes","jsx","REACT_ELEMENT_TYPE","childrenLength","childArray","defineProperty$1","selfGlobal","slicedToArray","sliceIterator","babelHelpers$1","freeze","asyncToGenerator","gen","arg","defineEnumerableProperties","descs","desc","property","receiver","getter","inherits","interopRequireDefault","interopRequireWildcard","newObj","newArrowCheck","innerThis","boundThis","objectDestructuringEmpty","objectWithoutProperties","possibleConstructorReturn","setter","slicedToArrayLoose","_step","_iterator","taggedTemplateLiteral","strings","taggedTemplateLiteralLoose","temporalRef","undef","temporalUndefined","toConsumableArray","typeof","extends","instanceof","right","hasInstance","realDefineProp","sentinel","es3","__defineGetter__","hop","arrIndexOf","objCreate","arrSlice","arrConcat","arrPush","arrJoin","arrShift","fnBind","thisObj","internals","Record","List","createRegExpRestore","disableRegExpRestore","regExpCache","lastMatch","leftContext","multiline","esc","lm","reg","exprStr","expr","lastIndex","toNumber","toLength","toInteger","pow","getInternalProperties","__getInternalProperties","variant","singleton","extension","privateuse","expBCP47Syntax","expVariantDupes","expSingletonDupes","expExtSequences","defaultLocale","redundantTags","tags","subtags","BU","DD","FX","TP","YD","ZR","heploc","iw","jw","mo","ayx","bjd","ccq","cjr","cka","cmk","drh","drw","gav","hrr","ibi","kgh","lcq","mst","myt","sca","tie","tkk","tlw","tnf","ybd","yma","extLang","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","aed","aen","afb","afg","ajp","apc","apd","arb","arq","ars","ary","arz","ase","asf","asp","asq","asw","auz","avl","ayh","ayl","ayn","ayp","bbz","bfi","bfk","bjn","bog","bqn","bqy","btj","bve","bvl","bvu","bzs","cdo","cds","cjy","cmn","coa","cpx","csc","csd","cse","csf","csg","csl","csn","csq","csr","czh","czo","doq","dse","dsl","dup","ecs","esl","esn","eso","eth","fcs","fse","fsl","fss","gan","gds","gom","gse","gsg","gsm","gss","gus","hab","haf","hak","hds","hji","hks","hos","hps","hsh","hsl","hsn","icl","ils","inl","ins","ise","isg","isr","jak","jax","jcs","jhs","jls","jos","jsl","jus","kgi","knn","kvb","kvk","kvr","kxd","lbs","lce","lcf","liw","lls","lsg","lsl","lso","lsp","lst","lsy","ltg","lvs","lzh","mdl","meo","mfa","mfb","mfs","mnp","mqg","mre","msd","msi","msr","mui","mzc","mzg","mzy","nan","nbs","ncs","nsi","nsl","nsp","nsr","nzs","okl","orn","ors","pel","pga","pks","prl","prz","psc","psd","pse","psg","psl","pso","psp","psr","pys","rms","rsi","rsl","sdl","sfb","sfs","sgg","sgx","shu","slf","sls","sqk","sqs","ssh","ssp","svk","swc","swh","swl","syy","tmw","tse","tsm","tsq","tss","tsy","tza","ugn","ugy","ukl","uks","urk","uzn","uzs","vgt","vkk","vkt","vsi","vsl","vsv","wuu","xki","xmm","xms","yds","ysl","yue","zib","zlm","zmi","zsl","zsm","toLatinUpperCase","IsStructurallyValidLanguageTag","CanonicalizeLanguageTag","_max","expCurrencyCode","expUnicodeExSeq","CanonicalizeLocaleList","seen","Pk","RangeError","BestAvailableLocale","availableLocales","candidate","pos","LookupMatcher","requestedLocales","availableLocale","noExtensionsLocale","extensionIndex","ResolveLocale","relevantExtensionKeys","localeData","foundLocale","BestFitMatcher","extensionSubtags","extensionSubtagsLength","supportedExtension","keyLocaleData","supportedExtensionAddition","keyPos","requestedValue","optionsValue","privateIndex","preExtension","postExtension","LookupSupportedLocales","subset","SupportedLocales","matcher","localeMatcher","BestFitSupportedLocales","GetOption","Boolean","GetNumberOption","minimum","maximum","ll","currencyMinorUnits","BHD","BYR","XOF","BIF","XAF","CLF","CLP","KMF","DJF","XPF","GNF","ISK","IQD","JPY","JOD","KRW","KWD","LYD","OMR","PYG","RWF","TND","UGX","UYI","VUV","VND","NumberFormatConstructor","InitializeNumberFormat","NumberFormat","internal","regexpRestore","dataLocale","normalized","IsWellFormedCurrencyCode","cDigits","mnid","mnfd","mxfd","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","stylePatterns","patterns","positivePattern","negativePattern","GetFormatNumber","FormatNumber","FormatNumberToParts","PartitionNumberPattern","nums","ild","latn","beginIndex","endIndex","literal","isFinite","_n2","ToRawPrecision","ToRawFixed","numSys","digits","digit","integer","fraction","decimalSepIndex","groupSepSymbol","pgSize","primaryGroupSize","sgSize","secondaryGroupSize","idx","integerGroup","decimalSepSymbol","decimal","infinity","plusSignSymbol","plusSign","minusSignSymbol","minusSign","percentSignSymbol","percentSign","currencies","_literal","_literal2","minPrecision","maxPrecision","log10","LOG10E","log10Floor","exp","LN10","cut","minInteger","minFraction","maxFraction","int","arab","arabext","bali","beng","deva","fullwide","gujr","guru","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","expDTComponents","expPatternTrimmer","unwantedDTCs","dtKeys","tmKeys","isDateFormatOnly","isTimeFormatOnly","joinDateAndTimeFormats","dateFormatObj","timeFormatObj","computeFinalPatterns","formatObj","pattern12","extendedPattern","expDTComponentsMeta","era","year","quarter","day","weekday","hour12","hour","minute","second","timeZoneName","createDateTimeFormat","skeleton","originalPattern","validSyntheticProps","numeric","narrow","short","long","dateWidths","resolveDateString","gregory","alts","resolved","DateTimeFormatConstructor","InitializeDateTimeFormat","DateTimeFormat","dateTimeFormat","ToDateTimeOptions","tz","timeZone","dateTimeComponents","bestFormat","dataLocaleData","availableFormats","timeFormats","dateFormats","computed","timeRelatedFormats","dateRelatedFormats","full","medium","createDateTimeFormats","ToDateTimeFormats","removalPenalty","additionPenalty","longLessPenalty","longMorePenalty","shortLessPenalty","shortMorePenalty","bestScore","score","optionsProp","formatProp","optionsPropIndex","formatPropIndex","BasicFormatMatcher","_hr","optionsPropNames","_bestFormat","propValue","generateSyntheticFormat","patternPenalty","hour12Penalty","_property","BestFitFormatMatcher","_prop","hr12","hourNo0","GetFormatDateTime","required","opt2","needDefaults","FormatDateTime","CreateDateTimeParts","useGrouping","nf2","minimumIntegerDigits","tm","calendar","ToLocalTime","calendars","fv","FormatToPartsDateTime","ls","__localeSensitiveProtos","toLocaleString","toLocaleDateString","toLocaleTimeString","nu","setDefaultLocale","addLocaleData","matchHtmlRegExp","html","pairs","pairSplitRegExp","dec","pair","eq_idx","tryDecode","serialize","enc","fieldContentRegExp","maxAge","httpOnly","sameSite","qs","sep","eq","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","argIndex","con","dummy","properties","methods","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","funcTag","objectTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","types","binding","nodeIsTypedArray","isTypedArray","transform","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","uid","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","symToStringTag","toStringTag","getNative","nativeIsBuffer","nativeMax","nativeNow","nativeCreate","baseCreate","isObject","Hash","clear","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","fromRight","baseFor","keysFunc","iterable","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsNative","isMasked","isFunction","toSource","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","srcIndex","customizer","srcValue","mergeFunc","safeGet","stacked","isCommon","isTyped","isArrayLike","copyArray","buffer","isDeep","copy","cloneBuffer","typedArray","arrayBuffer","byteLength","cloneArrayBuffer","byteOffset","cloneTypedArray","Ctor","isPlainObject","isNew","copyObject","keysIn","toPlainObject","initCloneObject","baseMergeDeep","baseRest","setToString","otherArgs","overRest","isKeyable","lastCalled","stamp","remaining","shortOut","other","isLength","baseUnary","assigner","sources","guard","isIterateeCall","webpackPolyfill","deprecate","paths","excludeStaticParent","position","overflowRegex","getComputedStyle","overflowX","overflowY","timestamp","later","callNow","threshhold","scope","deferTimer","utils","arrayPrefixGenerators","brackets","comma","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","allowDots","charsetSentinel","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","objKeys","normalizeStringifyOptions","arrayFormat","joined","arrayLimit","depth","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","chain","leaf","cleanRoot","0","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","encodedVal","parseValues","ReflectOwnKeys","ReflectApply","NumberIsNaN","eventListener","errorListener","removeListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","prepend","existing","warning","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","setMaxListeners","getMaxListeners","doError","er","addListener","prependListener","prependOnceListener","originalListener","removeAllListeners","rawListeners","eventNames","isLiteralElement","isArgumentElement","argument","isNumberElement","isDateElement","isTimeElement","isSelectElement","isPluralElement","plural","isPoundElement","pound","isNumberSkeleton","isDateTimeSkeleton","extendStatics","__assign","SyntaxError","_super","expected","found","captureStackTrace","buildMessage","hex","literalEscape","classEscape","describeExpectation","expectation","escapedParts","inverted","description","expected1","descriptions","describeExpected","found1","pegParse","peg$result","peg$FAILED","peg$startRuleFunctions","peg$parsestart","peg$startRuleFunction","peg$c3","peg$literalExpectation","peg$c5","peg$otherExpectation","peg$c6","peg$c7","peg$c8","peg$c9","peg$c11","peg$c12","peg$c13","peg$classExpectation","peg$c14","peg$c15","peg$c17","peg$c19","peg$c22","peg$c23","peg$c26","messageCtx","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","insertLocation","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c53","peg$c54","peg$c57","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c71","peg$c74","peg$c75","peg$c76","peg$c79","isInPluralOption","peg$c81","peg$c83","peg$c84","peg$c86","peg$c88","peg$c89","peg$c90","peg$c91","peg$c93","peg$currPos","peg$savedPos","peg$posDetailsCache","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","peg$computeLocation","location1","peg$buildSimpleError","text1","ignoreCase","peg$computePosDetails","details","startPos","endPos","startPosDetails","endPosDetails","peg$fail","peg$buildStructuredError","peg$parsemessage","s0","s1","peg$parsemessageElement","peg$parsemessageText","messageText","peg$parseliteralElement","s3","s5","peg$parse_","peg$parseargNameOrNumber","peg$parseargumentElement","s7","s9","s10","s11","s12","s2","peg$parsenumberSkeletonToken","peg$parsenumberSkeleton","peg$parsenumberArgStyle","peg$parsenumberFormatElement","peg$parsedateTimeSkeletonLiteral","peg$parsedateTimeSkeletonPattern","peg$parsedateTimeSkeleton","peg$parsedateOrTimeArgStyle","peg$parsedateOrTimeFormatElement","peg$parsesimpleFormatElement","s13","s14","s15","peg$parsenumber","peg$parsepluralOption","pluralType","_a","optionLocation","peg$c52","peg$parsepluralElement","peg$parseselectOption","peg$c55","peg$parseselectElement","peg$parsepoundElement","peg$parsedoubleApostrophes","peg$parsequotedString","peg$parseunquotedString","peg$parsenumberSkeletonId","s4","peg$parsewhiteSpace","peg$parsenumberSkeletonTokenOption","stem","peg$c20","s6","peg$parseargName","peg$parsepluralRuleSelectValue","peg$parsepatternSyntax","negative","peg$parseargNumber","peg$parseescapedChar","captureLocation","__spreadArrays","il","jl","PLURAL_HASHTAG_REGEX","normalizeHashtagInPlural","els","matchingLiteralElIndex","literalEl","el_1","newEls","getCacheId","inputs","memoizeFormatConstructor","FormatConstructor","cacheId","DATE_TIME_REGEX","parseDateTimeSkeleton","hourCycle","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","parseSignificantPrecision","g1","g2","parseSign","signDisplay","currencySign","parseNotationOptions","signOpts","convertNumberSkeletonToNumberFormatOptions","tokens_1","maximumFractionDigits","unit","notation","compactDisplay","currencyDisplay","unitDisplay","minimumFractionDigits","domParser","FormatError","variableId","formatToParts","currentPluralValue","originalMessage","els_1","getNumberFormat","varName","getDateTimeFormat","PluralRules","getPluralRules","lastPart","formatToString","TOKEN_REGEX","counter","restoreRichPlaceholderMessage","objectParts","SIMPLE_XML_REGEX","TEMPLATE_ID","VOID_ELEMENTS","formatHTMLElement","outerHTML","childNodes","isVoidElement","formatFnOrValue","chunks","formatHTMLMessage","formattedMessage","DOMParser","content","parseFromString","getElementById","tagsToFormat","getElementsByTagName","caseSensitiveTags","mergeConfigs","defaultConfig","configs","c1","c2","createDefaultFormatters","dateTime","pluralRules","memoizeIntlConstructor","overrideFormats","formatterCache","ast","resolvedOptions","supportedLocalesOf","getAst","__parse","percent"],"mappings":"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JC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAETC,QAAS,CACLC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbp2F,IAAK,CAAC,MAAO,MACbq2F,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACb12F,IAAK,CAAC,MAAO,MACb22F,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACb94C,IAAK,CAAC,MAAO,OACb+4C,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACb7jD,IAAK,CAAC,MAAO,OACb8jD,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,QAOrB,SAASC,EAAiBt0F,GAGtB,IAFA,IAAIhe,EAAIge,EAAI/d,OAELD,KAAK,CACR,IAAIi7B,EAAKjd,EAAI5Q,OAAOpN,GAEhBi7B,GAAM,KAAOA,GAAM,MAAKjd,EAAMA,EAAI3O,MAAM,EAAGrP,GAAKi7B,EAAG/d,cAAgBc,EAAI3O,MAAMrP,EAAI,IAGzF,OAAOge,EAkBX,SAAoBu0F,EAA+BttG,GAE/C,QAAK68F,EAAevlF,KAAKtX,MAGrB88F,EAAgBxlF,KAAKtX,KAGrB+8F,EAAkBzlF,KAAKtX,IAoB/B,SAAoButG,EAAwBvtG,GAexC,IAdA,IAAIoD,OAAQ,EACRgc,OAAQ,EAaHrkB,EAAI,EAAGqW,GADhBgO,GANApf,EAASA,EAAOiK,eAMDlK,MAAM,MACO/E,OAAQD,EAAIqW,EAAKrW,IAEzC,GAAwB,IAApBqkB,EAAMrkB,GAAGC,OAAcokB,EAAMrkB,GAAKqkB,EAAMrkB,GAAGkd,mBAG1C,GAAwB,IAApBmH,EAAMrkB,GAAGC,OAAcokB,EAAMrkB,GAAKqkB,EAAMrkB,GAAGoN,OAAO,GAAG8P,cAAgBmH,EAAMrkB,GAAGqP,MAAM,QAGpF,GAAwB,IAApBgV,EAAMrkB,GAAGC,QAA6B,MAAbokB,EAAMrkB,GAAY,OAQvDqI,GANLpD,EAASg7F,EAAQr3F,KAAKyb,EAAO,MAMThc,MAAM45F,KAAqB55F,EAAMpI,OAAS,IAE1DoI,EAAMqrC,OAGNzuC,EAASA,EAAO+B,QAAQib,OAAO,MAAQggF,EAAgBv5F,OAAS,KAAM,KAAMu3F,EAAQr3F,KAAKP,EAAO,MAKhGs3F,EAAI/2F,KAAKu5F,EAAcC,KAAMn9F,KAASA,EAASk9F,EAAcC,KAAKn9F,IAQtE,IAAK,IAAI6S,EAAK,EAAG26F,GAFjBpuF,EAAQpf,EAAOD,MAAM,MAES/E,OAAQ6X,EAAK26F,EAAM36F,IACzC6nF,EAAI/2F,KAAKu5F,EAAcE,QAASh+E,EAAMvM,IAAMuM,EAAMvM,GAAMqqF,EAAcE,QAAQh+E,EAAMvM,IAAc6nF,EAAI/2F,KAAKu5F,EAAcmC,QAASjgF,EAAMvM,MACxIuM,EAAMvM,GAAMqqF,EAAcmC,QAAQjgF,EAAMvM,IAAK,GAGlC,IAAPA,GAAYqqF,EAAcmC,QAAQjgF,EAAM,IAAI,KAAOA,EAAM,KACzDA,EAAQy7E,EAASl3F,KAAKyb,EAAOvM,KAC7B26F,GAAQ,IAKpB,OAAOxS,EAAQr3F,KAAKyb,EAAO,KAe/B,IAAIquF,EAAkB,aAwBtB,IAAIC,EAAkB,0BAEtB,SAAoBC,EAAuB7wG,GAIvC,QAAgB6B,IAAZ7B,EAAuB,OAAO,IAAIw+F,EAuBtC,IApBA,IAAIsS,EAAO,IAAItS,EASX9wE,EAAI/K,EAHR3iB,EAA6B,kBAAZA,EAAuB,CAACA,GAAWA,GAQhDoa,EAAMklF,EAAS5xE,EAAExvB,QAGjBuN,EAAI,EAGDA,EAAI2O,GAAK,CAEZ,IAAI22F,EAAK1xG,OAAOoM,GAOhB,GAHeslG,KAAMrjF,EAGP,CAGV,IAAIM,EAASN,EAAEqjF,GAIf,GAAe,OAAX/iF,GAAqC,kBAAXA,GAA4G,YAAlE,qBAAXA,EAAyB,YAAcmtE,EAAc,OAAWntE,IAAuB,MAAM,IAAIpuB,UAAU,kCAGxK,IAAIghE,EAAMvhE,OAAO2uB,GAKjB,IAAKwiF,EAA+B5vC,GAAM,MAAM,IAAIowC,WAAW,IAAMpwC,EAAM,8CAK3EA,EAAM6vC,EAAwB7vC,IAIM,IAAhCi9B,EAAWh3F,KAAKiqG,EAAMlwC,IAAaq9B,EAAQp3F,KAAKiqG,EAAMlwC,GAI9Dn1D,IAIJ,OAAOqlG,EAWX,SAAoBG,EAAoBC,EAAkBhuG,GAKtD,IAHA,IAAIiuG,EAAYjuG,EAGTiuG,GAAW,CAGd,GAAItT,EAAWh3F,KAAKqqG,EAAkBC,IAAc,EAAG,OAAOA,EAK9D,IAAIC,EAAMD,EAAUv9F,YAAY,KAEhC,GAAIw9F,EAAM,EAAG,OAITA,GAAO,GAAmC,MAA9BD,EAAU9lG,OAAO+lG,EAAM,KAAYA,GAAO,GAI1DD,EAAYA,EAAUh+F,UAAU,EAAGi+F,IAU3C,SAAoBC,EAAcH,EAAkBI,GAchD,IAZA,IAAIrzG,EAAI,EAGJmc,EAAMk3F,EAAiBpzG,OAGvBqzG,OAAkB,EAElBruG,OAAS,EACTsuG,OAAqB,EAGlBvzG,EAAImc,IAAQm3F,GAGfruG,EAASouG,EAAiBrzG,GAS1BszG,EAAkBN,EAAoBC,EALtCM,EAAqBnyG,OAAO6D,GAAQ+B,QAAQ2rG,EAAiB,KAQ7D3yG,IAIJ,IAAIqL,EAAS,IAAIi1F,EAGjB,QAAwB18F,IAApB0vG,GAKA,GAHAjoG,EAAO,cAAgBioG,EAGnBlyG,OAAO6D,KAAY7D,OAAOmyG,GAAqB,CAG/C,IAAI3R,EAAY38F,EAAOoD,MAAMsqG,GAAiB,GAI1Ca,EAAiBvuG,EAAOjC,QAAQ,OAGpCqI,EAAO,iBAAmBu2F,EAG1Bv2F,EAAO,sBAAwBmoG,QAOnCnoG,EAAO,cA7MJ62F,EAgNP,OAAO72F,EA+BX,SAAoBooG,EAAcR,EAAkBI,EAAkBxxG,EAAS6xG,EAAuBC,GAClG,GAAgC,IAA5BV,EAAiBhzG,OACjB,MAAM,IAAI4Z,eAAe,yDAK7B,IAEIg6B,OAAI,EAiBJ+/D,GAVA//D,EAJY,WALFhyC,EAAQ,qBASduxG,EAAcH,EAAkBI,GA1B5C,SAAmCJ,EAAkBI,GACjD,OAAOD,EAAcH,EAAkBI,GAgC/BQ,CAAeZ,EAAkBI,IAGrB,cAEhBS,OAAmB,EACnBC,OAAyB,EAG7B,GAAIpU,EAAI/2F,KAAKirC,EAAG,iBAAkB,CAE9B,IAAI+tD,EAAY/tD,EAAE,iBAUlBkgE,GAHAD,EAJY1yG,OAAOD,UAAU6D,MAIJ4D,KAAKg5F,EAAW,MAGC3hG,OAI9C,IAAIoL,EAAS,IAAIi1F,EAGjBj1F,EAAO,kBAAoBuoG,EAW3B,IARA,IAAII,EAAqB,KAErBh0G,EAAI,EAGJmc,EAAMu3F,EAAsBzzG,OAGzBD,EAAImc,GAAK,CAGZ,IAAIpb,EAAM2yG,EAAsB1zG,GAM5Bi0G,EAHkBN,EAAWC,GAGG7yG,GAGhCwB,EAAQ0xG,EAAc,GAEtBC,EAA6B,GAG7BlxG,EAAU48F,EAGd,QAAyBh8F,IAArBkwG,EAAgC,CAIhC,IAAIK,EAASnxG,EAAQ4F,KAAKkrG,EAAkB/yG,GAG5C,IAAgB,IAAZozG,EAKA,GAAIA,EAAS,EAAIJ,GAA0BD,EAAiBK,EAAS,GAAGl0G,OAAS,EAAG,CAIhF,IAAIm0G,EAAiBN,EAAiBK,EAAS,IAQ7B,IAHHnxG,EAAQ4F,KAAKqrG,EAAeG,KAQvCF,EAA6B,IAAMnzG,EAAM,KAHzCwB,EAAQ6xG,QAOX,EAQsB,IAHHpxG,EAAQixG,EAAe,UAKnC1xG,EAAQ,SAK5B,GAAIo9F,EAAI/2F,KAAK/G,EAAS,KAAOd,EAAM,MAAO,CAEtC,IAAIszG,EAAexyG,EAAQ,KAAOd,EAAM,OAKW,IAA/CiC,EAAQ4F,KAAKqrG,EAAeI,IAExBA,IAAiB9xG,IAEjBA,EAAQ8xG,EAERH,EAA6B,IAKzC7oG,EAAO,KAAOtK,EAAM,MAAQwB,EAG5ByxG,GAAsBE,EAGtBl0G,IAGJ,GAAIg0G,EAAmB/zG,OAAS,EAAG,CAE/B,IAAIq0G,EAAeV,EAAY5wG,QAAQ,OAEvC,IAAsB,IAAlBsxG,EAEAV,GAA4BI,MAG3B,CAEG,IAAIO,EAAeX,EAAY1+F,UAAU,EAAGo/F,GAExCE,EAAgBZ,EAAY1+F,UAAUo/F,GAE1CV,EAAcW,EAAeP,EAAqBQ,EAI1DZ,EAAcpB,EAAwBoB,GAM1C,OAHAvoG,EAAO,cAAgBuoG,EAGhBvoG,EAUX,SAAoBopG,EAAuBxB,EAAkBI,GASzD,IAPA,IAAIl3F,EAAMk3F,EAAiBpzG,OAEvBy0G,EAAS,IAAInU,EAEb/yF,EAAI,EAGDA,EAAI2O,GAAK,CAGZ,IAAIlX,EAASouG,EAAiB7lG,QAWN5J,IAJFovG,EAAoBC,EAJjB7xG,OAAO6D,GAAQ+B,QAAQ2rG,EAAiB,MAQ9B3S,EAAQp3F,KAAK8rG,EAAQzvG,GAGxDuI,IAQJ,OAHkBsyF,EAASl3F,KAAK8rG,GA0BpC,SAAmBC,EAAiB1B,EAAkBI,EAAkBxxG,GACpE,IAAI+yG,OAAU,EACVF,OAAS,EAGb,QAAgB9wG,IAAZ/B,QAQgB+B,KAHhBgxG,GAHA/yG,EAAU,IAAIy+F,EAAO57E,EAAS7iB,KAGZgzG,gBASE,YAJhBD,EAAUxzG,OAAOwzG,KAIuB,aAAZA,EAAwB,MAAM,IAAI7B,WAAW,4CAiBjF,IAAK,IAAItlF,KATLinF,OAJY9wG,IAAZgxG,GAAqC,aAAZA,EApCjC,SAA2C3B,EAAkBI,GAEzD,OAAOoB,EAAuBxB,EAAkBI,GAsCnCyB,CAAwB7B,EAAkBI,GAM1CoB,EAAuBxB,EAAkBI,GAI7C1T,EAAI/2F,KAAK8rG,EAAQjnF,IAQtB3sB,EAAe4zG,EAAQjnF,EAAG,CACtB7sB,UAAU,EAAOD,cAAc,EAAO4B,MAAOmyG,EAAOjnF,KAO5D,OAHA3sB,EAAe4zG,EAAQ,SAAU,CAAE9zG,UAAU,IAGtC8zG,EASX,SAAmBK,EAAUlzG,EAAS67F,EAAUhjF,EAAMlP,EAAQ8sD,GAG1D,IAAI/1D,EAAQV,EAAQ67F,GAGpB,QAAc95F,IAAVrB,EAAqB,CAOrB,GAHAA,EAAiB,YAATmY,EAAqBs6F,QAAQzyG,GAAkB,WAATmY,EAAoBtZ,OAAOmB,GAASA,OAGnEqB,IAAX4H,IAGwC,IAApCo0F,EAAWh3F,KAAK4C,EAAQjJ,GAAe,MAAM,IAAIwwG,WAAW,IAAMxwG,EAAQ,kCAAoCm7F,EAAW,KAIjI,OAAOn7F,EAGX,OAAO+1D,EAQX,SAAqB28C,EAAgBpzG,EAAS67F,EAAUwX,EAASC,EAAS78C,GAGtE,IAAI/1D,EAAQV,EAAQ67F,GAGpB,QAAc95F,IAAVrB,EAAqB,CAMrB,GAJAA,EAAQ45B,OAAO55B,GAIXijD,MAAMjjD,IAAUA,EAAQ2yG,GAAW3yG,EAAQ4yG,EAAS,MAAM,IAAIpC,WAAW,mDAG7E,OAAOzgG,KAAKq4B,MAAMpoC,GAGtB,OAAO+1D,EAIX,IAAIkkC,GAAO,GAyBX37F,OAAOC,eAAe07F,GAAM,sBAAuB,CAC/C97F,YAAY,EACZC,cAAc,EACdC,UAAU,EACV2B,MAtBJ,SAA6BR,GAUrB,IARJ,IAAIqzG,EAAKxC,EAAuB7wG,GAGxBsJ,EAAS,GAET8Q,EAAMi5F,EAAGn1G,OACTuN,EAAI,EAEDA,EAAI2O,GACP9Q,EAAOmC,GAAK4nG,EAAG5nG,GACfA,IAEJ,OAAOnC,KAYf,IAAIgqG,GAAqB,CACrBC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EACrEC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EACrEC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAIjE,SAASC,KACL,IAAIj1G,EAAUM,UAAU,GACpBR,EAAUQ,UAAU,GAExB,OAAKb,MAAQA,OAASg7F,GAIfya,GAAuBvyF,EAASljB,MAAOO,EAASF,GAH5C,IAAI26F,GAAK0a,aAAan1G,EAASF,GAsB9C,SAAsBo1G,GAAuBl3G,EAAcgC,EAASF,GAEhE,IAAIs1G,EAAW3V,EAAsBzhG,GAGjCq3G,EAAgB5W,IAIpB,IAA8C,IAA1C2W,EAAS,6BAAuC,MAAM,IAAIx1G,UAAU,gEAGxEb,EAAef,EAAc,0BAA2B,CACpDwC,MAAO,WAEH,GAAIF,UAAU,KAAOw5F,EAAQ,OAAOsb,KAK5CA,EAAS,8BAA+B,EAIxC,IAAI9D,EAAmBT,EAAuB7wG,GAO1CF,OAJY+B,IAAZ/B,EAIU,GAKA6iB,EAAS7iB,GAGvB,IAAIwhD,EAAM,IAAIi9C,EAOdsU,EAAUG,EAAUlzG,EAAS,gBAAiB,SAAU,IAAI0+F,EAAK,SAAU,YAAa,YAGxFl9C,EAAI,qBAAuBuxD,EAM3B,IAAIjB,EAAatT,EAAU6W,aAAa,kBAMpCrjE,EAAI4/D,EAAcpT,EAAU6W,aAAa,wBAAyB7D,EAAkBhwD,EAAKg9C,EAAU6W,aAAa,6BAA8BvD,GAIlJwD,EAAS,cAAgBtjE,EAAE,cAI3BsjE,EAAS,uBAAyBtjE,EAAE,UAGpCsjE,EAAS,kBAAoBtjE,EAAE,kBAG/B,IAAIwjE,EAAaxjE,EAAE,kBAKf5uB,EAAI8vF,EAAUlzG,EAAS,QAAS,SAAU,IAAI0+F,EAAK,UAAW,UAAW,YAAa,WAG1F4W,EAAS,aAAelyF,EAIxB,IAAIpG,EAAIk2F,EAAUlzG,EAAS,WAAY,UAKvC,QAAU+B,IAANib,IA7uBR,SAA6C/e,GAEzC,IAIIw3G,EAAahF,EAJTlxG,OAAOtB,IASf,OAAyC,IAArC4yG,EAAgBn2F,KAAK+6F,GAkuBDC,CAAyB14F,GAAI,MAAM,IAAIk0F,WAAW,IAAMl0F,EAAI,kCAGpF,GAAU,aAANoG,QAA0BrhB,IAANib,EAAiB,MAAM,IAAIld,UAAU,oDAE7D,IAiIoB7B,EAjIhB03G,OAAU,EAGJ,aAANvyF,IAEApG,EAAIA,EAAE3B,cAGNi6F,EAAS,gBAAkBt4F,EAI3B24F,OA4HoC5zG,IAAjCyxG,GAPav1G,EArHS+e,GA4HuBw2F,GAAmBv1G,GAAY,GAtHnF,IAAIosE,EAAK6oC,EAAUlzG,EAAS,kBAAmB,SAAU,IAAI0+F,EAAK,OAAQ,SAAU,QAAS,UAInF,aAANt7E,IAAkBkyF,EAAS,uBAAyBjrC,GAKxD,IAAIurC,EAAOxC,EAAgBpzG,EAAS,uBAAwB,EAAG,GAAI,GAGnEs1G,EAAS,4BAA8BM,EAIvC,IAIIC,EAAOzC,EAAgBpzG,EAAS,wBAAyB,EAAG,GAJxC,aAANojB,EAAmBuyF,EAAU,GAO/CL,EAAS,6BAA+BO,EAKxC,IAIIC,EAAO1C,EAAgBpzG,EAAS,wBAAyB61G,EAAM,GAJ3C,aAANzyF,EAAmB3S,KAAK+D,IAAIqhG,EAAMF,GAAiB,YAANvyF,EAAkB3S,KAAK+D,IAAIqhG,EAAM,GAAKplG,KAAK+D,IAAIqhG,EAAM,IAOpHP,EAAS,6BAA+BQ,EAIxC,IAAIC,EAAO/1G,EAAQg2G,yBAIfC,EAAOj2G,EAAQk2G,8BAGNn0G,IAATg0G,QAA+Bh0G,IAATk0G,IAItBF,EAAO3C,EAAgBpzG,EAAS,2BAA4B,EAAG,GAAI,GAKnEi2G,EAAO7C,EAAgBpzG,EAAS,2BAA4B+1G,EAAM,GAAI,IAKtET,EAAS,gCAAkCS,EAC3CT,EAAS,gCAAkCW,GAI/C,IAAIp+F,EAAIq7F,EAAUlzG,EAAS,cAAe,eAAW+B,GAAW,GAGhEuzG,EAAS,mBAAqBz9F,EAI9B,IAUIs+F,EAViBrE,EAAW0D,GAIFY,SAMDhzF,GA0B7B,OArBAkyF,EAAS,uBAAyBa,EAAcE,gBAKhDf,EAAS,uBAAyBa,EAAcG,gBAGhDhB,EAAS,wBAAqBvzG,EAI9BuzG,EAAS,gCAAiC,EAGtC1X,IAAK1/F,EAAakD,OAASm1G,GAAgBxvG,KAAK7I,IAGpDq3G,IAGOr3G,EAuEX,SAASq4G,KACL,IAAIjB,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MAGrG,IAAK21G,IAAaA,EAAS,+BAAgC,MAAM,IAAIx1G,UAAU,6EAO/E,QAAoCiC,IAAhCuzG,EAAS,mBAAkC,CAK3C,IAaIv8B,EAAKulB,EAAOv3F,MAbR,SAAWrG,GAKf,OAAO81G,GAAa72G,KAAe26B,OAAO55B,MAQtBf,MAIxB21G,EAAS,mBAAqBv8B,EAIlC,OAAOu8B,EAAS,mBAwBpB,SAASmB,GAAoBv4G,EAAcmhB,GAQvC,IANA,IAAImD,EAAQk0F,GAAuBx4G,EAAcmhB,GAE7C7V,EAAS,GAEToC,EAAI,EAECzN,EAAI,EAAGqkB,EAAMpkB,OAASD,EAAGA,IAAK,CACnC,IAAIqO,EAAOgW,EAAMrkB,GAEbyvB,EAAI,GAERA,EAAE/U,KAAOrM,EAAK,YAEdohB,EAAEltB,MAAQ8L,EAAK,aAEfhD,EAAOoC,GAAKgiB,EAEZhiB,GAAK,EAGT,OAAOpC,EAOX,SAASktG,GAAuBx4G,EAAcmhB,GAE1C,IAAIi2F,EAAW3V,EAAsBzhG,GACjCkF,EAASkyG,EAAS,kBAClBqB,EAAOrB,EAAS,uBAChB1zF,EAAO48E,EAAU6W,aAAa,kBAAkBjyG,GAChDwzG,EAAMh1F,EAAK9G,QAAQ67F,IAAS/0F,EAAK9G,QAAQ+7F,KACzCz1F,OAAU,GAGTuiC,MAAMtkC,IAAMA,EAAI,GAEjBA,GAAKA,EAEL+B,EAAUk0F,EAAS,wBAKfl0F,EAAUk0F,EAAS,uBAa3B,IAVA,IAAI9rG,EAAS,IAAIk1F,EAEboY,EAAa11F,EAAQjgB,QAAQ,IAAK,GAElC41G,EAAW,EAEX9hG,EAAY,EAEZ7W,EAASgjB,EAAQhjB,OAEd04G,GAAc,GAAKA,EAAa14G,GAAQ,CAI3C,IAAkB,KAFlB24G,EAAW31F,EAAQjgB,QAAQ,IAAK21G,IAEX,MAAM,IAAIzrG,MAE/B,GAAIyrG,EAAa7hG,EAAW,CAExB,IAAI+hG,EAAU51F,EAAQ/N,UAAU4B,EAAW6hG,GAE3C3Y,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAawtG,IAG/D,IAAIr/F,EAAIyJ,EAAQ/N,UAAUyjG,EAAa,EAAGC,GAE1C,GAAU,WAANp/F,EAEA,GAAIgsC,MAAMtkC,GAAI,CAEV,IAAIzT,EAAIgrG,EAAIhL,IAEZzN,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,MAAO,YAAaoC,SAGtD,GAAKqrG,SAAS53F,GAOV,CAEiC,YAA1Bi2F,EAAS,cAA8B2B,SAAS53F,KAAIA,GAAK,KAE7D,IAAI63F,OAAM,EAINA,EAFApZ,EAAI/2F,KAAKuuG,EAAU,iCAAmCxX,EAAI/2F,KAAKuuG,EAAU,gCAEnE6B,GAAe93F,EAAGi2F,EAAS,gCAAiCA,EAAS,iCAKjE8B,GAAW/3F,EAAGi2F,EAAS,4BAA6BA,EAAS,6BAA8BA,EAAS,8BAG9G+B,GAAOV,GACP,WAEI,IAAIW,EAASD,GAAOV,GAEpBO,EAAM33G,OAAO23G,GAAK/xG,QAAQ,OAAO,SAAUoyG,GACvC,OAAOD,EAAOC,MALtB,GAUCL,EAAM33G,OAAO23G,GAElB,IAAIM,OAAU,EACVC,OAAW,EAEXC,EAAkBR,EAAI/1G,QAAQ,IAAK,GAgBvC,GAdIu2G,EAAkB,GAElBF,EAAUN,EAAI7jG,UAAU,EAAGqkG,GAE3BD,EAAWP,EAAI7jG,UAAUqkG,EAAkB,EAAGA,EAAgBt5G,UAK1Do5G,EAAUN,EAEVO,OAAW11G,IAGiB,IAAhCuzG,EAAS,mBAA6B,CAEtC,IAAIqC,EAAiBf,EAAI91F,MAErBwB,EAAS,GAGTs1F,EAASh2F,EAAKw0F,SAASyB,kBAAoB,EAE3CC,EAASl2F,EAAKw0F,SAAS2B,oBAAsBH,EAEjD,GAAIJ,EAAQp5G,OAASw5G,EAAQ,CAEzB,IAAIluG,EAAM8tG,EAAQp5G,OAASw5G,EAEvBI,EAAMtuG,EAAMouG,EACZzjE,EAAQmjE,EAAQhqG,MAAM,EAAGwqG,GAG7B,IAFI3jE,EAAMj2C,QAAQ+/F,EAAQp3F,KAAKub,EAAQ+xB,GAEhC2jE,EAAMtuG,GACTy0F,EAAQp3F,KAAKub,EAAQk1F,EAAQhqG,MAAMwqG,EAAKA,EAAMF,IAC9CE,GAAOF,EAGX3Z,EAAQp3F,KAAKub,EAAQk1F,EAAQhqG,MAAM9D,SAEnCy0F,EAAQp3F,KAAKub,EAAQk1F,GAGzB,GAAsB,IAAlBl1F,EAAOlkB,OAAc,MAAM,IAAIiN,MAEnC,KAAOiX,EAAOlkB,QAAQ,CAElB,IAAI65G,EAAe5Z,EAASt3F,KAAKub,GAEjC67E,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAayuG,IAEvD31F,EAAOlkB,QAEP+/F,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,QAAS,YAAamuG,UAO7DxZ,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAaguG,IAGnE,QAAiBz1G,IAAb01G,EAAwB,CAExB,IAAIS,EAAmBtB,EAAIuB,QAE3Bha,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAa0uG,IAE3D/Z,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,WAAY,YAAaiuG,SA9GrD,CAEf,IAAI5hG,EAAK+gG,EAAIwB,SAEbja,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,WAAY,YAAaqM,SA+GnE,GAAU,aAAN8B,EAAkB,CAEnB,IAAI0gG,EAAiBzB,EAAI0B,SAEzBna,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,WAAY,YAAa6uG,SAG3D,GAAU,cAAN1gG,EAAmB,CAEpB,IAAI4gG,EAAkB3B,EAAI4B,UAE1Bra,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,YAAa,YAAa+uG,SAG5D,GAAU,gBAAN5gG,GAAiD,YAA1B29F,EAAS,aAA4B,CAE7D,IAAImD,EAAoB7B,EAAI8B,YAE5Bva,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAaivG,SAG1D,GAAU,aAAN9gG,GAA8C,aAA1B29F,EAAS,aAA6B,CAE3D,IAAIr3G,EAAWq3G,EAAS,gBAEpBjrC,OAAK,EAG+B,SAApCirC,EAAS,uBAETjrC,EAAKpsE,EAGoC,WAApCq3G,EAAS,uBAEVjrC,EAAKzoD,EAAK+2F,WAAW16G,IAAaA,EAGO,SAApCq3G,EAAS,yBAEVjrC,EAAKpsE,GAGjBkgG,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,WAAY,YAAa6gE,QAG3D,CAEG,IAAIuuC,EAAWx3F,EAAQ/N,UAAUyjG,EAAYC,GAE7C5Y,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAaovG,IAGnF3jG,EAAY8hG,EAAW,EAEvBD,EAAa11F,EAAQjgB,QAAQ,IAAK8T,GAGtC,GAAIA,EAAY7W,EAAQ,CAEpB,IAAIy6G,EAAYz3F,EAAQ/N,UAAU4B,EAAW7W,GAE7C+/F,EAAQp3F,KAAKyC,EAAQ,CAAE,WAAY,UAAW,YAAaqvG,IAG/D,OAAOrvG,EAOX,SAASgtG,GAAat4G,EAAcmhB,GAMhC,IAJA,IAAImD,EAAQk0F,GAAuBx4G,EAAcmhB,GAE7C7V,EAAS,GAEJrL,EAAI,EAAGqkB,EAAMpkB,OAASD,EAAGA,IAAK,CAGnCqL,GAFWgZ,EAAMrkB,GAEF,aAGnB,OAAOqL,EAQX,SAAS2tG,GAAe93F,EAAGy5F,EAAcC,GAErC,IAAIphG,EAAIohG,EAEJr4F,OAAI,EACJ7f,OAAI,EAGR,GAAU,IAANwe,EAEAqB,EAAI09E,EAAQr3F,KAAKmC,MAAMyO,EAAI,GAAI,KAE/B9W,EAAI,MAGH,CAKGA,EAp+DZ,SAAoB+K,GAEhB,GAA0B,oBAAf6E,KAAKuoG,MAAsB,OAAOvoG,KAAKq4B,MAAMr4B,KAAKuoG,MAAMptG,IAEnE,IAAIyT,EAAI5O,KAAK0rB,MAAM1rB,KAAK3P,IAAI8K,GAAK6E,KAAKwoG,QACtC,OAAO55F,GAAKib,OAAO,KAAOjb,GAAKzT,GA+9DnBstG,CAAWzoG,KAAKod,IAAIxO,IAGxB,IAAI2L,EAAIva,KAAK0rB,MAAM1rB,KAAK0oG,IAAI1oG,KAAKod,IAAIhtB,EAAI8W,EAAI,GAAKlH,KAAK2oG,OAIvD14F,EAAInhB,OAAOkR,KAAK0rB,MAAMt7B,EAAI8W,EAAI,EAAI,EAAI0H,EAAI2L,EAAI3L,EAAI2L,IAI1D,GAAInqB,GAAK8W,EAEL,OAAO+I,EAAI09E,EAAQr3F,KAAKmC,MAAMrI,EAAI8W,EAAI,EAAI,GAAI,KAG7C,GAAI9W,IAAM8W,EAAI,EAEX,OAAO+I,EAef,GAZa7f,GAAK,EAGN6f,EAAIA,EAAElT,MAAM,EAAG3M,EAAI,GAAK,IAAM6f,EAAElT,MAAM3M,EAAI,GAGrCA,EAAI,IAGL6f,EAAI,KAAO09E,EAAQr3F,KAAKmC,MAAiB,GAATrI,EAAI,IAAS,KAAO6f,GAGhEA,EAAEvf,QAAQ,MAAQ,GAAK43G,EAAeD,EAAc,CAKpD,IAHA,IAAIO,EAAMN,EAAeD,EAGlBO,EAAM,GAAgC,MAA3B34F,EAAEnV,OAAOmV,EAAEtiB,OAAS,IAElCsiB,EAAIA,EAAElT,MAAM,GAAI,GAGhB6rG,IAI2B,MAA3B34F,EAAEnV,OAAOmV,EAAEtiB,OAAS,KAEpBsiB,EAAIA,EAAElT,MAAM,GAAI,IAGxB,OAAOkT,EAWX,SAAS02F,GAAW/3F,EAAGi6F,EAAYC,EAAaC,GAE5C,IASQxB,EATJhtF,EAAIwuF,EAEJ5tG,EAAI6E,KAAKivF,IAAI,GAAI10E,GAAK3L,EAEtBqB,EAAU,IAAN9U,EAAU,IAAMA,EAAE2qC,QAAQ,GAM1B4iE,GAAOnB,EAAMt3F,EAAEvf,QAAQ,OAAS,EAAIuf,EAAElT,MAAMwqG,EAAM,GAAK,EACvDmB,IACAz4F,EAAIA,EAAElT,MAAM,EAAGwqG,GAAK7yG,QAAQ,IAAK,IACjCub,GAAK09E,EAAQr3F,KAAKmC,MAAMiwG,GAAOz4F,EAAEtiB,OAAS,GAAK,GAAI,MAI3D,IAAIq7G,OAAM,EAEV,GAAU,IAANzuF,EAAS,CAET,IAAIrf,EAAI+U,EAAEtiB,OAEV,GAAIuN,GAAKqf,EAILtK,EAFQ09E,EAAQr3F,KAAKmC,MAAM8hB,EAAI,EAAIrf,EAAI,GAAI,KAEnC+U,EAER/U,EAAIqf,EAAI,EAGZ,IAAI1nB,EAAIod,EAAErN,UAAU,EAAG1H,EAAIqf,GACvBznB,EAAImd,EAAErN,UAAU1H,EAAIqf,EAAGtK,EAAEtiB,QAE7BsiB,EAAIpd,EAAI,IAAMC,EAEdk2G,EAAMn2G,EAAElF,YAGPq7G,EAAM/4F,EAAEtiB,OAIb,IAFA,IAAIi7G,EAAMG,EAAcD,EAEjBF,EAAM,GAAqB,MAAhB34F,EAAElT,OAAO,IAEvBkT,EAAIA,EAAElT,MAAM,GAAI,GAEhB6rG,KAGgB,MAAhB34F,EAAElT,OAAO,KAETkT,EAAIA,EAAElT,MAAM,GAAI,IAGhBisG,EAAMH,KAIN54F,EAFS09E,EAAQr3F,KAAKmC,MAAMowG,EAAaG,EAAM,GAAI,KAE1C/4F,GAGb,OAAOA,EA3yBXzhB,EAAe07F,GAAM,eAAgB,CACjC77F,cAAc,EACdC,UAAU,EACV2B,MAAOy0G,KAIXl2G,EAAe07F,GAAK0a,aAAc,YAAa,CAC3Ct2G,UAAU,IAoPFy/F,EAAU6W,aAAe,CACjC,uBAAwB,GACxB,4BAA6B,CAAC,MAC9B,iBAAkB,IAQtBp2G,EAAe07F,GAAK0a,aAAc,qBAAsB,CACpDv2G,cAAc,EACdC,UAAU,EACV2B,MAAO49F,EAAOv3F,MAAK,SAAU7G,GAGzB,IAAK49F,EAAI/2F,KAAKpH,KAAM,wBAAyB,MAAM,IAAIG,UAAU,6CAGjE,IAAIy1G,EAAgB5W,IAIpB3+F,EAAUQ,UAAU,GAOpB4wG,EAAmBzxG,KAAK,wBAKxB6xG,EAAmBT,EAAuB7wG,GAQ1C,OALAq1G,IAKOzC,EAAiB1B,EAAkBI,EAAkBxxG,KAC7Dw+F,EAAU6W,gBAQLp2G,EAAe07F,GAAK0a,aAAa/1G,UAAW,SAAU,CAC9DR,cAAc,EACdyC,IAAKg1G,KAqDTv3G,OAAOC,eAAe07F,GAAK0a,aAAa/1G,UAAW,gBAAiB,CAChER,cAAc,EACdD,YAAY,EACZE,UAAU,EACV2B,MAdJ,WACI,IAAIA,EAAQF,UAAUpC,QAAU,QAAsB2D,IAAjBvB,UAAU,QAAmBuB,EAAYvB,UAAU,GAEpF80G,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MACrG,IAAK21G,IAAaA,EAAS,+BAAgC,MAAM,IAAIx1G,UAAU,oFAE/E,IAAIuf,EAAIib,OAAO55B,GACf,OAAO+1G,GAAoB92G,KAAM0f,MA2crC,IAAIg4F,GAAS,CACTqC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,QAAS,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACvDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,SAAU,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACxDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,QAAS,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACvDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDxD,KAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACpDyD,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,QAAS,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACvDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UACpDC,KAAM,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,WAgB5C77G,EAAe07F,GAAK0a,aAAa/1G,UAAW,kBAAmB,CACvER,cAAc,EACdC,UAAU,EACV2B,MAAO,WACH,IAAIkb,OAAO,EACP+/E,EAAQ,IAAI8C,EACZ9/F,EAAQ,CAAC,SAAU,kBAAmB,QAAS,WAAY,kBAAmB,uBAAwB,wBAAyB,wBAAyB,2BAA4B,2BAA4B,eAChN22G,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MAGrG,IAAK21G,IAAaA,EAAS,+BAAgC,MAAM,IAAIx1G,UAAU,sFAE/E,IAAK,IAAI3B,EAAI,EAAGqW,EAAM7V,EAAMP,OAAQD,EAAIqW,EAAKrW,IACrC2/F,EAAI/2F,KAAKuuG,EAAU15F,EAAO,KAAOjd,EAAMR,GAAK,QAAOw9F,EAAMh9F,EAAMR,IAAM,CAAEuC,MAAO40G,EAAS15F,GAAO7c,UAAU,EAAMD,cAAc,EAAMD,YAAY,IAGtJ,OAAOm/F,EAAU,GAAIrC,MAO7B,IAAIof,GAAkB,4KAElBC,GAAoB,qCAIpBC,GAAe,kBAEfC,GAAS,CAAC,MAAO,OAAQ,QAAS,MAAO,UAAW,WACpDC,GAAS,CAAC,OAAQ,SAAU,SAAU,SAAU,gBAEpD,SAASC,GAAiBvuG,GACtB,IAAK,IAAI1O,EAAI,EAAGA,EAAIg9G,GAAO/8G,OAAQD,GAAK,EACpC,GAAI0O,EAAI/F,eAAeq0G,GAAOh9G,IAC1B,OAAO,EAGf,OAAO,EAGX,SAASk9G,GAAiBxuG,GACtB,IAAK,IAAI1O,EAAI,EAAGA,EAAI+8G,GAAO98G,OAAQD,GAAK,EACpC,GAAI0O,EAAI/F,eAAeo0G,GAAO/8G,IAC1B,OAAO,EAGf,OAAO,EAGX,SAASm9G,GAAuBC,EAAeC,GAE3C,IADA,IAAI/kG,EAAI,CAAEyV,EAAG,IACJ/tB,EAAI,EAAGA,EAAI+8G,GAAO98G,OAAQD,GAAK,EAChCo9G,EAAcL,GAAO/8G,MACrBsY,EAAEykG,GAAO/8G,IAAMo9G,EAAcL,GAAO/8G,KAEpCo9G,EAAcrvF,EAAEgvF,GAAO/8G,MACvBsY,EAAEyV,EAAEgvF,GAAO/8G,IAAMo9G,EAAcrvF,EAAEgvF,GAAO/8G,KAGhD,IAAK,IAAI2d,EAAI,EAAGA,EAAIq/F,GAAO/8G,OAAQ0d,GAAK,EAChC0/F,EAAcL,GAAOr/F,MACrBrF,EAAE0kG,GAAOr/F,IAAM0/F,EAAcL,GAAOr/F,KAEpC0/F,EAActvF,EAAEivF,GAAOr/F,MACvBrF,EAAEyV,EAAEivF,GAAOr/F,IAAM0/F,EAActvF,EAAEivF,GAAOr/F,KAGhD,OAAOrF,EAGX,SAASglG,GAAqBC,GAW1B,OANAA,EAAUC,UAAYD,EAAUE,gBAAgBz2G,QAAQ,cAAc,SAAU0X,EAAIm6F,GAChF,OAAOA,GAAoB,OAI/B0E,EAAUt6F,QAAUs6F,EAAUC,UAAUx2G,QAAQ,SAAU,IAAIA,QAAQ61G,GAAmB,IAClFU,EAGX,SAASG,GAAoBh/F,EAAI6+F,GAC7B,OAAQ7+F,EAAGtR,OAAO,IAEd,IAAK,IAED,OADAmwG,EAAUI,IAAM,CAAC,QAAS,QAAS,QAAS,OAAQ,UAAUj/F,EAAGze,OAAS,GACnE,QAGX,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,OADAs9G,EAAUK,KAAqB,IAAdl/F,EAAGze,OAAe,UAAY,UACxC,SAGX,IAAK,IACL,IAAK,IAED,OADAs9G,EAAUM,QAAU,CAAC,UAAW,UAAW,QAAS,OAAQ,UAAUn/F,EAAGze,OAAS,GAC3E,YAGX,IAAK,IACL,IAAK,IAED,OADAs9G,EAAUjnC,MAAQ,CAAC,UAAW,UAAW,QAAS,OAAQ,UAAU53D,EAAGze,OAAS,GACzE,UAGX,IAAK,IAGD,OADAs9G,EAAU7mC,KAAqB,IAAdh4D,EAAGze,OAAe,UAAY,UACxC,YACX,IAAK,IAGD,OADAs9G,EAAU7mC,KAAO,UACV,YAGX,IAAK,IAGD,OADA6mC,EAAUO,IAAoB,IAAdp/F,EAAGze,OAAe,UAAY,UACvC,QACX,IAAK,IACL,IAAK,IACL,IAAK,IAGD,OADAs9G,EAAUO,IAAM,UACT,QAGX,IAAK,IAGD,OADAP,EAAUQ,QAAU,CAAC,QAAS,QAAS,QAAS,OAAQ,SAAU,SAASr/F,EAAGze,OAAS,GAChF,YACX,IAAK,IAGD,OADAs9G,EAAUQ,QAAU,CAAC,UAAW,UAAW,QAAS,OAAQ,SAAU,SAASr/F,EAAGze,OAAS,GACpF,YACX,IAAK,IAGD,OADAs9G,EAAUQ,QAAU,CAAC,eAAWn6G,EAAW,QAAS,OAAQ,SAAU,SAAS8a,EAAGze,OAAS,GACpF,YAGX,IAAK,IACL,IAAK,IACL,IAAK,IAGD,OADAs9G,EAAUS,QAAS,EACZ,SAGX,IAAK,IACL,IAAK,IAED,OADAT,EAAUU,KAAqB,IAAdv/F,EAAGze,OAAe,UAAY,UACxC,SACX,IAAK,IACL,IAAK,IAGD,OAFAs9G,EAAUS,QAAS,EACnBT,EAAUU,KAAqB,IAAdv/F,EAAGze,OAAe,UAAY,UACxC,SAGX,IAAK,IAED,OADAs9G,EAAUW,OAAuB,IAAdx/F,EAAGze,OAAe,UAAY,UAC1C,WAGX,IAAK,IAED,OADAs9G,EAAUY,OAAuB,IAAdz/F,EAAGze,OAAe,UAAY,UAC1C,WACX,IAAK,IACL,IAAK,IAED,OADAs9G,EAAUY,OAAS,UACZ,WAGX,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAID,OADAZ,EAAUa,aAAe1/F,EAAGze,OAAS,EAAI,QAAU,OAC5C,kBAQnB,SAASo+G,GAAqBC,EAAUr7F,GAEpC,IAAI65F,GAAavgG,KAAK0G,GAAtB,CAEA,IAAIs6F,EAAY,CACZgB,gBAAiBt7F,EACjB8K,EAAG,IAoBP,OAfAwvF,EAAUE,gBAAkBx6F,EAAQjc,QAAQ41G,IAAiB,SAAUl+F,GAEnE,OAAOg/F,GAAoBh/F,EAAI6+F,EAAUxvF,MAQ7CuwF,EAASt3G,QAAQ41G,IAAiB,SAAUl+F,GAExC,OAAOg/F,GAAoBh/F,EAAI6+F,MAG5BD,GAAqBC,IAyGhC,IAAIiB,GAAsB,CACtBL,OAAQ,CACJM,QAAS,IACT,UAAW,MAEfP,OAAQ,CACJO,QAAS,IACT,UAAW,MAEfb,KAAM,CACFa,QAAS,IACT,UAAW,MAEfX,IAAK,CACDW,QAAS,IACT,UAAW,MAEfnoC,MAAO,CACHmoC,QAAS,IACT,UAAW,KACXC,OAAQ,QACRC,MAAO,MACPC,KAAM,QAEVb,QAAS,CACLW,OAAQ,QACRC,MAAO,MACPC,KAAM,SAiBd,IAAIC,GAAahf,EAAU,KAAM,CAAE6e,OAAQ,GAAIC,MAAO,GAAIC,KAAM,KAMhE,SAASE,GAAkBr7F,EAAMmiE,EAAI7+E,EAAWghB,EAAOhnB,GAInD,IAAI2N,EAAM+U,EAAKmiE,IAAOniE,EAAKmiE,GAAI7+E,GAAa0c,EAAKmiE,GAAI7+E,GAAa0c,EAAKs7F,QAAQh4G,GAI/Ei4G,EAAO,CACHN,OAAQ,CAAC,QAAS,QAClBC,MAAO,CAAC,OAAQ,UAChBC,KAAM,CAAC,QAAS,WAKpBK,EAAWtf,EAAI/2F,KAAK8F,EAAKqZ,GAASrZ,EAAIqZ,GAAS43E,EAAI/2F,KAAK8F,EAAKswG,EAAKj3F,GAAO,IAAMrZ,EAAIswG,EAAKj3F,GAAO,IAAMrZ,EAAIswG,EAAKj3F,GAAO,IAGrH,OAAe,OAARhnB,EAAek+G,EAASl+G,GAAOk+G,EAI1C,SAASC,KACL,IAAIn9G,EAAUM,UAAU,GACpBR,EAAUQ,UAAU,GAExB,OAAKb,MAAQA,OAASg7F,GAGf2iB,GAAyBz6F,EAASljB,MAAOO,EAASF,GAF9C,IAAI26F,GAAK4iB,eAAer9G,EAASF,GAqBhD,SAAuBs9G,GAAyBE,EAAgBt9G,EAASF,GAErE,IAAIs1G,EAAW3V,EAAsB6d,GAGjCjI,EAAgB5W,IAIpB,IAA8C,IAA1C2W,EAAS,6BAAuC,MAAM,IAAIx1G,UAAU,gEAGxEb,EAAeu+G,EAAgB,0BAA2B,CACtD98G,MAAO,WAEH,GAAIF,UAAU,KAAOw5F,EAAQ,OAAOsb,KAK5CA,EAAS,8BAA+B,EAIxC,IAAI9D,EAAmBT,EAAuB7wG,GAI9CF,EAAUy9G,GAAkBz9G,EAAS,MAAO,QAG5C,IAAIwhD,EAAM,IAAIi9C,EAKVsU,EAAUG,EAAUlzG,EAAS,gBAAiB,SAAU,IAAI0+F,EAAK,SAAU,YAAa,YAG5Fl9C,EAAI,qBAAuBuxD,EAI3B,IAAIwK,EAAiB/e,EAAU+e,eAI3BzL,EAAayL,EAAe,kBAM5BvrE,EAAI4/D,EAAc2L,EAAe,wBAAyB/L,EAAkBhwD,EAAK+7D,EAAe,6BAA8BzL,GAIlIwD,EAAS,cAAgBtjE,EAAE,cAI3BsjE,EAAS,gBAAkBtjE,EAAE,UAI7BsjE,EAAS,uBAAyBtjE,EAAE,UAGpCsjE,EAAS,kBAAoBtjE,EAAE,kBAG/B,IAAIwjE,EAAaxjE,EAAE,kBAIf0rE,EAAK19G,EAAQ29G,SAGjB,QAAW57G,IAAP27G,GAUW,SAJXA,EAAKjN,EAAiBiN,IAIJ,MAAM,IAAIxM,WAAW,8BAU3C,IAAK,IAAIt1F,KANT05F,EAAS,gBAAkBoI,EAG3Bl8D,EAAM,IAAIi9C,EAGOmf,GACb,GAAK9f,EAAI/2F,KAAK62G,GAAoBhiG,GAAlC,CAOA,IAAIlb,EAAQwyG,EAAUlzG,EAAS4b,EAAM,SAAUgiG,GAAmBhiG,IAGlE4lC,EAAI,KAAO5lC,EAAO,MAAQlb,EAI9B,IAAIm9G,OAAa,EAIbC,EAAiBhM,EAAW0D,GAK5Bx0G,EAqIR,SAA2BA,GACvB,GAAgD,mBAA5ChC,OAAOM,UAAUqR,SAAS5J,KAAK/F,GAC/B,OAAOA,EAEX,OAzbJ,SAA+BA,GAC3B,IAAI+8G,EAAmB/8G,EAAQ+8G,iBAC3BC,EAAch9G,EAAQg9G,YACtBC,EAAcj9G,EAAQi9G,YACtBz0G,EAAS,GACTizG,OAAW,EACXr7F,OAAU,EACV88F,OAAW,EACX//G,OAAI,EACJ2d,OAAI,EACJqiG,EAAqB,GACrBC,EAAqB,GAGzB,IAAK3B,KAAYsB,EACTA,EAAiBj3G,eAAe21G,KAEhCyB,EAAW1B,GAAqBC,EADhCr7F,EAAU28F,EAAiBtB,OAGvBjzG,EAAOT,KAAKm1G,GAIR9C,GAAiB8C,GACjBE,EAAmBr1G,KAAKm1G,GACjB7C,GAAiB6C,IACxBC,EAAmBp1G,KAAKm1G,IAOxC,IAAKzB,KAAYuB,EACTA,EAAYl3G,eAAe21G,KAE3ByB,EAAW1B,GAAqBC,EADhCr7F,EAAU48F,EAAYvB,OAGlBjzG,EAAOT,KAAKm1G,GACZC,EAAmBp1G,KAAKm1G,IAMpC,IAAKzB,KAAYwB,EACTA,EAAYn3G,eAAe21G,KAE3ByB,EAAW1B,GAAqBC,EADhCr7F,EAAU68F,EAAYxB,OAGlBjzG,EAAOT,KAAKm1G,GACZE,EAAmBr1G,KAAKm1G,IASpC,IAAK//G,EAAI,EAAGA,EAAIggH,EAAmB//G,OAAQD,GAAK,EAC5C,IAAK2d,EAAI,EAAGA,EAAIsiG,EAAmBhgH,OAAQ0d,GAAK,EAExCsF,EADgC,SAAhCg9F,EAAmBtiG,GAAG24D,MACZ2pC,EAAmBtiG,GAAGogG,QAAUl7G,EAAQq9G,KAAOr9G,EAAQ+7G,KAC1B,UAAhCqB,EAAmBtiG,GAAG24D,MACnBzzE,EAAQs9G,OAERt9G,EAAQ87G,OAEtBoB,EAAW5C,GAAuB8C,EAAmBtiG,GAAIqiG,EAAmBhgH,KACnEu+G,gBAAkBt7F,EAC3B88F,EAAStC,gBAAkBx6F,EAAQjc,QAAQ,MAAOg5G,EAAmBhgH,GAAGy9G,iBAAiBz2G,QAAQ,MAAOi5G,EAAmBtiG,GAAG8/F,iBAAiBz2G,QAAQ,oBAAqB,IAC5KqE,EAAOT,KAAK0yG,GAAqByC,IAIzC,OAAO10G,EA6WA+0G,CAAsBv9G,GAzIfw9G,CAAkBV,EAAe98G,SAY/C,GAPA+xG,EAAUG,EAAUlzG,EAAS,gBAAiB,SAAU,IAAI0+F,EAAK,QAAS,YAAa,YAIvFof,EAAe98G,QAAUA,EAGT,UAAZ+xG,EAGA8K,EAiMR,SAA4B79G,EAASgB,GAEjC,IAAIy9G,EAAiB,IAGjBC,EAAkB,GAGlBC,EAAkB,EAGlBC,EAAkB,EAGlBC,EAAmB,EAGnBC,EAAmB,EAGnBC,GAAajxF,IAGb+vF,OAAa,EAGb1/G,EAAI,EAKJmc,EAAMtZ,EAAQ5C,OAGlB,KAAOD,EAAImc,GAAK,CAEZ,IAAIlZ,EAASJ,EAAQ7C,GAGjB6gH,EAAQ,EAGZ,IAAK,IAAInjB,KAAY+hB,GACjB,GAAK9f,EAAI/2F,KAAK62G,GAAoB/hB,GAAlC,CAGA,IAAIojB,EAAcj/G,EAAQ,KAAO67F,EAAW,MAMxCqjB,EAAaphB,EAAI/2F,KAAK3F,EAAQy6F,GAAYz6F,EAAOy6F,QAAY95F,EAIjE,QAAoBA,IAAhBk9G,QAA4Cl9G,IAAfm9G,EAA0BF,GAASN,OAI/D,QAAoB38G,IAAhBk9G,QAA4Cl9G,IAAfm9G,EAA0BF,GAASP,MAGhE,CAGG,IAAI90G,EAAS,CAAC,UAAW,UAAW,SAAU,QAAS,QAGnDw1G,EAAmBphB,EAAWh3F,KAAK4C,EAAQs1G,GAG3CG,EAAkBrhB,EAAWh3F,KAAK4C,EAAQu1G,GAG1CztG,EAAQhB,KAAK+D,IAAI/D,KAAK8D,IAAI6qG,EAAkBD,EAAkB,IAAK,GAGzD,IAAV1tG,EAAautG,GAASJ,EAGP,IAAVntG,EAAautG,GAASF,GAGP,IAAXrtG,EAAcutG,GAASH,GAGR,IAAXptG,IAAcutG,GAASL,IAKpDK,EAAQD,IAERA,EAAYC,EAGZnB,EAAaz8G,GAIjBjD,IAIJ,OAAO0/G,EA1SUwB,CAAmB79D,EAAKxgD,OAGlC,CAGC,IAAIs+G,EAAMpM,EAAUlzG,EAAS,SAAU,WACvCwhD,EAAI26D,YAAiBp6G,IAARu9G,EAAoBxB,EAAe3B,OAASmD,EAI7DzB,EAkVR,SAA8B79G,EAASgB,GAS/B,IAAIu+G,EAAmB,GACvB,IAAK,IAAI1jB,KAAY+hB,GACZ9f,EAAI/2F,KAAK62G,GAAoB/hB,SAEM95F,IAApC/B,EAAQ,KAAO67F,EAAW,OAC1B0jB,EAAiBx2G,KAAK8yF,GAG9B,GAAgC,IAA5B0jB,EAAiBnhH,OAAc,CAC/B,IAAIohH,EA5jBhB,SAAiC3lB,EAAU4lB,GAEnC,IAAIpyD,EADR,GAAIsvD,GAAoB9iB,IAAa8iB,GAAoB9iB,GAAU4lB,GAG/D,OAAOpyD,EAAQ,CACXqvD,gBAAiBC,GAAoB9iB,GAAU4lB,GAC/CvzF,EAAG+uE,EAAiB,GAAIpB,EAAU4lB,GAClC7D,gBAAiB,IAAM/hB,EAAW,KACnCoB,EAAiB5tC,EAAOwsC,EAAU4lB,GAAYxkB,EAAiB5tC,EAAO,YAAa,IAAMwsC,EAAW,KAAMoB,EAAiB5tC,EAAO,UAAW,IAAMwsC,EAAW,KAAMxsC,EAojBjJqyD,CAAwBH,EAAiB,GAAIv/G,EAAQ,KAAOu/G,EAAiB,GAAK,OACpG,GAAIC,EACA,OAAOA,EAMnB,IAAIf,EAAiB,IAGjBC,EAAkB,GAGlBC,EAAkB,EAGlBC,EAAkB,EAGlBC,EAAmB,EAGnBC,EAAmB,EAEnBa,EAAiB,EAEjBC,EAAgB,EAGhBb,GAAajxF,IAGb+vF,OAAa,EAGb1/G,EAAI,EAKJmc,EAAMtZ,EAAQ5C,OAGlB,KAAOD,EAAImc,GAAK,CAEZ,IAAIlZ,EAASJ,EAAQ7C,GAGjB6gH,EAAQ,EAGZ,IAAK,IAAIa,KAAajC,GAClB,GAAK9f,EAAI/2F,KAAK62G,GAAoBiC,GAAlC,CAGA,IAAIZ,EAAcj/G,EAAQ,KAAO6/G,EAAY,MAMzCX,EAAaphB,EAAI/2F,KAAK3F,EAAQy+G,GAAaz+G,EAAOy+G,QAAa99G,EAWnE,GANIk9G,KADcnhB,EAAI/2F,KAAK3F,EAAO8qB,EAAG2zF,GAAaz+G,EAAO8qB,EAAE2zF,QAAa99G,KAEpEi9G,GAASW,QAKO59G,IAAhBk9G,QAA4Cl9G,IAAfm9G,EAA0BF,GAASN,OAI/D,QAAoB38G,IAAhBk9G,QAA4Cl9G,IAAfm9G,EAA0BF,GAASP,MAGhE,CAGG,IAAI90G,EAAS,CAAC,UAAW,UAAW,SAAU,QAAS,QAGnDw1G,EAAmBphB,EAAWh3F,KAAK4C,EAAQs1G,GAG3CG,EAAkBrhB,EAAWh3F,KAAK4C,EAAQu1G,GAG1CztG,EAAQhB,KAAK+D,IAAI/D,KAAK8D,IAAI6qG,EAAkBD,EAAkB,IAAK,GAK/DC,GAAmB,GAAKD,GAAoB,GAAKC,GAAmB,GAAKD,GAAoB,EAEzF1tG,EAAQ,EAAGutG,GAASJ,EAAyBntG,EAAQ,IAAGutG,GAASL,GAGjEltG,EAAQ,EAAGutG,GAASF,EAA0BrtG,GAAS,IAAGutG,GAASH,IASvFz9G,EAAO8qB,EAAEiwF,SAAWn8G,EAAQm8G,SAC5B6C,GAASY,GAKbZ,EAAQD,IAERA,EAAYC,EAEZnB,EAAaz8G,GAIjBjD,IAIJ,OAAO0/G,EAreUiC,CAAqBt+D,EAAKxgD,GAI3C,IAAK,IAAI++G,KAASnC,GACd,GAAK9f,EAAI/2F,KAAK62G,GAAoBmC,IAM9BjiB,EAAI/2F,KAAK82G,EAAYkC,GAAQ,CAG7B,IAAIpoG,EAAIkmG,EAAWkC,GAGfpoG,EAAIkmG,EAAW3xF,GAAK4xE,EAAI/2F,KAAK82G,EAAW3xF,EAAG6zF,GAASlC,EAAW3xF,EAAE6zF,GAASpoG,EAI9E29F,EAAS,KAAOyK,EAAQ,MAAQpoG,EAIxC,IAAIyJ,OAAU,EAIV4+F,EAAO9M,EAAUlzG,EAAS,SAAU,WAGxC,GAAIs1G,EAAS,YAST,GANA0K,OAAgBj+G,IAATi+G,EAAqBlC,EAAe3B,OAAS6D,EAGpD1K,EAAS,cAAgB0K,GAGZ,IAATA,EAAe,CAGf,IAAIC,EAAUnC,EAAemC,QAG7B3K,EAAS,eAAiB2K,EAI1B7+F,EAAUy8F,EAAWlC,eAOrBv6F,EAAUy8F,EAAWz8F,aAOzBA,EAAUy8F,EAAWz8F,QAmBzB,OAhBAk0F,EAAS,eAAiBl0F,EAG1Bk0F,EAAS,wBAAqBvzG,EAI9BuzG,EAAS,kCAAmC,EAGxC1X,IAAK4f,EAAep8G,OAAS8+G,GAAkBn5G,KAAKy2G,IAGxDjI,IAGOiI,EAxPXv+G,EAAe07F,GAAM,iBAAkB,CACnC77F,cAAc,EACdC,UAAU,EACV2B,MAAO28G,KAIXp+G,EAAeo+G,GAA2B,YAAa,CACnDt+G,UAAU,IAuPd,IAAI6+G,GAAqB,CACrB1B,QAAS,CAAC,SAAU,QAAS,QAC7BJ,IAAK,CAAC,SAAU,QAAS,QACzBC,KAAM,CAAC,UAAW,WAClBtnC,MAAO,CAAC,UAAW,UAAW,SAAU,QAAS,QACjDwnC,IAAK,CAAC,UAAW,WACjBG,KAAM,CAAC,UAAW,WAClBC,OAAQ,CAAC,UAAW,WACpBC,OAAQ,CAAC,UAAW,WACpBC,aAAc,CAAC,QAAS,SAkB5B,SAASkB,GAAkBz9G,EAASmgH,EAAUp2F,GAG1C,QAAgBhoB,IAAZ/B,EAAuBA,EAAU,SAAU,CAE3C,IAAIogH,EAAOv9F,EAAS7iB,GAGpB,IAAK,IAAI2L,KAFT3L,EAAU,IAAIy+F,EAEA2hB,EACVpgH,EAAQ2L,GAAKy0G,EAAKz0G,GAU1B3L,EALag+F,EAKIh+F,GAGjB,IAAIqgH,GAAe,EAmCnB,MAhCiB,SAAbF,GAAoC,QAAbA,QAICp+G,IAApB/B,EAAQk8G,cAA0Cn6G,IAAjB/B,EAAQ+7G,WAAwCh6G,IAAlB/B,EAAQy0E,YAAuC1yE,IAAhB/B,EAAQi8G,MAAmBoE,GAAe,GAI/H,SAAbF,GAAoC,QAAbA,QAIFp+G,IAAjB/B,EAAQo8G,WAAyCr6G,IAAnB/B,EAAQq8G,aAA2Ct6G,IAAnB/B,EAAQs8G,SAAsB+D,GAAe,IAI/GA,GAA8B,SAAbt2F,GAAoC,QAAbA,IAKxC/pB,EAAQ+7G,KAAO/7G,EAAQy0E,MAAQz0E,EAAQi8G,IAAM,YAG7CoE,GAA8B,SAAbt2F,GAAoC,QAAbA,IAKxC/pB,EAAQo8G,KAAOp8G,EAAQq8G,OAASr8G,EAAQs8G,OAAS,WAG9Ct8G,EAmXX,SAASkgH,KACL,IAAI5K,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MAGrG,IAAK21G,IAAaA,EAAS,iCAAkC,MAAM,IAAIx1G,UAAU,+EAOjF,QAAoCiC,IAAhCuzG,EAAS,mBAAkC,CAK3C,IAiBIv8B,EAAKulB,EAAOv3F,MAjBR,WACJ,IAAIutE,EAAO9zE,UAAUpC,QAAU,QAAsB2D,IAAjBvB,UAAU,QAAmBuB,EAAYvB,UAAU,GAQnF6e,OAAatd,IAATuyE,EAAqB/8D,KAAKg9B,MAAQgrD,EAASjrB,GACnD,OAAOgsC,GAAe3gH,KAAM0f,KAOR1f,MAGxB21G,EAAS,mBAAqBv8B,EAIlC,OAAOu8B,EAAS,mBAqBpB,SAASiL,GAAoB/C,EAAgBn+F,GAEzC,IAAK43F,SAAS53F,GAAI,MAAM,IAAI6xF,WAAW,uCAEvC,IAAIoE,EAAWkI,EAAe5d,wBAAwB5F,GAG7B2E,IA4CzB,IAzCA,IAAIv7F,EAASkyG,EAAS,cAKlB/6B,EAAK,IAAIogB,GAAK0a,aAAa,CAACjyG,GAAS,CAAEo9G,aAAa,IAMpDC,EAAM,IAAI9lB,GAAK0a,aAAa,CAACjyG,GAAS,CAAEs9G,qBAAsB,EAAGF,aAAa,IAK9EG,EAqMR,SAAqBrsC,EAAMssC,EAAUjD,GAUjC,IAAIl+G,EAAI,IAAI8X,KAAK+8D,GACb5zD,EAAI,OAASi9F,GAAY,IAK7B,OAAO,IAAIlf,EAAO,CACd,cAAeh/F,EAAEihB,EAAI,SACrB,YAAajhB,EAAEihB,EAAI,eAAiB,GACpC,WAAYjhB,EAAEihB,EAAI,cAClB,YAAajhB,EAAEihB,EAAI,WACnB,UAAWjhB,EAAEihB,EAAI,UACjB,WAAYjhB,EAAEihB,EAAI,WAClB,aAAcjhB,EAAEihB,EAAI,aACpB,aAAcjhB,EAAEihB,EAAI,aACpB,aAAa,IA9NRmgG,CAAYxhG,EAAGi2F,EAAS,gBAAiBA,EAAS,iBAGvDl0F,EAAUk0F,EAAS,eAGnB9rG,EAAS,IAAIk1F,EAGbhzF,EAAQ,EAGRorG,EAAa11F,EAAQjgB,QAAQ,KAG7B41G,EAAW,EAGXvB,EAAaF,EAAS,kBAGtBxD,EAAatT,EAAU+e,eAAe,kBAAkB/H,GAAYsL,UACpE/8B,EAAKuxB,EAAS,iBAGK,IAAhBwB,GAAmB,CACtB,IAAIiK,OAAK,EAIT,IAAkB,KAFlBhK,EAAW31F,EAAQjgB,QAAQ,IAAK21G,IAG5B,MAAM,IAAIzrG,MAAM,oBAGhByrG,EAAaprG,GACbyyF,EAAQp3F,KAAKyC,EAAQ,CACjBqP,KAAM,UACNnY,MAAO0gB,EAAQ/N,UAAU3H,EAAOorG,KAIxC,IAAIn/F,EAAIyJ,EAAQ/N,UAAUyjG,EAAa,EAAGC,GAE1C,GAAI6G,GAAmB92G,eAAe6Q,GAAI,CAEtC,IAAIqT,EAAIsqF,EAAS,KAAO39F,EAAI,MAExB6U,EAAIm0F,EAAG,KAAOhpG,EAAI,MAsBtB,GApBU,SAANA,GAAgB6U,GAAK,EACrBA,EAAI,EAAIA,EAGG,UAAN7U,EACD6U,IAIW,SAAN7U,IAA2C,IAA3B29F,EAAS,eAKhB,KAHV9oF,GAAQ,MAGmC,IAA5B8oF,EAAS,iBACpB9oF,EAAI,IAKV,YAANxB,EAGA+1F,EAAKvK,GAAaj8B,EAAI/tD,QAGrB,GAAU,YAANxB,GAGD+1F,EAAKvK,GAAaiK,EAAKj0F,IAGhBpuB,OAAS,IACZ2iH,EAAKA,EAAGvzG,OAAO,SAUlB,GAAIwd,KAAKgyF,GACN,OAAQrlG,GACJ,IAAK,QACDopG,EAAK9D,GAAkBnL,EAAY/tB,EAAI,SAAU/4D,EAAG21F,EAAG,KAAOhpG,EAAI,OAClE,MAEJ,IAAK,UACD,IACIopG,EAAK9D,GAAkBnL,EAAY/tB,EAAI,OAAQ/4D,EAAG21F,EAAG,KAAOhpG,EAAI,OAElE,MAAO9W,GACL,MAAM,IAAIwK,MAAM,0CAA4CjI,GAEhE,MAEJ,IAAK,eACD29G,EAAK,GACL,MAEJ,IAAK,MACD,IACIA,EAAK9D,GAAkBnL,EAAY/tB,EAAI,OAAQ/4D,EAAG21F,EAAG,KAAOhpG,EAAI,OAClE,MAAO9W,GACL,MAAM,IAAIwK,MAAM,sCAAwCjI,GAE5D,MAEJ,QACI29G,EAAKJ,EAAG,KAAOhpG,EAAI,MAIvCwmF,EAAQp3F,KAAKyC,EAAQ,CACjBqP,KAAMlB,EACNjX,MAAOqgH,SAGR,GAAU,SAANppG,EAAc,CAIrBopG,EAAK9D,GAAkBnL,EAAY/tB,EAAI,aAF9B48B,EAAG,YAE8C,GAAK,KAAO,KAAM,MAE5ExiB,EAAQp3F,KAAKyC,EAAQ,CACjBqP,KAAM,YACNnY,MAAOqgH,SAIX5iB,EAAQp3F,KAAKyC,EAAQ,CACjBqP,KAAM,UACNnY,MAAO0gB,EAAQ/N,UAAUyjG,EAAYC,EAAW,KAIxDrrG,EAAQqrG,EAAW,EAEnBD,EAAa11F,EAAQjgB,QAAQ,IAAKuK,GAUtC,OAPIqrG,EAAW31F,EAAQhjB,OAAS,GAC5B+/F,EAAQp3F,KAAKyC,EAAQ,CACjBqP,KAAM,UACNnY,MAAO0gB,EAAQzU,OAAOoqG,EAAW,KAIlCvtG,EAUX,SAAS82G,GAAe9C,EAAgBn+F,GAIpC,IAHA,IAAImD,EAAQ+9F,GAAoB/C,EAAgBn+F,GAC5C7V,EAAS,GAEJrL,EAAI,EAAGqkB,EAAMpkB,OAASD,EAAGA,IAAK,CAEnCqL,GADWgZ,EAAMrkB,GACFuC,MAEnB,OAAO8I,EAGX,SAASw3G,GAAsBxD,EAAgBn+F,GAG3C,IAFA,IAAImD,EAAQ+9F,GAAoB/C,EAAgBn+F,GAC5C7V,EAAS,GACJrL,EAAI,EAAGqkB,EAAMpkB,OAASD,EAAGA,IAAK,CACnC,IAAIqO,EAAOgW,EAAMrkB,GACjBqL,EAAOT,KAAK,CACR8P,KAAMrM,EAAKqM,KACXnY,MAAO8L,EAAK9L,QAGpB,OAAO8I,EA/UCg1F,EAAU+e,eAAiB,CACnC,uBAAwB,GACxB,4BAA6B,CAAC,KAAM,MACpC,iBAAkB,IAQtBt+G,EAAe07F,GAAK4iB,eAAgB,qBAAsB,CACtDz+G,cAAc,EACdC,UAAU,EACV2B,MAAO49F,EAAOv3F,MAAK,SAAU7G,GAGzB,IAAK49F,EAAI/2F,KAAKpH,KAAM,wBAAyB,MAAM,IAAIG,UAAU,6CAGjE,IAAIy1G,EAAgB5W,IAIpB3+F,EAAUQ,UAAU,GAOpB4wG,EAAmBzxG,KAAK,wBAKxB6xG,EAAmBT,EAAuB7wG,GAQ1C,OALAq1G,IAKOzC,EAAiB1B,EAAkBI,EAAkBxxG,KAC7Dw+F,EAAU6W,gBAQLp2G,EAAe07F,GAAK4iB,eAAej+G,UAAW,SAAU,CAChER,cAAc,EACdyC,IAAK2+G,KAyDTlhH,OAAOC,eAAe07F,GAAK4iB,eAAej+G,UAAW,gBAAiB,CAClET,YAAY,EACZE,UAAU,EACVD,cAAc,EACd4B,MAfJ,WACI,IAAI4zE,EAAO9zE,UAAUpC,QAAU,QAAsB2D,IAAjBvB,UAAU,QAAmBuB,EAAYvB,UAAU,GAEnF80G,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MAErG,IAAK21G,IAAaA,EAAS,iCAAkC,MAAM,IAAIx1G,UAAU,sFAEjF,IAAIuf,OAAatd,IAATuyE,EAAqB/8D,KAAKg9B,MAAQgrD,EAASjrB,GACnD,OAAO0sC,GAAsBrhH,KAAM0f,MA8Q3BpgB,EAAe07F,GAAK4iB,eAAej+G,UAAW,kBAAmB,CACzEP,UAAU,EACVD,cAAc,EACd4B,MAAO,WACH,IAAIkb,OAAO,EACP+/E,EAAQ,IAAI8C,EACZ9/F,EAAQ,CAAC,SAAU,WAAY,kBAAmB,WAAY,SAAU,UAAW,MAAO,OAAQ,QAAS,MAAO,OAAQ,SAAU,SAAU,gBAC9I22G,EAAoB,OAAT31G,MAAoD,WAAnC07F,EAAc,OAAW17F,OAAsBggG,EAAsBhgG,MAGrG,IAAK21G,IAAaA,EAAS,iCAAkC,MAAM,IAAIx1G,UAAU,wFAEjF,IAAK,IAAI3B,EAAI,EAAGqW,EAAM7V,EAAMP,OAAQD,EAAIqW,EAAKrW,IACrC2/F,EAAI/2F,KAAKuuG,EAAU15F,EAAO,KAAOjd,EAAMR,GAAK,QAAOw9F,EAAMh9F,EAAMR,IAAM,CAAEuC,MAAO40G,EAAS15F,GAAO7c,UAAU,EAAMD,cAAc,EAAMD,YAAY,IAGtJ,OAAOm/F,EAAU,GAAIrC,MAI7B,IAAIslB,GAAKtmB,GAAKumB,wBAA0B,CACpC5mF,OAAQ,GACR/iB,KAAM,IAOE0pG,GAAG3mF,OAAO6mF,eAAiB,WAEnC,GAA6C,oBAAzCniH,OAAOM,UAAUqR,SAAS5J,KAAKpH,MAA6B,MAAM,IAAIG,UAAU,uEAUpF,OAAO02G,GAAa,IAAIrB,GAAwB30G,UAAU,GAAIA,UAAU,IAAKb,OAOrEshH,GAAG1pG,KAAK4pG,eAAiB,WAEjC,GAA6C,kBAAzCniH,OAAOM,UAAUqR,SAAS5J,KAAKpH,MAA2B,MAAM,IAAIG,UAAU,4EAGlF,IAAIuf,GAAK1f,KAGT,GAAIgkD,MAAMtkC,GAAI,MAAO,eAGrB,IAAInf,EAAUM,UAAU,GAGpBR,EAAUQ,UAAU,GASpBg9G,EAAiB,IAAIH,GAA0Bn9G,EALnDF,EAAUy9G,GAAkBz9G,EAAS,MAAO,QAS5C,OAAOsgH,GAAe9C,EAAgBn+F,IAO9B4hG,GAAG1pG,KAAK6pG,mBAAqB,WAErC,GAA6C,kBAAzCpiH,OAAOM,UAAUqR,SAAS5J,KAAKpH,MAA2B,MAAM,IAAIG,UAAU,gFAGlF,IAAIuf,GAAK1f,KAGT,GAAIgkD,MAAMtkC,GAAI,MAAO,eAGrB,IAAInf,EAAUM,UAAU,GAIxBR,EAAUQ,UAAU,GAShBg9G,EAAiB,IAAIH,GAA0Bn9G,EALnDF,EAAUy9G,GAAkBz9G,EAAS,OAAQ,SAS7C,OAAOsgH,GAAe9C,EAAgBn+F,IAO9B4hG,GAAG1pG,KAAK8pG,mBAAqB,WAErC,GAA6C,kBAAzCriH,OAAOM,UAAUqR,SAAS5J,KAAKpH,MAA2B,MAAM,IAAIG,UAAU,gFAGlF,IAAIuf,GAAK1f,KAGT,GAAIgkD,MAAMtkC,GAAI,MAAO,eAGrB,IAAInf,EAAUM,UAAU,GAGpBR,EAAUQ,UAAU,GASpBg9G,EAAiB,IAAIH,GAA0Bn9G,EALnDF,EAAUy9G,GAAkBz9G,EAAS,OAAQ,SAS7C,OAAOsgH,GAAe9C,EAAgBn+F,IAG1CpgB,EAAe07F,GAAM,mCAAoC,CACrD57F,UAAU,EACVD,cAAc,EACd4B,MAAO,WAKH,IAAK,IAAIiL,KAJT1M,EAAeq7B,OAAOh7B,UAAW,iBAAkB,CAAEP,UAAU,EAAMD,cAAc,EAAM4B,MAAOugH,GAAG3mF,OAAO6mF,iBAE1GliH,EAAesY,KAAKjY,UAAW,iBAAkB,CAAEP,UAAU,EAAMD,cAAc,EAAM4B,MAAOugH,GAAG1pG,KAAK4pG,iBAExFF,GAAG1pG,KACTumF,EAAI/2F,KAAKk6G,GAAG1pG,KAAM5L,IAAI1M,EAAesY,KAAKjY,UAAWqM,EAAG,CAAE5M,UAAU,EAAMD,cAAc,EAAM4B,MAAOugH,GAAG1pG,KAAK5L,QAU7H1M,EAAe07F,GAAM,kBAAmB,CACpCj6F,MAAO,SAAekhB,GAClB,IAAK8uF,EAA+B9uF,EAAKxe,QAAS,MAAM,IAAIiI,MAAM,oEAM1E,SAAuBuW,EAAMk/C,GAEzB,IAAKl/C,EAAKrjB,OAAQ,MAAM,IAAI8M,MAAM,mEAElC,IAAIjI,OAAS,EACTlD,EAAU,CAAC4gE,GACXt+C,EAAQs+C,EAAI39D,MAAM,KAGlBqf,EAAMpkB,OAAS,GAAyB,IAApBokB,EAAM,GAAGpkB,QAAc+/F,EAAQp3F,KAAK7G,EAASsiB,EAAM,GAAK,IAAMA,EAAM,IAE5F,KAAOpf,EAASi7F,EAASt3F,KAAK7G,IAE1Bi+F,EAAQp3F,KAAKy3F,EAAU6W,aAAa,wBAAyBjyG,GAC7Do7F,EAAU6W,aAAa,kBAAkBjyG,GAAUwe,EAAKrjB,OAGpDqjB,EAAK0yD,OACL1yD,EAAK0yD,KAAKgtC,GAAK1/F,EAAKrjB,OAAO+iH,GAC3BnjB,EAAQp3F,KAAKy3F,EAAU+e,eAAe,wBAAyBn6G,GAC/Do7F,EAAU+e,eAAe,kBAAkBn6G,GAAUwe,EAAK0yD,WAK5CvyE,IAAlBs+F,GAnhHR,SAA0Bj9F,GACtBi9F,EAAgBj9F,EAkhHiBm+G,CAAiBzgD,GA7B9C0gD,CAAc5/F,EAAMA,EAAKxe,WAgCjCnE,EAAe07F,GAAM,yBAA0B,CAC3Cj6F,MAAO,WACH89F,EAAUI,sBAAuB,KAIzCvhG,EAAOC,QAAUq9F,K,gDC/uIjB,IAAI8mB,EAAkB,UAOtBpkH,EAAOC,QAUP,SAAoBqf,GAClB,IAOIC,EAPAT,EAAM,GAAKQ,EACXnW,EAAQi7G,EAAgBhhG,KAAKtE,GAEjC,IAAK3V,EACH,OAAO2V,EAIT,IAAIulG,EAAO,GACPh2G,EAAQ,EACR4zF,EAAY,EAEhB,IAAK5zF,EAAQlF,EAAMkF,MAAOA,EAAQyQ,EAAI/d,OAAQsN,IAAS,CACrD,OAAQyQ,EAAIc,WAAWvR,IACrB,KAAK,GACHkR,EAAS,SACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,QACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,KAAK,GACHA,EAAS,OACT,MACF,QACE,SAGA0iF,IAAc5zF,IAChBg2G,GAAQvlG,EAAI9I,UAAUisF,EAAW5zF,IAGnC4zF,EAAY5zF,EAAQ,EACpBg2G,GAAQ9kG,EAGV,OAAO0iF,IAAc5zF,EACjBg2G,EAAOvlG,EAAI9I,UAAUisF,EAAW5zF,GAChCg2G,I,6BC9DNpkH,EAAQmF,MAkCR,SAAe0Z,EAAKnc,GAClB,GAAmB,kBAARmc,EACT,MAAM,IAAIrc,UAAU,iCAQtB,IALA,IAAI+M,EAAM,GACN20C,EAAMxhD,GAAW,GACjB2hH,EAAQxlG,EAAIhZ,MAAMy+G,GAClBC,EAAMrgE,EAAItlC,QAAUA,EAEf/d,EAAI,EAAGA,EAAIwjH,EAAMvjH,OAAQD,IAAK,CACrC,IAAI2jH,EAAOH,EAAMxjH,GACb4jH,EAASD,EAAK3gH,QAAQ,KAG1B,KAAI4gH,EAAS,GAAb,CAIA,IAAI7iH,EAAM4iH,EAAKn1G,OAAO,EAAGo1G,GAAQjtF,OAC7B/Y,EAAM+lG,EAAKn1G,SAASo1G,EAAQD,EAAK1jH,QAAQ02B,OAGzC,KAAO/Y,EAAI,KACbA,EAAMA,EAAIvO,MAAM,GAAI,SAIlBzL,GAAa8K,EAAI3N,KACnB2N,EAAI3N,GAAO8iH,EAAUjmG,EAAK8lG,KAI9B,OAAOh1G,GAlETvP,EAAQ2kH,UAqFR,SAAmBh7G,EAAM8U,EAAK/b,GAC5B,IAAIwhD,EAAMxhD,GAAW,GACjBkiH,EAAM1gE,EAAI/kC,QAAUA,EAExB,GAAmB,oBAARylG,EACT,MAAM,IAAIpiH,UAAU,4BAGtB,IAAKqiH,EAAmBznG,KAAKzT,GAC3B,MAAM,IAAInH,UAAU,4BAGtB,IAAIY,EAAQwhH,EAAInmG,GAEhB,GAAIrb,IAAUyhH,EAAmBznG,KAAKha,GACpC,MAAM,IAAIZ,UAAU,2BAGtB,IAAIqc,EAAMlV,EAAO,IAAMvG,EAEvB,GAAI,MAAQ8gD,EAAI4gE,OAAQ,CACtB,IAAIA,EAAS5gE,EAAI4gE,OAAS,EAC1B,GAAIz+D,MAAMy+D,GAAS,MAAM,IAAI/2G,MAAM,6BACnC8Q,GAAO,aAAe1L,KAAKq4B,MAAMs5E,GAGnC,GAAI5gE,EAAInwB,OAAQ,CACd,IAAK8wF,EAAmBznG,KAAK8mC,EAAInwB,QAC/B,MAAM,IAAIvxB,UAAU,4BAGtBqc,GAAO,YAAcqlC,EAAInwB,OAG3B,GAAImwB,EAAIl7C,KAAM,CACZ,IAAK67G,EAAmBznG,KAAK8mC,EAAIl7C,MAC/B,MAAM,IAAIxG,UAAU,0BAGtBqc,GAAO,UAAYqlC,EAAIl7C,KAGzB,GAAIk7C,EAAIx3B,QAAS,CACf,GAAuC,oBAA5Bw3B,EAAIx3B,QAAQC,YACrB,MAAM,IAAInqB,UAAU,6BAGtBqc,GAAO,aAAeqlC,EAAIx3B,QAAQC,cAGhCu3B,EAAI6gE,WACNlmG,GAAO,cAGLqlC,EAAIlwB,SACNnV,GAAO,YAGT,GAAIqlC,EAAI8gE,SAAU,CAIhB,OAHuC,kBAAjB9gE,EAAI8gE,SACtB9gE,EAAI8gE,SAASj1G,cAAgBm0C,EAAI8gE,UAGnC,KAAK,EACHnmG,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,QACE,MAAM,IAAIrc,UAAU,+BAI1B,OAAOqc,GA3JT,IAAID,EAASM,mBACTC,EAASoF,mBACT+/F,EAAkB,MAUlBO,EAAqB,wCA0JzB,SAASH,EAAU7lG,EAAKD,GACtB,IACE,OAAOA,EAAOC,GACd,MAAOtb,GACP,OAAOsb,K,6BC9LX7e,EAAQ4e,OAAS5e,EAAQmF,MAAQlF,EAAQ,IACzCD,EAAQmf,OAASnf,EAAQ2kB,UAAY1kB,EAAQ,K,6BCuB7C,SAASuJ,EAAe+F,EAAK+O,GAC3B,OAAO5c,OAAOM,UAAUwH,eAAeC,KAAK8F,EAAK+O,GAGnDve,EAAOC,QAAU,SAASilH,EAAIC,EAAKC,EAAIziH,GACrCwiH,EAAMA,GAAO,IACbC,EAAKA,GAAM,IACX,IAAI51G,EAAM,GAEV,GAAkB,kBAAP01G,GAAiC,IAAdA,EAAGnkH,OAC/B,OAAOyO,EAGT,IAAIpD,EAAS,MACb84G,EAAKA,EAAGp/G,MAAMq/G,GAEd,IAAIE,EAAU,IACV1iH,GAAsC,kBAApBA,EAAQ0iH,UAC5BA,EAAU1iH,EAAQ0iH,SAGpB,IAAIpoG,EAAMioG,EAAGnkH,OAETskH,EAAU,GAAKpoG,EAAMooG,IACvBpoG,EAAMooG,GAGR,IAAK,IAAIvkH,EAAI,EAAGA,EAAImc,IAAOnc,EAAG,CAC5B,IAEIwkH,EAAMC,EAAMj3G,EAAG6gB,EAFfnN,EAAIkjG,EAAGpkH,GAAGgH,QAAQsE,EAAQ,OAC1BuuG,EAAM34F,EAAEle,QAAQshH,GAGhBzK,GAAO,GACT2K,EAAOtjG,EAAE1S,OAAO,EAAGqrG,GACnB4K,EAAOvjG,EAAE1S,OAAOqrG,EAAM,KAEtB2K,EAAOtjG,EACPujG,EAAO,IAGTj3G,EAAI6Q,mBAAmBmmG,GACvBn2F,EAAIhQ,mBAAmBomG,GAElB97G,EAAe+F,EAAKlB,GAEdoB,EAAQF,EAAIlB,IACrBkB,EAAIlB,GAAG5C,KAAKyjB,GAEZ3f,EAAIlB,GAAK,CAACkB,EAAIlB,GAAI6gB,GAJlB3f,EAAIlB,GAAK6gB,EAQb,OAAO3f,GAGT,IAAIE,EAAU7D,MAAM6D,SAAW,SAAU81G,GACvC,MAA8C,mBAAvC7jH,OAAOM,UAAUqR,SAAS5J,KAAK87G,K,6BC3DxC,IAAIC,EAAqB,SAASt2F,GAChC,cAAeA,GACb,IAAK,SACH,OAAOA,EAET,IAAK,UACH,OAAOA,EAAI,OAAS,QAEtB,IAAK,SACH,OAAOyqF,SAASzqF,GAAKA,EAAI,GAE3B,QACE,MAAO,KAIbnvB,EAAOC,QAAU,SAASuP,EAAK21G,EAAKC,EAAIx7G,GAOtC,OANAu7G,EAAMA,GAAO,IACbC,EAAKA,GAAM,IACC,OAAR51G,IACFA,OAAM9K,GAGW,kBAAR8K,EACFkI,EAAIguG,EAAWl2G,IAAM,SAASlB,GACnC,IAAIq3G,EAAKnhG,mBAAmBihG,EAAmBn3G,IAAM82G,EACrD,OAAI11G,EAAQF,EAAIlB,IACPoJ,EAAIlI,EAAIlB,IAAI,SAAS6gB,GAC1B,OAAOw2F,EAAKnhG,mBAAmBihG,EAAmBt2F,OACjD9f,KAAK81G,GAEDQ,EAAKnhG,mBAAmBihG,EAAmBj2G,EAAIlB,QAEvDe,KAAK81G,GAILv7G,EACE4a,mBAAmBihG,EAAmB77G,IAASw7G,EAC/C5gG,mBAAmBihG,EAAmBj2G,IAF3B,IAKpB,IAAIE,EAAU7D,MAAM6D,SAAW,SAAU81G,GACvC,MAA8C,mBAAvC7jH,OAAOM,UAAUqR,SAAS5J,KAAK87G,IAGxC,SAAS9tG,EAAK8tG,EAAI73F,GAChB,GAAI63F,EAAG9tG,IAAK,OAAO8tG,EAAG9tG,IAAIiW,GAE1B,IADA,IAAI3K,EAAM,GACDliB,EAAI,EAAGA,EAAI0kH,EAAGzkH,OAAQD,IAC7BkiB,EAAItX,KAAKiiB,EAAE63F,EAAG1kH,GAAIA,IAEpB,OAAOkiB,EAGT,IAAI0iG,EAAa/jH,OAAOuK,MAAQ,SAAUsD,GACxC,IAAIwT,EAAM,GACV,IAAK,IAAInhB,KAAO2N,EACV7N,OAAOM,UAAUwH,eAAeC,KAAK8F,EAAK3N,IAAMmhB,EAAItX,KAAK7J,GAE/D,OAAOmhB,I,6BCnCThjB,EAAOC,QA5BS,SAAS8N,EAAWhK,EAAQkC,EAAGC,EAAGyZ,EAAGvd,EAAGoB,EAAGmqB,GAOzD,IAAK5f,EAAW,CACd,IAAIyY,EACJ,QAAe9hB,IAAXX,EACFyiB,EAAQ,IAAIxY,MACV,qIAGG,CACL,IAAIyD,EAAO,CAACxL,EAAGC,EAAGyZ,EAAGvd,EAAGoB,EAAGmqB,GACvBi4F,EAAW,GACfp/F,EAAQ,IAAIxY,MACVjK,EAAO+D,QAAQ,OAAO,WAAa,OAAO2J,EAAKm0G,UAE3Ch8G,KAAO,sBAIf,MADA4c,EAAMswC,YAAc,EACdtwC,K,eCzCV,SAAUjG,GACR,aACKA,EAAOvd,UACVud,EAAOvd,QAAU,IASnB,IAPA,IACIub,EAAMrW,EADN29G,EAAMtlG,EAAOvd,QAEb8iH,EAAQ,aACRC,EAAa,CAAC,UACdC,EAAU,wMAE0DlgH,MAAM,KACvEyY,EAAOwnG,EAAWv3G,OAAYq3G,EAAItnG,KAAOsnG,EAAItnG,GAAQ,IAC5D,KAAOrW,EAAS89G,EAAQx3G,OAAYq3G,EAAI39G,KAAS29G,EAAI39G,GAAU49G,GAbjE,CAeqB,qBAAXvgH,OAAyBjD,KAAOiD,S,iBClB1C,cAUA,IAGI0gH,EAAiB,4BAOjBC,EAAmB,iBAGnBC,EAAU,qBAMVC,EAAU,oBAKVC,EAAY,kBA2BZC,EAAe,8BAGfC,EAAW,mBAGXC,EAAiB,GACrBA,EAxBiB,yBAwBYA,EAvBZ,yBAwBjBA,EAvBc,sBAuBYA,EAtBX,uBAuBfA,EAtBe,uBAsBYA,EArBZ,uBAsBfA,EArBsB,8BAqBYA,EApBlB,wBAqBhBA,EApBgB,yBAoBY,EAC5BA,EAAeL,GAAWK,EAjDX,kBAkDfA,EAhCqB,wBAgCYA,EAhDnB,oBAiDdA,EAhCkB,qBAgCYA,EAhDhB,iBAiDdA,EAhDe,kBAgDYA,EAAeJ,GAC1CI,EA9Ca,gBA8CYA,EA7CT,mBA8ChBA,EAAeH,GAAaG,EA1CZ,mBA2ChBA,EA1Ca,gBA0CYA,EAzCT,mBA0ChBA,EAxCiB,qBAwCY,EAG7B,IAAIC,EAA8B,iBAAVlmG,GAAsBA,GAAUA,EAAO5e,SAAWA,QAAU4e,EAGhFmmG,EAA0B,iBAARjtG,MAAoBA,MAAQA,KAAK9X,SAAWA,QAAU8X,KAGxEktG,EAAOF,GAAcC,GAAYjsG,SAAS,cAATA,GAGjCmsG,EAA4C3mH,IAAYA,EAAQ0mE,UAAY1mE,EAG5E4mH,EAAaD,GAAgC,iBAAV5mH,GAAsBA,IAAWA,EAAO2mE,UAAY3mE,EAGvF8mH,EAAgBD,GAAcA,EAAW5mH,UAAY2mH,EAGrDG,EAAcD,GAAiBL,EAAWO,QAG1CC,EAAY,WACd,IAEE,IAAIC,EAAQL,GAAcA,EAAW3mH,SAAW2mH,EAAW3mH,QAAQ,QAAQgnH,MAE3E,OAAIA,GAKGH,GAAeA,EAAYI,SAAWJ,EAAYI,QAAQ,QACjE,MAAO3jH,KAXK,GAeZ4jH,EAAmBH,GAAYA,EAASI,aAY5C,SAASnkH,EAAM44D,EAAMztC,EAAS5c,GAC5B,OAAQA,EAAK1Q,QACX,KAAK,EAAG,OAAO+6D,EAAKpyD,KAAK2kB,GACzB,KAAK,EAAG,OAAOytC,EAAKpyD,KAAK2kB,EAAS5c,EAAK,IACvC,KAAK,EAAG,OAAOqqD,EAAKpyD,KAAK2kB,EAAS5c,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOqqD,EAAKpyD,KAAK2kB,EAAS5c,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOqqD,EAAK54D,MAAMmrB,EAAS5c,GA8D7B,IAPiBqqD,EAAMwrD,EAOnBC,EAAa17G,MAAM5J,UACnBulH,EAAY/sG,SAASxY,UACrBwlH,EAAc9lH,OAAOM,UAGrBylH,EAAaf,EAAK,sBAGlBgB,EAAeH,EAAUl0G,SAGzB7J,EAAiBg+G,EAAYh+G,eAG7Bm+G,EAAc,WAChB,IAAIC,EAAM,SAASzkG,KAAKskG,GAAcA,EAAWx7G,MAAQw7G,EAAWx7G,KAAK47G,UAAY,IACrF,OAAOD,EAAO,iBAAmBA,EAAO,GAFxB,GAUdE,EAAuBN,EAAYn0G,SAGnC00G,EAAmBL,EAAaj+G,KAAK/H,QAGrCsmH,EAAallG,OAAO,IACtB4kG,EAAaj+G,KAAKD,GAAgB3B,QA7KjB,sBA6KuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EogH,EAASpB,EAAgBH,EAAKuB,YAASxjH,EACvC2T,EAASsuG,EAAKtuG,OACd8vG,EAAaxB,EAAKwB,WAClBC,EAAcF,EAASA,EAAOE,iBAAc1jH,EAC5C2jH,GA/CavsD,EA+CUn6D,OAAO2X,eA/CXguG,EA+C2B3lH,OA9CzC,SAASy8F,GACd,OAAOtiC,EAAKwrD,EAAUlpB,MA8CtBkqB,EAAe3mH,OAAOgM,OACtB4X,EAAuBkiG,EAAYliG,qBACnCzN,EAASyvG,EAAWzvG,OACpBywG,EAAiBlwG,EAASA,EAAOmwG,iBAAc9jH,EAE/C9C,EAAkB,WACpB,IACE,IAAIk6D,EAAO2sD,GAAU9mH,OAAQ,kBAE7B,OADAm6D,EAAK,GAAI,GAAI,IACNA,EACP,MAAOt4D,KALW,GASlBklH,EAAiBR,EAASA,EAAOroG,cAAWnb,EAC5CikH,EAAYv1G,KAAK+D,IACjByxG,EAAY1uG,KAAKg9B,IAGjB6wB,EAAM0gD,GAAU9B,EAAM,OACtBkC,EAAeJ,GAAU9mH,OAAQ,UAUjCmnH,EAAc,WAChB,SAASvrG,KACT,OAAO,SAAS0X,GACd,IAAK8zF,GAAS9zF,GACZ,MAAO,GAET,GAAIqzF,EACF,OAAOA,EAAarzF,GAEtB1X,EAAOtb,UAAYgzB,EACnB,IAAI9oB,EAAS,IAAIoR,EAEjB,OADAA,EAAOtb,eAAYyC,EACZyH,GAZO,GAuBlB,SAAS68G,EAAKvxG,GACZ,IAAIpJ,GAAS,EACTtN,EAAoB,MAAX0W,EAAkB,EAAIA,EAAQ1W,OAG3C,IADAuB,KAAK2mH,UACI56G,EAAQtN,GAAQ,CACvB,IAAI4W,EAAQF,EAAQpJ,GACpB/L,KAAKwe,IAAInJ,EAAM,GAAIA,EAAM,KA+F7B,SAASuxG,EAAUzxG,GACjB,IAAIpJ,GAAS,EACTtN,EAAoB,MAAX0W,EAAkB,EAAIA,EAAQ1W,OAG3C,IADAuB,KAAK2mH,UACI56G,EAAQtN,GAAQ,CACvB,IAAI4W,EAAQF,EAAQpJ,GACpB/L,KAAKwe,IAAInJ,EAAM,GAAIA,EAAM,KA4G7B,SAASwxG,EAAS1xG,GAChB,IAAIpJ,GAAS,EACTtN,EAAoB,MAAX0W,EAAkB,EAAIA,EAAQ1W,OAG3C,IADAuB,KAAK2mH,UACI56G,EAAQtN,GAAQ,CACvB,IAAI4W,EAAQF,EAAQpJ,GACpB/L,KAAKwe,IAAInJ,EAAM,GAAIA,EAAM,KA8F7B,SAASyxG,EAAM3xG,GACb,IAAI8M,EAAOjiB,KAAK+mH,SAAW,IAAIH,EAAUzxG,GACzCnV,KAAKu7C,KAAOt5B,EAAKs5B,KAmGnB,SAASyrE,EAAcjmH,EAAOkmH,GAC5B,IAAIC,EAAQ95G,GAAQrM,GAChBomH,GAASD,GAASE,GAAYrmH,GAC9BsmH,GAAUH,IAAUC,GAAS5pG,GAASxc,GACtCumH,GAAUJ,IAAUC,IAAUE,GAAUtC,GAAahkH,GACrDwmH,EAAcL,GAASC,GAASE,GAAUC,EAC1Cz9G,EAAS09G,EAzjBf,SAAmBt7G,EAAGu7G,GAIpB,IAHA,IAAIz7G,GAAS,EACTlC,EAASN,MAAM0C,KAEVF,EAAQE,GACfpC,EAAOkC,GAASy7G,EAASz7G,GAE3B,OAAOlC,EAkjBoB49G,CAAU1mH,EAAMtC,OAAQmB,QAAU,GACzDnB,EAASoL,EAAOpL,OAEpB,IAAK,IAAIc,KAAOwB,GACTkmH,IAAa9/G,EAAeC,KAAKrG,EAAOxB,IACvCgoH,IAEQ,UAAPhoH,GAEC8nH,IAAkB,UAAP9nH,GAA0B,UAAPA,IAE9B+nH,IAAkB,UAAP/nH,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDmoH,GAAQnoH,EAAKd,KAElBoL,EAAOT,KAAK7J,GAGhB,OAAOsK,EAYT,SAAS89G,GAAiB1sG,EAAQ1b,EAAKwB,SACtBqB,IAAVrB,IAAwB+hH,GAAG7nG,EAAO1b,GAAMwB,SAC9BqB,IAAVrB,KAAyBxB,KAAO0b,KACnC2sG,GAAgB3sG,EAAQ1b,EAAKwB,GAcjC,SAAS8mH,GAAY5sG,EAAQ1b,EAAKwB,GAChC,IAAI+mH,EAAW7sG,EAAO1b,GAChB4H,EAAeC,KAAK6T,EAAQ1b,IAAQujH,GAAGgF,EAAU/mH,UACxCqB,IAAVrB,GAAyBxB,KAAO0b,IACnC2sG,GAAgB3sG,EAAQ1b,EAAKwB,GAYjC,SAASgnH,GAAatsG,EAAOlc,GAE3B,IADA,IAAId,EAASgd,EAAMhd,OACZA,KACL,GAAIqkH,GAAGrnG,EAAMhd,GAAQ,GAAIc,GACvB,OAAOd,EAGX,OAAQ,EAYV,SAASmpH,GAAgB3sG,EAAQ1b,EAAKwB,GACzB,aAAPxB,GAAsBD,EACxBA,EAAe2b,EAAQ1b,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASwB,EACT,UAAY,IAGdka,EAAO1b,GAAOwB,EA3alB2lH,EAAK/mH,UAAUgnH,MAvEf,WACE3mH,KAAK+mH,SAAWR,EAAeA,EAAa,MAAQ,GACpDvmH,KAAKu7C,KAAO,GAsEdmrE,EAAK/mH,UAAL,OAzDA,SAAoBJ,GAClB,IAAIsK,EAAS7J,KAAKub,IAAIhc,WAAeS,KAAK+mH,SAASxnH,GAEnD,OADAS,KAAKu7C,MAAQ1xC,EAAS,EAAI,EACnBA,GAuDT68G,EAAK/mH,UAAUiC,IA3Cf,SAAiBrC,GACf,IAAI0iB,EAAOjiB,KAAK+mH,SAChB,GAAIR,EAAc,CAChB,IAAI18G,EAASoY,EAAK1iB,GAClB,OAAOsK,IAAW85G,OAAiBvhH,EAAYyH,EAEjD,OAAO1C,EAAeC,KAAK6a,EAAM1iB,GAAO0iB,EAAK1iB,QAAO6C,GAsCtDskH,EAAK/mH,UAAU4b,IA1Bf,SAAiBhc,GACf,IAAI0iB,EAAOjiB,KAAK+mH,SAChB,OAAOR,OAA8BnkH,IAAd6f,EAAK1iB,GAAsB4H,EAAeC,KAAK6a,EAAM1iB,IAyB9EmnH,EAAK/mH,UAAU6e,IAZf,SAAiBjf,EAAKwB,GACpB,IAAIkhB,EAAOjiB,KAAK+mH,SAGhB,OAFA/mH,KAAKu7C,MAAQv7C,KAAKub,IAAIhc,GAAO,EAAI,EACjC0iB,EAAK1iB,GAAQgnH,QAA0BnkH,IAAVrB,EAAuB4iH,EAAiB5iH,EAC9Df,MAuHT4mH,EAAUjnH,UAAUgnH,MApFpB,WACE3mH,KAAK+mH,SAAW,GAChB/mH,KAAKu7C,KAAO,GAmFdqrE,EAAUjnH,UAAV,OAvEA,SAAyBJ,GACvB,IAAI0iB,EAAOjiB,KAAK+mH,SACZh7G,EAAQg8G,GAAa9lG,EAAM1iB,GAE/B,QAAIwM,EAAQ,KAIRA,GADYkW,EAAKxjB,OAAS,EAE5BwjB,EAAK/V,MAELsJ,EAAOpO,KAAK6a,EAAMlW,EAAO,KAEzB/L,KAAKu7C,MACA,IA0DTqrE,EAAUjnH,UAAUiC,IA9CpB,SAAsBrC,GACpB,IAAI0iB,EAAOjiB,KAAK+mH,SACZh7G,EAAQg8G,GAAa9lG,EAAM1iB,GAE/B,OAAOwM,EAAQ,OAAI3J,EAAY6f,EAAKlW,GAAO,IA2C7C66G,EAAUjnH,UAAU4b,IA/BpB,SAAsBhc,GACpB,OAAOwoH,GAAa/nH,KAAK+mH,SAAUxnH,IAAQ,GA+B7CqnH,EAAUjnH,UAAU6e,IAlBpB,SAAsBjf,EAAKwB,GACzB,IAAIkhB,EAAOjiB,KAAK+mH,SACZh7G,EAAQg8G,GAAa9lG,EAAM1iB,GAQ/B,OANIwM,EAAQ,KACR/L,KAAKu7C,KACPt5B,EAAK7Y,KAAK,CAAC7J,EAAKwB,KAEhBkhB,EAAKlW,GAAO,GAAKhL,EAEZf,MAyGT6mH,EAASlnH,UAAUgnH,MAtEnB,WACE3mH,KAAKu7C,KAAO,EACZv7C,KAAK+mH,SAAW,CACd,KAAQ,IAAIL,EACZ,IAAO,IAAKjhD,GAAOmhD,GACnB,OAAU,IAAIF,IAkElBG,EAASlnH,UAAT,OArDA,SAAwBJ,GACtB,IAAIsK,EAASm+G,GAAWhoH,KAAMT,GAAjB,OAAgCA,GAE7C,OADAS,KAAKu7C,MAAQ1xC,EAAS,EAAI,EACnBA,GAmDTg9G,EAASlnH,UAAUiC,IAvCnB,SAAqBrC,GACnB,OAAOyoH,GAAWhoH,KAAMT,GAAKqC,IAAIrC,IAuCnCsnH,EAASlnH,UAAU4b,IA3BnB,SAAqBhc,GACnB,OAAOyoH,GAAWhoH,KAAMT,GAAKgc,IAAIhc,IA2BnCsnH,EAASlnH,UAAU6e,IAdnB,SAAqBjf,EAAKwB,GACxB,IAAIkhB,EAAO+lG,GAAWhoH,KAAMT,GACxBg8C,EAAOt5B,EAAKs5B,KAIhB,OAFAt5B,EAAKzD,IAAIjf,EAAKwB,GACdf,KAAKu7C,MAAQt5B,EAAKs5B,MAAQA,EAAO,EAAI,EAC9Bv7C,MAwGT8mH,EAAMnnH,UAAUgnH,MA3EhB,WACE3mH,KAAK+mH,SAAW,IAAIH,EACpB5mH,KAAKu7C,KAAO,GA0EdurE,EAAMnnH,UAAN,OA9DA,SAAqBJ,GACnB,IAAI0iB,EAAOjiB,KAAK+mH,SACZl9G,EAASoY,EAAI,OAAW1iB,GAG5B,OADAS,KAAKu7C,KAAOt5B,EAAKs5B,KACV1xC,GA0DTi9G,EAAMnnH,UAAUiC,IA9ChB,SAAkBrC,GAChB,OAAOS,KAAK+mH,SAASnlH,IAAIrC,IA8C3BunH,EAAMnnH,UAAU4b,IAlChB,SAAkBhc,GAChB,OAAOS,KAAK+mH,SAASxrG,IAAIhc,IAkC3BunH,EAAMnnH,UAAU6e,IArBhB,SAAkBjf,EAAKwB,GACrB,IAAIkhB,EAAOjiB,KAAK+mH,SAChB,GAAI9kG,aAAgB2kG,EAAW,CAC7B,IAAI5E,EAAQ//F,EAAK8kG,SACjB,IAAKthD,GAAQu8C,EAAMvjH,OAASwpH,IAG1B,OAFAjG,EAAM54G,KAAK,CAAC7J,EAAKwB,IACjBf,KAAKu7C,OAASt5B,EAAKs5B,KACZv7C,KAETiiB,EAAOjiB,KAAK+mH,SAAW,IAAIF,EAAS7E,GAItC,OAFA//F,EAAKzD,IAAIjf,EAAKwB,GACdf,KAAKu7C,KAAOt5B,EAAKs5B,KACVv7C,MAkIT,IAsWuBkoH,GAtWnBC,GAuWK,SAASltG,EAAQusG,EAAUY,GAMhC,IALA,IAAIr8G,GAAS,EACTs8G,EAAWhpH,OAAO4b,GAClBjc,EAAQopH,EAASntG,GACjBxc,EAASO,EAAMP,OAEZA,KAAU,CACf,IAAIc,EAAMP,EAAMkpH,GAAYzpH,IAAWsN,GACvC,IAA+C,IAA3Cy7G,EAASa,EAAS9oH,GAAMA,EAAK8oH,GAC/B,MAGJ,OAAOptG,GA1WX,SAASqtG,GAAWvnH,GAClB,OAAa,MAATA,OACeqB,IAAVrB,EA7xBQ,qBANL,gBAqyBJklH,GAAkBA,KAAkB5mH,OAAO0B,GA6YrD,SAAmBA,GACjB,IAAIwnH,EAAQphH,EAAeC,KAAKrG,EAAOklH,GACnC9kD,EAAMpgE,EAAMklH,GAEhB,IACEllH,EAAMklH,QAAkB7jH,EACxB,IAAIomH,GAAW,EACf,MAAOtnH,IAET,IAAI2I,EAAS47G,EAAqBr+G,KAAKrG,GACnCynH,IACED,EACFxnH,EAAMklH,GAAkB9kD,SAEjBpgE,EAAMklH,IAGjB,OAAOp8G,EA7ZH4+G,CAAU1nH,GAwhBhB,SAAwBA,GACtB,OAAO0kH,EAAqBr+G,KAAKrG,GAxhB7B2nH,CAAe3nH,GAUrB,SAAS4nH,GAAgB5nH,GACvB,OAAO6nH,GAAa7nH,IAAUunH,GAAWvnH,IAAU8iH,EAWrD,SAASgF,GAAa9nH,GACpB,SAAK0lH,GAAS1lH,IAodhB,SAAkBy4D,GAChB,QAAS8rD,GAAeA,KAAc9rD,EArddsvD,CAAS/nH,MAGnBgoH,GAAWhoH,GAAS4kH,EAAa3B,GAChCjpG,KAgmBjB,SAAkBy+C,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO6rD,EAAaj+G,KAAKoyD,GACzB,MAAOt4D,IACT,IACE,OAAQs4D,EAAO,GACf,MAAOt4D,KAEX,MAAO,GAzmBa8nH,CAASjoH,IAsB/B,SAASkoH,GAAWhuG,GAClB,IAAKwrG,GAASxrG,GACZ,OAmdJ,SAAsBA,GACpB,IAAIpR,EAAS,GACb,GAAc,MAAVoR,EACF,IAAK,IAAI1b,KAAOF,OAAO4b,GACrBpR,EAAOT,KAAK7J,GAGhB,OAAOsK,EA1dEq/G,CAAajuG,GAEtB,IAAIkuG,EAAUC,GAAYnuG,GACtBpR,EAAS,GAEb,IAAK,IAAItK,KAAO0b,GACD,eAAP1b,IAAyB4pH,GAAYhiH,EAAeC,KAAK6T,EAAQ1b,KACrEsK,EAAOT,KAAK7J,GAGhB,OAAOsK,EAcT,SAASw/G,GAAUpuG,EAAQ/T,EAAQoiH,EAAUC,EAAYt4D,GACnDh2C,IAAW/T,GAGfihH,GAAQjhH,GAAQ,SAASsiH,EAAUjqH,GAEjC,GADA0xD,IAAUA,EAAQ,IAAI61D,GAClBL,GAAS+C,IA+BjB,SAAuBvuG,EAAQ/T,EAAQ3H,EAAK+pH,EAAUG,EAAWF,EAAYt4D,GAC3E,IAAI62D,EAAW4B,GAAQzuG,EAAQ1b,GAC3BiqH,EAAWE,GAAQxiH,EAAQ3H,GAC3BoqH,EAAU14D,EAAMrvD,IAAI4nH,GAExB,GAAIG,EAEF,YADAhC,GAAiB1sG,EAAQ1b,EAAKoqH,GAGhC,IAAIlrG,EAAW8qG,EACXA,EAAWzB,EAAU0B,EAAWjqH,EAAM,GAAK0b,EAAQ/T,EAAQ+pD,QAC3D7uD,EAEAwnH,OAAwBxnH,IAAbqc,EAEf,GAAImrG,EAAU,CACZ,IAAI1C,EAAQ95G,GAAQo8G,GAChBnC,GAAUH,GAAS3pG,GAASisG,GAC5BK,GAAW3C,IAAUG,GAAUtC,GAAayE,GAEhD/qG,EAAW+qG,EACPtC,GAASG,GAAUwC,EACjBz8G,GAAQ06G,GACVrpG,EAAWqpG,EA2oBVc,GADkB7nH,EAxoBM+mH,IAyoBDgC,GAAY/oH,GAxoBpC0d,EAsHR,SAAmBvX,EAAQuU,GACzB,IAAI1P,GAAS,EACTtN,EAASyI,EAAOzI,OAEpBgd,IAAUA,EAAQlS,MAAM9K,IACxB,OAASsN,EAAQtN,GACfgd,EAAM1P,GAAS7E,EAAO6E,GAExB,OAAO0P,EA9HUsuG,CAAUjC,GAEdT,GACPuC,GAAW,EACXnrG,EAqER,SAAqBurG,EAAQC,GAC3B,GAAIA,EACF,OAAOD,EAAOn8G,QAEhB,IAAIpP,EAASurH,EAAOvrH,OAChBoL,EAASi8G,EAAcA,EAAYrnH,GAAU,IAAIurH,EAAO1+G,YAAY7M,GAGxE,OADAurH,EAAOE,KAAKrgH,GACLA,EA7EUsgH,CAAYX,GAAU,IAE1BK,GACPD,GAAW,EACXnrG,EAiGR,SAAyB2rG,EAAYH,GACnC,IAAID,EAASC,EAff,SAA0BI,GACxB,IAAIxgH,EAAS,IAAIwgH,EAAY/+G,YAAY++G,EAAYC,YAErD,OADA,IAAIzE,EAAWh8G,GAAQ2U,IAAI,IAAIqnG,EAAWwE,IACnCxgH,EAYe0gH,CAAiBH,EAAWJ,QAAUI,EAAWJ,OACvE,OAAO,IAAII,EAAW9+G,YAAY0+G,EAAQI,EAAWI,WAAYJ,EAAW3rH,QAnG3DgsH,CAAgBjB,GAAU,IAGrC/qG,EAAW,GAmyBnB,SAAuB1d,GACrB,IAAK6nH,GAAa7nH,IAAUunH,GAAWvnH,IAAUgjH,EAC/C,OAAO,EAET,IAAIpxF,EAAQozF,EAAahlH,GACzB,GAAc,OAAV4xB,EACF,OAAO,EAET,IAAI+3F,EAAOvjH,EAAeC,KAAKurB,EAAO,gBAAkBA,EAAMrnB,YAC9D,MAAsB,mBAARo/G,GAAsBA,aAAgBA,GAClDrF,EAAaj+G,KAAKsjH,IAAShF,EA1yBlBiF,CAAcnB,IAAapC,GAAYoC,IAC9C/qG,EAAWqpG,EACPV,GAAYU,GACdrpG,EAq1BR,SAAuB1d,GACrB,OA5tBF,SAAoBmG,EAAQlI,EAAOic,EAAQsuG,GACzC,IAAIqB,GAAS3vG,EACbA,IAAWA,EAAS,IAEpB,IAAIlP,GAAS,EACTtN,EAASO,EAAMP,OAEnB,OAASsN,EAAQtN,GAAQ,CACvB,IAAIc,EAAMP,EAAM+M,GAEZ0S,EAAW8qG,EACXA,EAAWtuG,EAAO1b,GAAM2H,EAAO3H,GAAMA,EAAK0b,EAAQ/T,QAClD9E,OAEaA,IAAbqc,IACFA,EAAWvX,EAAO3H,IAEhBqrH,EACFhD,GAAgB3sG,EAAQ1b,EAAKkf,GAE7BopG,GAAY5sG,EAAQ1b,EAAKkf,GAG7B,OAAOxD,EAqsBA4vG,CAAW9pH,EAAO+pH,GAAO/pH,IAt1BfgqH,CAAcjD,GAEjBrB,GAASqB,KAAaiB,GAAWjB,KACzCrpG,EAwQR,SAAyBxD,GACvB,MAAqC,mBAAtBA,EAAO3P,aAA8B89G,GAAYnuG,GAE5D,GADAurG,EAAWT,EAAa9qG,IA1QX+vG,CAAgBxB,KAI7BI,GAAW,EA+mBjB,IAA2B7oH,EA5mBrB6oH,IAEF34D,EAAMzyC,IAAIgrG,EAAU/qG,GACpBgrG,EAAUhrG,EAAU+qG,EAAUF,EAAUC,EAAYt4D,GACpDA,EAAK,OAAWu4D,IAElB7B,GAAiB1sG,EAAQ1b,EAAKkf,GAzF1BwsG,CAAchwG,EAAQ/T,EAAQ3H,EAAK+pH,EAAUD,GAAWE,EAAYt4D,OAEjE,CACH,IAAIxyC,EAAW8qG,EACXA,EAAWG,GAAQzuG,EAAQ1b,GAAMiqH,EAAWjqH,EAAM,GAAK0b,EAAQ/T,EAAQ+pD,QACvE7uD,OAEaA,IAAbqc,IACFA,EAAW+qG,GAEb7B,GAAiB1sG,EAAQ1b,EAAKkf,MAE/BqsG,IAwFL,SAASI,GAAS1xD,EAAM9kB,GACtB,OAAOy2E,GA6WT,SAAkB3xD,EAAM9kB,EAAOswE,GAE7B,OADAtwE,EAAQ2xE,OAAoBjkH,IAAVsyC,EAAuB8kB,EAAK/6D,OAAS,EAAKi2C,EAAO,GAC5D,WAML,IALA,IAAIvlC,EAAOtO,UACPkL,GAAS,EACTtN,EAAS4nH,EAAUl3G,EAAK1Q,OAASi2C,EAAO,GACxCj5B,EAAQlS,MAAM9K,KAETsN,EAAQtN,GACfgd,EAAM1P,GAASoD,EAAKulC,EAAQ3oC,GAE9BA,GAAS,EAET,IADA,IAAIq/G,EAAY7hH,MAAMmrC,EAAQ,KACrB3oC,EAAQ2oC,GACf02E,EAAUr/G,GAASoD,EAAKpD,GAG1B,OADAq/G,EAAU12E,GAASswE,EAAUvpG,GACtB7a,EAAM44D,EAAMx5D,KAAMorH,IA9XRC,CAAS7xD,EAAM9kB,EAAOvM,IAAWqxB,EAAO,IAyL7D,SAASwuD,GAAW5yG,EAAK7V,GACvB,IAAI0iB,EAAO7M,EAAI2xG,SACf,OA2GF,SAAmBhmH,GACjB,IAAImY,SAAcnY,EAClB,MAAgB,UAARmY,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVnY,EACU,OAAVA,EA/GEuqH,CAAU/rH,GACb0iB,EAAmB,iBAAP1iB,EAAkB,SAAW,QACzC0iB,EAAK7M,IAWX,SAAS+wG,GAAUlrG,EAAQ1b,GACzB,IAAIwB,EAnhCN,SAAkBka,EAAQ1b,GACxB,OAAiB,MAAV0b,OAAiB7Y,EAAY6Y,EAAO1b,GAkhC/B0gB,CAAShF,EAAQ1b,GAC7B,OAAOspH,GAAa9nH,GAASA,OAAQqB,EAmDvC,SAASslH,GAAQ3mH,EAAOtC,GACtB,IAAIya,SAAcnY,EAGlB,SAFAtC,EAAmB,MAAVA,EAAiBmlH,EAAmBnlH,KAGlC,UAARya,GACU,UAARA,GAAoB+qG,EAASlpG,KAAKha,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQtC,EA2DjD,SAAS2qH,GAAYroH,GACnB,IAAI2pH,EAAO3pH,GAASA,EAAMuK,YAG1B,OAAOvK,KAFqB,mBAAR2pH,GAAsBA,EAAK/qH,WAAcwlH,GAyE/D,SAASuE,GAAQzuG,EAAQ1b,GACvB,IAAY,gBAARA,GAAgD,oBAAhB0b,EAAO1b,KAIhC,aAAPA,EAIJ,OAAO0b,EAAO1b,GAWhB,IAAI4rH,GAWJ,SAAkB3xD,GAChB,IAAI9jB,EAAQ,EACR61E,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQlF,IACRmF,EA75CO,IA65CiBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAM/1E,GAl6CI,IAm6CR,OAAO70C,UAAU,QAGnB60C,EAAQ,EAEV,OAAO8jB,EAAK54D,WAAMwB,EAAWvB,YA3Bf6qH,CAnZKpsH,EAA4B,SAASk6D,EAAMx8C,GAChE,OAAO1d,EAAek6D,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,OA+3Bcz4D,EA/3BIic,EAg4Bb,WACL,OAAOjc,IAh4BP,UAAY,IA83BhB,IAAkBA,GAn4BsBonC,IAqexC,SAAS26E,GAAG/hH,EAAO4qH,GACjB,OAAO5qH,IAAU4qH,GAAU5qH,IAAUA,GAAS4qH,IAAUA,EAqB1D,IAAIvE,GAAcuB,GAAgB,WAAa,OAAO9nH,UAApB,IAAsC8nH,GAAkB,SAAS5nH,GACjG,OAAO6nH,GAAa7nH,IAAUoG,EAAeC,KAAKrG,EAAO,YACtDkiB,EAAqB7b,KAAKrG,EAAO,WA0BlCqM,GAAU7D,MAAM6D,QA2BpB,SAAS08G,GAAY/oH,GACnB,OAAgB,MAATA,GAAiB6qH,GAAS7qH,EAAMtC,UAAYsqH,GAAWhoH,GAiDhE,IAAIwc,GAAW6oG,GAsUf,WACE,OAAO,GApTT,SAAS2C,GAAWhoH,GAClB,IAAK0lH,GAAS1lH,GACZ,OAAO,EAIT,IAAIogE,EAAMmnD,GAAWvnH,GACrB,OAAOogE,GAAO2iD,GA1mDH,8BA0mDc3iD,GA/mDZ,0BA+mD6BA,GArmD7B,kBAqmDgDA,EA6B/D,SAASyqD,GAAS7qH,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS6iH,EA4B7C,SAAS6C,GAAS1lH,GAChB,IAAImY,SAAcnY,EAClB,OAAgB,MAATA,IAA0B,UAARmY,GAA4B,YAARA,GA2B/C,SAAS0vG,GAAa7nH,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EA6DjC,IAAIgkH,GAAeD,EAvnDnB,SAAmBtrD,GACjB,OAAO,SAASz4D,GACd,OAAOy4D,EAAKz4D,IAqnDsB8qH,CAAU/G,GAj7BhD,SAA0B/jH,GACxB,OAAO6nH,GAAa7nH,IAClB6qH,GAAS7qH,EAAMtC,WAAaylH,EAAeoE,GAAWvnH,KAo+B1D,SAAS+pH,GAAO7vG,GACd,OAAO6uG,GAAY7uG,GAAU+rG,EAAc/rG,GAAQ,GAAQguG,GAAWhuG,GAkCxE,IAxvBwB6wG,GAwvBpBztH,IAxvBoBytH,GAwvBG,SAAS7wG,EAAQ/T,EAAQoiH,GAClDD,GAAUpuG,EAAQ/T,EAAQoiH,IAxvBnB4B,IAAS,SAASjwG,EAAQ8wG,GAC/B,IAAIhgH,GAAS,EACTtN,EAASstH,EAAQttH,OACjB8qH,EAAa9qH,EAAS,EAAIstH,EAAQttH,EAAS,QAAK2D,EAChD4pH,EAAQvtH,EAAS,EAAIstH,EAAQ,QAAK3pH,EAWtC,IATAmnH,EAAcuC,GAASrtH,OAAS,GAA0B,mBAAd8qH,GACvC9qH,IAAU8qH,QACXnnH,EAEA4pH,GAuIR,SAAwBjrH,EAAOgL,EAAOkP,GACpC,IAAKwrG,GAASxrG,GACZ,OAAO,EAET,IAAI/B,SAAcnN,EAClB,SAAY,UAARmN,EACK4wG,GAAY7uG,IAAWysG,GAAQ37G,EAAOkP,EAAOxc,QACrC,UAARya,GAAoBnN,KAASkP,IAE7B6nG,GAAG7nG,EAAOlP,GAAQhL,GAhJZkrH,CAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDzC,EAAa9qH,EAAS,OAAI2D,EAAYmnH,EACtC9qH,EAAS,GAEXwc,EAAS5b,OAAO4b,KACPlP,EAAQtN,GAAQ,CACvB,IAAIyI,EAAS6kH,EAAQhgH,GACjB7E,GACF4kH,GAAS7wG,EAAQ/T,EAAQ6E,EAAOw9G,GAGpC,OAAOtuG,MA+wBX,SAASktB,GAASpnC,GAChB,OAAOA,EAoBTrD,EAAOC,QAAUU,K,yCCx7DjBX,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAOwuH,kBACXxuH,EAAOyuH,UAAY,aACnBzuH,EAAO0uH,MAAQ,GAEV1uH,EAAO0G,WAAU1G,EAAO0G,SAAW,IACxC/E,OAAOC,eAAe5B,EAAQ,SAAU,CACvCwB,YAAY,EACZ0C,IAAK,WACJ,OAAOlE,EAAO+gD,KAGhBp/C,OAAOC,eAAe5B,EAAQ,KAAM,CACnCwB,YAAY,EACZ0C,IAAK,WACJ,OAAOlE,EAAOc,KAGhBd,EAAOwuH,gBAAkB,GAEnBxuH,I,6BClBR2B,OAAOC,eAAe3B,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAQygB,GAER,SAAYvc,EAAI8mC,EAAW/5B,EAAUoT,GACnCA,EAAOA,IAAQ,EACXngB,EAAGwQ,iBACLxQ,EAAGwQ,iBAAiBs2B,EAAW/5B,EAAUoT,GAChCngB,EAAGw3B,aACZx3B,EAAGw3B,YAAY,KAAOsP,GAAW,SAAUznC,GACzC0N,EAASxH,KAAKvF,EAAIX,GAAK+B,OAAOkC,WAPpCxH,EAAQ2gB,IAYR,SAAazc,EAAI8mC,EAAW/5B,EAAUoT,GACpCA,EAAOA,IAAQ,EACXngB,EAAGyQ,oBACLzQ,EAAGyQ,oBAAoBq2B,EAAW/5B,EAAUoT,GACnCngB,EAAG03B,aACZ13B,EAAG03B,YAAY,KAAOoP,EAAW/5B,K,6BCrBrCvP,OAAOC,eAAe3B,EAAS,aAAc,CAC3CoD,OAAO,IAOTpD,EAAQonB,QAAU,SAAUQ,GAC1B,KAAMA,aAAgBE,aACpB,OAAO1iB,SAAS8iB,gBAOlB,IAJA,IAAIwmG,EAA8C,aAAxB9mG,EAAK7mB,MAAM4tH,SACjCC,EAAgB,gBAChB7mG,EAASH,EAENG,GAAQ,CACb,IAAKA,EAAOwhD,WACV,OAAO3hD,EAAKK,eAAiB7iB,SAAS8iB,gBAGxC,IAAInnB,EAAQuE,OAAOupH,iBAAiB9mG,GAChC4mG,EAAW5tH,EAAM4tH,SACjB3mG,EAAWjnB,EAAMinB,SACjB8mG,EAAY/tH,EAAM,cAClBguH,EAAYhuH,EAAM,cAEtB,GAAiB,WAAb4tH,GAAyBD,EAC3B3mG,EAASA,EAAOwhD,eADlB,CAKA,GAAIqlD,EAAcxxG,KAAK4K,IAAa4mG,EAAcxxG,KAAK0xG,IAAcF,EAAcxxG,KAAK2xG,GACtF,OAAOhnG,EAGTA,EAASA,EAAOwhD,YAGlB,OAAO3hD,EAAKK,eAAiBL,EAAKM,iBAAmB9iB,SAAS8iB,kB,6BCxChExmB,OAAOC,eAAe3B,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAQonB,QACR,SAAkBy0C,EAAMh6B,EAAML,GAC5B,IAAIpH,OAAU,EACV5oB,OAAO,EACPzJ,OAAU,EACVinH,OAAY,EACZ9iH,OAAS,EAET+iH,EAAQ,SAASA,IACnB,IAAIjgH,GAAQ,IAAIiL,KAAS+0G,EAErBhgH,EAAO6yB,GAAQ7yB,GAAQ,EACzBorB,EAAU/K,WAAW4/F,EAAOptF,EAAO7yB,IAEnCorB,EAAU,KACLoH,IACHt1B,EAAS2vD,EAAK54D,MAAM8E,EAASyJ,GACxB4oB,IACHryB,EAAU,KACVyJ,EAAO,SAMf,OAAO,WACLzJ,EAAU1F,KACVmP,EAAOtO,UACP8rH,GAAa,IAAI/0G,KAEjB,IAAIi1G,EAAU1tF,IAAcpH,EAW5B,OAVKA,IACHA,EAAU/K,WAAW4/F,EAAOptF,IAG1BqtF,IACFhjH,EAAS2vD,EAAK54D,MAAM8E,EAASyJ,GAC7BzJ,EAAU,KACVyJ,EAAO,MAGFtF,K,6BC5CXxK,OAAOC,eAAe3B,EAAS,aAAc,CAC3CoD,OAAO,IAETpD,EAAQonB,QAER,SAAkBjW,EAAIg+G,EAAYC,GAEhC,IAAIpgH,EAAMqgH,EACV,OAFAF,IAAeA,EAAa,KAErB,WACL,IAAIpnH,EAAUqnH,GAAS/sH,KAEnB40C,GAAO,IAAIh9B,KACXzI,EAAOtO,UACP8L,GAAQioC,EAAMjoC,EAAOmgH,GAEvB/yF,aAAaizF,GACbA,EAAahgG,YAAW,WACtBrgB,EAAOioC,EACP9lC,EAAGlO,MAAM8E,EAASyJ,KACjB29G,KAEHngH,EAAOioC,EACP9lC,EAAGlO,MAAM8E,EAASyJ,O,6BCtBxB,IAAI89G,EAAQrvH,EAAQ,IAChByD,EAAUzD,EAAQ,IAClB2d,EAAMlc,OAAOM,UAAUwH,eAEvB+lH,EAAwB,CACxBC,SAAU,SAAkB3hH,GACxB,OAAOA,EAAS,MAEpB4hH,MAAO,QACPC,QAAS,SAAiB7hH,EAAQjM,GAC9B,OAAOiM,EAAS,IAAMjM,EAAM,KAEhCgiB,OAAQ,SAAgB/V,GACpB,OAAOA,IAIX4B,EAAU7D,MAAM6D,QAChBhE,EAAOG,MAAM5J,UAAUyJ,KACvBkkH,EAAc,SAAUx3G,EAAKy3G,GAC7BnkH,EAAKxI,MAAMkV,EAAK1I,EAAQmgH,GAAgBA,EAAe,CAACA,KAGxDC,EAAQ51G,KAAKjY,UAAU8tH,YAEvBC,EAAgBrsH,EAAO,QACvB+oB,EAAW,CACXujG,gBAAgB,EAChBC,WAAW,EACXlxG,QAAS,QACTmxG,iBAAiB,EACjBhtG,UAAW,IACX/D,QAAQ,EACRgxG,QAASb,EAAMnwG,OACfixG,kBAAkB,EAClBtsH,OAAQisH,EACRM,UAAW3sH,EAAQ0iB,WAAW2pG,GAE9BL,SAAS,EACTY,cAAe,SAAuBt5C,GAClC,OAAO64C,EAAMpmH,KAAKutE,IAEtBu5C,WAAW,EACXC,oBAAoB,GAWpB7rG,EAAY,SAASA,EACrBrH,EACAzP,EACA4iH,EACAD,EACAD,EACAJ,EACA9+G,EACAkjC,EACA07E,EACAK,EACAD,EACAD,EACArxG,GAEA,IAvBuDmQ,EAuBnD3f,EAAM+N,EAcV,GAbsB,oBAAXjM,EACP9B,EAAM8B,EAAOxD,EAAQ0B,GACdA,aAAe0K,KACtB1K,EAAM+gH,EAAc/gH,GACW,UAAxBkhH,GAAmChhH,EAAQF,KAClDA,EAAM+/G,EAAMxvG,SAASvQ,GAAK,SAAUnM,GAChC,OAAIA,aAAiB6W,KACVq2G,EAAcltH,GAElBA,KACRgM,KAAK,MAGA,OAARG,EAAc,CACd,GAAIihH,EACA,OAAOL,IAAYC,EAAmBD,EAAQtiH,EAAQ4e,EAAS0jG,QAASpxG,EAAS,OAASlR,EAG9F0B,EAAM,GAGV,GA5CoB,kBADmC2f,EA6C7B3f,IA3CN,kBAAN2f,GACM,mBAANA,GACM,kBAANA,GACM,kBAANA,GAwCoBogG,EAAM1vG,SAASrQ,GAC7C,OAAI4gH,EAEO,CAACE,EADOD,EAAmBviH,EAASsiH,EAAQtiH,EAAQ4e,EAAS0jG,QAASpxG,EAAS,QACxD,IAAMsxG,EAAUF,EAAQ5gH,EAAKkd,EAAS0jG,QAASpxG,EAAS,WAEnF,CAACsxG,EAAUxiH,GAAU,IAAMwiH,EAAUpuH,OAAOsN,KAGvD,IAMImhH,EANArkH,EAAS,GAEb,GAAmB,qBAARkD,EACP,OAAOlD,EAIX,GAAIoD,EAAQ4B,GACRq/G,EAAUr/G,MACP,CACH,IAAIpF,EAAOvK,OAAOuK,KAAKsD,GACvBmhH,EAAUn8E,EAAOtoC,EAAKsoC,KAAKA,GAAQtoC,EAGvC,IAAK,IAAIpL,EAAI,EAAGA,EAAI6vH,EAAQ5vH,SAAUD,EAAG,CACrC,IAAIe,EAAM8uH,EAAQ7vH,GACduC,EAAQmM,EAAI3N,GAEhB,IAAI2uH,GAAuB,OAAVntH,EAAjB,CAIA,IAAIw4D,EAAYnsD,EAAQF,GACa,oBAAxBkhH,EAAqCA,EAAoB5iH,EAAQjM,GAAOiM,EAC/EA,GAAUoiH,EAAY,IAAMruH,EAAM,IAAMA,EAAM,KAEpD+tH,EAAYtjH,EAAQsY,EAChBvhB,EACAw4D,EACA60D,EACAD,EACAD,EACAJ,EACA9+G,EACAkjC,EACA07E,EACAK,EACAD,EACAD,EACArxG,KAIR,OAAO1S,GAiDXtM,EAAOC,QAAU,SAAUsd,EAAQ+G,GAC/B,IAGIqsG,EAHAnhH,EAAM+N,EACN5a,EAhDwB,SAAmC2hB,GAC/D,IAAKA,EACD,OAAOoI,EAGX,GAAqB,OAAjBpI,EAAK8rG,cAAqC1rH,IAAjB4f,EAAK8rG,SAAiD,oBAAjB9rG,EAAK8rG,QACnE,MAAM,IAAI3tH,UAAU,iCAGxB,IAAIuc,EAAUsF,EAAKtF,SAAW0N,EAAS1N,QACvC,GAA4B,qBAAjBsF,EAAKtF,SAA4C,UAAjBsF,EAAKtF,SAAwC,eAAjBsF,EAAKtF,QACxE,MAAM,IAAIvc,UAAU,qEAGxB,IAAIsB,EAASJ,EAAO,QACpB,GAA2B,qBAAhB2gB,EAAKvgB,OAAwB,CACpC,IAAK8Z,EAAInU,KAAK/F,EAAQ0iB,WAAY/B,EAAKvgB,QACnC,MAAM,IAAItB,UAAU,mCAExBsB,EAASugB,EAAKvgB,OAElB,IAAIusH,EAAY3sH,EAAQ0iB,WAAWtiB,GAE/BuN,EAASob,EAASpb,OAKtB,OAJ2B,oBAAhBgT,EAAKhT,QAAyB5B,EAAQ4U,EAAKhT,WAClDA,EAASgT,EAAKhT,QAGX,CACH2+G,eAA+C,mBAAxB3rG,EAAK2rG,eAA+B3rG,EAAK2rG,eAAiBvjG,EAASujG,eAC1FC,UAAqC,qBAAnB5rG,EAAK4rG,UAA4BxjG,EAASwjG,YAAc5rG,EAAK4rG,UAC/ElxG,QAASA,EACTmxG,gBAAiD,mBAAzB7rG,EAAK6rG,gBAAgC7rG,EAAK6rG,gBAAkBzjG,EAASyjG,gBAC7FhtG,UAAqC,qBAAnBmB,EAAKnB,UAA4BuJ,EAASvJ,UAAYmB,EAAKnB,UAC7E/D,OAA+B,mBAAhBkF,EAAKlF,OAAuBkF,EAAKlF,OAASsN,EAAStN,OAClEgxG,QAAiC,oBAAjB9rG,EAAK8rG,QAAyB9rG,EAAK8rG,QAAU1jG,EAAS0jG,QACtEC,iBAAmD,mBAA1B/rG,EAAK+rG,iBAAiC/rG,EAAK+rG,iBAAmB3jG,EAAS2jG,iBAChG/+G,OAAQA,EACRg/G,UAAWA,EACXC,cAA6C,oBAAvBjsG,EAAKisG,cAA+BjsG,EAAKisG,cAAgB7jG,EAAS6jG,cACxFC,UAAqC,mBAAnBlsG,EAAKksG,UAA0BlsG,EAAKksG,UAAY9jG,EAAS8jG,UAC3Eh8E,KAA2B,oBAAdlwB,EAAKkwB,KAAsBlwB,EAAKkwB,KAAO,KACpDi8E,mBAAuD,mBAA5BnsG,EAAKmsG,mBAAmCnsG,EAAKmsG,mBAAqB/jG,EAAS+jG,oBAM5FG,CAA0BtsG,GAKV,oBAAnB3hB,EAAQ2O,OAEf9B,GADA8B,EAAS3O,EAAQ2O,QACJ,GAAI9B,GACVE,EAAQ/M,EAAQ2O,UAEvBq/G,EADShuH,EAAQ2O,QAIrB,IAMIu/G,EANA3kH,EAAO,GAEX,GAAmB,kBAARsD,GAA4B,OAARA,EAC3B,MAAO,GAKPqhH,EADAvsG,GAAQA,EAAKusG,eAAerB,EACdlrG,EAAKusG,YACZvsG,GAAQ,YAAaA,EACdA,EAAKqrG,QAAU,UAAY,SAE3B,UAGlB,IAAIe,EAAsBlB,EAAsBqB,GAE3CF,IACDA,EAAUhvH,OAAOuK,KAAKsD,IAGtB7M,EAAQ6xC,MACRm8E,EAAQn8E,KAAK7xC,EAAQ6xC,MAGzB,IAAK,IAAI1zC,EAAI,EAAGA,EAAI6vH,EAAQ5vH,SAAUD,EAAG,CACrC,IAAIe,EAAM8uH,EAAQ7vH,GAEd6B,EAAQ6tH,WAA0B,OAAbhhH,EAAI3N,IAG7B+tH,EAAY1jH,EAAM0Y,EACdpV,EAAI3N,GACJA,EACA6uH,EACA/tH,EAAQ8tH,mBACR9tH,EAAQ6tH,UACR7tH,EAAQyc,OAASzc,EAAQytH,QAAU,KACnCztH,EAAQ2O,OACR3O,EAAQ6xC,KACR7xC,EAAQutH,UACRvtH,EAAQ4tH,cACR5tH,EAAQ2tH,UACR3tH,EAAQ0tH,iBACR1tH,EAAQqc,UAIhB,IAAI8xG,EAAS5kH,EAAKmD,KAAK1M,EAAQwgB,WAC3BrV,GAAoC,IAA3BnL,EAAQstH,eAA0B,IAAM,GAYrD,OAVIttH,EAAQwtH,kBACgB,eAApBxtH,EAAQqc,QAERlR,GAAU,uBAGVA,GAAU,mBAIXgjH,EAAO/vH,OAAS,EAAI+M,EAASgjH,EAAS,K,6BC3QjD,IAAIvB,EAAQrvH,EAAQ,IAEhB2d,EAAMlc,OAAOM,UAAUwH,eACvBiG,EAAU7D,MAAM6D,QAEhBgd,EAAW,CACXwjG,WAAW,EACXjwG,iBAAiB,EACjB8wG,WAAY,GACZ/xG,QAAS,QACTmxG,iBAAiB,EACjBT,OAAO,EACP3wG,QAASwwG,EAAM1wG,OACfsE,UAAW,IACX6tG,MAAO,EACPC,mBAAmB,EACnBC,0BAA0B,EAC1BC,eAAgB,IAChBC,aAAa,EACblzG,cAAc,EACduyG,oBAAoB,GAGpBS,EAA2B,SAAUpyG,GACrC,OAAOA,EAAIhX,QAAQ,aAAa,SAAU0X,EAAI6xG,GAC1C,OAAOnvH,OAAOyjB,aAAalG,SAAS4xG,EAAW,SAInDC,EAAkB,SAAU5yG,EAAK/b,GACjC,OAAI+b,GAAsB,kBAARA,GAAoB/b,EAAQ+sH,OAAShxG,EAAI5a,QAAQ,MAAQ,EAChE4a,EAAI5Y,MAAM,KAGd4Y,GAgHP6yG,EAAY,SAA8BC,EAAU9yG,EAAK/b,EAAS8uH,GAClE,GAAKD,EAAL,CAKA,IAAI3vH,EAAMc,EAAQutH,UAAYsB,EAAS1pH,QAAQ,cAAe,QAAU0pH,EAKpErkH,EAAQ,gBAIRuX,EAAU/hB,EAAQquH,MAAQ,GALf,eAK6B5tG,KAAKvhB,GAC7CmmB,EAAStD,EAAU7iB,EAAIsO,MAAM,EAAGuU,EAAQrW,OAASxM,EAIjDqK,EAAO,GACX,GAAI8b,EAAQ,CAER,IAAKrlB,EAAQub,cAAgBL,EAAInU,KAAK/H,OAAOM,UAAW+lB,KAC/CrlB,EAAQsd,gBACT,OAIR/T,EAAKR,KAAKsc,GAMd,IADA,IAAIlnB,EAAI,EACD6B,EAAQquH,MAAQ,GAAqC,QAA/BtsG,EAAUvX,EAAMiW,KAAKvhB,KAAkBf,EAAI6B,EAAQquH,OAAO,CAEnF,GADAlwH,GAAK,GACA6B,EAAQub,cAAgBL,EAAInU,KAAK/H,OAAOM,UAAWyiB,EAAQ,GAAGvU,MAAM,GAAI,MACpExN,EAAQsd,gBACT,OAGR/T,EAAKR,KAAKgZ,EAAQ,IAStB,OAJIA,GACAxY,EAAKR,KAAK,IAAM7J,EAAIsO,MAAMuU,EAAQrW,OAAS,KAnFjC,SAAUqjH,EAAOhzG,EAAK/b,EAAS8uH,GAG7C,IAFA,IAAIE,EAAOF,EAAe/yG,EAAM4yG,EAAgB5yG,EAAK/b,GAE5C7B,EAAI4wH,EAAM3wH,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACxC,IAAI0O,EACAm3G,EAAO+K,EAAM5wH,GAEjB,GAAa,OAAT6lH,GAAiBhkH,EAAQyuH,YACzB5hH,EAAM,GAAG1D,OAAO6lH,OACb,CACHniH,EAAM7M,EAAQub,aAAevc,OAAOgM,OAAO,MAAQ,GACnD,IAAIikH,EAA+B,MAAnBjL,EAAKz4G,OAAO,IAA+C,MAAjCy4G,EAAKz4G,OAAOy4G,EAAK5lH,OAAS,GAAa4lH,EAAKx2G,MAAM,GAAI,GAAKw2G,EACjGt4G,EAAQoR,SAASmyG,EAAW,IAC3BjvH,EAAQyuH,aAA6B,KAAdQ,GAGvBtrE,MAAMj4C,IACJs4G,IAASiL,GACT1vH,OAAOmM,KAAWujH,GAClBvjH,GAAS,GACR1L,EAAQyuH,aAAe/iH,GAAS1L,EAAQouH,YAE5CvhH,EAAM,IACFnB,GAASsjH,EAEbniH,EAAIoiH,GAAaD,EAXjBniH,EAAM,CAAEqiH,EAAGF,GAenBA,EAAOniH,EAGX,OAAOmiH,EAsDAG,CAAY5lH,EAAMwS,EAAK/b,EAAS8uH,KAqC3CzxH,EAAOC,QAAU,SAAU6e,EAAKwF,GAC5B,IAAI3hB,EAnCoB,SAA+B2hB,GACvD,IAAKA,EACD,OAAOoI,EAGX,GAAqB,OAAjBpI,EAAKvF,cAAqCra,IAAjB4f,EAAKvF,SAAiD,oBAAjBuF,EAAKvF,QACnE,MAAM,IAAItc,UAAU,iCAGxB,GAA4B,qBAAjB6hB,EAAKtF,SAA4C,UAAjBsF,EAAKtF,SAAwC,eAAjBsF,EAAKtF,QACxE,MAAM,IAAIvc,UAAU,qEAExB,IAAIuc,EAAkC,qBAAjBsF,EAAKtF,QAA0B0N,EAAS1N,QAAUsF,EAAKtF,QAE5E,MAAO,CACHkxG,UAAqC,qBAAnB5rG,EAAK4rG,UAA4BxjG,EAASwjG,YAAc5rG,EAAK4rG,UAC/EjwG,gBAAiD,mBAAzBqE,EAAKrE,gBAAgCqE,EAAKrE,gBAAkByM,EAASzM,gBAC7F8wG,WAAuC,kBAApBzsG,EAAKysG,WAA0BzsG,EAAKysG,WAAarkG,EAASqkG,WAC7E/xG,QAASA,EACTmxG,gBAAiD,mBAAzB7rG,EAAK6rG,gBAAgC7rG,EAAK6rG,gBAAkBzjG,EAASyjG,gBAC7FT,MAA6B,mBAAfprG,EAAKorG,MAAsBprG,EAAKorG,MAAQhjG,EAASgjG,MAC/D3wG,QAAiC,oBAAjBuF,EAAKvF,QAAyBuF,EAAKvF,QAAU2N,EAAS3N,QACtEoE,UAAqC,kBAAnBmB,EAAKnB,WAA0BosG,EAAMzvG,SAASwE,EAAKnB,WAAamB,EAAKnB,UAAYuJ,EAASvJ,UAE5G6tG,MAA8B,kBAAf1sG,EAAK0sG,QAAqC,IAAf1sG,EAAK0sG,OAAoB1sG,EAAK0sG,MAAQtkG,EAASskG,MACzFC,mBAA8C,IAA3B3sG,EAAK2sG,kBACxBC,yBAAmE,mBAAlC5sG,EAAK4sG,yBAAyC5sG,EAAK4sG,yBAA2BxkG,EAASwkG,yBACxHC,eAA+C,kBAAxB7sG,EAAK6sG,eAA8B7sG,EAAK6sG,eAAiBzkG,EAASykG,eACzFC,aAAkC,IAArB9sG,EAAK8sG,YAClBlzG,aAA2C,mBAAtBoG,EAAKpG,aAA6BoG,EAAKpG,aAAewO,EAASxO,aACpFuyG,mBAAuD,mBAA5BnsG,EAAKmsG,mBAAmCnsG,EAAKmsG,mBAAqB/jG,EAAS+jG,oBAK5FsB,CAAsBztG,GAEpC,GAAY,KAARxF,GAAsB,OAARA,GAA+B,qBAARA,EACrC,OAAOnc,EAAQub,aAAevc,OAAOgM,OAAO,MAAQ,GASxD,IANA,IAAIqkH,EAAyB,kBAARlzG,EAlMP,SAAgCA,EAAKnc,GACnD,IAKI7B,EALA0O,EAAM,GACNyiH,EAAWtvH,EAAQsuH,kBAAoBnyG,EAAIhX,QAAQ,MAAO,IAAMgX,EAChEy4B,EAAQ50C,EAAQwuH,iBAAmB1gG,SAAW/rB,EAAY/B,EAAQwuH,eAClEhsG,EAAQ8sG,EAASnsH,MAAMnD,EAAQwgB,UAAWo0B,GAC1C26E,GAAa,EAGblzG,EAAUrc,EAAQqc,QACtB,GAAIrc,EAAQwtH,gBACR,IAAKrvH,EAAI,EAAGA,EAAIqkB,EAAMpkB,SAAUD,EACM,IAA9BqkB,EAAMrkB,GAAGgD,QAAQ,WAbX,mBAcFqhB,EAAMrkB,GACNke,EAAU,QAlBZ,wBAmBSmG,EAAMrkB,KACbke,EAAU,cAEdkzG,EAAYpxH,EACZA,EAAIqkB,EAAMpkB,QAKtB,IAAKD,EAAI,EAAGA,EAAIqkB,EAAMpkB,SAAUD,EAC5B,GAAIA,IAAMoxH,EAAV,CAGA,IAKIrwH,EAAK6c,EALLvP,EAAOgW,EAAMrkB,GAEbqxH,EAAmBhjH,EAAKrL,QAAQ,MAChCmwG,GAA4B,IAAtBke,EAA0BhjH,EAAKrL,QAAQ,KAAOquH,EAAmB,GAG9D,IAATle,GACApyG,EAAMc,EAAQoc,QAAQ5P,EAAMud,EAAS3N,QAASC,EAAS,OACvDN,EAAM/b,EAAQ8tH,mBAAqB,KAAO,KAE1C5uH,EAAMc,EAAQoc,QAAQ5P,EAAKgB,MAAM,EAAG8jG,GAAMvnF,EAAS3N,QAASC,EAAS,OACrEN,EAAM6wG,EAAMxvG,SACRuxG,EAAgBniH,EAAKgB,MAAM8jG,EAAM,GAAItxG,IACrC,SAAUyvH,GACN,OAAOzvH,EAAQoc,QAAQqzG,EAAY1lG,EAAS3N,QAASC,EAAS,aAKtEN,GAAO/b,EAAQuuH,0BAAwC,eAAZlyG,IAC3CN,EAAMwyG,EAAyBxyG,IAG/BvP,EAAKrL,QAAQ,QAAU,IACvB4a,EAAMhP,EAAQgP,GAAO,CAACA,GAAOA,GAG7Bb,EAAInU,KAAK8F,EAAK3N,GACd2N,EAAI3N,GAAO0tH,EAAMnxG,QAAQ5O,EAAI3N,GAAM6c,GAEnClP,EAAI3N,GAAO6c,EAInB,OAAOlP,EAqIiC6iH,CAAYvzG,EAAKnc,GAAWmc,EAChEtP,EAAM7M,EAAQub,aAAevc,OAAOgM,OAAO,MAAQ,GAInDzB,EAAOvK,OAAOuK,KAAK8lH,GACdlxH,EAAI,EAAGA,EAAIoL,EAAKnL,SAAUD,EAAG,CAClC,IAAIe,EAAMqK,EAAKpL,GACXg+F,EAASyyB,EAAU1vH,EAAKmwH,EAAQnwH,GAAMc,EAAwB,kBAARmc,GAC1DtP,EAAM+/G,EAAM5uH,MAAM6O,EAAKsvF,EAAQn8F,GAGnC,OAAO4sH,EAAMlxG,QAAQ7O,K,+BCxOzB,IAOI8iH,EAPA12D,EAAuB,kBAAZ9hD,QAAuBA,QAAU,KAC5Cy4G,EAAe32D,GAAwB,oBAAZA,EAAE14D,MAC7B04D,EAAE14D,MACF,SAAsB7B,EAAQo9F,EAAUhtF,GACxC,OAAOgJ,SAASxY,UAAUiB,MAAMwG,KAAKrI,EAAQo9F,EAAUhtF,IAKzD6gH,EADE12D,GAA0B,oBAAdA,EAAEt+C,QACCs+C,EAAEt+C,QACV3b,OAAO0a,sBACC,SAAwBhb,GACvC,OAAOM,OAAOya,oBAAoB/a,GAC/ByK,OAAOnK,OAAO0a,sBAAsBhb,KAGxB,SAAwBA,GACvC,OAAOM,OAAOya,oBAAoB/a,IAQtC,IAAImxH,EAAcv1F,OAAOqpB,OAAS,SAAqBjjD,GACrD,OAAOA,IAAUA,GAGnB,SAAS+yC,IACPA,EAAa5pB,KAAK9iB,KAAKpH,MAEzBtC,EAAOC,QAAUm2C,EACjBp2C,EAAOC,QAAQmqB,KAwYf,SAAc1I,EAAS9X,GACrB,OAAO,IAAI7E,SAAQ,SAAUC,EAASC,GACpC,SAASwtH,SACe/tH,IAAlBguH,GACFhxG,EAAQixG,eAAe,QAASD,GAElC1tH,EAAQ,GAAGmL,MAAMzG,KAAKvG,YAExB,IAAIuvH,EAQS,UAAT9oH,IACF8oH,EAAgB,SAAuB1uH,GACrC0d,EAAQixG,eAAe/oH,EAAM6oH,GAC7BxtH,EAAOjB,IAGT0d,EAAQ0I,KAAK,QAASsoG,IAGxBhxG,EAAQ0I,KAAKxgB,EAAM6oH,OA9ZvBr8E,EAAaA,aAAeA,EAE5BA,EAAan0C,UAAU2wH,aAAUluH,EACjC0xC,EAAan0C,UAAU4wH,aAAe,EACtCz8E,EAAan0C,UAAU6wH,mBAAgBpuH,EAIvC,IAAIquH,EAAsB,GAE1B,SAASC,EAAc3hH,GACrB,GAAwB,oBAAbA,EACT,MAAM,IAAI5O,UAAU,0EAA4E4O,GAsCpG,SAAS4hH,EAAiBC,GACxB,YAA2BxuH,IAAvBwuH,EAAKJ,cACA18E,EAAa28E,oBACfG,EAAKJ,cAmDd,SAASK,EAAa9xH,EAAQma,EAAMnK,EAAU+hH,GAC5C,IAAI/vG,EACA2nB,EACAqoF,EA1HsBC,EAgJ1B,GApBAN,EAAc3hH,QAGC3M,KADfsmC,EAAS3pC,EAAOuxH,UAEd5nF,EAAS3pC,EAAOuxH,QAAUjxH,OAAOgM,OAAO,MACxCtM,EAAOwxH,aAAe,SAIKnuH,IAAvBsmC,EAAOuoF,cACTlyH,EAAO8pC,KAAK,cAAe3vB,EACfnK,EAASA,SAAWA,EAASA,SAAWA,GAIpD25B,EAAS3pC,EAAOuxH,SAElBS,EAAWroF,EAAOxvB,SAGH9W,IAAb2uH,EAEFA,EAAWroF,EAAOxvB,GAAQnK,IACxBhQ,EAAOwxH,kBAeT,GAbwB,oBAAbQ,EAETA,EAAWroF,EAAOxvB,GAChB43G,EAAU,CAAC/hH,EAAUgiH,GAAY,CAACA,EAAUhiH,GAErC+hH,EACTC,EAASjkH,QAAQiC,GAEjBgiH,EAAS3nH,KAAK2F,IAIhBgS,EAAI4vG,EAAiB5xH,IACb,GAAKgyH,EAAStyH,OAASsiB,IAAMgwG,EAASG,OAAQ,CACpDH,EAASG,QAAS,EAGlB,IAAIr5D,EAAI,IAAInsD,MAAM,+CACEqlH,EAAStyH,OAAS,IAAMmB,OAAOsZ,GADjC,qEAIlB2+C,EAAEvwD,KAAO,8BACTuwD,EAAEz4C,QAAUrgB,EACZ84D,EAAE3+C,KAAOA,EACT2+C,EAAEniB,MAAQq7E,EAAStyH,OA7KGuyH,EA8KHn5D,EA7KnBn3D,SAAWA,QAAQC,MAAMD,QAAQC,KAAKqwH,GAiL1C,OAAOjyH,EAcT,SAASoyH,IACP,IAAKnxH,KAAKoxH,MAGR,OAFApxH,KAAKjB,OAAOsxH,eAAerwH,KAAKkZ,KAAMlZ,KAAKqxH,QAC3CrxH,KAAKoxH,OAAQ,EACY,IAArBvwH,UAAUpC,OACLuB,KAAK+O,SAAS3H,KAAKpH,KAAKjB,QAC1BiB,KAAK+O,SAASnO,MAAMZ,KAAKjB,OAAQ8B,WAI5C,SAASywH,EAAUvyH,EAAQma,EAAMnK,GAC/B,IAAI7G,EAAQ,CAAEkpH,OAAO,EAAOC,YAAQjvH,EAAWrD,OAAQA,EAAQma,KAAMA,EAAMnK,SAAUA,GACjFwiH,EAAUJ,EAAY5oG,KAAKrgB,GAG/B,OAFAqpH,EAAQxiH,SAAWA,EACnB7G,EAAMmpH,OAASE,EACRA,EA0HT,SAASC,EAAWzyH,EAAQma,EAAMu4G,GAChC,IAAI/oF,EAAS3pC,EAAOuxH,QAEpB,QAAeluH,IAAXsmC,EACF,MAAO,GAET,IAAIgpF,EAAahpF,EAAOxvB,GACxB,YAAmB9W,IAAfsvH,EACK,GAEiB,oBAAfA,EACFD,EAAS,CAACC,EAAW3iH,UAAY2iH,GAAc,CAACA,GAElDD,EAsDT,SAAyB37G,GAEvB,IADA,IAAImc,EAAM,IAAI1oB,MAAMuM,EAAIrX,QACfD,EAAI,EAAGA,EAAIyzB,EAAIxzB,SAAUD,EAChCyzB,EAAIzzB,GAAKsX,EAAItX,GAAGuQ,UAAY+G,EAAItX,GAElC,OAAOyzB,EA1DL0/F,CAAgBD,GAAcE,EAAWF,EAAYA,EAAWjzH,QAoBpE,SAAS0T,EAAc+G,GACrB,IAAIwvB,EAAS1oC,KAAKswH,QAElB,QAAeluH,IAAXsmC,EAAsB,CACxB,IAAIgpF,EAAahpF,EAAOxvB,GAExB,GAA0B,oBAAfw4G,EACT,OAAO,EACF,QAAmBtvH,IAAfsvH,EACT,OAAOA,EAAWjzH,OAItB,OAAO,EAOT,SAASmzH,EAAW97G,EAAK7J,GAEvB,IADA,IAAIi+G,EAAO,IAAI3gH,MAAM0C,GACZzN,EAAI,EAAGA,EAAIyN,IAAKzN,EACvB0rH,EAAK1rH,GAAKsX,EAAItX,GAChB,OAAO0rH,EApWT7qH,OAAOC,eAAew0C,EAAc,sBAAuB,CACzD50C,YAAY,EACZ0C,IAAK,WACH,OAAO6uH,GAETjyG,IAAK,SAASs9E,GACZ,GAAmB,kBAARA,GAAoBA,EAAM,GAAKo0B,EAAYp0B,GACpD,MAAM,IAAIyV,WAAW,kGAAoGzV,EAAM,KAEjI20B,EAAsB30B,KAI1BhoD,EAAa5pB,KAAO,gBAEG9nB,IAAjBpC,KAAKswH,SACLtwH,KAAKswH,UAAYjxH,OAAO2X,eAAehX,MAAMswH,UAC/CtwH,KAAKswH,QAAUjxH,OAAOgM,OAAO,MAC7BrL,KAAKuwH,aAAe,GAGtBvwH,KAAKwwH,cAAgBxwH,KAAKwwH,oBAAiBpuH,GAK7C0xC,EAAan0C,UAAUkyH,gBAAkB,SAAyB5lH,GAChE,GAAiB,kBAANA,GAAkBA,EAAI,GAAKikH,EAAYjkH,GAChD,MAAM,IAAIslG,WAAW,gFAAkFtlG,EAAI,KAG7G,OADAjM,KAAKwwH,cAAgBvkH,EACdjM,MAST8zC,EAAan0C,UAAUmyH,gBAAkB,WACvC,OAAOnB,EAAiB3wH,OAG1B8zC,EAAan0C,UAAUkpC,KAAO,SAAc3vB,GAE1C,IADA,IAAI/J,EAAO,GACF3Q,EAAI,EAAGA,EAAIqC,UAAUpC,OAAQD,IAAK2Q,EAAK/F,KAAKvI,UAAUrC,IAC/D,IAAIuzH,EAAoB,UAAT74G,EAEXwvB,EAAS1oC,KAAKswH,QAClB,QAAeluH,IAAXsmC,EACFqpF,EAAWA,QAA4B3vH,IAAjBsmC,EAAOxkB,WAC1B,IAAK6tG,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI7iH,EAAK1Q,OAAS,IAChBuzH,EAAK7iH,EAAK,IACR6iH,aAActmH,MAGhB,MAAMsmH,EAGR,IAAItwH,EAAM,IAAIgK,MAAM,oBAAsBsmH,EAAK,KAAOA,EAAGrwH,QAAU,IAAM,KAEzE,MADAD,EAAIgE,QAAUssH,EACRtwH,EAGR,IAAI2c,EAAUqqB,EAAOxvB,GAErB,QAAgB9W,IAAZic,EACF,OAAO,EAET,GAAuB,oBAAZA,EACT4xG,EAAa5xG,EAASre,KAAMmP,OAE5B,KAAIwL,EAAM0D,EAAQ5f,OACd6P,EAAYsjH,EAAWvzG,EAAS1D,GACpC,IAASnc,EAAI,EAAGA,EAAImc,IAAOnc,EACzByxH,EAAa3hH,EAAU9P,GAAIwB,KAAMmP,GAGrC,OAAO,GAiET2kC,EAAan0C,UAAUsyH,YAAc,SAAqB/4G,EAAMnK,GAC9D,OAAO8hH,EAAa7wH,KAAMkZ,EAAMnK,GAAU,IAG5C+kC,EAAan0C,UAAUye,GAAK01B,EAAan0C,UAAUsyH,YAEnDn+E,EAAan0C,UAAUuyH,gBACnB,SAAyBh5G,EAAMnK,GAC7B,OAAO8hH,EAAa7wH,KAAMkZ,EAAMnK,GAAU,IAqBhD+kC,EAAan0C,UAAUmoB,KAAO,SAAc5O,EAAMnK,GAGhD,OAFA2hH,EAAc3hH,GACd/O,KAAKoe,GAAGlF,EAAMo4G,EAAUtxH,KAAMkZ,EAAMnK,IAC7B/O,MAGT8zC,EAAan0C,UAAUwyH,oBACnB,SAA6Bj5G,EAAMnK,GAGjC,OAFA2hH,EAAc3hH,GACd/O,KAAKkyH,gBAAgBh5G,EAAMo4G,EAAUtxH,KAAMkZ,EAAMnK,IAC1C/O,MAIb8zC,EAAan0C,UAAU0wH,eACnB,SAAwBn3G,EAAMnK,GAC5B,IAAIjD,EAAM48B,EAAQ4jF,EAAU9tH,EAAG4zH,EAK/B,GAHA1B,EAAc3hH,QAGC3M,KADfsmC,EAAS1oC,KAAKswH,SAEZ,OAAOtwH,KAGT,QAAaoC,KADb0J,EAAO48B,EAAOxvB,IAEZ,OAAOlZ,KAET,GAAI8L,IAASiD,GAAYjD,EAAKiD,WAAaA,EACb,MAAtB/O,KAAKuwH,aACTvwH,KAAKswH,QAAUjxH,OAAOgM,OAAO,cAEtBq9B,EAAOxvB,GACVwvB,EAAO2nF,gBACTrwH,KAAK6oC,KAAK,iBAAkB3vB,EAAMpN,EAAKiD,UAAYA,SAElD,GAAoB,oBAATjD,EAAqB,CAGrC,IAFAwgH,GAAY,EAEP9tH,EAAIsN,EAAKrN,OAAS,EAAGD,GAAK,EAAGA,IAChC,GAAIsN,EAAKtN,KAAOuQ,GAAYjD,EAAKtN,GAAGuQ,WAAaA,EAAU,CACzDqjH,EAAmBtmH,EAAKtN,GAAGuQ,SAC3Bu9G,EAAW9tH,EACX,MAIJ,GAAI8tH,EAAW,EACb,OAAOtsH,KAEQ,IAAbssH,EACFxgH,EAAK4+C,QAiIf,SAAmB5+C,EAAMC,GACvB,KAAOA,EAAQ,EAAID,EAAKrN,OAAQsN,IAC9BD,EAAKC,GAASD,EAAKC,EAAQ,GAC7BD,EAAKI,MAlIGL,CAAUC,EAAMwgH,GAGE,IAAhBxgH,EAAKrN,SACPiqC,EAAOxvB,GAAQpN,EAAK,SAEQ1J,IAA1BsmC,EAAO2nF,gBACTrwH,KAAK6oC,KAAK,iBAAkB3vB,EAAMk5G,GAAoBrjH,GAG1D,OAAO/O,MAGb8zC,EAAan0C,UAAU2e,IAAMw1B,EAAan0C,UAAU0wH,eAEpDv8E,EAAan0C,UAAU0yH,mBACnB,SAA4Bn5G,GAC1B,IAAI5K,EAAWo6B,EAAQlqC,EAGvB,QAAe4D,KADfsmC,EAAS1oC,KAAKswH,SAEZ,OAAOtwH,KAGT,QAA8BoC,IAA1BsmC,EAAO2nF,eAUT,OATyB,IAArBxvH,UAAUpC,QACZuB,KAAKswH,QAAUjxH,OAAOgM,OAAO,MAC7BrL,KAAKuwH,aAAe,QACMnuH,IAAjBsmC,EAAOxvB,KACY,MAAtBlZ,KAAKuwH,aACTvwH,KAAKswH,QAAUjxH,OAAOgM,OAAO,aAEtBq9B,EAAOxvB,IAEXlZ,KAIT,GAAyB,IAArBa,UAAUpC,OAAc,CAC1B,IACIc,EADAqK,EAAOvK,OAAOuK,KAAK8+B,GAEvB,IAAKlqC,EAAI,EAAGA,EAAIoL,EAAKnL,SAAUD,EAEjB,oBADZe,EAAMqK,EAAKpL,KAEXwB,KAAKqyH,mBAAmB9yH,GAK1B,OAHAS,KAAKqyH,mBAAmB,kBACxBryH,KAAKswH,QAAUjxH,OAAOgM,OAAO,MAC7BrL,KAAKuwH,aAAe,EACbvwH,KAKT,GAAyB,oBAFzBsO,EAAYo6B,EAAOxvB,IAGjBlZ,KAAKqwH,eAAen3G,EAAM5K,QACrB,QAAkBlM,IAAdkM,EAET,IAAK9P,EAAI8P,EAAU7P,OAAS,EAAGD,GAAK,EAAGA,IACrCwB,KAAKqwH,eAAen3G,EAAM5K,EAAU9P,IAIxC,OAAOwB,MAoBb8zC,EAAan0C,UAAU2O,UAAY,SAAmB4K,GACpD,OAAOs4G,EAAWxxH,KAAMkZ,GAAM,IAGhC46B,EAAan0C,UAAU2yH,aAAe,SAAsBp5G,GAC1D,OAAOs4G,EAAWxxH,KAAMkZ,GAAM,IAGhC46B,EAAa3hC,cAAgB,SAASiN,EAASlG,GAC7C,MAAqC,oBAA1BkG,EAAQjN,cACViN,EAAQjN,cAAc+G,GAEtB/G,EAAc/K,KAAKgY,EAASlG,IAIvC46B,EAAan0C,UAAUwS,cAAgBA,EAiBvC2hC,EAAan0C,UAAU4yH,WAAa,WAClC,OAAOvyH,KAAKuwH,aAAe,EAAIP,EAAehwH,KAAKswH,SAAW,K,mDCxazD,IAAIp8F,EAuCJ,SAASs+F,EAAiB3wH,GAC7B,OAAOA,EAAGqX,OAASgb,EAAKmjF,QAErB,SAASob,EAAkB5wH,GAC9B,OAAOA,EAAGqX,OAASgb,EAAKw+F,SAErB,SAASC,EAAgB9wH,GAC5B,OAAOA,EAAGqX,OAASgb,EAAKt1B,OAErB,SAASg0H,EAAc/wH,GAC1B,OAAOA,EAAGqX,OAASgb,EAAKygD,KAErB,SAASk+C,EAAchxH,GAC1B,OAAOA,EAAGqX,OAASgb,EAAK2gB,KAErB,SAASi+E,EAAgBjxH,GAC5B,OAAOA,EAAGqX,OAASgb,EAAKqlD,OAErB,SAASw5C,EAAgBlxH,GAC5B,OAAOA,EAAGqX,OAASgb,EAAK8+F,OAErB,SAASC,EAAepxH,GAC3B,OAAOA,EAAGqX,OAASgb,EAAKg/F,MAErB,SAASC,EAAiBtxH,GAC7B,SAAUA,GAAoB,kBAAPA,GAA+B,IAAZA,EAAGqX,MAE1C,SAASk6G,EAAmBvxH,GAC/B,SAAUA,GAAoB,kBAAPA,GAA+B,IAAZA,EAAGqX,M,gQAlEjD,SAAWgb,GAIPA,EAAKA,EAAI,QAAc,GAAK,UAI5BA,EAAKA,EAAI,SAAe,GAAK,WAI7BA,EAAKA,EAAI,OAAa,GAAK,SAI3BA,EAAKA,EAAI,KAAW,GAAK,OAIzBA,EAAKA,EAAI,KAAW,GAAK,OAIzBA,EAAKA,EAAI,OAAa,GAAK,SAI3BA,EAAKA,EAAI,OAAa,GAAK,SAK3BA,EAAKA,EAAI,MAAY,GAAK,QAjC9B,CAkCGA,IAASA,EAAO,KC3BnB,IAAIxI,EAAyC,WACzC,IAAI2nG,EAAgB,SAAUvzH,EAAG8D,GAI7B,OAHAyvH,EAAgBh0H,OAAO0X,gBAClB,CAAExL,UAAW,cAAgBhC,OAAS,SAAUzJ,EAAG8D,GAAK9D,EAAEyL,UAAY3H,IACvE,SAAU9D,EAAG8D,GAAK,IAAK,IAAIoU,KAAKpU,EAAOA,EAAEuD,eAAe6Q,KAAIlY,EAAEkY,GAAKpU,EAAEoU,MACpDlY,EAAG8D,IAE5B,OAAO,SAAU9D,EAAG8D,GAEhB,SAAS+nB,IAAO3rB,KAAKsL,YAAcxL,EADnCuzH,EAAcvzH,EAAG8D,GAEjB9D,EAAEH,UAAkB,OAANiE,EAAavE,OAAOgM,OAAOzH,IAAM+nB,EAAGhsB,UAAYiE,EAAEjE,UAAW,IAAIgsB,IAV1C,GAazC2nG,EAAsC,WAStC,OARAA,EAAWj0H,OAAOkC,QAAU,SAASqqB,GACjC,IAAK,IAAInI,EAAGjlB,EAAI,EAAGyN,EAAIpL,UAAUpC,OAAQD,EAAIyN,EAAGzN,IAE5C,IAAK,IAAIwZ,KADTyL,EAAI5iB,UAAUrC,GACOa,OAAOM,UAAUwH,eAAeC,KAAKqc,EAAGzL,KACzD4T,EAAE5T,GAAKyL,EAAEzL,IAEjB,OAAO4T,IAEKhrB,MAAMZ,KAAMa,YAM5B0yH,EAA6B,SAAUC,GAEvC,SAASD,EAAY5xH,EAAS8xH,EAAUC,EAAOpwH,GAC3C,IAAI6b,EAAQq0G,EAAOpsH,KAAKpH,OAASA,KASjC,OARAmf,EAAMxd,QAAUA,EAChBwd,EAAMs0G,SAAWA,EACjBt0G,EAAMu0G,MAAQA,EACdv0G,EAAM7b,SAAWA,EACjB6b,EAAM7X,KAAO,cAC0B,oBAA5BoE,MAAMioH,mBACbjoH,MAAMioH,kBAAkBx0G,EAAOo0G,GAE5Bp0G,EA+EX,OA1FAuM,EAAU6nG,EAAaC,GAavBD,EAAYK,aAAe,SAAUH,EAAUC,GAC3C,SAASG,EAAIp6F,GACT,OAAOA,EAAGnc,WAAW,GAAGtM,SAAS,IAAI0K,cAEzC,SAASo4G,EAAcrwG,GACnB,OAAOA,EACFje,QAAQ,MAAO,QACfA,QAAQ,KAAM,OACdA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAgB,SAAUi0B,GAAM,MAAO,OAASo6F,EAAIp6F,MAC5Dj0B,QAAQ,yBAAyB,SAAUi0B,GAAM,MAAO,MAAQo6F,EAAIp6F,MAE7E,SAASs6F,EAAYtwG,GACjB,OAAOA,EACFje,QAAQ,MAAO,QACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,KAAM,OACdA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAgB,SAAUi0B,GAAM,MAAO,OAASo6F,EAAIp6F,MAC5Dj0B,QAAQ,yBAAyB,SAAUi0B,GAAM,MAAO,MAAQo6F,EAAIp6F,MAE7E,SAASu6F,EAAoBC,GACzB,OAAQA,EAAY/6G,MAChB,IAAK,UACD,MAAO,IAAO46G,EAAcG,EAAYljG,MAAQ,IACpD,IAAK,QACD,IAAImjG,EAAeD,EAAYpxG,MAAMzN,KAAI,SAAUvI,GAC/C,OAAOtD,MAAM6D,QAAQP,GACfknH,EAAYlnH,EAAK,IAAM,IAAMknH,EAAYlnH,EAAK,IAC9CknH,EAAYlnH,MAEtB,MAAO,KAAOonH,EAAYE,SAAW,IAAM,IAAMD,EAAe,IACpE,IAAK,MACD,MAAO,gBACX,IAAK,MACD,MAAO,eACX,IAAK,QACD,OAAOD,EAAYG,aA+B/B,MAAO,YA5BP,SAA0BC,GACtB,IACI71H,EACA2d,EAFAm4G,EAAeD,EAAUj/G,IAAI4+G,GAIjC,GADAM,EAAapiF,OACToiF,EAAa71H,OAAS,EAAG,CACzB,IAAKD,EAAI,EAAG2d,EAAI,EAAG3d,EAAI81H,EAAa71H,OAAQD,IACpC81H,EAAa91H,EAAI,KAAO81H,EAAa91H,KACrC81H,EAAan4G,GAAKm4G,EAAa91H,GAC/B2d,KAGRm4G,EAAa71H,OAAS0d,EAE1B,OAAQm4G,EAAa71H,QACjB,KAAK,EACD,OAAO61H,EAAa,GACxB,KAAK,EACD,OAAOA,EAAa,GAAK,OAASA,EAAa,GACnD,QACI,OAAOA,EAAazmH,MAAM,GAAI,GAAGd,KAAK,MAChC,QACAunH,EAAaA,EAAa71H,OAAS,IAMhC81H,CAAiBd,GAAY,WAH3Be,EAGmDd,GAFtD,IAAOI,EAAcU,GAAU,IAAO,gBAEyB,WAHnF,IAAuBA,GAKpBjB,EA3FsB,CA4F/B7nH,OAs7EK,IAAI+oH,EAp7EX,SAAmB9kG,EAAOtvB,GACtBA,OAAsB+B,IAAZ/B,EAAwBA,EAAU,GAC5C,IA0KIq0H,EA1KAC,EAAa,GACbC,EAAyB,CAAElgF,MAAOmgF,IAClCC,EAAwBD,GAQxBE,EAASC,GAAuB,KAAK,GAIrCC,EAASC,GAAqB,mBAC9BC,EAAS,IACTC,EAASJ,GAAuB,KAAK,GACrCK,EAAS,IACTC,EAASN,GAAuB,KAAK,GAIrCO,EAAUL,GAAqB,oBAC/BM,EAAU,WACVC,EAAUC,GAAqB,CAAC,IAAK,IAAK,IAAK,MAAM,GAAO,GAC5DC,EAiLO,CAAEz8G,KAAM,OAhLf08G,EAAUV,GAAqB,6BAE/BW,EAAUb,GAAuB,KAAK,GAEtCc,EAAUZ,GAAqB,uBAO/Ba,EAAU,KACVC,EAAUhB,GAAuB,MAAM,GAGvCiB,EAAU,SAAUv3H,GAEpB,OADAw3H,GAAWhqH,MACJxN,EAAM8G,QAAQ,OAAQ,KAE7B2wH,EAAU,IACVC,EAAUpB,GAAuB,KAAK,GACtCqB,EAAU,SACVC,EAAUtB,GAAuB,UAAU,GAC3CuB,EAAU,SAAUx1H,EAAOmY,EAAMxa,GACjC,OAAO40H,EAAS,CAAEp6G,KAAe,WAATA,EAAoBgb,EAAKt1B,OAAkB,SAATsa,EAAkBgb,EAAKygD,KAAOzgD,EAAK2gB,KAAMn2C,MAAOA,GAASA,EAAM,GAAIqC,MAAOA,GAASy1H,OAE7IC,EAAU,IACVC,EAAU1B,GAAuB,KAAK,GACtC2B,EAAU,QACVC,EAAUlB,GAAqB,CAAC,MAAM,GAAM,GAC5CmB,EAAU,gBACVC,EAAUpB,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,IAAK,IAAK,MAAM,GAAM,GAC9EqB,EAAU,YACVC,EAAUtB,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,OAAO,GAAO,GAKhEuB,EAAU,OACVC,EAAUlC,GAAuB,QAAQ,GACzCmC,EAAU,OACVC,EAAUpC,GAAuB,QAAQ,GACzCqC,EAAU,SACVC,EAAUtC,GAAuB,UAAU,GAC3CuC,EAAU,gBACVC,EAAUxC,GAAuB,iBAAiB,GAClDyC,EAAU,UACVC,EAAU1C,GAAuB,WAAW,GAc5C2C,EAAU,SACVC,EAAU5C,GAAuB,UAAU,GAe3C6C,EAAU7C,GAAuB,KAAK,GAatC8C,EAAU5C,GAAqB,cAC/B6C,EAAU,qEACVC,EAAUtC,GAAqB,CAAC,CAAC,KAAM,MAAO,IAAK,OAAQ,OAAQ,SAAU,CAAC,SAAU,UAAW,SAAU,SAAU,SAAU,SAAU,WAAW,GAAO,GAC7JuC,GAAU/C,GAAqB,kBAC/BgD,GAAU,0OACVC,GAAUzC,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,IAAK,CAAC,IAAK,KAAM,CAAC,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,CAAC,SAAU,UAAW,SAAU,SAAU,SAAU,SAAU,WAAW,GAAO,GACrd0C,GAAUlD,GAAqB,uBAC/BmD,GAAUnD,GAAqB,UAE/BoD,GAAUtD,GAAuB,KAAK,GAStCuD,IADUrD,GAAqB,cACrBA,GAAqB,uBAC/BsD,GAAU,KACVC,GAAUzD,GAAuB,MAAM,GAKvC0D,GAAU,SAAUh5G,GACpB,MAAc,MAANA,KACFi5G,MAA4B,MAANj5G,MA4wErBw2G,GAAWz3H,OAAS,GA3wEU,MAANihB,IAG/Bk5G,GAAU5D,GAAuB,MAAM,GAIvC6D,GAAU3D,GAAqB,mBAC/B4D,GAAU5D,GAAqB,aAE/B6D,GAAU/D,GAAuB,KAAK,GAEtCgE,GAAU,SACVC,GAAUvD,GAAqB,CAAC,CAAC,IAAK,OAAO,GAAO,GACpDwD,GAAU,SACVC,GAAUzD,GAAqB,CAAC,CAAC,IAAK,OAAO,GAAO,GAIpD0D,GAAUlE,GAAqB,WAC/BmE,GAAc,EACdC,GAAe,EACfC,GAAsB,CAAC,CAAEpoE,KAAM,EAAGqoE,OAAQ,IAC1CC,GAAiB,EACjBC,GAAsB,GACtBC,GAAkB,EAEtB,QAA0Bv3H,IAAtB/B,EAAQu5H,UAAyB,CACjC,KAAMv5H,EAAQu5H,aAAahF,GACvB,MAAM,IAAIlpH,MAAM,mCAAqCrL,EAAQu5H,UAAY,MAE7E9E,EAAwBF,EAAuBv0H,EAAQu5H,WAE3D,SAAS7oG,KACL,OAAOpB,EAAMjc,UAAU4lH,GAAcD,IAEzC,SAAS/1H,KACL,OAAOu2H,GAAoBP,GAAcD,IAQ7C,SAASn1G,GAAMviB,EAASm4H,GAIpB,MAyEJ,SAA8Bn4H,EAASm4H,GACnC,OAAO,IAAIvG,EAAY5xH,EAAS,GAAI,GAAIm4H,GA1ElCC,CAAqBp4H,EAH3Bm4H,OAA0B13H,IAAd03H,EACNA,EACAD,GAAoBP,GAAcD,KAG5C,SAASrE,GAAuBgF,EAAOC,GACnC,MAAO,CAAE/gH,KAAM,UAAW6X,KAAMipG,EAAOC,WAAYA,GAEvD,SAASvE,GAAqB7yG,EAAOsxG,EAAU8F,GAC3C,MAAO,CAAE/gH,KAAM,QAAS2J,MAAOA,EAAOsxG,SAAUA,EAAU8F,WAAYA,GAQ1E,SAAS/E,GAAqBd,GAC1B,MAAO,CAAEl7G,KAAM,QAASk7G,YAAaA,GAEzC,SAAS8F,GAAsBvoB,GAC3B,IACI35F,EADAmiH,EAAUZ,GAAoB5nB,GAElC,GAAIwoB,EACA,OAAOA,EAIP,IADAniH,EAAI25F,EAAM,GACF4nB,GAAoBvhH,IACxBA,IAOJ,IAJAmiH,EAAU,CACNhpE,MAFJgpE,EAAUZ,GAAoBvhH,IAEZm5C,KACdqoE,OAAQW,EAAQX,QAEbxhH,EAAI25F,GACqB,KAAxBhiF,EAAMrS,WAAWtF,IACjBmiH,EAAQhpE,OACRgpE,EAAQX,OAAS,GAGjBW,EAAQX,SAEZxhH,IAGJ,OADAuhH,GAAoB5nB,GAAOwoB,EACpBA,EAGf,SAASN,GAAoBO,EAAUC,GACnC,IAAIC,EAAkBJ,GAAsBE,GACxCG,EAAgBL,GAAsBG,GAC1C,MAAO,CACH3lF,MAAO,CACHzzB,OAAQm5G,EACRjpE,KAAMmpE,EAAgBnpE,KACtBqoE,OAAQc,EAAgBd,QAE5BzvH,IAAK,CACDkX,OAAQo5G,EACRlpE,KAAMopE,EAAcppE,KACpBqoE,OAAQe,EAAcf,SAIlC,SAASgB,GAASnG,GACVgF,GAAcI,KAGdJ,GAAcI,KACdA,GAAiBJ,GACjBK,GAAsB,IAE1BA,GAAoBtwH,KAAKirH,IAK7B,SAASoG,GAAyBpG,EAAWX,EAAOoG,GAChD,OAAO,IAAIvG,EAAYA,EAAYK,aAAaS,EAAWX,GAAQW,EAAWX,EAAOoG,GAEzF,SAASjF,KAGL,OADK6F,KAGT,SAASA,KACL,IAAIC,EAAIC,EAGR,IAFAD,EAAK,GACLC,EAAKC,KACED,IAAOjG,GACVgG,EAAGvxH,KAAKwxH,GACRA,EAAKC,KAET,OAAOF,EAEX,SAASE,KACL,IAAIF,EAiBJ,OAhBAA,EAmDJ,WACI,IAAIA,EAAIC,EACRD,EAAKtB,IACLuB,EAAKE,QACMnG,IACP2E,GAAeqB,EAnVAI,EAoVHH,EAAZA,EAnVGtH,EAAS,CAAEp6G,KAAMgb,EAAKmjF,QAASt2G,MAAOg6H,GAAevE,OADnD,IAAUuE,EAuVnB,OADAJ,EAAKC,EA3DAI,MACMrG,IACPgG,EAgFR,WACI,IAAIA,EAAIC,EAAQK,EAAQC,EACxBvB,KACAgB,EAAKtB,GACiC,MAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKzF,EACLkE,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASpF,IAGbwF,IAAOjG,GACFwG,OACMxG,IACPsG,EAAKG,QACMzG,GACFwG,OACMxG,GAC+B,MAAlChlG,EAAMrS,WAAW+7G,KACjB6B,EAAK7F,EACLgE,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAASlF,IAGb4F,IAAOvG,GACP2E,GAAeqB,EAhYf55H,EAiYak6H,EACbN,EADAC,EAhYbtH,EAAS,CAAEp6G,KAAMgb,EAAKw+F,SAAU3xH,MAAOA,GAASy1H,QAoYnC6C,GAAcsB,EACdA,EAAKhG,KAmBrB0E,GAAcsB,EACdA,EAAKhG,GA1ZC,IAAU5zH,EA4ZpB44H,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASvF,IAGjB,OAAO0F,EAnJEU,MACM1G,IACPgG,EAq+BZ,WACI,IAAIA,GACJA,EAxjBJ,WACI,IAAIA,EAAIC,EAAQK,EAAQC,EAAQI,EAAQC,EAAIC,EAAKC,EAAKC,EACtDf,EAAKtB,GACiC,MAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKzF,EACLkE,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASpF,IAGbwF,IAAOjG,GACFwG,OACMxG,IACPsG,EAAKG,QACMzG,GACFwG,OACMxG,GAC+B,KAAlChlG,EAAMrS,WAAW+7G,KACjB6B,EAAK/E,EACLkD,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAASpE,IAGb8E,IAAOvG,GACFwG,OACMxG,GACHhlG,EAAM3iB,OAAOqsH,GAAa,KAAOhD,GACjCiF,EAAKjF,EACLgD,IAAe,IAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAASlE,IAGbgF,IAAO3G,GACFwG,OACMxG,GACP4G,EAAKlC,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBmC,EAAMrF,EACNkD,OAGAmC,EAAM7G,EACkB,IAApBgF,IACAa,GAASpE,IAGboF,IAAQ7G,IACR8G,EAAMN,QACMxG,IACR+G,EAtH5C,WACI,IAAIf,EAAIC,EAAIe,EACZhB,EAAKtB,GACD1pG,EAAM3iB,OAAOqsH,GAAa,KAAOtD,GACjC6E,EAAK7E,EACLsD,IAAe,IAGfuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASxE,IAGb4E,IAAOjG,IACPgH,EAnCR,WACI,IAAIhB,EAAIC,EAAIe,EAIZ,GAHAhB,EAAKtB,GACLuB,EAAK,IACLe,EAAKC,QACMjH,EACP,KAAOgH,IAAOhH,GACViG,EAAGxxH,KAAKuyH,GACRA,EAAKC,UAIThB,EAAKjG,EAELiG,IAAOjG,IACP2E,GAAeqB,EACfC,EAlnBGtH,EAAS,CAAEp6G,KAAM,EAAgByH,OAknBvBi6G,GAlnByCpE,OAqnB1D,OADAmE,EAAKC,EAiBIiB,MACMlH,GACP2E,GAAeqB,EAEfA,EADAC,EAAae,IASjBtC,GAAcsB,EACdA,EAAKhG,GAELgG,IAAOhG,IACPgG,EAAKtB,GACLC,GAAeD,GAjpBKnD,GAAW9sH,KAAK,mBAopBhCwxH,GAFJA,GAlpB8D,QAopBrDx4H,EAGAuyH,KAEEA,IACPgH,EAAKb,QACMnG,GACP2E,GAAeqB,EAEfA,EADAC,EAAK3E,EAAQ0F,KASjBtC,GAAcsB,EACdA,EAAKhG,IAGb,OAAOgG,EA8DuCmB,MACMnH,EAER4G,EADAC,EAAM,CAACA,EAAKC,EAAKC,IAczBrC,GAAckC,EACdA,EAAK5G,GAEL4G,IAAO5G,IACP4G,EAAK,MAELA,IAAO5G,IACP6G,EAAML,QACMxG,GAC8B,MAAlChlG,EAAMrS,WAAW+7G,KACjBoC,EAAMpG,EACNgE,OAGAoC,EAAM9G,EACkB,IAApBgF,IACAa,GAASlF,IAGbmG,IAAQ9G,GACR2E,GAAeqB,EAEfA,EADAC,EAAKrE,EAAQ0E,EAAIK,EAAIC,KAIrBlC,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KAmBrB0E,GAAcsB,EACdA,EAAKhG,GAET,OAAOgG,EA8ZFoB,MACMpH,IACPgG,EA5KR,WACI,IAAIA,EAAIC,EAAQK,EAAQC,EAAQI,EAAQC,EAAIC,EAAKC,EAAKC,EACtDf,EAAKtB,GACiC,MAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKzF,EACLkE,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASpF,IAGbwF,IAAOjG,GACFwG,OACMxG,IACPsG,EAAKG,QACMzG,GACFwG,OACMxG,GAC+B,KAAlChlG,EAAMrS,WAAW+7G,KACjB6B,EAAK/E,EACLkD,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAASpE,IAGb8E,IAAOvG,GACFwG,OACMxG,GACHhlG,EAAM3iB,OAAOqsH,GAAa,KAAOpC,GACjCqE,EAAKrE,EACLoC,IAAe,IAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAAStD,IAGboE,IAAO3G,IACHhlG,EAAM3iB,OAAOqsH,GAAa,KAAOlC,GACjCmE,EAAKnE,EACLkC,IAAe,IAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAASpD,KAIjBkE,IAAO3G,GACFwG,OACMxG,GACP4G,EAAKlC,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBmC,EAAMrF,EACNkD,OAGAmC,EAAM7G,EACkB,IAApBgF,IACAa,GAASpE,IAGboF,IAAQ7G,IACR8G,EAAMN,QACMxG,IACR+G,EAlI5C,WACI,IAAIf,EAAIC,EAAIe,EACZhB,EAAKtB,GACD1pG,EAAM3iB,OAAOqsH,GAAa,KAAOtD,GACjC6E,EAAK7E,EACLsD,IAAe,IAGfuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASxE,IAGb4E,IAAOjG,IACPgH,EAhDR,WACI,IAAIhB,EAAIC,EAAIe,EAAIV,EAChBN,EAAKtB,GACLuB,EAAKvB,GACLsC,EAAK,IACLV,EAAKe,QACMrH,IACPsG,EAAKgB,MAET,GAAIhB,IAAOtG,EACP,KAAOsG,IAAOtG,GACVgH,EAAGvyH,KAAK6xH,IACRA,EAAKe,QACMrH,IACPsG,EAAKgB,WAKbN,EAAKhH,EAGLiG,EADAe,IAAOhH,EACFhlG,EAAMjc,UAAUknH,EAAIvB,IAGpBsC,EAELf,IAAOjG,IACP2E,GAAeqB,EACfC,EAt+BGtH,EAAS,CAAEp6G,KAAM,EAAkBuI,QAs+BzBm5G,GAt+B6CpE,OAy+B9D,OADAmE,EAAKC,EAiBIsB,MACMvH,GACP2E,GAAeqB,EAEfA,EADAC,EAAae,IASjBtC,GAAcsB,EACdA,EAAKhG,GAELgG,IAAOhG,IACPgG,EAAKtB,GACLC,GAAeD,GAxgCKnD,GAAW9sH,KAAK,uBA2gChCwxH,GAFJA,GAzgCkE,QA2gCzDx4H,EAGAuyH,KAEEA,IACPgH,EAAKb,QACMnG,GACP2E,GAAeqB,EAEfA,EADAC,EAAK3E,EAAQ0F,KASjBtC,GAAcsB,EACdA,EAAKhG,IAGb,OAAOgG,EA0EuCwB,MACMxH,EAER4G,EADAC,EAAM,CAACA,EAAKC,EAAKC,IAczBrC,GAAckC,EACdA,EAAK5G,GAEL4G,IAAO5G,IACP4G,EAAK,MAELA,IAAO5G,IACP6G,EAAML,QACMxG,GAC8B,MAAlChlG,EAAMrS,WAAW+7G,KACjBoC,EAAMpG,EACNgE,OAGAoC,EAAM9G,EACkB,IAApBgF,IACAa,GAASlF,IAGbmG,IAAQ9G,GACR2E,GAAeqB,EAEfA,EADAC,EAAKrE,EAAQ0E,EAAIK,EAAIC,KAIrBlC,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KAmBrB0E,GAAcsB,EACdA,EAAKhG,GAET,OAAOgG,EAMEyB,IAET,OAAOzB,EA3+BM0B,MACM1H,IACPgG,EA2+BhB,WACI,IAAIA,EAAIC,EAAQK,EAAQC,EAAQI,EAAQC,EAASE,EAAKC,EAAKY,EAAKC,EAAKC,EACrE7B,EAAKtB,GACiC,MAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKzF,EACLkE,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASpF,IAGjB,GAAIwF,IAAOjG,EAEP,GADKwG,OACMxG,EAEP,IADAsG,EAAKG,QACMzG,EAEP,GADKwG,OACMxG,EAWP,GAVsC,KAAlChlG,EAAMrS,WAAW+7G,KACjB6B,EAAK/E,EACLkD,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAASpE,IAGb8E,IAAOvG,EAEP,GADKwG,OACMxG,EAuBP,GAtBIhlG,EAAM3iB,OAAOqsH,GAAa,KAAOhC,GACjCiE,EAAKjE,EACLgC,IAAe,IAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAASlD,IAGbgE,IAAO3G,IACHhlG,EAAM3iB,OAAOqsH,GAAa,MAAQ9B,GAClC+D,EAAK/D,EACL8B,IAAe,KAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAAShD,KAIjB8D,IAAO3G,EAEP,GADKwG,OACMxG,EAWP,GAVsC,KAAlChlG,EAAMrS,WAAW+7G,KACjBkC,EAAKpF,EACLkD,OAGAkC,EAAK5G,EACmB,IAApBgF,IACAa,GAASpE,IAGbmF,IAAO5G,EAEP,GADMwG,OACMxG,EAqCR,GApCA8G,EAAMpC,GACF1pG,EAAM3iB,OAAOqsH,GAAa,KAAO5B,GACjCiE,EAAMjE,EACN4B,IAAe,IAGfqC,EAAM/G,EACkB,IAApBgF,IACAa,GAAS9C,IAGbgE,IAAQ/G,IACR2H,EAAMnB,QACMxG,IACR4H,EAAME,QACM9H,EAER8G,EADAC,EAAM,CAACA,EAAKY,EAAKC,IAczBlD,GAAcoC,EACdA,EAAM9G,GAEN8G,IAAQ9G,IACR8G,EAAM,MAENA,IAAQ9G,EAER,IADA+G,EAAMP,QACMxG,EAAY,CAGpB,GAFA2H,EAAM,IACNC,EAAMG,QACM/H,EACR,KAAO4H,IAAQ5H,GACX2H,EAAIlzH,KAAKmzH,GACTA,EAAMG,UAIVJ,EAAM3H,EAEN2H,IAAQ3H,IACR4H,EAAMpB,QACMxG,GAC8B,MAAlChlG,EAAMrS,WAAW+7G,KACjBmD,EAAMnH,EACNgE,OAGAmD,EAAM7H,EACkB,IAApBgF,IACAa,GAASlF,IAGbkH,IAAQ7H,GACR2E,GAAeqB,EAEfA,EADAC,EAh1ClD,SAAU75H,EAAO47H,EAAY17G,EAAQ5gB,GAC/C,OAAOizH,EAAS,CAAEp6G,KAAMgb,EAAK8+F,OAAQ2J,WAA2B,WAAfA,EAA0B,WAAa,UAAW57H,MAAOA,EAAOkgB,OAAQA,EAASA,EAAO,GAAK,EAAG5gB,QAASA,EAAQqD,QAAO,SAAUy3C,EAAKyhF,GAChL,IAAI16H,EAAK06H,EAAG16H,GAAInB,EAAQ67H,EAAG77H,MAAO87H,EAAiBD,EAAGt5H,SAQtD,OAPIpB,KAAMi5C,GACNj3B,GAAM,qBAAwBhiB,EAAK,yBAA6B6uB,KAAS,IAAMztB,MAEnF63C,EAAIj5C,GAAM,CACNnB,MAAOA,EACPuC,SAAUu5H,GAEP1hF,IACR,KAAOq7E,MAq0CmDsG,CAAQ7B,EAAIK,EAAIG,EAAKa,KAI1BjD,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,QAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,EAET,OAAOgG,EAhsCUoC,MACMpI,IACPgG,EAgsCpB,WACI,IAAIA,EAAIC,EAAQK,EAAQC,EAAQI,EAAQC,EAASE,EAAKC,EAAKY,EAC3D3B,EAAKtB,GACiC,MAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKzF,EACLkE,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASpF,IAGjB,GAAIwF,IAAOjG,EAEP,GADKwG,OACMxG,EAEP,IADAsG,EAAKG,QACMzG,EAEP,GADKwG,OACMxG,EAWP,GAVsC,KAAlChlG,EAAMrS,WAAW+7G,KACjB6B,EAAK/E,EACLkD,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAASpE,IAGb8E,IAAOvG,EAEP,GADKwG,OACMxG,EAWP,GAVIhlG,EAAM3iB,OAAOqsH,GAAa,KAAO1B,GACjC2D,EAAK3D,EACL0B,IAAe,IAGfiC,EAAK3G,EACmB,IAApBgF,IACAa,GAAS5C,IAGb0D,IAAO3G,EAEP,GADKwG,OACMxG,EAWP,GAVsC,KAAlChlG,EAAMrS,WAAW+7G,KACjBkC,EAAKpF,EACLkD,OAGAkC,EAAK5G,EACmB,IAApBgF,IACAa,GAASpE,IAGbmF,IAAO5G,EAEP,GADMwG,OACMxG,EAAY,CAGpB,GAFA8G,EAAM,IACNC,EAAMsB,QACMrI,EACR,KAAO+G,IAAQ/G,GACX8G,EAAIryH,KAAKsyH,GACTA,EAAMsB,UAIVvB,EAAM9G,EAEN8G,IAAQ9G,IACR+G,EAAMP,QACMxG,GAC8B,MAAlChlG,EAAMrS,WAAW+7G,KACjBiD,EAAMjH,EACNgE,OAGAiD,EAAM3H,EACkB,IAApBgF,IACAa,GAASlF,IAGbgH,IAAQ3H,GACR2E,GAAeqB,EAEfA,EADAC,EAr+C1C,SAAU75H,EAAOV,GAC3B,OAAOizH,EAAS,CAAEp6G,KAAMgb,EAAKqlD,OAAQx4E,MAAOA,EAAOV,QAASA,EAAQqD,QAAO,SAAUy3C,EAAKyhF,GAClF,IAAI16H,EAAK06H,EAAG16H,GAAInB,EAAQ67H,EAAG77H,MAAO87H,EAAiBD,EAAGt5H,SAQtD,OAPIpB,KAAMi5C,GACNj3B,GAAM,qBAAwBhiB,EAAK,yBAA6B6uB,KAAS,IAAMztB,MAEnF63C,EAAIj5C,GAAM,CACNnB,MAAOA,EACPuC,SAAUu5H,GAEP1hF,IACR,KAAOq7E,MA09C2CyG,CAAQhC,EAAIQ,KAIjBpC,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,QAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,EAET,OAAOgG,EAx1CcuC,MACMvI,IACPgG,EAoDxB,WACI,IAAIA,EAAIC,EACRD,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EA1VK,IA2VLvB,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASzF,IAGb6F,IAAOjG,IACP2E,GAAeqB,EACfC,EAlWGtH,EAAS,CAAEp6G,KAAMgb,EAAKg/F,OAASsD,OAqWtC,OADAmE,EAAKC,EArEoBuC,IAMlBxC,EAEX,SAASG,KACL,IAAIH,EAAIC,EAAIe,EAUZ,GATAhB,EAAKtB,GACLuB,EAAK,IACLe,EAAKyB,QACMzI,IACPgH,EAAK0B,QACM1I,IACPgH,EAAK2B,MAGT3B,IAAOhH,EACP,KAAOgH,IAAOhH,GACViG,EAAGxxH,KAAKuyH,IACRA,EAAKyB,QACMzI,IACPgH,EAAK0B,QACM1I,IACPgH,EAAK2B,WAMjB1C,EAAKjG,EAOT,OALIiG,IAAOjG,IACP2E,GAAeqB,EACfC,EAAYA,EA3UH7tH,KAAK,KA6UlB4tH,EAAKC,EAuGT,SAAS2C,KACL,IAAI5C,EAAIC,EAAIe,EAAIV,EAAIuC,EAoDpB,GAnDA7D,KACAgB,EAAKtB,GACLuB,EAAK,GACLe,EAAKtC,GACL4B,EAAK5B,GACLM,MACA6D,EAAKC,QACM9I,IACHa,EAAQz6G,KAAK4U,EAAM/jB,OAAOytH,MAC1BmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS/E,KAIrBkE,KACI6D,IAAO7I,EACPsG,OAAK74H,GAGLi3H,GAAc4B,EACdA,EAAKtG,GAELsG,IAAOtG,GACHhlG,EAAMlxB,OAAS46H,IACfmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS7E,IAGb6H,IAAO7I,EAEPgH,EADAV,EAAK,CAACA,EAAIuC,IAIVnE,GAAcsC,EACdA,EAAKhH,KAIT0E,GAAcsC,EACdA,EAAKhH,GAELgH,IAAOhH,EACP,KAAOgH,IAAOhH,GACViG,EAAGxxH,KAAKuyH,GACRA,EAAKtC,GACL4B,EAAK5B,GACLM,MACA6D,EAAKC,QACM9I,IACHa,EAAQz6G,KAAK4U,EAAM/jB,OAAOytH,MAC1BmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS/E,KAIrBkE,KACI6D,IAAO7I,EACPsG,OAAK74H,GAGLi3H,GAAc4B,EACdA,EAAKtG,GAELsG,IAAOtG,GACHhlG,EAAMlxB,OAAS46H,IACfmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS7E,IAGb6H,IAAO7I,EAEPgH,EADAV,EAAK,CAACA,EAAIuC,IAIVnE,GAAcsC,EACdA,EAAKhH,KAIT0E,GAAcsC,EACdA,EAAKhH,QAKbiG,EAAKjG,EAeT,OAZIgG,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAETjB,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASjF,IAGVoF,EAEX,SAAS+C,KACL,IAAI/C,EAAIC,EAAIe,EAoCZ,OAnCAhC,KACAgB,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EA9hBM,IA+hBNvB,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS3E,IAGb+E,IAAOjG,IACPgH,EAAK4B,QACM5I,GACP2E,GAAeqB,EAEfA,EADAC,EAAae,IASjBtC,GAAcsB,EACdA,EAAKhG,GAETgF,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAAS5E,IAGV+E,EAEX,SAASiB,KACL,IAAIjB,EAAQgB,EAAIV,EAAIuC,EAIpB,GAHA7D,KACAgB,EAAKtB,GACA8B,OACMxG,EAEP,IADAgH,EAAK4B,QACM5I,EAAY,CAGnB,IAFAsG,EAAK,GACLuC,EAAKE,KACEF,IAAO7I,GACVsG,EAAG7xH,KAAKo0H,GACRA,EAAKE,KAELzC,IAAOtG,GACP2E,GAAeqB,EAEfA,EA7kBF,SAAUgD,EAAMt9H,GAC1B,MAAO,CAAEs9H,KAAMA,EAAMt9H,QAASA,GA2kBbu9H,CAAQjC,EAAIV,KAIjB5B,GAAcsB,EACdA,EAAKhG,QAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,EAST,OAPAgF,KACIgB,IAAOhG,IACFA,EACmB,IAApBgF,IACAa,GAAS1E,IAGV6E,EA6OX,SAASqB,KACL,IAAIrB,EAAIC,EAAIe,EAAIV,EAYhB,GAXAN,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKnE,EACL4C,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS9D,IAGbkE,IAAOjG,EAAY,CAenB,GAdAgH,EAAK,IACLV,EAAKmC,QACMzI,IACHgC,EAAQ57G,KAAK4U,EAAM/jB,OAAOytH,MAC1B4B,EAAKtrG,EAAM/jB,OAAOytH,IAClBA,OAGA4B,EAAKtG,EACmB,IAApBgF,IACAa,GAAS5D,KAIjBqE,IAAOtG,EACP,KAAOsG,IAAOtG,GACVgH,EAAGvyH,KAAK6xH,IACRA,EAAKmC,QACMzI,IACHgC,EAAQ57G,KAAK4U,EAAM/jB,OAAOytH,MAC1B4B,EAAKtrG,EAAM/jB,OAAOytH,IAClBA,OAGA4B,EAAKtG,EACmB,IAApBgF,IACAa,GAAS5D,UAOzB+E,EAAKhH,EAELgH,IAAOhH,GAC+B,KAAlChlG,EAAMrS,WAAW+7G,KACjB4B,EAAKxE,EACL4C,OAGA4B,EAAKtG,EACmB,IAApBgF,IACAa,GAAS9D,IAGbuE,IAAOtG,EAEPgG,EADAC,EAAK,CAACA,EAAIe,EAAIV,IAId5B,GAAcsB,EACdA,EAAKhG,KAIT0E,GAAcsB,EACdA,EAAKhG,QAIT0E,GAAcsB,EACdA,EAAKhG,EAET,GAAIgG,IAAOhG,EAeP,GAdAgG,EAAK,IACLC,EAAKwC,QACMzI,IACHkC,EAAQ97G,KAAK4U,EAAM/jB,OAAOytH,MAC1BuB,EAAKjrG,EAAM/jB,OAAOytH,IAClBA,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS1D,KAIjB8D,IAAOjG,EACP,KAAOiG,IAAOjG,GACVgG,EAAGvxH,KAAKwxH,IACRA,EAAKwC,QACMzI,IACHkC,EAAQ97G,KAAK4U,EAAM/jB,OAAOytH,MAC1BuB,EAAKjrG,EAAM/jB,OAAOytH,IAClBA,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS1D,UAOzB6D,EAAKhG,EAGb,OAAOgG,EAEX,SAASsB,KACL,IAAItB,EAAIC,EAYR,GAXAD,EAAK,GACD5D,EAAQh8G,KAAK4U,EAAM/jB,OAAOytH,MAC1BuB,EAAKjrG,EAAM/jB,OAAOytH,IAClBA,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASxD,IAGb4D,IAAOjG,EACP,KAAOiG,IAAOjG,GACVgG,EAAGvxH,KAAKwxH,GACJ7D,EAAQh8G,KAAK4U,EAAM/jB,OAAOytH,MAC1BuB,EAAKjrG,EAAM/jB,OAAOytH,IAClBA,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASxD,SAMrB2D,EAAKhG,EAET,OAAOgG,EAuqBX,SAASqC,KACL,IAAIrC,EAAQgB,EAAQ6B,EAAQK,EAAIvC,EAnkDZp5H,EAAInB,EAkpDxB,OA9EA45H,EAAKtB,GACA8B,OACMxG,IACPgH,EAAKmC,QACMnJ,GACFwG,OACMxG,GAC+B,MAAlChlG,EAAMrS,WAAW+7G,KACjBmE,EAAKrI,EACLkE,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAASpF,IAGboI,IAAO7I,GACP2E,GAAeD,GAvlDLnD,GAAW9sH,KAAK,YAAkB,OA0lDnChH,EAGAuyH,KAEEA,IACPkJ,EAAKnD,QACM/F,GAC+B,MAAlChlG,EAAMrS,WAAW+7G,KACjBiC,EAAKjG,EACLgE,OAGAiC,EAAK3G,EACmB,IAApBgF,IACAa,GAASlF,IAGbgG,IAAO3G,GACP2E,GAAeqB,EA5mDvBz4H,EA6mDqBy5H,EA7mDjB56H,EA6mDqB88H,EA5mD7C3H,GAAWhqH,MA6mDiByuH,EA5mDrBrH,EAAS,CAAEpxH,GAAIA,EAClBnB,MAAOA,GAASy1H,QA8mDQ6C,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KAIT0E,GAAcsB,EACdA,EAAKhG,KAcjB0E,GAAcsB,EACdA,EAAKhG,GAEFgG,EAEX,SAAS+B,KACL,IAAI/B,EAAQgB,EAAQ6B,EAAQK,EAAIvC,EA/oDZp5H,EAAInB,EA8tDxB,OA9EA45H,EAAKtB,GACA8B,OACMxG,IACPgH,EA/HR,WACI,IAAIhB,EAAIC,EAAIe,EAAIV,EAqChB,OApCAN,EAAKtB,GACLuB,EAAKvB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBsC,EAliDM,IAmiDNtC,OAGAsC,EAAKhH,EACmB,IAApBgF,IACAa,GAAS3C,IAGb8D,IAAOhH,IACPsG,EAAKwB,QACM9H,EAEPiG,EADAe,EAAK,CAACA,EAAIV,IASd5B,GAAcuB,EACdA,EAAKjG,IAGLgG,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,KAEEjG,IACPgG,EAAKmD,MAEFnD,EAyFEoD,MACMpJ,GACFwG,OACMxG,GAC+B,MAAlChlG,EAAMrS,WAAW+7G,KACjBmE,EAAKrI,EACLkE,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAASpF,IAGboI,IAAO7I,GACP2E,GAAeD,GAnqDLnD,GAAW9sH,KAAK,YAAkB,OAsqDnChH,EAGAuyH,KAEEA,IACPkJ,EAAKnD,QACM/F,GAC+B,MAAlChlG,EAAMrS,WAAW+7G,KACjBiC,EAAKjG,EACLgE,OAGAiC,EAAK3G,EACmB,IAApBgF,IACAa,GAASlF,IAGbgG,IAAO3G,GACP2E,GAAeqB,EAxrDvBz4H,EAyrDqBy5H,EAzrDjB56H,EAyrDqB88H,EAxrD7C3H,GAAWhqH,MAyrDiByuH,EAxrDrBrH,EAAS,CAAEpxH,GAAIA,EAClBnB,MAAOA,GAASy1H,QA0rDQ6C,GAAcsB,EACdA,EAAKhG,KASb0E,GAAcsB,EACdA,EAAKhG,KAIT0E,GAAcsB,EACdA,EAAKhG,KAcjB0E,GAAcsB,EACdA,EAAKhG,GAEFgG,EAEX,SAAS8C,KACL,IAAI9C,EAmBJ,OAlBAhB,KACI5B,EAAQh9G,KAAK4U,EAAM/jB,OAAOytH,MAC1BsB,EAAKhrG,EAAM/jB,OAAOytH,IAClBA,OAGAsB,EAAKhG,EACmB,IAApBgF,IACAa,GAASxC,IAGjB2B,KACIgB,IAAOhG,IACFA,EACmB,IAApBgF,IACAa,GAAS1C,IAGV6C,EAEX,SAASqD,KACL,IAAIrD,EAmBJ,OAlBAhB,KACIzB,GAAQn9G,KAAK4U,EAAM/jB,OAAOytH,MAC1BsB,EAAKhrG,EAAM/jB,OAAOytH,IAClBA,OAGAsB,EAAKhG,EACmB,IAApBgF,IACAa,GAASrC,KAGjBwB,KACIgB,IAAOhG,IACFA,EACmB,IAApBgF,IACAa,GAASvC,KAGV0C,EAEX,SAASQ,KACL,IAAIR,EAAIC,EAAIe,EAKZ,IAJAhC,KACAgB,EAAKtB,GACLuB,EAAK,GACLe,EAAK8B,KACE9B,IAAOhH,GACViG,EAAGxxH,KAAKuyH,GACRA,EAAK8B,KAeT,OAZI9C,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAETjB,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASpC,KAGVuC,EAEX,SAAS8B,KACL,IAAI9B,EAAIC,EAAIe,EAvxDQsC,EAAUlvG,EA8zD9B,OAtCA4qG,KACAgB,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EA7xDM,IA8xDNvB,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASlC,KAGbsC,IAAOjG,IACPiG,EAAK,MAELA,IAAOjG,IACPgH,EAAKuC,QACMvJ,GACP2E,GAAeqB,EA1yDHsD,EA2yDCrD,EACbD,EADAC,GA3yDsB7rG,EA2yDL4sG,GAzyDnBsC,GACKlvG,EACDA,EACJ,IA+yDFsqG,GAAcsB,EACdA,EAAKhG,GAETgF,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASnC,KAGVsC,EAwBX,SAASyC,KACL,IAAIzC,EAAIC,EAyBR,OAxBAjB,KACAgB,EAAKtB,GACD1pG,EAAM3iB,OAAOqsH,GAAa,KAAOb,IACjCoC,EAAKpC,GACLa,IAAe,IAGfuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS/B,KAGbmC,IAAOjG,IACP2E,GAAeqB,EACfC,EA31D2B,KA81D/BjB,MADAgB,EAAKC,KAEMjG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASjC,KAGVoC,EAEX,SAAS0C,KACL,IAAI1C,EAAIC,EAAIe,EAAIV,EAAIuC,EAAItC,EAYxB,GAXAP,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAAKnE,EACL4C,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS9D,IAGbkE,IAAOjG,EAEP,IADAgH,EAyJR,WACI,IAAIhB,EAAIC,EAAIe,EAAIV,EAChBN,EAAKtB,GACLuB,EAAKvB,GACD1pG,EAAMlxB,OAAS46H,IACfsC,EAAKhsG,EAAM/jB,OAAOytH,IAClBA,OAGAsC,EAAKhH,EACmB,IAApBgF,IACAa,GAAS7E,IAGbgG,IAAOhH,GACP2E,GAAeD,IAGX4B,GAFJA,EAlhES,OADOv7G,EAmhEHi8G,IAlhES,MAANj8G,GAAci5G,MAA4B,MAANj5G,QAohE3Ctd,EAGAuyH,KAEEA,EAEPiG,EADAe,EAAK,CAACA,EAAIV,IAIV5B,GAAcuB,EACdA,EAAKjG,KAIT0E,GAAcuB,EACdA,EAAKjG,GAriEC,IAAUj1G,EAwiEhBi7G,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAET,OAAOD,EAnMEwD,MACMxJ,EAAY,CAyBnB,IAxBAsG,EAAK5B,GACLmE,EAAK,GACD7tG,EAAM3iB,OAAOqsH,GAAa,KAAOb,IACjC0C,EAAK1C,GACLa,IAAe,IAGf6B,EAAKvG,EACmB,IAApBgF,IACAa,GAAS/B,KAGbyC,IAAOvG,IACHgC,EAAQ57G,KAAK4U,EAAM/jB,OAAOytH,MAC1B6B,EAAKvrG,EAAM/jB,OAAOytH,IAClBA,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAAS5D,KAIdsE,IAAOvG,GACV6I,EAAGp0H,KAAK8xH,GACJvrG,EAAM3iB,OAAOqsH,GAAa,KAAOb,IACjC0C,EAAK1C,GACLa,IAAe,IAGf6B,EAAKvG,EACmB,IAApBgF,IACAa,GAAS/B,KAGbyC,IAAOvG,IACHgC,EAAQ57G,KAAK4U,EAAM/jB,OAAOytH,MAC1B6B,EAAKvrG,EAAM/jB,OAAOytH,IAClBA,OAGA6B,EAAKvG,EACmB,IAApBgF,IACAa,GAAS5D,MAMrBqE,EADAuC,IAAO7I,EACFhlG,EAAMjc,UAAUunH,EAAI5B,IAGpBmE,KAEE7I,GAC+B,KAAlChlG,EAAMrS,WAAW+7G,KACjBmE,EAAK/G,EACL4C,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS9D,IAGb8G,IAAO7I,IACP6I,EAAK,MAELA,IAAO7I,GACP2E,GAAeqB,EAEfA,EADAC,EAAae,EAAIV,EA57DAz1H,QAAQ,KAAM,OAg8D/B6zH,GAAcsB,EACdA,EAAKhG,KAIT0E,GAAcsB,EACdA,EAAKhG,QAIT0E,GAAcsB,EACdA,EAAKhG,OAIT0E,GAAcsB,EACdA,EAAKhG,EAET,OAAOgG,EAEX,SAAS2C,KACL,IAAI3C,EAAIC,EAAIe,EAAIV,EAqDhB,OApDAN,EAAKtB,GACLuB,EAAKvB,GACD1pG,EAAMlxB,OAAS46H,IACfsC,EAAKhsG,EAAM/jB,OAAOytH,IAClBA,OAGAsC,EAAKhH,EACmB,IAApBgF,IACAa,GAAS7E,IAGbgG,IAAOhH,GACP2E,GAAeD,IAGX4B,GAFJA,EAAKvC,GAAQiD,SAEJv5H,EAGAuyH,KAEEA,EAEPiG,EADAe,EAAK,CAACA,EAAIV,IAIV5B,GAAcuB,EACdA,EAAKjG,KAIT0E,GAAcuB,EACdA,EAAKjG,GAELiG,IAAOjG,IAC+B,KAAlChlG,EAAMrS,WAAW+7G,KACjBuB,EAn/DE,KAo/DFvB,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAAS5B,MAKjB+B,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAgDb,SAASQ,KACL,IAAIT,EAAIC,EAoBR,OAnBAjB,KACAgB,EAAKtB,IACLuB,EAAKsD,QACMvJ,IACPiG,EAAKkD,MAGLnD,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAETjB,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAAS3B,KAGV8B,EAEX,SAASuD,KACL,IAAIvD,EAAIC,EAAIe,EAAIV,EAAIuC,EAkBpB,GAjBA7D,KACAgB,EAAKtB,GACiC,KAAlC1pG,EAAMrS,WAAW+7G,KACjBuB,EAtkEM,IAukENvB,OAGAuB,EAAKjG,EACmB,IAApBgF,IACAa,GAASzB,KAGb6B,IAAOjG,IACP2E,GAAeqB,EACfC,EA/kE2B,IAilE/BD,EAAKC,KACMjG,EAAY,CAanB,GAZAgG,EAAKtB,GACLuB,EAAKvB,GACDL,GAAQj+G,KAAK4U,EAAM/jB,OAAOytH,MAC1BsC,EAAKhsG,EAAM/jB,OAAOytH,IAClBA,OAGAsC,EAAKhH,EACmB,IAApBgF,IACAa,GAASvB,KAGb0C,IAAOhH,EAAY,CAYnB,IAXAsG,EAAK,GACD/B,GAAQn+G,KAAK4U,EAAM/jB,OAAOytH,MAC1BmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAASrB,KAGVqE,IAAO7I,GACVsG,EAAG7xH,KAAKo0H,GACJtE,GAAQn+G,KAAK4U,EAAM/jB,OAAOytH,MAC1BmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAASrB,KAIjB8B,IAAOtG,EAEPiG,EADAe,EAAK,CAACA,EAAIV,IAIV5B,GAAcuB,EACdA,EAAKjG,QAIT0E,GAAcuB,EACdA,EAAKjG,EAELiG,IAAOjG,IACP2E,GAAeqB,EACfC,EAjoEDz9G,SAioEcy9G,EAjoEE7tH,KAAK,IAAK,KAmoE7B4tH,EAAKC,EAST,OAPAjB,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAAS1B,KAGV6B,EAEX,SAASmD,KACL,IAAInD,EAAIC,EAAIe,EAAIV,EAAIuC,EA2CpB,GA1CA7D,KACAgB,EAAKtB,GACLuB,EAAK,GACLe,EAAKtC,GACL4B,EAAK5B,GACLM,MACA6D,EAAKC,QACM9I,IACP6I,EAAKQ,MAETrE,KACI6D,IAAO7I,EACPsG,OAAK74H,GAGLi3H,GAAc4B,EACdA,EAAKtG,GAELsG,IAAOtG,GACHhlG,EAAMlxB,OAAS46H,IACfmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS7E,IAGb6H,IAAO7I,EAEPgH,EADAV,EAAK,CAACA,EAAIuC,IAIVnE,GAAcsC,EACdA,EAAKhH,KAIT0E,GAAcsC,EACdA,EAAKhH,GAELgH,IAAOhH,EACP,KAAOgH,IAAOhH,GACViG,EAAGxxH,KAAKuyH,GACRA,EAAKtC,GACL4B,EAAK5B,GACLM,MACA6D,EAAKC,QACM9I,IACP6I,EAAKQ,MAETrE,KACI6D,IAAO7I,EACPsG,OAAK74H,GAGLi3H,GAAc4B,EACdA,EAAKtG,GAELsG,IAAOtG,GACHhlG,EAAMlxB,OAAS46H,IACfmE,EAAK7tG,EAAM/jB,OAAOytH,IAClBA,OAGAmE,EAAK7I,EACmB,IAApBgF,IACAa,GAAS7E,IAGb6H,IAAO7I,EAEPgH,EADAV,EAAK,CAACA,EAAIuC,IAIVnE,GAAcsC,EACdA,EAAKhH,KAIT0E,GAAcsC,EACdA,EAAKhH,QAKbiG,EAAKjG,EAeT,OAZIgG,EADAC,IAAOjG,EACFhlG,EAAMjc,UAAUinH,EAAItB,IAGpBuB,EAETjB,KACIgB,IAAOhG,IACPiG,EAAKjG,EACmB,IAApBgF,IACAa,GAASpB,KAGVuB,EAEX,IAAIzE,GAAa,CAAC,QAIlB,SAASyC,KACL,MAA6C,WAAtCzC,GAAWA,GAAWz3H,OAAS,GAE1C,SAAS+3H,KACL,OAAOn2H,GAAWA,EAAQ+9H,gBAAkB,CACxC96H,SAAUA,MACV,GAGR,IADAoxH,EAAaI,OACMH,GAAc0E,KAAgB1pG,EAAMlxB,OACnD,OAAOi2H,EAMP,MAHIA,IAAeC,GAAc0E,GAAc1pG,EAAMlxB,QACjD+7H,GA9tEG,CAAEthH,KAAM,QAguETuhH,GAAyBf,GAAqBD,GAAiB9pG,EAAMlxB,OAASkxB,EAAM/jB,OAAO6tH,IAAkB,KAAMA,GAAiB9pG,EAAMlxB,OAC1Io7H,GAAoBJ,GAAgBA,GAAiB,GACrDI,GAAoBJ,GAAgBA,MCnjF9C4E,EAAkD,WAClD,IAAK,IAAI56G,EAAI,EAAGjlB,EAAI,EAAG8/H,EAAKz9H,UAAUpC,OAAQD,EAAI8/H,EAAI9/H,IAAKilB,GAAK5iB,UAAUrC,GAAGC,OACxE,IAAI4zC,EAAI9oC,MAAMka,GAAIzX,EAAI,EAA3B,IAA8BxN,EAAI,EAAGA,EAAI8/H,EAAI9/H,IACzC,IAAK,IAAImF,EAAI9C,UAAUrC,GAAI2d,EAAI,EAAGoiH,EAAK56H,EAAElF,OAAQ0d,EAAIoiH,EAAIpiH,IAAKnQ,IAC1DqmC,EAAErmC,GAAKrI,EAAEwY,GACjB,OAAOk2B,GAIPmsF,EAAuB,cAOpB,SAASC,EAAyBC,GACrCA,EAAIrvH,SAAQ,SAAUxN,IAEbkxH,EAAgBlxH,IAAQixH,EAAgBjxH,KAI7CxC,OAAOuK,KAAK/H,EAAGxB,SAASgP,SAAQ,SAAUnN,GAOtC,IANA,IAAI06H,EACA/6E,EAAMhgD,EAAGxB,QAAQ6B,GAGjBy8H,GAA0B,EAC1BC,OAAYx8H,EACP5D,EAAI,EAAGA,EAAIqjD,EAAI9gD,MAAMtC,OAAQD,IAAK,CACvC,IAAIqgI,EAAOh9E,EAAI9gD,MAAMvC,GACrB,GAAIg0H,EAAiBqM,IAASL,EAAqBzjH,KAAK8jH,EAAK99H,OAAQ,CACjE49H,EAAyBngI,EACzBogI,EAAYC,EACZ,OAGR,GAAID,EAAW,CACX,IAAIngH,EAAWmgH,EAAU79H,MAAMyE,QAAQg5H,EAAsB,MAAQ38H,EAAGd,MAAQ,aAC5E+9H,EAASrK,EAASh2G,IACrBm+G,EAAK/6E,EAAI9gD,OAAOyU,OAAO5U,MAAMg8H,EAAIyB,EAAe,CAACM,EAAwB,GAAIG,IAElFL,EAAyB58E,EAAI9gD,aCtClC,SAAS+B,EAAM6sB,EAAO3N,GACzB,IAAI08G,EAAMjK,EAAS9kG,EAAO3N,GAI1B,OAHKA,IAA0C,IAAlCA,EAAKy8G,0BACdA,EAAyBC,GAEtBA,ECLX,IAAIL,EAAkD,WAClD,IAAK,IAAI56G,EAAI,EAAGjlB,EAAI,EAAG8/H,EAAKz9H,UAAUpC,OAAQD,EAAI8/H,EAAI9/H,IAAKilB,GAAK5iB,UAAUrC,GAAGC,OACxE,IAAI4zC,EAAI9oC,MAAMka,GAAIzX,EAAI,EAA3B,IAA8BxN,EAAI,EAAGA,EAAI8/H,EAAI9/H,IACzC,IAAK,IAAImF,EAAI9C,UAAUrC,GAAI2d,EAAI,EAAGoiH,EAAK56H,EAAElF,OAAQ0d,EAAIoiH,EAAIpiH,IAAKnQ,IAC1DqmC,EAAErmC,GAAKrI,EAAEwY,GACjB,OAAOk2B,GAGX,SAAS0sF,EAAWC,GAChB,OAAO38G,KAAKC,UAAU08G,EAAO5pH,KAAI,SAAUua,GACvC,OAAOA,GAA0B,kBAAVA,GAGTziB,EAH2CyiB,EAItDtwB,OAAOuK,KAAKsD,GACdglC,OACA98B,KAAI,SAAUpJ,GACf,IAAI4wH,EACJ,OAAQA,EAAK,IAAO5wH,GAAKkB,EAAIlB,GAAI4wH,MARiCjtG,EAG1E,IAAsBziB,MAQtB,IAmBe+xH,EAnBgB,SAAUC,EAAmBv2H,GAExD,YADc,IAAVA,IAAoBA,EAAQ,IACzB,WAGH,IAFA,IAAIi0H,EACAztH,EAAO,GACFmH,EAAK,EAAGA,EAAKzV,UAAUpC,OAAQ6X,IACpCnH,EAAKmH,GAAMzV,UAAUyV,GAEzB,IAAI6oH,EAAUJ,EAAW5vH,GACrB1N,EAAS09H,GAAWx2H,EAAMw2H,GAO9B,OANK19H,IACDA,EAAS,KAAMm7H,EAAKsC,GAAmB32G,KAAK3nB,MAAMg8H,EAAIyB,EAAe,MAAC,GAASlvH,KAC3EgwH,IACAx2H,EAAMw2H,GAAW19H,IAGlBA,IC1CX6xH,EAAsC,WAStC,OARAA,EAAWj0H,OAAOkC,QAAU,SAASqqB,GACjC,IAAK,IAAInI,EAAGjlB,EAAI,EAAGyN,EAAIpL,UAAUpC,OAAQD,EAAIyN,EAAGzN,IAE5C,IAAK,IAAIwZ,KADTyL,EAAI5iB,UAAUrC,GACOa,OAAOM,UAAUwH,eAAeC,KAAKqc,EAAGzL,KACzD4T,EAAE5T,GAAKyL,EAAEzL,IAEjB,OAAO4T,IAEKhrB,MAAMZ,KAAMa,YAO5Bu+H,EAAkB,4KAOf,SAASC,EAAsBviB,GAClC,IAAIjzG,EAAS,GA0Gb,OAzGAizG,EAASt3G,QAAQ45H,GAAiB,SAAUv4H,GACxC,IAAI8T,EAAM9T,EAAMpI,OAChB,OAAQoI,EAAM,IAEV,IAAK,IACDgD,EAAOsyG,IAAc,IAARxhG,EAAY,OAAiB,IAARA,EAAY,SAAW,QACzD,MAEJ,IAAK,IACD9Q,EAAOuyG,KAAe,IAARzhG,EAAY,UAAY,UACtC,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,gEAEzB,IAAK,IACL,IAAK,IACD,MAAM,IAAIA,WAAW,8CAEzB,IAAK,IACL,IAAK,IACD1nG,EAAOirE,MAAQ,CAAC,UAAW,UAAW,QAAS,OAAQ,UAAUn6D,EAAM,GACvE,MAEJ,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,2CACzB,IAAK,IACD1nG,EAAOyyG,IAAM,CAAC,UAAW,WAAW3hG,EAAM,GAC1C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,6DAEzB,IAAK,IACD1nG,EAAO0yG,QAAkB,IAAR5hG,EAAY,QAAkB,IAARA,EAAY,SAAW,QAC9D,MACJ,IAAK,IACD,GAAIA,EAAM,EACN,MAAM,IAAI42F,WAAW,iDAEzB1nG,EAAO0yG,QAAU,CAAC,QAAS,OAAQ,SAAU,SAAS5hG,EAAM,GAC5D,MACJ,IAAK,IACD,GAAIA,EAAM,EACN,MAAM,IAAI42F,WAAW,iDAEzB1nG,EAAO0yG,QAAU,CAAC,QAAS,OAAQ,SAAU,SAAS5hG,EAAM,GAC5D,MAEJ,IAAK,IACD9Q,EAAO2yG,QAAS,EAChB,MACJ,IAAK,IACL,IAAK,IACD,MAAM,IAAIjL,WAAW,8DAEzB,IAAK,IACD1nG,EAAOy1H,UAAY,MACnBz1H,EAAO4yG,KAAO,CAAC,UAAW,WAAW9hG,EAAM,GAC3C,MACJ,IAAK,IACD9Q,EAAOy1H,UAAY,MACnBz1H,EAAO4yG,KAAO,CAAC,UAAW,WAAW9hG,EAAM,GAC3C,MACJ,IAAK,IACD9Q,EAAOy1H,UAAY,MACnBz1H,EAAO4yG,KAAO,CAAC,UAAW,WAAW9hG,EAAM,GAC3C,MACJ,IAAK,IACD9Q,EAAOy1H,UAAY,MACnBz1H,EAAO4yG,KAAO,CAAC,UAAW,WAAW9hG,EAAM,GAC3C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,oEAEzB,IAAK,IACD1nG,EAAO6yG,OAAS,CAAC,UAAW,WAAW/hG,EAAM,GAC7C,MAEJ,IAAK,IACD9Q,EAAO8yG,OAAS,CAAC,UAAW,WAAWhiG,EAAM,GAC7C,MACJ,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,8DAEzB,IAAK,IACD1nG,EAAO+yG,aAAejiG,EAAM,EAAI,QAAU,OAC1C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAM,IAAI42F,WAAW,wEAE7B,MAAO,MAEJ1nG,EAKX,IAAI01H,EAA2B,yBAC3BC,EAA8B,mBAClC,SAASC,EAA0BjjH,GAC/B,IAAI3S,EAAS,GAuBb,OAtBA2S,EAAIhX,QAAQg6H,GAA6B,SAAUjzG,EAAGmzG,EAAIC,GAoBtD,MAlBkB,kBAAPA,GACP91H,EAAOwsG,yBAA2BqpB,EAAGjhI,OACrCoL,EAAO0sG,yBAA2BmpB,EAAGjhI,QAGzB,MAAPkhI,EACL91H,EAAOwsG,yBAA2BqpB,EAAGjhI,OAGtB,MAAVihI,EAAG,GACR71H,EAAO0sG,yBAA2BmpB,EAAGjhI,QAIrCoL,EAAOwsG,yBAA2BqpB,EAAGjhI,OACrCoL,EAAO0sG,yBACHmpB,EAAGjhI,QAAwB,kBAAPkhI,EAAkBA,EAAGlhI,OAAS,IAEnD,MAEJoL,EAEX,SAAS+1H,EAAUpjH,GACf,OAAQA,GACJ,IAAK,YACD,MAAO,CACHqjH,YAAa,QAErB,IAAK,kBACD,MAAO,CACHC,aAAc,cAEtB,IAAK,cACD,MAAO,CACHD,YAAa,UAErB,IAAK,yBACD,MAAO,CACHA,YAAa,SACbC,aAAc,cAEtB,IAAK,mBACD,MAAO,CACHD,YAAa,cAErB,IAAK,8BACD,MAAO,CACHA,YAAa,aACbC,aAAc,cAEtB,IAAK,aACD,MAAO,CACHD,YAAa,UAI7B,SAASE,EAAqBl+E,GAC1B,IACIm+E,EAAWJ,EAAU/9E,GACzB,OAAIm+E,GAFS,GAUV,SAASC,EAA2Ct/G,GAEvD,IADA,IAAI9W,EAAS,GACJyM,EAAK,EAAG4pH,EAAWv/G,EAAQrK,EAAK4pH,EAASzhI,OAAQ6X,IAAM,CAC5D,IAAI6L,EAAQ+9G,EAAS5pH,GACrB,OAAQ6L,EAAMw7G,MACV,IAAK,UACD9zH,EAAOnL,MAAQ,UACf,SACJ,IAAK,WACDmL,EAAOnL,MAAQ,WACfmL,EAAOvL,SAAW6jB,EAAM9hB,QAAQ,GAChC,SACJ,IAAK,YACDwJ,EAAOg3G,aAAc,EACrB,SACJ,IAAK,oBACDh3G,EAAOs2H,sBAAwB,EAC/B,SACJ,IAAK,eACDt2H,EAAOnL,MAAQ,OACfmL,EAAOu2H,KAAqBj+G,EAAM9hB,QAAQ,GA/F1CmF,QAAQ,UAAW,IAgGnB,SACJ,IAAK,gBACDqE,EAAOw2H,SAAW,UAClBx2H,EAAOy2H,eAAiB,QACxB,SACJ,IAAK,eACDz2H,EAAOw2H,SAAW,UAClBx2H,EAAOy2H,eAAiB,OACxB,SACJ,IAAK,aACDz2H,EAASypH,EAASA,EAASA,EAAS,GAAIzpH,GAAS,CAAEw2H,SAAU,eAAiBl+G,EAAM9hB,QAAQqD,QAAO,SAAUy3C,EAAK0G,GAAO,OAAQyxE,EAASA,EAAS,GAAIn4E,GAAM4kF,EAAqBl+E,MAAW,KAC7L,SACJ,IAAK,cACDh4C,EAASypH,EAASA,EAASA,EAAS,GAAIzpH,GAAS,CAAEw2H,SAAU,gBAAkBl+G,EAAM9hB,QAAQqD,QAAO,SAAUy3C,EAAK0G,GAAO,OAAQyxE,EAASA,EAAS,GAAIn4E,GAAM4kF,EAAqBl+E,MAAW,KAC9L,SACJ,IAAK,kBACDh4C,EAAOw2H,SAAW,WAClB,SAEJ,IAAK,oBACDx2H,EAAO02H,gBAAkB,eACzB12H,EAAO22H,YAAc,SACrB,SACJ,IAAK,mBACD32H,EAAO02H,gBAAkB,OACzB12H,EAAO22H,YAAc,QACrB,SACJ,IAAK,uBACD32H,EAAO02H,gBAAkB,OACzB12H,EAAO22H,YAAc,OACrB,SACJ,IAAK,sBACD32H,EAAO02H,gBAAkB,SACzB,SAIR,GAAIhB,EAAyBxkH,KAAKoH,EAAMw7G,MAAxC,CACI,GAAIx7G,EAAM9hB,QAAQ5B,OAAS,EACvB,MAAM,IAAI8yG,WAAW,iEAEzBpvF,EAAMw7G,KAAKn4H,QAAQ+5H,GAA0B,SAAU14H,EAAO64H,EAAIC,GAmB9D,MAjBc,MAAV94H,EACAgD,EAAOs2H,sBAAwB,EAGnB,MAAPR,EACL91H,EAAO42H,sBAAwBd,EAAGlhI,OAGnB,MAAVihI,EAAG,GACR71H,EAAOs2H,sBAAwBT,EAAGjhI,QAIlCoL,EAAO42H,sBAAwBf,EAAGjhI,OAClCoL,EAAOs2H,sBACHT,EAAGjhI,QAAwB,kBAAPkhI,EAAkBA,EAAGlhI,OAAS,IAEnD,MAEP0jB,EAAM9hB,QAAQ5B,SACdoL,EAASypH,EAASA,EAAS,GAAIzpH,GAAS41H,EAA0Bt9G,EAAM9hB,QAAQ,WAIxF,GAAIm/H,EAA4BzkH,KAAKoH,EAAMw7G,MACvC9zH,EAASypH,EAASA,EAAS,GAAIzpH,GAAS41H,EAA0Bt9G,EAAMw7G,WAD5E,CAIA,IAAIqC,EAAWJ,EAAUz9G,EAAMw7G,MAC3BqC,IACAn2H,EAASypH,EAASA,EAAS,GAAIzpH,GAASm2H,KAGhD,OAAOn2H,ECjTX,IAqLI62H,EArLAh1G,EAAyC,WACzC,IAAI2nG,EAAgB,SAAUvzH,EAAG8D,GAI7B,OAHAyvH,EAAgBh0H,OAAO0X,gBAClB,CAAExL,UAAW,cAAgBhC,OAAS,SAAUzJ,EAAG8D,GAAK9D,EAAEyL,UAAY3H,IACvE,SAAU9D,EAAG8D,GAAK,IAAK,IAAIoU,KAAKpU,EAAOA,EAAEuD,eAAe6Q,KAAIlY,EAAEkY,GAAKpU,EAAEoU,MACpDlY,EAAG8D,IAE5B,OAAO,SAAU9D,EAAG8D,GAEhB,SAAS+nB,IAAO3rB,KAAKsL,YAAcxL,EADnCuzH,EAAcvzH,EAAG8D,GAEjB9D,EAAEH,UAAkB,OAANiE,EAAavE,OAAOgM,OAAOzH,IAAM+nB,EAAGhsB,UAAYiE,EAAEjE,UAAW,IAAIgsB,IAV1C,GAazC0yG,EAAkD,WAClD,IAAK,IAAI56G,EAAI,EAAGjlB,EAAI,EAAG8/H,EAAKz9H,UAAUpC,OAAQD,EAAI8/H,EAAI9/H,IAAKilB,GAAK5iB,UAAUrC,GAAGC,OACxE,IAAI4zC,EAAI9oC,MAAMka,GAAIzX,EAAI,EAA3B,IAA8BxN,EAAI,EAAGA,EAAI8/H,EAAI9/H,IACzC,IAAK,IAAImF,EAAI9C,UAAUrC,GAAI2d,EAAI,EAAGoiH,EAAK56H,EAAElF,OAAQ0d,EAAIoiH,EAAIpiH,IAAKnQ,IAC1DqmC,EAAErmC,GAAKrI,EAAEwY,GACjB,OAAOk2B,GAGPsuF,EAA6B,SAAUnN,GAEvC,SAASmN,EAAY5gI,EAAK6gI,GACtB,IAAIzhH,EAAQq0G,EAAOpsH,KAAKpH,KAAMD,IAAQC,KAEtC,OADAmf,EAAMyhH,WAAaA,EACZzhH,EAEX,OANAuM,EAAUi1G,EAAanN,GAMhBmN,EAPsB,CAQ/Bj1H,OAmBK,SAASm1H,EAAcnC,EAAKn+H,EAASwjB,EAAY1iB,EAAS2I,EAAQ82H,EAEzEC,GAEI,GAAmB,IAAfrC,EAAIjgI,QAAgB+zH,EAAiBkM,EAAI,IACzC,MAAO,CACH,CACIxlH,KAAM,EACNnY,MAAO29H,EAAI,GAAG39H,QAK1B,IADA,IA9BkB8hB,EA8BdhZ,EAAS,GACJyM,EAAK,EAAG0qH,EAAQtC,EAAKpoH,EAAK0qH,EAAMviI,OAAQ6X,IAAM,CACnD,IAAIzU,EAAKm/H,EAAM1qH,GAEf,GAAIk8G,EAAiB3wH,GACjBgI,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOc,EAAGd,aAMlB,GAAIkyH,EAAepxH,GACmB,kBAAvBi/H,GACPj3H,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOgjB,EAAWk9G,gBAAgB1gI,GAASkB,OAAOq/H,SAJ9D,CASA,IAAII,EAAUr/H,EAAGd,MAEjB,IAAMiJ,KAAUk3H,KAAWl3H,GACvB,MAAM,IAAI22H,EAAY,qCAAwCO,EAAU,qCAAyCH,EAAkB,KAEvI,IAAIhgI,EAAQiJ,EAAOk3H,GACnB,GAAIzO,EAAkB5wH,GACbd,GAA0B,kBAAVA,GAAuC,kBAAVA,IAC9CA,EACqB,kBAAVA,GAAuC,kBAAVA,EAC9BnB,OAAOmB,GACP,IAEd8I,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOA,SAOf,GAAI6xH,EAAc/wH,GAAlB,CACI,IAAInD,EAA4B,kBAAbmD,EAAGnD,MAAqB2C,EAAQszE,KAAK9yE,EAAGnD,YAAS0D,EACpEyH,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOgjB,EACFo9G,kBAAkB5gI,EAAS7B,GAC3B+C,OAAOV,UAIpB,GAAI8xH,EAAchxH,GAAlB,CACQnD,EAA4B,kBAAbmD,EAAGnD,MAChB2C,EAAQwzC,KAAKhzC,EAAGnD,OAChB00H,EAAmBvxH,EAAGnD,OAClB2gI,EAAsBx9H,EAAGnD,MAAM+iB,cAC/Brf,EACVyH,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOgjB,EACFo9G,kBAAkB5gI,EAAS7B,GAC3B+C,OAAOV,UAIpB,GAAI4xH,EAAgB9wH,GAApB,CACQnD,EAA4B,kBAAbmD,EAAGnD,MAChB2C,EAAQzC,OAAOiD,EAAGnD,OAClBy0H,EAAiBtxH,EAAGnD,OAChBuhI,EAA2Cp+H,EAAGnD,MAAMiiB,aACpDve,EACVyH,EAAOT,KAAK,CACR8P,KAAM,EACNnY,MAAOgjB,EACFk9G,gBAAgB1gI,EAAS7B,GACzB+C,OAAOV,UAIpB,GAAI+xH,EAAgBjxH,GAApB,CAEI,KADIggD,EAAMhgD,EAAGxB,QAAQU,IAAUc,EAAGxB,QAAQsrH,OAEtC,MAAM,IAAIpa,WAAW,uBAA0B1vG,EAAGd,MAAQ,OAAWA,EAAQ,mBAAuB1B,OAAOuK,KAAK/H,EAAGxB,SAAS0M,KAAK,QAAU,KAE/IlD,EAAOT,KAAKxI,MAAMiJ,EAAQg3H,EAAch/E,EAAI9gD,MAAOR,EAASwjB,EAAY1iB,EAAS2I,SAGrF,GAAI+oH,EAAgBlxH,GAApB,CACI,IAAIggD,EACJ,KADIA,EAAMhgD,EAAGxB,QAAQ,IAAMU,IACjB,CACN,IAAKi6F,KAAKomC,YACN,MAAM,IAAIT,EAAY,mHAE1B,IAAI3lG,EAAOjX,EACNs9G,eAAe9gI,EAAS,CAAE2Y,KAAMrX,EAAG86H,aACnCpjD,OAAOx4E,GAASc,EAAGof,QAAU,IAClC4gC,EAAMhgD,EAAGxB,QAAQ26B,IAASn5B,EAAGxB,QAAQsrH,MAEzC,IAAK9pE,EACD,MAAM,IAAI0vD,WAAW,uBAA0B1vG,EAAGd,MAAQ,OAAWA,EAAQ,mBAAuB1B,OAAOuK,KAAK/H,EAAGxB,SAAS0M,KAAK,QAAU,KAE/IlD,EAAOT,KAAKxI,MAAMiJ,EAAQg3H,EAAch/E,EAAI9gD,MAAOR,EAASwjB,EAAY1iB,EAAS2I,EAAQjJ,GAASc,EAAGof,QAAU,YAIvH,OA1IkB4B,EA0IEhZ,GAzIVpL,OAAS,EACRokB,EAEJA,EAAMnf,QAAO,SAAUy3C,EAAKtuC,GAC/B,IAAIy0H,EAAWnmF,EAAIA,EAAI18C,OAAS,GAShC,OARK6iI,GACiB,IAAlBA,EAASpoH,MACK,IAAdrM,EAAKqM,KAILooH,EAASvgI,OAAS8L,EAAK9L,MAHvBo6C,EAAI/xC,KAAKyD,GAKNsuC,IACR,IA6HA,SAASomF,EAAe7C,EAAKn+H,EAASwjB,EAAY1iB,EAAS2I,EAElE+2H,GACI,IAAIl+G,EAAQg+G,EAAcnC,EAAKn+H,EAASwjB,EAAY1iB,EAAS2I,OAAQ5H,EAAW2+H,GAEhF,OAAqB,IAAjBl+G,EAAMpkB,OACCokB,EAAM,GAAG9hB,MAEb8hB,EAAMnf,QAAO,SAAUy3C,EAAKtuC,GAAQ,OAAQsuC,EAAOtuC,EAAK9L,QAAW,IAI9E,IACIygI,EAAc,iBACdC,EAAU,EAId,SAASC,EAA8B3wG,EAAM4wG,GACzC,OAAO5wG,EACFvtB,MAAMg+H,GACNxyH,OAAOwkG,SACPp+F,KAAI,SAAUiI,GAAK,OAA0B,MAAlBskH,EAAYtkH,GAAaskH,EAAYtkH,GAAKA,KACrE3Z,QAAO,SAAUy3C,EAAK99B,GAWvB,OAVK89B,EAAI18C,QAGa,kBAAN4e,GACmB,kBAAxB89B,EAAIA,EAAI18C,OAAS,GACxB08C,EAAIA,EAAI18C,OAAS,IAAM4e,EAJvB89B,EAAI/xC,KAAKiU,GASN89B,IACR,IAKP,IAAIymF,EAAmB,wEACnBC,EAAcjqH,KAAKg9B,MAAQ,KAC3BktF,EAAgB,CAChB,OACA,OACA,KACA,MACA,QACA,KACA,MACA,QACA,OACA,OACA,QACA,SACA,QACA,OAEJ,SAASC,EAAkBlgI,EAAI8/H,EAAa33H,GACxC,IAAIuwB,EAAU14B,EAAG04B,QACbynG,EAAYngI,EAAGmgI,UAAWx+D,EAAc3hE,EAAG2hE,YAAay+D,EAAapgI,EAAGogI,WAE5E,IAAK1nG,EACD,OAAOmnG,EAA8Bl+D,GAAe,GAAIm+D,GAE5DpnG,EAAUA,EAAQ7sB,cAClB,IAAIw0H,GAAiBJ,EAActgI,QAAQ+4B,GACvC4nG,EAAkBn4H,EAAOuwB,GAC7B,GAAI4nG,GAAmBD,EACnB,MAAM,IAAIvB,EAAYpmG,EAAU,4EAEpC,IAAK0nG,EAAWxjI,OACZ,MAAO,CAACujI,GAEZ,IAAII,EAAS74H,MAAM5J,UAAUkO,MAAMzG,KAAK66H,GAAYv+H,QAAO,SAAUy3C,EAAKtwC,GACtE,OAAOswC,EAAI3xC,OAAOu4H,EAAkBl3H,EAAO82H,EAAa33H,MACzD,IAEH,OAAKm4H,EAI0B,oBAApBA,EACA,CAACA,EAAgBvhI,WAAM,EAAQwhI,IAEnC,CAACD,GANG9D,EAAe,CAAC,IAAM9jG,EAAU,KAAM6nG,EAAQ,CAAC,KAAO7nG,EAAU,MAQxE,SAAS8nG,EAAkB3D,EAAKn+H,EAASwjB,EAAY1iB,EAAS2I,EAErE+2H,GACI,IAAIl+G,EAAQg+G,EAAcnC,EAAKn+H,EAASwjB,EAAY1iB,EAAS2I,OAAQ5H,EAAW2+H,GAC5EY,EAAc,GACdW,EAAmBz/G,EAAMnf,QAAO,SAAUy3C,EAAKtuC,GAC/C,GAAkB,IAAdA,EAAKqM,KACL,OAAQiiC,EAAOtuC,EAAK9L,MAExB,IAAImB,EAhFD0V,KAAKg9B,MAAQ,OAAQ6sF,EAkFxB,OADAE,EAAYz/H,GAAM2K,EAAK9L,MACfo6C,EAtFM,KAsFwBj5C,EAtFxB,OAuFf,IAEH,IAAK0/H,EAAiB7mH,KAAKunH,GACvB,OAAOZ,EAA8BY,EAAkBX,GAE3D,IAAK33H,EACD,MAAM,IAAI22H,EAAY,oDAE1B,GAAyB,qBAAd4B,UACP,MAAM,IAAI5B,EAAY,+CAErBD,IACDA,EAAY,IAAI6B,WAEpB,IAAIC,EAAU9B,EACT+B,gBAAgB,0BAA6BZ,EAAc,KAAQS,EAAmB,uBAAwB,aAC9GI,eAAeb,GACpB,IAAKW,EACD,MAAM,IAAI7B,EAAY,0BAA4B2B,GAEtD,IAAIK,EAAetjI,OAAOuK,KAAKI,GAAQgF,QAAO,SAAUkyH,GAAW,QAASsB,EAAQI,qBAAqB1B,GAASziI,UAElH,IAAKkkI,EAAalkI,OACd,OAAOijI,EAA8BY,EAAkBX,GAE3D,IAAIkB,EAAoBF,EAAa3zH,QAAO,SAAUurB,GAAW,OAAOA,IAAYA,EAAQ7sB,iBAC5F,GAAIm1H,EAAkBpkI,OAClB,MAAM,IAAIkiI,EAAY,+DAAiEkC,EAAkB91H,KAAK,OAGlH,OAAOxD,MAAM5J,UAAUkO,MAClBzG,KAAKo7H,EAAQP,YACbv+H,QAAO,SAAUy3C,EAAKtwC,GAAS,OAAOswC,EAAI3xC,OAAOu4H,EAAkBl3H,EAAO82H,EAAa33H,MAAa,ICxS7G,IAAIspH,EAAsC,WAStC,OARAA,EAAWj0H,OAAOkC,QAAU,SAASqqB,GACjC,IAAK,IAAInI,EAAGjlB,EAAI,EAAGyN,EAAIpL,UAAUpC,OAAQD,EAAIyN,EAAGzN,IAE5C,IAAK,IAAIwZ,KADTyL,EAAI5iB,UAAUrC,GACOa,OAAOM,UAAUwH,eAAeC,KAAKqc,EAAGzL,KACzD4T,EAAE5T,GAAKyL,EAAEzL,IAEjB,OAAO4T,IAEKhrB,MAAMZ,KAAMa,YAehC,SAASiiI,EAAaC,EAAeC,GACjC,OAAKA,EAGE3jI,OAAOuK,KAAKm5H,GAAer/H,QAAO,SAAUy3C,EAAKnvC,GAb5D,IAAqBi3H,EAAIC,EAejB,OADA/nF,EAAInvC,IAdSi3H,EAcQF,EAAc/2H,IAdlBk3H,EAcsBF,EAAQh3H,IAV5CsnH,EAASA,EAASA,EAAS,GAAK2P,GAAM,IAAOC,GAAM,IAAM7jI,OAAOuK,KAAKq5H,GAAIv/H,QAAO,SAAUy3C,EAAKnvC,GAElG,OADAmvC,EAAInvC,GAAKsnH,EAASA,EAAS,GAAI2P,EAAGj3H,IAAMk3H,EAAGl3H,IAAM,IAC1CmvC,IACR,KALQ8nF,GAaA9nF,IACRm4E,EAAS,GAAIyP,IALLA,EAOR,SAASI,EAAwBx6H,GAMpC,YALc,IAAVA,IAAoBA,EAAQ,CAC5B/J,OAAQ,GACRwkI,SAAU,GACVC,YAAa,KAEV,CACHpC,gBAAiBqC,EAAuBtoC,KAAK0a,aAAc/sG,EAAM/J,QACjEuiI,kBAAmBmC,EAAuBtoC,KAAK4iB,eAAgBj1G,EAAMy6H,UACrE/B,eAAgBiC,EAAuBtoC,KAAKomC,YAAaz4H,EAAM06H,cAGvE,IAAIrlI,EAAmC,WACnC,SAASA,EAAkB2D,EAASpB,EAASgjI,EAAiBvhH,GAC1D,IAAI7C,EAAQnf,KAoBZ,QAnBgB,IAAZO,IAAsBA,EAAUvC,EAAkB0iG,eACtD1gG,KAAKwjI,eAAiB,CAClB5kI,OAAQ,GACRwkI,SAAU,GACVC,YAAa,IAEjBrjI,KAAKyB,OAAS,SAAUuI,GACpB,OAAOu3H,EAAepiH,EAAMskH,IAAKtkH,EAAM5e,QAAS4e,EAAM4E,WAAY5E,EAAM9d,QAAS2I,EAAQmV,EAAMxd,UAEnG3B,KAAK6gI,cAAgB,SAAU72H,GAC3B,OAAO62H,EAAc1hH,EAAMskH,IAAKtkH,EAAM5e,QAAS4e,EAAM4E,WAAY5E,EAAM9d,QAAS2I,OAAQ5H,EAAW+c,EAAMxd,UAE7G3B,KAAKqiI,kBAAoB,SAAUr4H,GAC/B,OAAOq4H,EAAkBljH,EAAMskH,IAAKtkH,EAAM5e,QAAS4e,EAAM4E,WAAY5E,EAAM9d,QAAS2I,EAAQmV,EAAMxd,UAEtG3B,KAAK0jI,gBAAkB,WAAc,MAAQ,CACzCjgI,OAAQu3F,KAAK0a,aAAaiuB,mBAAmBxkH,EAAM5e,SAAS,KAEhEP,KAAK4jI,OAAS,WAAc,OAAOzkH,EAAMskH,KAClB,kBAAZ9hI,EAAsB,CAE7B,GADA3B,KAAK2B,QAAUA,GACV3D,EAAkB6lI,QACnB,MAAM,IAAI1jI,UAAU,+EAGxBH,KAAKyjI,IAAMzlI,EAAkB6lI,QAAQliI,EAAS,CAC1C88H,0BAA0B,SAI9Bz+H,KAAKyjI,IAAM9hI,EAEf,IAAK4H,MAAM6D,QAAQpN,KAAKyjI,KACpB,MAAM,IAAItjI,UAAU,kDAIxBH,KAAKqB,QAAUyhI,EAAa9kI,EAAkBqD,QAASkiI,GAEvDvjI,KAAKO,QAAUA,EACfP,KAAK+jB,WACA/B,GAAQA,EAAK+B,YAAeo/G,EAAwBnjI,KAAKwjI,gBA+DlE,OA7DAxlI,EAAkB0iG,eAAgB,IAAI1F,KAAK0a,cAAeguB,kBAAkBjgI,OAC5EzF,EAAkB6lI,QAAU/gI,EAI5B9E,EAAkBqD,QAAU,CACxBzC,OAAQ,CACJN,SAAU,CACNI,MAAO,YAEXolI,QAAS,CACLplI,MAAO,YAGfi2E,KAAM,CACFwoC,MAAO,CACHroC,MAAO,UACPwnC,IAAK,UACLF,KAAM,WAEVuC,OAAQ,CACJ7pC,MAAO,QACPwnC,IAAK,UACLF,KAAM,WAEVgB,KAAM,CACFtoC,MAAO,OACPwnC,IAAK,UACLF,KAAM,WAEVsC,KAAM,CACFnC,QAAS,OACTznC,MAAO,OACPwnC,IAAK,UACLF,KAAM,YAGdvnE,KAAM,CACFsoE,MAAO,CACHV,KAAM,UACNC,OAAQ,WAEZiC,OAAQ,CACJlC,KAAM,UACNC,OAAQ,UACRC,OAAQ,WAEZS,KAAM,CACFX,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,aAAc,SAElB8B,KAAM,CACFjC,KAAM,UACNC,OAAQ,UACRC,OAAQ,UACRC,aAAc,WAInB5+G,EA3G4B,GA8GxBA,ICxJAA","file":"static/js/15.333ad7e2.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*\n * Copyright 2020, Alibaba Group.\n * Copyrights licensed under the BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar intl = _interopDefault(require('intl'));\nvar React = _interopDefault(require('react'));\nvar IntlMessageFormat = _interopDefault(require('intl-messageformat'));\nvar escapeHtml = _interopDefault(require('escape-html'));\nvar cookie = _interopDefault(require('cookie'));\nvar queryParser = _interopDefault(require('querystring'));\nvar invariant = _interopDefault(require('invariant'));\nrequire('console-polyfill');\nvar merge = _interopDefault(require('lodash.merge'));\n\n/**\n * Currency code list\n * https://www.currency-iso.org/en/home/tables/table-a1.html\n */\nvar currency = [\"AFN\", \"EUR\", \"ALL\", \"DZD\", \"USD\", \"AOA\", \"XCD\", \"ARS\", \"AMD\", \"AWG\", \"AUD\", \"AZN\", \"BSD\", \"BHD\", \"BDT\", \"BBD\", \"BYN\", \"BZD\", \"XOF\", \"BMD\", \"INR\", \"BTN\", \"BOB\", \"BOV\", \"BAM\", \"BWP\", \"NOK\", \"BRL\", \"BND\", \"BGN\", \"BIF\", \"CVE\", \"KHR\", \"XAF\", \"CAD\", \"KYD\", \"CLP\", \"CLF\", \"CNY\", \"COP\", \"COU\", \"KMF\", \"CDF\", \"NZD\", \"CRC\", \"HRK\", \"CUP\", \"CUC\", \"ANG\", \"CZK\", \"DKK\", \"DJF\", \"DOP\", \"EGP\", \"SVC\", \"ERN\", \"ETB\", \"FKP\", \"FJD\", \"XPF\", \"GMD\", \"GEL\", \"GHS\", \"GIP\", \"GTQ\", \"GBP\", \"GNF\", \"GYD\", \"HTG\", \"HNL\", \"HKD\", \"HUF\", \"ISK\", \"IDR\", \"XDR\", \"IRR\", \"IQD\", \"ILS\", \"JMD\", \"JPY\", \"JOD\", \"KZT\", \"KES\", \"KPW\", \"KRW\", \"KWD\", \"KGS\", \"LAK\", \"LBP\", \"LSL\", \"ZAR\", \"LRD\", \"LYD\", \"CHF\", \"MOP\", \"MKD\", \"MGA\", \"MWK\", \"MYR\", \"MVR\", \"MRO\", \"MUR\", \"XUA\", \"MXN\", \"MXV\", \"MDL\", \"MNT\", \"MAD\", \"MZN\", \"MMK\", \"NAD\", \"NPR\", \"NIO\", \"NGN\", \"OMR\", \"PKR\", \"PAB\", \"PGK\", \"PYG\", \"PEN\", \"PHP\", \"PLN\", \"QAR\", \"RON\", \"RUB\", \"RWF\", \"SHP\", \"WST\", \"STD\", \"SAR\", \"RSD\", \"SCR\", \"SLL\", \"SGD\", \"XSU\", \"SBD\", \"SOS\", \"SSP\", \"LKR\", \"SDG\", \"SRD\", \"SZL\", \"SEK\", \"CHE\", \"CHW\", \"SYP\", \"TWD\", \"TJS\", \"TZS\", \"THB\", \"TOP\", \"TTD\", \"TND\", \"TRY\", \"TMT\", \"UGX\", \"UAH\", \"AED\", \"USN\", \"UYU\", \"UYI\", \"UZS\", \"VUV\", \"VEF\", \"VND\", \"YER\", \"ZMW\", \"ZWL\", \"XBA\", \"XBB\", \"XBC\", \"XBD\", \"XTS\", \"XXX\", \"XAU\", \"XPD\", \"XPT\", \"XAG\"];\n\nvar numberFormat = {};\n\nfor (var i = 0; i < currency.length; i++) {\n numberFormat[currency[i]] = {\n style: 'currency',\n currency: currency[i]\n };\n}\n\nvar defaultFormats = {\n number: numberFormat\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nString.prototype.defaultMessage = String.prototype.d = function (msg) {\n return this || msg || \"\";\n};\n\nvar ReactIntlUniversal = function () {\n function ReactIntlUniversal() {\n classCallCheck(this, ReactIntlUniversal);\n\n this.options = {\n currentLocale: null, // Current locale such as 'en-US'\n locales: {}, // app locale data like {\"en-US\":{\"key1\":\"value1\"},\"zh-CN\":{\"key1\":\"值1\"}}\n warningHandler: function warn() {\n var _console;\n\n (_console = console).warn.apply(_console, arguments);\n }, // ability to accumulate missing messages using third party services\n escapeHtml: true, // disable escape html in variable mode\n // commonLocaleDataUrls: COMMON_LOCALE_DATA_URLS,\n fallbackLocale: null // Locale to use if a key is not found in the current locale\n };\n }\n\n /**\n * Get the formatted message by key\n * @param {string} key The string representing key in locale data file\n * @param {Object} variables Variables in message\n * @returns {string} message\n */\n\n\n createClass(ReactIntlUniversal, [{\n key: \"get\",\n value: function get$$1(key, variables) {\n if (this.options.intlGetHook) {\n try {\n this.options.intlGetHook(key, this.options.currentLocale);\n } catch (e) {\n console.log('intl get hook error: ', e);\n }\n }\n invariant(key, \"key is required\");\n var _options = this.options,\n locales = _options.locales,\n currentLocale = _options.currentLocale,\n formats = _options.formats;\n\n\n if (!locales || !locales[currentLocale]) {\n this.options.warningHandler(\"react-intl-universal locales data \\\"\" + currentLocale + \"\\\" not exists.\");\n return \"\";\n }\n var msg = this.getDescendantProp(locales[currentLocale], key);\n if (msg == null) {\n if (this.options.fallbackLocale) {\n msg = this.getDescendantProp(locales[this.options.fallbackLocale], key);\n if (msg == null) {\n this.options.warningHandler(\"react-intl-universal key \\\"\" + key + \"\\\" not defined in \" + currentLocale + \" or the fallback locale, \" + this.options.fallbackLocale);\n return \"\";\n }\n } else {\n this.options.warningHandler(\"react-intl-universal key \\\"\" + key + \"\\\" not defined in \" + currentLocale);\n return \"\";\n }\n }\n if (variables) {\n variables = Object.assign({}, variables);\n // HTML message with variables. Escape it to avoid XSS attack.\n for (var i in variables) {\n var value = variables[i];\n if (this.options.escapeHtml === true && (typeof value === \"string\" || value instanceof String) && value.indexOf(\"<\") >= 0 && value.indexOf(\">\") >= 0) {\n value = escapeHtml(value);\n }\n variables[i] = value;\n }\n }\n\n try {\n var msgFormatter = new IntlMessageFormat(msg, currentLocale, formats);\n return msgFormatter.format(variables);\n } catch (err) {\n this.options.warningHandler(\"react-intl-universal format message failed for key='\" + key + \"'.\", err.message);\n return msg;\n }\n }\n\n /**\n * Get the formatted html message by key.\n * @param {string} key The string representing key in locale data file\n * @param {Object} variables Variables in message\n * @returns {React.Element} message\n */\n\n }, {\n key: \"getHTML\",\n value: function getHTML(key, variables) {\n if (this.options.intlGetHook) {\n try {\n this.options.intlGetHook(key, this.options.currentLocale);\n } catch (e) {\n console.log('intl get hook error: ', e);\n }\n }\n var msg = this.get(key, variables);\n if (msg) {\n var el = React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: msg\n }\n });\n // when key exists, it should still return element if there's defaultMessage() after getHTML()\n var defaultMessage = function defaultMessage() {\n return el;\n };\n return Object.assign({ defaultMessage: defaultMessage, d: defaultMessage }, el);\n }\n return \"\";\n }\n\n /**\n * As same as get(...) API\n * @param {Object} options\n * @param {string} options.id\n * @param {string} options.defaultMessage\n * @param {Object} variables Variables in message\n * @returns {string} message\n */\n\n }, {\n key: \"formatMessage\",\n value: function formatMessage(messageDescriptor, variables) {\n var id = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage;\n\n return this.get(id, variables).defaultMessage(defaultMessage);\n }\n\n /**\n * As same as getHTML(...) API\n * @param {Object} options\n * @param {string} options.id\n * @param {React.Element} options.defaultMessage\n * @param {Object} variables Variables in message\n * @returns {React.Element} message\n */\n\n }, {\n key: \"formatHTMLMessage\",\n value: function formatHTMLMessage(messageDescriptor, variables) {\n var id = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage;\n\n return this.getHTML(id, variables).defaultMessage(defaultMessage);\n }\n\n /**\n * Helper: determine user's locale via URL, cookie, localStorage, and browser's language.\n * You may not this API, if you have other rules to determine user's locale.\n * @param {string} options.urlLocaleKey URL's query Key to determine locale. Example: if URL=http://localhost?lang=en-US, then set it 'lang'\n * @param {string} options.cookieLocaleKey Cookie's Key to determine locale. Example: if cookie=lang:en-US, then set it 'lang'\n * @param {string} options.localStorageLocaleKey LocalStorage's Key to determine locale such as 'lang'\n * @returns {string} determined locale such as 'en-US'\n */\n\n }, {\n key: \"determineLocale\",\n value: function determineLocale() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return this.getLocaleFromURL(options) || this.getLocaleFromCookie(options) || this.getLocaleFromLocalStorage(options) || this.getLocaleFromBrowser();\n }\n\n /**\n * Initialize properties and load CLDR locale data according to currentLocale\n * @param {Object} options\n * @param {string} options.currentLocale Current locale such as 'en-US'\n * @param {string} options.locales App locale data like {\"en-US\":{\"key1\":\"value1\"},\"zh-CN\":{\"key1\":\"值1\"}}\n * @returns {Promise}\n */\n\n }, {\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(options.currentLocale, \"options.currentLocale is required\");\n invariant(options.locales, \"options.locales is required\");\n\n Object.assign(this.options, options);\n\n this.options.formats = Object.assign({}, this.options.formats, defaultFormats);\n\n return new Promise(function (resolve, reject) {\n // init() will not load external common locale data anymore.\n // But, it still return a Promise for abckward compatibility.\n resolve();\n });\n }\n\n /**\n * Get the inital options\n */\n\n }, {\n key: \"getInitOptions\",\n value: function getInitOptions() {\n return this.options;\n }\n\n /**\n * Load more locales after init\n */\n\n }, {\n key: \"load\",\n value: function load(locales) {\n merge(this.options.locales, locales);\n }\n }, {\n key: \"getLocaleFromCookie\",\n value: function getLocaleFromCookie(options) {\n var cookieLocaleKey = options.cookieLocaleKey;\n\n if (cookieLocaleKey) {\n var params = cookie.parse(document.cookie);\n return params && params[cookieLocaleKey];\n }\n }\n }, {\n key: \"getLocaleFromLocalStorage\",\n value: function getLocaleFromLocalStorage(options) {\n var localStorageLocaleKey = options.localStorageLocaleKey;\n\n if (localStorageLocaleKey && window.localStorage) {\n return localStorage.getItem(localStorageLocaleKey);\n }\n }\n }, {\n key: \"getLocaleFromURL\",\n value: function getLocaleFromURL(options) {\n var urlLocaleKey = options.urlLocaleKey;\n\n if (urlLocaleKey) {\n var query = location.search.split(\"?\");\n if (query.length >= 2) {\n var params = queryParser.parse(query[1]);\n return params && params[urlLocaleKey];\n }\n }\n }\n }, {\n key: \"getDescendantProp\",\n value: function getDescendantProp(locale, key) {\n\n if (locale[key]) {\n return locale[key];\n }\n\n var msg = key.split(\".\").reduce(function (a, b) {\n return a != undefined ? a[b] : a;\n }, locale);\n\n return msg;\n }\n }, {\n key: \"getLocaleFromBrowser\",\n value: function getLocaleFromBrowser() {\n return navigator.language || navigator.userLanguage;\n }\n }]);\n return ReactIntlUniversal;\n}();\n\nmodule.exports = new ReactIntlUniversal();\nmodule.exports.ReactIntlUniversal = ReactIntlUniversal;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","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","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.forceVisible = exports.forceCheck = exports.lazyload = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _event = require('./utils/event');\n\nvar _scrollParent = require('./utils/scrollParent');\n\nvar _scrollParent2 = _interopRequireDefault(_scrollParent);\n\nvar _debounce = require('./utils/debounce');\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _throttle = require('./utils/throttle');\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**\n * react-lazyload\n */\n\n\nvar defaultBoundingClientRect = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n};\nvar LISTEN_FLAG = 'data-lazyload-listened';\nvar listeners = [];\nvar pending = [];\n\n// try to handle passive events\nvar passiveEventSupported = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveEventSupported = true;\n }\n });\n window.addEventListener('test', null, opts);\n} catch (e) {}\n// if they are supported, setup the optional params\n// IMPORTANT: FALSE doubles as the default CAPTURE value!\nvar passiveEvent = passiveEventSupported ? { capture: false, passive: true } : false;\n\n/**\n * Check if `component` is visible in overflow container `parent`\n * @param {node} component React component\n * @param {node} parent component's scroll parent\n * @return {bool}\n */\nvar checkOverflowVisible = function checkOverflowVisible(component, parent) {\n var node = component.ref;\n\n var parentTop = void 0;\n var parentLeft = void 0;\n var parentHeight = void 0;\n var parentWidth = void 0;\n\n try {\n var _parent$getBoundingCl = parent.getBoundingClientRect();\n\n parentTop = _parent$getBoundingCl.top;\n parentLeft = _parent$getBoundingCl.left;\n parentHeight = _parent$getBoundingCl.height;\n parentWidth = _parent$getBoundingCl.width;\n } catch (e) {\n parentTop = defaultBoundingClientRect.top;\n parentLeft = defaultBoundingClientRect.left;\n parentHeight = defaultBoundingClientRect.height;\n parentWidth = defaultBoundingClientRect.width;\n }\n\n var windowInnerHeight = window.innerHeight || document.documentElement.clientHeight;\n var windowInnerWidth = window.innerWidth || document.documentElement.clientWidth;\n\n // calculate top and height of the intersection of the element's scrollParent and viewport\n var intersectionTop = Math.max(parentTop, 0); // intersection's top relative to viewport\n var intersectionLeft = Math.max(parentLeft, 0); // intersection's left relative to viewport\n var intersectionHeight = Math.min(windowInnerHeight, parentTop + parentHeight) - intersectionTop; // height\n var intersectionWidth = Math.min(windowInnerWidth, parentLeft + parentWidth) - intersectionLeft; // width\n\n // check whether the element is visible in the intersection\n var top = void 0;\n var left = void 0;\n var height = void 0;\n var width = void 0;\n\n try {\n var _node$getBoundingClie = node.getBoundingClientRect();\n\n top = _node$getBoundingClie.top;\n left = _node$getBoundingClie.left;\n height = _node$getBoundingClie.height;\n width = _node$getBoundingClie.width;\n } catch (e) {\n top = defaultBoundingClientRect.top;\n left = defaultBoundingClientRect.left;\n height = defaultBoundingClientRect.height;\n width = defaultBoundingClientRect.width;\n }\n\n var offsetTop = top - intersectionTop; // element's top relative to intersection\n var offsetLeft = left - intersectionLeft; // element's left relative to intersection\n\n var offsets = Array.isArray(component.props.offset) ? component.props.offset : [component.props.offset, component.props.offset]; // Be compatible with previous API\n\n return offsetTop - offsets[0] <= intersectionHeight && offsetTop + height + offsets[1] >= 0 && offsetLeft - offsets[0] <= intersectionWidth && offsetLeft + width + offsets[1] >= 0;\n};\n\n/**\n * Check if `component` is visible in document\n * @param {node} component React component\n * @return {bool}\n */\nvar checkNormalVisible = function checkNormalVisible(component) {\n var node = component.ref;\n\n // If this element is hidden by css rules somehow, it's definitely invisible\n if (!(node.offsetWidth || node.offsetHeight || node.getClientRects().length)) return false;\n\n var top = void 0;\n var elementHeight = void 0;\n\n try {\n var _node$getBoundingClie2 = node.getBoundingClientRect();\n\n top = _node$getBoundingClie2.top;\n elementHeight = _node$getBoundingClie2.height;\n } catch (e) {\n top = defaultBoundingClientRect.top;\n elementHeight = defaultBoundingClientRect.height;\n }\n\n var windowInnerHeight = window.innerHeight || document.documentElement.clientHeight;\n\n var offsets = Array.isArray(component.props.offset) ? component.props.offset : [component.props.offset, component.props.offset]; // Be compatible with previous API\n\n return top - offsets[0] <= windowInnerHeight && top + elementHeight + offsets[1] >= 0;\n};\n\n/**\n * Detect if element is visible in viewport, if so, set `visible` state to true.\n * If `once` prop is provided true, remove component as listener after checkVisible\n *\n * @param {React} component React component that respond to scroll and resize\n */\nvar checkVisible = function checkVisible(component) {\n var node = component.ref;\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n var parent = (0, _scrollParent2.default)(node);\n var isOverflow = component.props.overflow && parent !== node.ownerDocument && parent !== document && parent !== document.documentElement;\n var visible = isOverflow ? checkOverflowVisible(component, parent) : checkNormalVisible(component);\n if (visible) {\n // Avoid extra render if previously is visible\n if (!component.visible) {\n if (component.props.once) {\n pending.push(component);\n }\n\n component.visible = true;\n component.forceUpdate();\n }\n } else if (!(component.props.once && component.visible)) {\n component.visible = false;\n if (component.props.unmountIfInvisible) {\n component.forceUpdate();\n }\n }\n};\n\nvar purgePending = function purgePending() {\n pending.forEach(function (component) {\n var index = listeners.indexOf(component);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n });\n\n pending = [];\n};\n\nvar lazyLoadHandler = function lazyLoadHandler() {\n for (var i = 0; i < listeners.length; ++i) {\n var listener = listeners[i];\n checkVisible(listener);\n }\n // Remove `once` component in listeners\n purgePending();\n};\n\n/**\n * Forces the component to display regardless of whether the element is visible in the viewport.\n */\nvar forceVisible = function forceVisible() {\n for (var i = 0; i < listeners.length; ++i) {\n var listener = listeners[i];\n listener.visible = true;\n listener.forceUpdate();\n }\n // Remove `once` component in listeners\n purgePending();\n};\n\n// Depending on component's props\nvar delayType = void 0;\nvar finalLazyLoadHandler = null;\n\nvar isString = function isString(string) {\n return typeof string === 'string';\n};\n\nvar LazyLoad = function (_Component) {\n _inherits(LazyLoad, _Component);\n\n function LazyLoad(props) {\n _classCallCheck(this, LazyLoad);\n\n var _this = _possibleConstructorReturn(this, (LazyLoad.__proto__ || Object.getPrototypeOf(LazyLoad)).call(this, props));\n\n _this.visible = false;\n _this.setRef = _this.setRef.bind(_this);\n return _this;\n }\n\n _createClass(LazyLoad, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // It's unlikely to change delay type on the fly, this is mainly\n // designed for tests\n var scrollport = window;\n var scrollContainer = this.props.scrollContainer;\n\n if (scrollContainer) {\n if (isString(scrollContainer)) {\n scrollport = scrollport.document.querySelector(scrollContainer);\n }\n }\n var needResetFinalLazyLoadHandler = this.props.debounce !== undefined && delayType === 'throttle' || delayType === 'debounce' && this.props.debounce === undefined;\n\n if (needResetFinalLazyLoadHandler) {\n (0, _event.off)(scrollport, 'scroll', finalLazyLoadHandler, passiveEvent);\n (0, _event.off)(window, 'resize', finalLazyLoadHandler, passiveEvent);\n finalLazyLoadHandler = null;\n }\n\n if (!finalLazyLoadHandler) {\n if (this.props.debounce !== undefined) {\n finalLazyLoadHandler = (0, _debounce2.default)(lazyLoadHandler, typeof this.props.debounce === 'number' ? this.props.debounce : 300);\n delayType = 'debounce';\n } else if (this.props.throttle !== undefined) {\n finalLazyLoadHandler = (0, _throttle2.default)(lazyLoadHandler, typeof this.props.throttle === 'number' ? this.props.throttle : 300);\n delayType = 'throttle';\n } else {\n finalLazyLoadHandler = lazyLoadHandler;\n }\n }\n\n if (this.props.overflow) {\n var parent = (0, _scrollParent2.default)(this.ref);\n if (parent && typeof parent.getAttribute === 'function') {\n var listenerCount = 1 + +parent.getAttribute(LISTEN_FLAG);\n if (listenerCount === 1) {\n parent.addEventListener('scroll', finalLazyLoadHandler, passiveEvent);\n }\n parent.setAttribute(LISTEN_FLAG, listenerCount);\n }\n } else if (listeners.length === 0 || needResetFinalLazyLoadHandler) {\n var _props = this.props,\n scroll = _props.scroll,\n resize = _props.resize;\n\n\n if (scroll) {\n (0, _event.on)(scrollport, 'scroll', finalLazyLoadHandler, passiveEvent);\n }\n\n if (resize) {\n (0, _event.on)(window, 'resize', finalLazyLoadHandler, passiveEvent);\n }\n }\n\n listeners.push(this);\n checkVisible(this);\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate() {\n return this.visible;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.props.overflow) {\n var parent = (0, _scrollParent2.default)(this.ref);\n if (parent && typeof parent.getAttribute === 'function') {\n var listenerCount = +parent.getAttribute(LISTEN_FLAG) - 1;\n if (listenerCount === 0) {\n parent.removeEventListener('scroll', finalLazyLoadHandler, passiveEvent);\n parent.removeAttribute(LISTEN_FLAG);\n } else {\n parent.setAttribute(LISTEN_FLAG, listenerCount);\n }\n }\n }\n\n var index = listeners.indexOf(this);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length === 0 && typeof window !== 'undefined') {\n (0, _event.off)(window, 'resize', finalLazyLoadHandler, passiveEvent);\n (0, _event.off)(window, 'scroll', finalLazyLoadHandler, passiveEvent);\n }\n }\n }, {\n key: 'setRef',\n value: function setRef(element) {\n if (element) {\n this.ref = element;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n height = _props2.height,\n children = _props2.children,\n placeholder = _props2.placeholder,\n classNamePrefix = _props2.classNamePrefix,\n style = _props2.style;\n\n\n return _react2.default.createElement(\n 'div',\n { className: classNamePrefix + '-wrapper', ref: this.setRef, style: style },\n this.visible ? children : placeholder ? placeholder : _react2.default.createElement('div', {\n style: { height: height },\n className: classNamePrefix + '-placeholder'\n })\n );\n }\n }]);\n\n return LazyLoad;\n}(_react.Component);\n\nLazyLoad.propTypes = {\n classNamePrefix: _propTypes2.default.string,\n once: _propTypes2.default.bool,\n height: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string]),\n offset: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.arrayOf(_propTypes2.default.number)]),\n overflow: _propTypes2.default.bool,\n resize: _propTypes2.default.bool,\n scroll: _propTypes2.default.bool,\n children: _propTypes2.default.node,\n throttle: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),\n debounce: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.bool]),\n placeholder: _propTypes2.default.node,\n scrollContainer: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n unmountIfInvisible: _propTypes2.default.bool,\n style: _propTypes2.default.object\n};\n\nLazyLoad.defaultProps = {\n classNamePrefix: 'lazyload',\n once: false,\n offset: 0,\n overflow: false,\n resize: false,\n scroll: true,\n unmountIfInvisible: false\n};\n\nvar getDisplayName = function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n};\n\nvar decorator = function decorator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return function lazyload(WrappedComponent) {\n return function (_Component2) {\n _inherits(LazyLoadDecorated, _Component2);\n\n function LazyLoadDecorated() {\n _classCallCheck(this, LazyLoadDecorated);\n\n var _this2 = _possibleConstructorReturn(this, (LazyLoadDecorated.__proto__ || Object.getPrototypeOf(LazyLoadDecorated)).call(this));\n\n _this2.displayName = 'LazyLoad' + getDisplayName(WrappedComponent);\n return _this2;\n }\n\n _createClass(LazyLoadDecorated, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n LazyLoad,\n options,\n _react2.default.createElement(WrappedComponent, this.props)\n );\n }\n }]);\n\n return LazyLoadDecorated;\n }(_react.Component);\n };\n};\n\nexports.lazyload = decorator;\nexports.default = LazyLoad;\nexports.forceCheck = lazyLoadHandler;\nexports.forceVisible = forceVisible;","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * 兼容 SSR、react native、worker 等非浏览器场景\n */\n\nconst commonGlobal: any = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n(() => {\n if (typeof commonGlobal.window === 'undefined') {\n console.log('weblogger is running in non-browser env');\n commonGlobal.window = {\n addEventListener: () => {},\n removeEventListener: () => {},\n setTimeout: () => {},\n setInterval: () => {},\n _WEBLOGGER_MOCKED_WINDOW_: true,\n global: commonGlobal\n };\n }\n if (typeof commonGlobal.document === 'undefined') {\n commonGlobal.document = commonGlobal.window.document || {\n cookie: '',\n addEventListener: () => {},\n removeEventListener: () => {},\n querySelector: () => {},\n querySelectorAll: () => {},\n };\n if (typeof commonGlobal.window.document === 'undefined') {\n commonGlobal.window.document = commonGlobal.document;\n }\n }\n if (typeof commonGlobal.navigator === 'undefined') {\n commonGlobal.navigator = commonGlobal.window.navigator || {\n userAgent: ''\n };\n if (typeof commonGlobal.window.navigator === 'undefined') {\n commonGlobal.window.navigator = commonGlobal.navigator;\n }\n }\n if (typeof commonGlobal.screen === 'undefined') {\n commonGlobal.screen = commonGlobal.window.screen || {};\n if (typeof commonGlobal.window.screen === 'undefined') {\n commonGlobal.window.screen = commonGlobal.screen;\n }\n }\n if (typeof commonGlobal.history === 'undefined') {\n commonGlobal.history = commonGlobal.window.history || {};\n if (typeof commonGlobal.window.history === 'undefined') {\n commonGlobal.window.history = commonGlobal.history;\n }\n }\n if (typeof commonGlobal.location === 'undefined') {\n commonGlobal.location = commonGlobal.window.location || {\n hostname: '',\n search: '',\n href: '',\n origin: ''\n };\n if (typeof commonGlobal.window.location === 'undefined') {\n commonGlobal.window.location = commonGlobal.location;\n }\n }\n try {\n if (typeof commonGlobal.localStorage === 'undefined') {\n commonGlobal.localStorage = commonGlobal.window.localStorage || {\n getItem: () => {},\n setItem: () => {}\n };\n if (typeof commonGlobal.window.localStorage === 'undefined') {\n commonGlobal.window.localStorage = commonGlobal.localStorage;\n }\n }\n } catch (err){};\n})();","import './compatibility';\n/**\n * Object.defineProperty 容错暂时处理\n */\nif (!Object.defineProperty) {\n Object.defineProperty = function (target, key, descriptor) {\n target[key] = Object.prototype.toString.call(descriptor) === '[object Object]'\n && descriptor.hasOwnProperty('value')\n ? descriptor.value\n : descriptor;\n };\n}\n/**\n * Object.assign polyfill\n */\nif (!Object.assign) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, 'assign', {\n value(target: object) { // .length of function is 2\n if (target === null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n const to = Object(target);\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index];\n if (nextSource !== null) { // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * bind polyfill\n */\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n const aArgs = Array.prototype.slice.call(arguments, 1);\n /* tslint:disable no-this-assignment */\n const fToBind = this;\n /* tslint:enable */\n class FNOP {\n }\n const fBound = function (this: any) {\n const currentThis = this instanceof FNOP\n ? this\n : oThis;\n // this instanceof FNOP === true时,说明返回的fBound被当做new的构造函数调用\n return fToBind.apply(\n currentThis,\n // 获取调用时(fBound)的传参.bind 返回的函数入参往往是这么传递的\n aArgs.concat(Array.prototype.slice.call(arguments)),\n );\n };\n\n // 维护原型关系\n if (this.prototype) {\n // Function.prototype doesn't have a prototype property\n FNOP.prototype = this.prototype;\n }\n // 下行的代码使fBound.prototype是FNOP的实例,因此\n // 返回的fBound若作为new的构造函数,new生成的新对象作为this传入fBound,新对象的__proto__就是FNOP的实例\n fBound.prototype = new FNOP();\n\n return fBound;\n };\n}\n/**\n * indexOf polyfill\n */\n// Production steps of ECMA-262, Edition 5, 15.4.4.14\n// Reference: http://es5.github.io/#x15.4.4.14\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex: number) {\n\n let k;\n\n // 1. Let O be the result of calling ToObject passing\n // the this value as the argument.\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n const O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get\n // internal method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n const len = O.length >>> 0;\n\n // 4. If len is 0, return -1.\n if (len === 0) {\n return -1;\n }\n\n // 5. If argument fromIndex was passed let n be\n // ToInteger(fromIndex); else let n be 0.\n let n = +fromIndex || 0;\n\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n // 6. If n >= len, return -1.\n if (n >= len) {\n return -1;\n }\n\n // 7. If n >= 0, then Let k be n.\n // 8. Else, n<0, Let k be len - abs(n).\n // If k is less than 0, then let k be 0.\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n // 9. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the\n // HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n // i. Let elementK be the result of calling the Get\n // internal method of O with the argument ToString(k).\n // ii. Let same be the result of applying the\n // Strict Equality Comparison Algorithm to\n // searchElement and elementK.\n // iii. If same is true, return k.\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n };\n}\n\nif (!Object.keys) {\n Object.keys = (function () {\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n const hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString');\n const dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor',\n ];\n return (obj: any) => {\n if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) {\n throw new TypeError('Object.keys called on non-object');\n }\n const result = [];\n for (const prop in obj) {\n if (hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n if (hasDontEnumBug) {\n for (const key of dontEnums) {\n if (hasOwnProperty.call(obj, key)) {\n result.push(key);\n }\n }\n }\n return result;\n };\n })();\n}\n\n// Production steps of ECMA-262, Edition 5, 15.4.4.18\n// Reference: http://es5.github.io/#x15.4.4.18\nif (!Array.prototype.forEach) {\n\n Array.prototype.forEach = function (callback, thisArg) {\n\n let T;\n let k;\n\n if (this == null) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling toObject() passing the\n // |this| value as the argument.\n const O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get() internal\n // method of O with the argument \"length\".\n // 3. Let len be toUint32(lenValue).\n const len = O.length >>> 0;\n\n // 4. If isCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let\n // T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n\n let kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty\n // internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as\n // the this value and argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n}\n/**\n * \n * findindex pollify\n */\n\nif (!Array.prototype.findIndex) {\n Array.prototype.findIndex = function (predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\n }\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return i;\n }\n }\n\n return -1;\n };\n}\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n/* eslint-disable strict */\n\n;(function ($) {\n 'use strict'\n\n /**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param {number} x First integer\n * @param {number} y Second integer\n * @returns {number} Sum\n */\n function safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param {number} num 32-bit number\n * @param {number} cnt Rotation count\n * @returns {number} Rotated number\n */\n function bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} q q\n * @param {number} a a\n * @param {number} b b\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param {Array} x Array of little-endian words\n * @param {number} len Bit length\n * @returns {Array} MD5 Array\n */\n function binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /**\n * Convert an array of little-endian words to a string\n *\n * @param {Array} input MD5 Array\n * @returns {string} MD5 string\n */\n function binl2rstr(input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)\n }\n return output\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param {string} input Raw input string\n * @returns {Array} Array of little-endian words\n */\n function rstr2binl(input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32\n }\n return output\n }\n\n /**\n * Calculate the MD5 of a raw string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param {string} key HMAC key\n * @param {string} data Raw input string\n * @returns {string} Raw MD5 string\n */\n function rstrHMACMD5(key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /**\n * Convert a raw string to a hex string\n *\n * @param {string} input Raw input string\n * @returns {string} Hex encoded string\n */\n function rstr2hex(input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /**\n * Encode a string as UTF-8\n *\n * @param {string} input Input string\n * @returns {string} UTF8 string\n */\n function str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input))\n }\n\n /**\n * Encodes input string as raw MD5 string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n /**\n * Encodes input string as Hex encoded string\n *\n * @param {string} s Input string\n * @returns {string} Hex encoded string\n */\n function hexMD5(s) {\n return rstr2hex(rawMD5(s))\n }\n /**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n /**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n /**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param {string} string Input string\n * @param {string} [key] HMAC key\n * @param {boolean} [raw] Raw output switch\n * @returns {string} MD5 output\n */\n function md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n","\n/**\n * @file webLogger工具函数\n * @author \n * @author 天翔Skyline(skyline0705@gmail.com)\n */\n\n// TODO后面这里面的东西要拆一下,不能全一口气扔在util下面\ninterface CookieOptions {\n expires?: Date;\n path?: string;\n domain?: string;\n secure?: boolean;\n raw?: boolean;\n}\n\n/**\n * 创建一个cookie字符串,可被赋值给document.cookie.\n * @param {string} name cookie名称.\n * @param {string} value cookie值.\n * @param {boolean} encode 是否对值进行编码.\n * @param {Object} options (Optional) 配置项.\n * @return {string} 返回 cookie 字符串.\n */\nfunction createCookieString(\n name: string,\n value: string,\n encode: boolean,\n options: CookieOptions = {},\n) {\n let text = `${encodeURIComponent(name)}=${(encode ? encodeURIComponent(value) : value)}`;\n const expires = options.expires;\n const path = options.path || '/';\n const domain = options.domain || '';\n\n if (expires instanceof Date) {\n text += `; expires=${expires.toUTCString()}`;\n }\n\n if (typeof expires === 'number') {\n text += `; max-age==${expires}`;\n }\n\n if (path !== '') {\n text += `; path=${path}`;\n }\n\n if (domain !== '') {\n text += `; domain=${domain}`;\n }\n\n if (options.secure === true) {\n text += '; secure';\n }\n\n return text;\n}\n\n/**\n * 将cookie序列化成对象.\n * @param {string} text cookie值.\n * @param {boolean=} shouldDecode cookie是否需要被解码. 默认为true.\n * @param {object=} options 如何读取cookie的配置.\n * @return {object} 可访问cookie的序列化结果\n */\nexport function parseCookieString(\n text: string,\n shouldDecode: boolean,\n options: any = {},\n) {\n const cookies: { [key: string]: any } = {};\n\n if (text.length > 0) {\n const decodeValue = !shouldDecode\n ? function (s: string) {\n return s;\n }\n : decodeURIComponent;\n const cookieParts = text.split(/;\\s/g);\n let cookieName = null;\n let cookieValue = null;\n let cookieNameValue = null;\n\n for (let i = 0, len = cookieParts.length; i < len; i++) {\n cookieNameValue = cookieParts[i].match(/([^=]+)=/i);\n if (cookieNameValue !== null) {\n try {\n cookieName = decodeURIComponent(cookieNameValue[1]);\n cookieValue = decodeValue(cookieParts[i].substring(cookieNameValue[1].length + 1));\n } catch (ex) {\n // 忽略\n }\n } else {\n // cookie 中没有 \"=\", 当成布尔值\n cookieName = decodeURIComponent(cookieParts[i]);\n cookieValue = '';\n }\n if (cookieName !== null) {\n // 默认后面的cookie覆盖前面的\n cookies[cookieName] = cookieValue;\n }\n }\n\n }\n\n return cookies;\n}\n\nlet cookiesMap: {[key: string]: any} = {};\n/**\n * 获取cookie值.\n * @param {string} name cookie名称.\n * @param {object=} options 配置项\n * raw: 是否进行编码,true则是未编码\n * @return {*} 不存在返回null.\n */\nexport function getCookie(name: string, options: CookieOptions = {}, useCaches = false) {\n try {\n if (typeof document === 'undefined' || !document.cookie) {\n return null;\n }\n if (useCaches && name in cookiesMap) {\n return cookiesMap[name];\n }\n const cookies = parseCookieString(document.cookie, !options.raw, options);\n cookiesMap = cookies;\n const cookie = cookies[name];\n if (cookie === void 0) {\n return null;\n }\n\n return cookie;\n } catch (err) {\n return null;\n }\n}\n\n/**\n * 给定的键值设置cookie\n * @param {string} name 名称.\n * @param {*} value cookie值.\n * @param {object=} options (Optional) 配置项:\n * path 路径\n * domain 域名\n * expires 过期时间,一个Date对象\n * secure 是否安全cookie\n * raw (true/false). Setting raw to true indicates that the cookie should not be URI encoded before being set.\n */\nexport function setCookie(name: string, value: string, options: CookieOptions = {}) {\n try {\n document.cookie = createCookieString(name, value, !options.raw, options);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nexport default {\n getCookie,\n setCookie,\n parseCookieString\n};","import md5 from 'blueimp-md5';\nimport { getCookie, setCookie } from './cookie';\n/**\n * 生成nano id\n * @return {string} 16长度的字符串\n */\nexport function nanoId() {\n const ts = ((Math.random() * 1e9) >>> 0);\n const randomer = [];\n const seed = '0123456789ABCDEF';\n for (let i = 0; i < 7; i++) {\n randomer.push(seed.charAt(Math.random() * 16));\n }\n\n return ts + randomer.join('');\n}\n/**\n * 提取顶级域名\n * @param {?string=} hostname\n * @return {string} 返回顶级域名\n */\nfunction resolveTopLevelDomain(hostname: string = typeof location !== 'undefined' ? location.hostname : '') {\n if (!hostname) {\n return '';\n }\n\n const ret = hostname.split('.');\n const len = ret.length;\n return (len <= 2 ? '' : `.${ret[len - 2]}.${ret[len - 1]}`);\n}\nlet didKey: string = 'did';\nlet did: string = '';\n/**\n * 生成did\n * @return {string}\n */\nexport function generateDID() {\n if (did) return did;\n try {\n // 兼容一下原下发的did逻辑,如果能从did获取,那么就走did\n // 如果不能,那就通过log sdk自行维护的_did来搞\n did = getCookie(didKey) || getCookie('_did');\n if (!did) {\n did = `web_${nanoId()}`;\n const expires = new Date();\n expires.setFullYear(expires.getFullYear() + 1);\n setCookie('_did', did, {\n expires,\n domain: resolveTopLevelDomain(),\n path: '/',\n });\n }\n return did;\n } catch (err) {\n return '';\n }\n}\n/**\n * 生成唯一UUID\n */\nexport const uuid = function (page: string) {\n const randomStr = page + new Date().getTime() + generateDID() + nanoId();\n const hash = md5(randomStr);\n\n return hash;\n};","\n/**\n * 全局配置,可用于所有模块中\n */\ninterface Config {\n proto: 'v2' | 'v3',\n sessionId: string;\n isV2: boolean;\n // 业务方采样配置\n sampled?: boolean;\n isBridge: boolean;\n isDebug: boolean;\n [key: string]: any;\n};\n\nconst GlobalConfig:Config = {\n proto: 'v3',\n sessionId: '',\n isDebug: false,\n isBridge: false,\n get isV2() { return GlobalConfig.proto === 'v2' },\n};\n\nexport const updateConfig = (key: string, value: any) => {\n GlobalConfig[key] = value;\n};\n\nexport const updateConfigs = (configs: {[key: string]: any}) => {\n Object.assign(GlobalConfig, configs);\n}\n\nexport default GlobalConfig;","/**\n * @file iframe发送log\n *\n * @author 天翔Skyline(skyline0705@gmail.com)\n * May 14, 2019\n */\nimport { nanoId } from '../util/uuid';\nimport { DataOptions } from './types';\n\nconst commonHideStyle = [\n 'display: none;',\n 'position: absolute;',\n 'top: -9999px',\n 'left: -9999px',\n].join('');\n\nfunction createIframe(target: string) {\n const iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n (iframe.contentWindow as Window).name = target;\n iframe.style.cssText = commonHideStyle;\n return iframe;\n}\n\nfunction createForm(target: string, url: string) {\n const form = document.createElement('form');\n document.body.appendChild(form);\n form.target = target;\n form.enctype = 'multipart/form-data';\n form.method = 'POST';\n form.action = url;\n form.style.cssText = commonHideStyle;\n return form;\n}\n\nfunction appendDataToForm(form: HTMLFormElement, data: any) {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const input = document.createElement('input');\n input.name = key;\n input.value = JSON.stringify(data[key]);\n form.appendChild(input);\n }\n }\n}\n\nexport default function sendData(\n { url, data }: DataOptions,\n callback?: (error?: any) => void,\n) {\n const target = `iframe_${nanoId()}`;\n let iframe: HTMLIFrameElement | null = createIframe(target);\n let form: HTMLFormElement | null = createForm(target, url);\n appendDataToForm(form as HTMLFormElement, data);\n try {\n form.submit();\n } catch (e) {\n return callback && callback(e);\n }\n iframe.onload = function () {\n document.body.removeChild(iframe as HTMLIFrameElement);\n document.body.removeChild(form as HTMLFormElement);\n iframe = null;\n form = null;\n };\n callback && callback();\n}\n","/*!\n * UAParser.js v0.7.21\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2019 Faisal Salman \n * Licensed under MIT License\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.21',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant\\s|iemobile|slim)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser\n /(bidubrowser|baidubrowser)[\\/\\s]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n ], [NAME, VERSION], [\n\n /(konqueror)\\/([\\w\\.]+)/i // Konqueror\n ], [[NAME, 'Konqueror'], VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edga|edg)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(Avast)\\/([\\w\\.]+)/i // Avast Secure Browser\n ], [[NAME, 'Avast Secure Browser'], VERSION], [\n\n /(AVG)\\/([\\w\\.]+)/i // AVG Secure Browser\n ], [[NAME, 'AVG Secure Browser'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /(focus)\\/([\\w\\.]+)/i // Firefox Focus\n ], [[NAME, 'Firefox Focus'], VERSION], [\n\n /(opt)\\/([\\w\\.]+)/i // Opera Touch\n ], [[NAME, 'Opera Touch'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(windowswechat qbcore)\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [[NAME, 'WeChat(Win) Desktop'], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(brave)\\/([\\w\\.]+)/i // Brave browser\n ], [[NAME, 'Brave'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(baiduboxapp)[\\/\\s]?([\\w\\.]+)/i // Baidu App\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /safari\\s(line)\\/([\\w\\.]+)/i, // Line App for iOS\n /android.+(line)\\/([\\w\\.]+)\\/iab/i // Line App for Android\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(sailfishbrowser)\\/([\\w\\.]+)/i // Sailfish Browser\n ], [[NAME, 'Sailfish Browser'], VERSION], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /(qihu|qhbrowser|qihoobrowser|360browser)/i // 360\n ], [[NAME, '360 Browser']], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+[;l]))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\),;-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple'], [TYPE, SMARTTV]], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n /android.+aft([bms])\\sbuild/i // Fire TV\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, SMARTTV]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone|p00c)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)(?=\\sbuild\\/|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\)|\\sbuild)|\\w+)/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p|vog-l29|ane-lx1|eml-l29)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /android.+(bah2?-a?[lw]\\d{2})/i // Huawei MediaPad\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, TABLET]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android[x\\d\\.\\s;]+\\s([ab][1-7]\\-?[0178a]\\d\\d?)/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(s(?:5000|6000)(?:[\\w-]+)|tab(?:[\\s\\w]+))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n /(lenovo)[_\\s-]?([\\w-]+)/i\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google'], [TYPE, SMARTTV]], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)[\\s)]/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel( [23])?( xl)?)[\\s)]/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:a\\d|one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, \n // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n /(mz)-([\\w-]{2,})/i\n ], [[VENDOR, 'Meizu'], MODEL, [TYPE, MOBILE]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})[\\s)]/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+;\\s(PH-1)\\s/i\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [ // Essential PH-1\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /[\\s\\/\\(](smart-?tv)[;\\)]/i // SmartTV\n ], [[TYPE, SMARTTV]], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, \n // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/\\s]([\\w\\.]+)/i, // Tizen/KaiOS\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|sailfish|contiki)[\\/\\s-]?([\\w\\.]*)/i\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki/Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms|fuchsia)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS/Fuchsia\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === 'function' && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import UAParser from 'ua-parser-js';\nif (typeof window !== 'undefined' && typeof (window as any).UAParser === 'undefined') {\n (window as any).UAParser = UAParser;\n}\n// TODO: DELETE \nexport namespace IUAParser {\n export interface IResult {\n browser: {\n name: string;\n major: string;\n }\n os: {\n name: string;\n version: string;\n }\n device: {\n model: string;\n }\n }\n}\n\nlet uaInfo: IUAParser.IResult | null = null;\nexport const getUAInfo = () => {\n if (!uaInfo) {\n // @ts-ignore\n uaInfo = new UAParser().getResult() as IUAParser.IResult;\n }\n return uaInfo;\n};\n\n/**\n * 判断是否当前浏览器环境是否是ie8/ie9来做cors兼容\n */\nexport function needCompatible() {\n const uaInfo = getUAInfo();\n if (uaInfo.browser.name !== 'IE') {\n return false;\n }\n\n return uaInfo.browser.major && +uaInfo.browser.major <= 9;\n}\n\n// 从vue-router里面拿的……\nexport function supportsPushState() {\n const ua = window.navigator.userAgent;\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1)\n && ua.indexOf('Mobile Safari') !== -1\n && ua.indexOf('Chrome') === -1\n && ua.indexOf('Windows Phone') === -1\n ) {\n return false;\n }\n return window.history && 'pushState' in window.history;\n}\n\nexport default {\n needCompatible,\n supportsPushState,\n getUAInfo\n};","/**\n * @file 直接使用sendBeacon\n *\n * @author 天翔Skyline(skyline0705@gmail.com)\n * May 14, 2019\n */\nimport { DataOptions } from './types';\nimport { getUAInfo } from '../util/ua';\nlet enableBeacon = false;\n(() => {\n try {\n const uaInfo = getUAInfo();\n const forceUseBeacon = uaInfo.browser.name === 'Chrome'\n && +(uaInfo.browser.major || 0) > 77;\n enableBeacon = forceUseBeacon && typeof window !== 'undefined' && typeof window.navigator !== 'undefined' && typeof window.navigator.sendBeacon === 'function';\n } catch (err) {};\n})();\nexport default function send(\n { url, data }: DataOptions\n) {\n if (!enableBeacon) return false;\n return navigator.sendBeacon(url, data);\n}\n","import sendIframe from './iframe';\nimport sendXHR from './xhr';\nimport { needCompatible } from '../util/ua';\nimport { DataOptions } from './types';\nimport sendBeacon from './beacon';\nimport { transToFormData } from './util';\n\nexport default function sendData(\n { url, data, timeout, format }: DataOptions,\n callback?: (error?: any) => void\n) {\n // 使用 iframe 发送\n if (needCompatible()) {\n return sendIframe({ url, data }, callback);\n }\n data = format && format === 'string' ? JSON.stringify(data) : transToFormData(data);\n // 优先走 sendBeacon,如果成功把数据添加到 beacon 通道,则认为发送成功\n if (sendBeacon({url, data})) {\n return callback && callback();\n }\n sendXHR({ url, data, timeout }, callback);\n}\n","/**\n * @file IO工具函数\n *\n * @author 天翔Skyline(skyline0705@gmail.com)\n * May 15, 2019\n */\n\nexport function transToFormData(data: any) {\n const formData = new FormData();\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n formData.append(key, JSON.stringify(data[key]));\n }\n }\n return formData;\n}\n","/**\n * @file 使用xhr发送log\n *\n * @author 天翔Skyline(skyline0705@gmail.com)\n * May 14, 2019\n */\nimport { DataOptions } from './types';\n\nexport default function send(\n { url, data, timeout }: DataOptions,\n callback?: (error?: any) => void,\n) {\n const xhr = new XMLHttpRequest();\n // async 同步情况会报错,而且影响性能,取消使用同步\n xhr.open('POST', url);\n if (timeout) {\n xhr.timeout = timeout;\n }\n xhr.onload = () => {\n let err;\n if (xhr.status < 200 || (xhr.status >= 300 && xhr.status !== 304)) {\n err = xhr.response || xhr.status || 'unknonw error';\n }\n callback && callback(err);\n };\n\n xhr.ontimeout = xhr.onerror = e => {\n callback && callback(e);\n };\n xhr.send(data);\n}\n","/**\n * 快手系应用UA标示\n */\n// TODO 海外 APP List 要求不区分大小写判断\nexport const ksOverseaAppList = ['UVideo', 'Vstatus', 'Kwaigo', 'MvMaster'];\n\n// TODO这么加没个完了,后面想办法搞成自行传入吧\nexport const ksAppList = [\n 'Kwai',\n 'Kwai_Lite',\n 'Kwai_Pro',\n 'livemate',\n 'ksthanos',\n 'ksNebula',\n 'ksnebula',\n 'kwaiying',\n 'pearl',\n 'kinder',\n 'm2u',\n 'LOLita',\n 'XFunCore', // A 站 —— 水母 APP\n 'ACVideoCore', // A 站 —— acfun\n 'ZIKZAK', // ZIKZAK\n].concat(ksOverseaAppList);\n","import { getCookie } from './cookie';\nimport { ksAppList, ksOverseaAppList } from './const';\nimport { UrlMapFn, UrlMap, UrlMapFnParam } from '../config/types';\n\n/**\n * @file webLogger工具函数\n * @author \n * @author 天翔Skyline(skyline0705@gmail.com)\n */\n\n/**\n * 获取 localStorage 缓存\n */\nexport function getLocalStorageItem(key: string) {\n try {\n if (window && window.localStorage) {\n const value = window.localStorage.getItem(key);\n if (value) {\n try {\n return JSON.parse(value);\n } catch (err) {\n return value;\n }\n }\n }\n } catch (err) {\n return null;\n }\n return null;\n\n}\n/**\n * 设置 localStorage 缓存\n */\nexport function setLocalStorageItem(key: string, value: any) {\n try {\n if (window && window.localStorage) {\n window.localStorage.setItem(key, JSON.stringify(value));\n return true;\n }\n } catch (err) {\n return false;\n }\n return false;\n}\n\n/**\n * 判断item是否在目标数组arr中\n * @param {*} arr 目标数组\n * @param {*} item item\n */\nexport function inArray(arr: any[], item: any) {\n return arr.indexOf(item) > -1;\n}\n/**\n * 从目标arr中删除item\n * @param {*} arr 目标数组\n * @param {*} item item\n */\nexport function deleteArray(arr: any[], item: any) {\n const index = arr.indexOf(item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n}\n\n/**\n * 事件监听兼容处理\n * @param {*} evtTarget 事件监听目标\n * @param {*} evtName 事件名\n * @param {*} callback 回调函数\n * @param {*} options 相关参数设置\n */\nexport function addMonitor(\n evtTarget: Element | Window | Document,\n evtName: string,\n callback: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) {\n if ('attachEvent' in evtTarget) {\n return evtTarget.attachEvent('on' + evtName, callback);\n }\n return evtTarget.addEventListener(evtName, callback, options);\n}\n\n/**\n * 事件监听解绑兼容处理\n * @param {*} evtTarget 事件监听目标\n * @param {*} evtName 事件名\n * @param {*} callback 事件回调\n */\nexport function removeMonitor(\n evtTarget: Element | Window | Document,\n evtName: string,\n callback: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) {\n if ('attachEvent' in evtTarget) {\n return evtTarget.detachEvent('on' + evtName, callback);\n }\n return evtTarget.removeEventListener(evtName, callback, options);\n}\n\nexport function leftPad(str: string, len: number, ch = ' ') {\n len = len - str.length;\n if (len <= 0) {\n return str;\n }\n let pad = '';\n while (len) {\n if (len & 1) {\n pad += ch;\n }\n len >>= 1;\n ch += ch;\n }\n return pad + str;\n}\n\n/**\n * 是否是快手系APP\n */\nexport const isInApp = (() => {\n // 防止SSR出问题,所以需要给出方法而不是直接属性\n let inApp: boolean | null = null;\n return () => {\n try {\n if (inApp === null) {\n for (let i = 0; i < ksAppList.length; i++) {\n const isOversea = ksOverseaAppList.indexOf(ksAppList[i]) > -1;\n if (isOversea) {\n if (window.navigator.userAgent.toLowerCase().indexOf(ksAppList[i].toLowerCase()) > -1) {\n inApp = true;\n break;\n }\n } else {\n if (window.navigator.userAgent.indexOf(ksAppList[i]) > -1) {\n inApp = true;\n break;\n }\n }\n }\n }\n return inApp;\n } catch (err) {\n return false;\n }\n };\n})();\n\n/**\n * 是否是快手APP\n */\nexport const isInKwai = (() => {\n let inApp: boolean | null = null;\n return () => {\n if (inApp === null) {\n inApp = window.navigator.userAgent.indexOf('Kwai') > -1;\n }\n return inApp;\n };\n})();\nexport const isInKwaiSpeed = (() => {\n let inApp: boolean | null = null;\n return () => {\n if (inApp === null) {\n inApp = window.navigator.userAgent.indexOf('ksNebula') > -1;\n }\n return inApp;\n };\n})();\nfunction fakeRaf(callback: (...args: any[]) => void) {\n return setTimeout(callback, 1000 / 16);\n}\nconst fakeCaf = clearTimeout;\n\nexport const raf = function (this: any, callback: (...args: any[]) => void) {\n const fn = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || fakeRaf;\n return fn.call(this, callback);\n};\n\nexport const caf = function (this: any, handle: number) {\n const fn = window.cancelAnimationFrame\n || window.mozCancelAnimationFrame\n || window.webkitCancelAnimationFrame\n || fakeCaf;\n return fn.call(this, handle);\n};\n\n\nexport function parseQueryString(queryString: string) {\n const result: any = {};\n const queries = queryString.split('&');\n for (const query of queries) {\n const [key, value] = query.split('=');\n if (!(key in result)) {\n result[key] = value;\n continue;\n }\n if (result[key] instanceof Array) {\n result[key].push(value);\n continue;\n }\n result[key] = [result[key], value];\n }\n return result;\n}\n\nexport function stringifyQuery(paramsString: any) {\n const params = typeof paramsString === 'string' ? JSON.parse(paramsString) : paramsString;\n const queries: string[] = [];\n Object.keys(params).forEach(key => {\n if (params[key] instanceof Array) {\n for (const val of params[key]) {\n queries.push(`${key}=${val}`);\n }\n } else if (typeof params[key] === 'object' && params[key] !== null) {\n queries.push(`${key}=${JSON.stringify(params[key])}`);\n } else {\n queries.push(`${key}=${params[key]}`);\n }\n });\n return queries.join('&');\n}\n\n/**\n * 随机生成长度为4的字符串\n */\nexport const s4 = function () {\n return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n};\n\n\n// 处理 DOM 路径,获取可读性强的列表\nexport function composedPath(path?: Element[]) {\n // 兼容下低版本安卓机报错问题。。\n if (!Array.isArray(path)) return '';\n\n const eleList = path.map(ele => {\n const { tagName = '', id, className = '' } = ele;\n let item = tagName.toLowerCase();\n if (id) item += `#${id}`;\n if (className) item += className.split(' ').map(v => `.${v}`).join('');\n return item;\n });\n\n // window 取不出来,感觉意义不大,直接过滤掉吧\n return eleList.filter(v => v).join(',');\n}\n\n// 参考:https://codereview.stackexchange.com/questions/37512/count-byte-length-of-string\nexport function getStringBytes(data: any) {\n let dataStr = '';\n\n // Force string type\n if (typeof data === 'string') {\n dataStr = data;\n } else {\n try {\n dataStr = JSON.stringify(data);\n } catch (e) {\n dataStr = String(data);\n }\n }\n\n let byteLen = 0;\n for (let i = 0; i < dataStr.length; i++) {\n const c = dataStr.charCodeAt(i);\n byteLen += c < (1 << 7) ? 1 :\n c < (1 << 11) ? 2 :\n c < (1 << 16) ? 3 :\n c < (1 << 21) ? 4 :\n c < (1 << 26) ? 5 :\n c < (1 << 31) ? 6 : Number.NaN;\n }\n return byteLen;\n}\n\n/**\n * http://git.corp.kuaishou.com/ks-frontend/modules/web-util/blob/master/src/device.js\n */\nconst kpnFromUA = (() => {\n return () => {\n if (typeof window === 'undefined') return '';\n let ua = window.navigator.userAgent;\n // 注意顺序很重要\n let rules = [\n [/ wxwork\\//, 'workWechat'],\n\n [/ MicroMessenger\\//, 'wechat'],\n [/ Kwai\\//, 'KUAISHOU'],\n [/ ksthanos\\//, 'THANOS'],\n [/ ksNebula\\//i, 'NEBULA'],\n [/ QQ\\//, 'qq'],\n [/__weibo__([^_]+)/, 'weibo'],\n [/ livemate\\//, 'livemate'],\n [/ baiduboxapp\\//, 'baidu'],\n\n [/ MQQBrowser\\//, 'qqBrowser'],\n [/\\(MSIE ([^;]+);/, 'ie'],\n ];\n\n for (let i = 0; i < rules.length; i++) {\n let tmp = rules[i];\n let rule = tmp[0];\n let name = tmp[1];\n let rRes = (rule as RegExp).exec(ua);\n if (rRes) {\n return name;\n }\n }\n return '';\n };\n})();\n\n/**\n * 获取默认的 KPN\n */\nexport function getDefaultKpn() {\n const kpnInCookie = getCookie('kpn');\n const kpnInUA = kpnFromUA();\n\n return kpnInCookie || kpnInUA || '';\n}\n\n/**\n * lodash 的 pick 方法\n */\nexport function pick(data: any, paths: string[]) {\n let index = -1;\n const length = paths.length;\n const result: any = {};\n\n while (++index < length) {\n const path = paths[index];\n const value = data[path];\n result[path] = value;\n }\n\n return result;\n}\n\n/**\n * 检查依赖版本号是否不小于推荐版本\n */\n\nexport function checkVersion(recommendVersion: string, version: string) {\n if (!version) return false;\n if (version.indexOf('alpha') !== -1) return false;\n if (version.indexOf('beta') !== -1) return false;\n try {\n let matches = recommendVersion.match(/\\d+\\.\\d+\\.\\d+/);\n recommendVersion = matches ? matches[0] : '';\n if (!recommendVersion) return true;\n\n matches = version.match(/\\d+\\.\\d+\\.\\d+/);\n version = matches ? matches[0] : '';\n if (!version) return false;\n\n const [rMajor, rMinor, rPatch] = recommendVersion.split('.').map((i: string) => Number(i));\n const [major, minor, patch] = version.split('.').map((i: string) => Number(i));\n\n if (major < rMajor) return false;\n if (major > rMajor) return true;\n\n if (minor < rMinor) return false;\n if (minor > rMinor) return true;\n\n if (patch < rPatch) return false;\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\n/**\n * 获取元素xpath\n * @param element 元素\n */\nexport function getXpathFromNode(element: HTMLElement): string {\n // if (element && element.id !== '')\n // return 'id(\"' + element.id + '\")';\n if (element === document.body)\n return 'HTML/' + element.tagName;\n\n let ix = 0;\n if (element && element.parentNode) {\n const siblings = element.parentNode.childNodes;\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i] as HTMLElement;\n if (sibling === element)\n return getXpathFromNode(element.parentNode as HTMLElement) + '/' + element.tagName + '[' + (ix + 1) + ']';\n if (sibling.nodeType === 1 && sibling.tagName === element.tagName)\n ix++;\n }\n }\n return '';\n}\n\n/**\n * url中获取path和query\n */\nexport function getPathAndQueryFromUrl() {\n const { protocol, host, pathname, search, href } = window.location;\n const pageUrl = href;\n const pagePath = protocol + host + pathname;\n const pageParams = parseQueryString(search.slice(1));\n return { pageUrl, pagePath, pageParams };\n}\n\nexport function getUrlAndQueryFromUrl(url = location.href) {\n const queryIndex = url.lastIndexOf('?');\n if (queryIndex === -1) {\n return {\n page: url\n };\n }\n const page = url.slice(0, queryIndex);\n const queryString = url.slice(queryIndex + 1);\n return {\n page,\n params: parseQueryString(queryString),\n };\n};\n\nexport const getMappingPage = (urlPackage: UrlMapFnParam, urlMap?: UrlMap | UrlMapFn) => {\n let { url, page, params } = urlPackage;\n if (!page && typeof url === 'string') {\n const parsed = getUrlAndQueryFromUrl(url);\n page = parsed.page;\n params = parsed.params;\n }\n if (typeof urlMap === 'function') {\n try {\n const res = urlMap({ url, page, params });\n if (typeof res === 'string') {\n page = res;\n } else if (typeof res === 'object') {\n if (res.page) {\n page = res.page;\n }\n if (res.params) {\n params = res.params;\n }\n }\n } catch (err) { }\n } else if (typeof urlMap === 'object') {\n let mappingPage = '';\n for (const key in urlMap) {\n if ((url || page || '').indexOf(key) > -1) {\n mappingPage = urlMap[key];\n break;\n }\n }\n if (mappingPage) {\n page = mappingPage;\n }\n }\n return {\n page,\n params\n };\n};\n\nfunction supportsPushState() {\n const ua = window.navigator.userAgent;\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1)\n && ua.indexOf('Mobile Safari') !== -1\n && ua.indexOf('Chrome') === -1\n && ua.indexOf('Windows Phone') === -1\n ) {\n return false;\n }\n return typeof window !== 'undefined' && window.history && 'pushState' in window.history;\n}\n\nexport const urlChangeEventId = supportsPushState() ? 'popstate' : 'hashchange';\n","/**\n * v2、v3 PB 相同部分\n */\nexport namespace Base {\n // 设备和用户Id\n export interface IdentityPackage {\n device_id: string; // 设备Id, 唯一标识一台设备\n user_id?: string | number; // 用户Id, 唯一标识一个用户\n iu_id?: string; // 数盟sdk获取到的设备Id, 唯一标识一台设备(仅用于安卓)\n global_id?: string; // 内部SDK生成的全局唯一id,识别多个app之间的相同设备\n union_id?: string; // 各端设备识的备用参数,例如微信小程序端上报微信内部用户的唯一标识\n open_id?: string; // 微信小程序open_id,需加解密\n }\n\n // 设备基础信息\n export interface DevicePackage {\n os_version: string; // 操作系统版本\n model: string; // 机型\n ua: string; // user agent\n }\n\n // 网络信息\n export enum NetworkPackageType {\n UNKNOWN_NETWORK = 0, // 未知\n NOT_CONNECTED = 1, // 网络处于关闭状态\n WIFI = 2, // WIFI网络\n MOBILE_4G = 3, // 移动网络, 4G\n MOBILE_3G = 4, // 移动网络, 3G\n MOBILE_2G = 5, // 移动网络, 2G\n MOBILE_UNKNOWN = 6, // 未识别出的移动网络类型\n MOBILE_5G = 7, // 移动网络, 5G\n }\n export interface NetworkPackage {\n type: NetworkPackageType; // 网络类型\n isp?: string; // 运营商\n ip?: string; // 外网IP地址\n ipv6?: string; // ipv6地址\n }\n\n // 地理位置信息\n export interface LocationPackage {\n country: string; // 国家\n province: string; // 省份/自治区/州\n city: string; // 城市\n county: string; // 县/区域\n street: string; // 街道\n latitude: number; // 纬度\n longitude: number; // 经度\n }\n\n // A/B测试实验\n export interface Experiment {\n name: string; // 实验名称\n value: string; // 实验分组\n }\n\n export enum AdditionalSeqIdPackageChannel {\n UNKNOWN1 = 0,\n REALTIME = 1,\n HIGH_FREQ = 2,\n NORMAL = 3,\n }\n // 客户端日志额外的sequenceId,用来验证不同发送通道、不同类型的日志的丢失率等。\n export interface AdditionalSeqIdPackage {\n channel: AdditionalSeqIdPackageChannel; // 数据发送通道类型\n channel_seq_id: number; // 日志对应的发送通道的自增ID\n custom_type: string; // 自定义类型\n custom_seq_id: number; // 自定义类型的自增ID\n }\n // 平台类型\n export enum Platform {\n UNKNOWN_PLATFORM = 0, // 未知\n ANDROID_PHONE = 1, // Android手机\n ANDROID_PAD = 2, // Android Pad\n IPHONE = 3, // iPhone\n IPAD = 4, // iPad\n WINDOWS_PC = 5, //Windows PC 例如直播伴侣windows客户端\n // 注: 同上\n ANDROID_PHONE_H5 = 6, // Android手机H5 app端内嵌h5页面\n IPHONE_H5 = 7, // iPhone H5 app端内嵌h5页面\n OUTSIDE_ANDROID_H5 = 8, // 端外android H5 非端内嵌页面,例如android手机浏览器\n OUTSIDE_IOS_H5 = 9, // 端外ios H5 非端内嵌页面,例如ios手机浏览器\n PC_WEB = 10, // pc端web页面 非端内嵌页面,例如A站web端、web直播端\n }\n // 容器类型\n export enum Container {\n NATIVE = 'NATIVE', // 端内\n REACT_NATIVE = 'REACT_NATIVE', // React Native 端\n H5 = 'H5', // 手机端\n MP_WECHAT = 'MP_WECHAT', // 微信小程序\n MP_ALIPAY = 'MP_ALIPAY', // 支付宝小程序\n MP_BAIDU = 'MP_BAIDU', // 百度小程序\n WEB = 'WEB', // 非以上,定义为 WEB\n }\n\n // 应用基础信息\n export interface AppPackage {\n product?: number; // 产品名称, 不同产品独立进行统计分析(为了灵活接入新app,废弃该参数,新接入app请上报到参数8)\n platform: Platform; // 平台\n language: string; // 语言, 例: zh-cn\n channel: string; // 用户来源渠道\n version_name: string; // 版本名\n version_code: number; // 版本号\n package_name: string; // 应用包名\n product_name: string; // 产品名称(为了避免不同app参数值冲突,新接入app请到埋点平台注册,具体咨询陈瑞娟)\n hotfix_patch_version?: string; // 热更新的patch版本号, 用于相同版本号但是不同Patch的分析\n container: Container; //和platform组合使用。platfrom标识平台,container标识应用运行载体. 取值如下,NATIVE、H5、小程序(MP_WECHAT、MP_ALIPAY、MP_BAIDU)\n }\n\n // 所有 Event 都包含的数据\n export interface CommonPackage {\n identity_package: IdentityPackage; // 用户和设置Id\n app_package: any; // 应用信息\n device_package: DevicePackage; // 设备基本信息\n network_package: NetworkPackage; // 网络信息\n location_package?: LocationPackage; // 地理位置信息\n experiment?: Experiment[]; // A/B测试实验\n sdk_version?: string; // logsdk版本号\n service_name?: string; // 中台服务名称,比如积木、im sdk等,如果业务log未使用中台服务,该字段置空\n safety_id?: string; // 防盗链id\n sub_biz?: string; // 多业务场景,同一中台可能存在多业务场景,比如评论sdk有 说说、作品评论等不同场景\n style_type?: string; // 客户端UI模式,比如滑滑版/极速版/普通版\n additional_seq_id_package?: AdditionalSeqIdPackage; // 客户端日志额外的sequenceId,用来验证不同发送通道、不同类型的日志的丢失率等。\n need_encrypt?: boolean; // 标记此条数据是否需要做加密处理\n global_attr?: string; // App内全局参数,json格式. 比如流量运营导流参数. 避免key冲突,key统一由埋点平台维护\n h5_extra_attr: {[key: string]: any}; // H5埋点专用扩展参数,json格式.\n }\n\n export enum PageType {\n UNKNOWN_PAGE_TYPE = 0, // 未知\n NATIVE = 1, // native页面\n H5 = 2, // h5页面\n MINA = 3, // 小程序页面\n }\n\n // 页面信息\n export interface UrlPackage {\n page?: string; // 一级页面。参考埋点需求填写即可\n params: string; // 参数列表参考埋点需求填写,并转成 json 字符串格式\n identity: string; // 页面唯一标识,使用UUID即可\n page_type?: PageType; // 应用页面类型\n }\n\n export enum ElementStatus {\n UNKNOWN_STATUS = 0, // 未知\n CHECKED = 1, // 选中\n UNCHECKED = 2, // 未选中\n }\n\n // 页面元素详细信息\n export interface ElementPackage {\n action?: string;\n action2?: string;\n index?: number; // 废弃 元素位置, 从0开始 (备注:element补充参数统一定义到params中)\n value?: number; // 废弃 元素的值, 用于求和, 求平均等 (备注:element补充参数统一定义到params中)\n status?: ElementStatus; // 废弃 元素状态 (备注:element补充参数统一定义到params中)\n params: string; // 参数列表参考埋点需求填写,并转成 json 字符串格式\n }\n\n // 页面曝光动作\n export enum PageShowAction {\n UNKNOWN_ACTION = 0, // 未知\n ENTER = 1, // 进入页面\n LEAVE = 2, // 离开页面\n RESUME = 3, // 恢复页面, 也可以认为是热加载, 这种情况下不需要重新渲染\n }\n\n export enum ActionStatus {\n UNKNOWN_STATUS = 0, // 未知\n SUCCESS = 1, // 成功\n FAIL = 2, // 失败\n }\n\n export enum ActionType {\n UNKNOWN_ACTION_TYPE = 0, // 未知\n CLICK = 1, // 点击进入或离开页面\n LEFT_PULL = 2, // 左滑进入或离开页面\n RIGHT_PULL = 3, // 右滑进入或离开页面\n UP_PULL = 4, // 上滑进入或者离开页面\n DOWN_PULL = 5, // 下滑进入或者离开页面\n }\n\n export enum SubAction {\n UNKNOWN_SUB_ACTION = 0, // 未知\n PAGE_ENTER = 1, // 进入页面\n PAGE_LEAVE = 2, // 离开页面 退出页面\n PAGE_RESUME = 3, // 恢复页面, 也可以认为是热加载, 这种情况下不需要重新渲染\n PAGE_PAUSE = 4, // 页面暂停,用户进入下一级页面,当前页面被覆盖的情况\n }\n\n // 操作方向\n export enum Direction {\n UNKNOWN2 = 0,\n UP = 1,\n DOWN = 2,\n LEFT = 3,\n RIGHT = 4,\n }\n\n export interface Event {\n url_package?: UrlPackage; // 事件发生页面\n refer_url_package?: UrlPackage; // 事件发生页面的来源页面\n element_package?: ElementPackage; // 触发事件发生的行为\n refer_element_package?: ElementPackage; // 触发事件发生的来源元素信息\n }\n\n // 曝光事件\n export interface ShowEvent extends Event {\n action?: PageShowAction; // 进入或离开\n type?: number; // 页面类型\n status: ActionStatus; // 展现状态, 成功或者失败\n action_type?: number; // 记录进入或离开页面的方式\n show_type?: number; // 记录进入或离开页面的方式\n time_cost?: number; // 页面加载, 刷新或离开时长, 单位: ms\n stay_length?: number; // 页面停留时长, 单位: ms\n url_package: UrlPackage; // 页面, 精确到页面级别, 控件级别的展现, 需填充 element_package\n sub_page?: boolean; // 是否包含子页面,true为包含,false为不包含,所有页面enter事件均上报,统计加载时长数据时使用。\n first_load?: boolean; // 记录是否是首个加载,true代表是,false代表不是,仅子页面加载事件中上报(非子页面不上报),统计加载时长数据时使用。\n sub_action: SubAction; // 页面进入或离开的类型细分\n }\n\n export enum TaskStatus {\n UNKNOWN_STATUS = 0,\n START = 1, // 开始\n RETRY = 2, // 重试\n PAUSE = 3, // 暂停\n RESUME = 4, // 恢复\n PENDING = 5, // 等待\n PROCESSING = 6, // 进行中\n SUCCESS = 7, // 成功\n FAIL = 8, // 失败\n CANCEL = 9, // 取消\n FINISH = 10, // 完成,比如直播结束的,长链接关闭\n }\n\n export enum OperationType {\n UNKNOWN_OPERATION = 0,\n CLICK = 1, // 点击\n DOUBLE_CLICK = 2, // 双击\n TRIPLE_CLICK = 3, // 三击\n LONG_PRESS = 4, // 长按\n PULL = 5, // 滑动\n DRAG = 6, // 拖拽\n SCALE = 7, // 双指缩放\n PULL_DOWN = 8, // 下拉刷新\n PULL_UP = 9, // 上拉加载更多\n RIGHT_CLICK = 10, // 鼠标右键点击\n AUTO = 10, // 自动\n }\n\n // 任务事件\n export interface TaskEvent extends Event {\n status: TaskStatus // 任务状态\n session_id?: string; // 任务的 session Id, 确保是全局唯一, 通常使用UUID即可, 连续 Action 相同的 task 保持一样的 session id\n operation_type?: OperationType; // 用户操作类型\n operation_direction?: Direction;\n url_package: UrlPackage; // Task发生页面\n element_package: ElementPackage; // 触发Task发生的行为\n }\n\n // 自定义弱类型事件\n export interface CustomEvent {\n key: string; // 自定义事件的key\n value: string; // 自定义事件的value\n }\n}","import { generateDID } from '../util/uuid';\n// import { storeLogs, getStoredLogs } from '../util/storer';\nimport Global from '../config/global';\nimport { ClientLog as ClientLogV3 } from '../proto/v3/client_log';\nimport { ClientLog as ClientLogV2} from '../proto/v2/client_log';\nimport CommonPackage from './common';\nimport { LogConfig } from '../config';\nimport sendData from '../io';\nimport { getCookie } from '../util/cookie';\nimport { parseQueryString } from '../util';\n\ntype SendCallback = (error?: any) => void;\n// logger测试扫二维码后需要客户端种在cookie中的字段\ninterface WebloggerSwitch {\n // 将log切换发送到该地址\n reportHost: string;\n // log测试前端页面地址\n loggerHost: string;\n // 本次logger测试的sessionId\n loggerSessionId: string;\n handshakeApi?: string;\n}\n// 测试环境 url\nconst devHost = 'https://webapi.test.gifshow.com/';\nconst dataTrackHost = 'https://data-track.corp.kuaishou.com';\nconst testHost = dataTrackHost + '/';\n\nconst xhrGet = (url: string) => {\n try {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.send();\n } catch (err) {}\n};\nconst getReportUrl = (viewHost: string, reportHost: string, sessionId: string = generateDID()) => {\n const loggerUrl = reportHost.indexOf('data-track.corp') !== -1 ? `${dataTrackHost}/v3/#/logger/index?sessionId=${sessionId}` : `${viewHost}/#/home?sessionId=${sessionId}`;\n console.log(`%c日志抓包校验: %c${loggerUrl}`, 'color:#1abf89;font-size:1.4em;line-height:2.4em;', 'font-size:1.2em;');\n return `${reportHost}/${sessionId}/`;\n};\n/**\n * logger 平台上报 url\n */\nconst getLoggerReportUrl = () => {\n let did = generateDID();\n xhrGet(`${dataTrackHost}/rest/${did}`);\n return getReportUrl('', `${dataTrackHost}/rest`, did);\n};\n/**\n * 端内环境根据cookie值切换发送地址\n */\nconst getCookieReportUrl = () => {\n try {\n let webloggerSwitch = getCookie('weblogger_switch') ||\n typeof sessionStorage !== 'undefined' && sessionStorage.getItem('weblogger_switch');\n if (!webloggerSwitch) return;\n const { loggerSessionId, reportHost, loggerHost, handshakeApi }: WebloggerSwitch = JSON.parse(webloggerSwitch);\n // 若cookie内存在loggerSessionId,则会自动切换发送路径到测试地址,否则返回空,代表不切换地址\n if (!loggerSessionId) {\n return '';\n }\n xhrGet(handshakeApi || `${reportHost}/${loggerSessionId}`);\n return getReportUrl(loggerHost, reportHost, loggerSessionId);\n } catch (err) {\n return '';\n }\n};\n\n/**\n * 端外H5 or pc页面根据当前的url参数切换发送地址\n */\nconst getWebPageReportUrl = (url: string = location.href) => {\n const queryIndex = url.lastIndexOf('?');\n if (queryIndex === -1) {\n return '';\n }\n const queryString = url.slice(queryIndex + 1);\n const { webloggerSwitch } = parseQueryString(queryString);\n if (!webloggerSwitch) {\n return '';\n }\n try {\n const data = decodeURIComponent(webloggerSwitch);\n const { loggerSessionId, reportHost, loggerHost, handshakeApi } = JSON.parse(data);\n if (!loggerSessionId) {\n return '';\n }\n // 存到 sessionStorage 中使同域名页面都可以调试\n if (typeof sessionStorage !== 'undefined') {\n sessionStorage.setItem('weblogger_switch', data);\n }\n xhrGet(handshakeApi || `${reportHost}/${loggerSessionId}`);\n return getReportUrl(loggerHost, reportHost, loggerSessionId);\n } catch (err) {\n return '';\n }\n};\n// 不同环境的接口\nconst Hosts = {\n v2: {\n // 正式环境随机域名分流\n production: ['https://wlog.ksapisrv.com/', 'https://wlog.gifshow.com/'][Math.round(Math.random())],\n development: devHost,\n test: testHost\n },\n v3: {\n production: 'https://log-sdk.ksapisrv.com/',\n development: devHost,\n test: testHost\n }\n};\nconst Apis = {\n v2: 'rest/kd/log/collect?_json=1&biz=',\n v3: 'rest/wd/common/log/collect/misc2',\n // 雷达都上报到 v3\n radar: 'rest/wd/common/log/collect/radar'\n};\ntype v3Env = 'production' | 'test' | 'development';\nconst getUrl = (\n env: v3Env | string = 'production',\n radar = false,\n proto: 'v2' | 'v3' = Global.proto,\n) => {\n if (['production', 'test', 'development'].indexOf(env) === -1) {\n return env + Apis[proto];\n }\n if (radar) {\n return Hosts.v3[env as v3Env] + Apis.radar;\n }\n return Hosts[proto][env as v3Env] + Apis[proto];\n};\n\nexport type LogPackage = (ClientLogV3.ReportPackage | ClientLogV2.ReportPackage) & {seqid?: number};\ntype ReportEvent = ClientLogV3.ReportEvent | ClientLogV2.ReportEvent;\ntype BatchReportEvent = ClientLogV3.ReportEvent[] | ClientLogV2.ReportEvent[];\n\n// 是否未排干日志队列\nlet drained = false;\nexport default class BatchLog {\n // 存储待发送的消息\n logQueue: BatchReportEvent = [];\n // 存储失败或者超时的数据\n errorQueue: LogPackage[] = [];\n sendingQuery: {[key: string]: LogPackage} = {};\n // 延迟发送定时器\n private batchWaitTimer: any;\n // 延时补报日志定时器\n private compensateTimer: any;\n commonPackage!: CommonPackage;\n config!: LogConfig;\n url: string = '';\n radarUrl: string = '';\n\n /*\n constructor() {\n this.compensateLogs();\n }\n */\n\n updateBase(commonPackage: CommonPackage) {\n this.commonPackage = commonPackage;\n }\n /**\n * 根据配置生成上报的 url 地址\n */\n updateUrls() {\n const { env, logger } = this.config;\n let url = getCookieReportUrl() || getWebPageReportUrl();\n if (url) {\n this.radarUrl = this.url = getUrl(url);\n Global.isDebug = true;\n } else if (logger || env === 'logger') {\n const loggerEnv = getLoggerReportUrl();\n this.url = getUrl(loggerEnv);\n this.radarUrl = this.url.indexOf(Apis.v2) !== -1 ? this.url.replace(Apis.v2, Apis.radar) : this.url.replace(Apis.v3, Apis.radar);\n Global.isDebug = true;\n } else if (env && /^(https?:)?\\/\\//.test(env)) {\n this.url = env;\n this.radarUrl = this.url.replace(Apis.v3, Apis.radar);\n } else {\n this.url = getUrl(env as v3Env);\n this.radarUrl = getUrl(env as v3Env, true);\n }\n }\n\n init(config: LogConfig, commonPackage: CommonPackage) {\n this.config = ({\n ...this.config,\n ...config,\n });\n this.updateUrls();\n this.updateBase(commonPackage);\n }\n /**\n * 之所以使用 JSON 而不是 commonPackage 对象,是因为对象可能会变化,而 JSON 则是当时的一个快照,一旦生成不会变化\n */\n getCommonPackageJSON() {\n if (!Global.isV2) {\n this.commonPackage.increaseHTTPSeqId();\n }\n return this.commonPackage.toJSON();\n }\n /**\n * 每个 logPackage 包含了所有上报所需的信息,上报地址和上报数据\n * @param logs \n * @param url \n */\n buildLogPackage(logs: BatchReportEvent, url = this.url) {\n if (Global.isV2) {\n return this.buildV2Package(logs as ClientLogV2.ReportEvent[], url);\n }\n return this.buildV3Package(logs as ClientLogV3.ReportEvent[], url);\n }\n buildV2Package(logs: ClientLogV2.ReportEvent[], url = this.url): ClientLogV2.ReportPackage {\n return {\n url,\n data: {\n log: {\n event: logs\n }\n },\n format: 'string',\n }\n }\n buildV3Package(logs: ClientLogV3.ReportEvent[], url = this.url): ClientLogV3.ReportPackage {\n return {\n url,\n data: {\n common: this.getCommonPackageJSON(),\n logs: {\n // 格式对应PB定义中RawBatchReportEvent\n event: logs,\n },\n },\n format: 'formdata',\n }\n }\n /**\n * 批量发送日志\n * @param logs \n * @param callback \n */\n private sendLogs(logs: BatchReportEvent, callback?: SendCallback) {\n if (!logs || !logs.length) {\n return typeof callback === 'function' && callback();\n }\n const data: LogPackage = this.buildLogPackage(logs);\n // 如果已经调过 drained 方法应该直接走 drain 逻辑,但是在浏览器中会造成重复\n // if (drained) {\n // this.beforeStore(data);\n // return storeLogs([data]);\n // }\n // data.seqid = seqid ++;\n const callbackFn = (error?: any) => {\n // if (typeof data.seqid !== 'undefined') {\n // delete this.sendingQuery[data.seqid];\n // }\n // 如果网络异常,日志发送失败,则将错误日志缓存,在网络恢复时清空一次错误队列\n if (error) {\n this.errHandler(data)\n } else {\n this.flushErrorLogs();\n }\n typeof callback === 'function' && callback(error);\n }\n // this.sendingQuery[data.seqid] = data;\n this.sendPackage(data, callbackFn);\n }\n /**\n * 直接发送一个数据包,包含 url 和 日志\n * @param data \n * @param callback \n */\n sendPackage(data: LogPackage, callback?: SendCallback) {\n const { timeout, sender } = this.config;\n try {\n // 如果业务方配置了 sender\n if (typeof sender === 'function') {\n sender(data, callback);\n } else {\n sendData({...data, timeout}, callback);\n }\n } catch (err) {\n typeof callback === 'function' && callback(err);\n }\n }\n /**\n * 清空当前日志队列\n * @param callback \n */\n flush = (callback?: SendCallback) => {\n this.sendLogs(this.logQueue, callback);\n this.logQueue = [];\n }\n /**\n * 页面关闭前排干所有未发送的和发送失败的日志\n */\n drain = () => {\n this.flush();\n this.flushErrorLogs();\n drained = true;\n // 处理 beforunload 中断,实际页面未退出的情况\n setTimeout(() => {\n drained = false;\n }, 1000);\n /* 会导致重复率升高,春节后再看服务端去重后处理\n const logPackages = this.errorQueue.slice(0)\n this.errorQueue = [];\n this.sendingQuery = {};\n if (this.logQueue.length) {\n logPackages.unshift(this.buildLogPackage(this.logQueue));\n this.logQueue = [];\n }\n const unSendLogPackages: LogPackage[] = [];\n logPackages.forEach(logPackage => {\n this.beforeStore(logPackage);\n unSendLogPackages.push(logPackage);\n });\n // 不支持 sendBeacon 或者添加到 beacon 失败的日志则存到本地\n if (unSendLogPackages.length) {\n storeLogs(unSendLogPackages.concat(\n Object.keys(this.sendingQuery).map(key => this.sendingQuery[key])\n ));\n }\n */\n }\n /**\n * 日志存储前标识处理\n * @param logPackage \n */\n /* 会导致重复率升高,春节后再看服务端去重后处理\n beforeStore(logPackage: LogPackage) {\n // 使用 puppeteer 测试 sendBeacon 页面关闭前请求成功率低,这里使用 sendBeacon 发送,同时保存本地\n this.sendPackage(logPackage);\n // 标记日志是否来自存储\n if ((logPackage as ClientLogV3.ReportPackage).data.common) {\n (logPackage as ClientLogV3.ReportPackage).data.common.h5_extra_attr.stored = true;\n } else {\n (logPackage as ClientLogV2.ReportPackage).data.log.event.forEach(log => log.common_package.h5_extra_attr.stored = true);\n }\n }\n */\n \n send(data: ReportEvent, immediate = false, callback?: SendCallback) {\n // v2 是每个 log 都有 common_package\n if (Global.isV2) {\n // v2 log 的自增 id 是存在 common 信息中\n this.commonPackage.setAdditionalSeqIdPackage((data as any).getEventType());\n data.common_package = this.getCommonPackageJSON();\n }\n // 立即发送马上插入发送队列\n // 立即上报可以设置回调函数,延迟上报没有\n if (immediate || drained) {\n this.sendLogs([data] as BatchReportEvent, callback);\n return;\n }\n\n this.logQueue.push(data as any);\n // 积攒超过最大\n if (this.logQueue.length >= 50) {\n this.flush();\n return;\n }\n\n // debounce逻辑\n clearTimeout(this.batchWaitTimer);\n this.batchWaitTimer = setTimeout(() => {\n this.flush();\n }, this.config.wait);\n }\n /**\n * 雷达专用上报(雷达上报接口和其他事件上报接口做了区分,用于分流统计)\n * @param radar \n */\n sendRadar(radar: ClientLogV3.ReportEvent) {\n const radarPackage = this.buildV3Package([radar], this.radarUrl);\n this.sendPackage(radarPackage);\n }\n /**\n * 日志上报出错处理,一般为网络异常\n * @param logPackage \n */\n errHandler(logPackage: LogPackage) {\n if (Global.isV2) {\n this.errorQueue.unshift(logPackage);\n return;\n }\n const { data } = logPackage as ClientLogV3.ReportPackage;\n if (!data.logs.event.length) return;\n // http_seq_id 和 client_timestamp 不是必须的,合并时删除\n delete data.common.h5_extra_attr.http_seq_id;\n delete data.common.h5_extra_attr.client_timestamp;\n \n // 尝试合并相同 url 和 common 的请求\n let merged = false;\n for (let i = 0; i < this.errorQueue.length; i++) {\n const currentLog = this.errorQueue[i] as ClientLogV3.ReportPackage;\n if (\n currentLog.url === logPackage.url &&\n currentLog.data.logs.event.length + data.logs.event.length <= 100 &&\n JSON.stringify(currentLog.data.common) === JSON.stringify(data.common)\n ) {\n merged = true;\n currentLog.data.logs.event.push(...data.logs.event);\n break;\n }\n }\n if (!merged) {\n // 先进后出\n // 最大错误数量限制为 5\n if (this.errorQueue.length >= 5) {\n this.errorQueue.pop();\n }\n this.errorQueue.unshift(logPackage);\n }\n }\n\n // 当网络恢复时尝试一次上报\n flushErrorLogs() {\n this.errorQueue.forEach(logPackage => {\n this.sendPackage(logPackage);\n });\n this.errorQueue = [];\n }\n\n /**\n * 补报本地存的日志,本地可能存在多个,根据时间顺序取出上报\n */\n /* 会导致重复率升高,春节后再看服务端去重后处理\n compensateLogs(secs: number = 1500) {\n this.compensateTimer = setTimeout(() => {\n const logPackages = getStoredLogs();\n if (!logPackages || !logPackages.length) return;\n logPackages.forEach((logPackage: LogPackage) => {\n sendData(logPackage);\n });\n }, secs);\n }\n */\n\n destory() {\n this.batchWaitTimer && clearTimeout(this.batchWaitTimer);\n this.compensateTimer && clearTimeout(this.compensateTimer);\n }\n}\n","import { Base } from '../proto/base';\nimport { ClientEvent as ClientEventV3 } from '../proto/v3/client_event';\nimport { ClientEvent as ClientEventV2 } from '../proto/v2/client_event';\nimport { logFactory } from '@/core/log';\nimport { SendConfig } from '@/core';\n\nexport interface UrlObj {\n page?: string;\n params?: any;\n}\n\nexport interface UrlMapFnParam {\n url?: string;\n page?: string;\n params?: any;\n}\n\nexport type UrlMapFn = (param: UrlMapFnParam) => (UrlObj | string);\n\nexport type BaseOptions = {\n /**\n * did\n */\n device_id?: string;\n /**\n * 预留字段, 端内页面不可缺省,服务端需解密\n */\n global_id?: string;\n /**\n * 用户唯一标志\n */\n user_id?: string;\n /**\n * 标识调用方,产品线(新注册时自动增加),找韩小龙要\n * 默认是0,表示产品未被注册= =\n */\n product?: number;\n /**\n * 来源\n */\n channel?: string;\n /**\n * 版本名\n */\n version_name?: string;\n /**\n * 应用包名\n */\n package_name?: string;\n /**\n * 代替app_product参数上报具体接入的app,具体值请联系韩小龙分配\n */\n product_name?: string;\n /**\n * 各端设备识的备用参数,例如微信小程序端上报微信内部用户的唯一标识\n */\n union_id?: string;\n /**\n * 网络类型\n */\n network_type?: keyof typeof networkType,\n /**\n * 区分平台\n */\n container?: Base.Container;\n /**\n * 中台服务名称,比如积木、im sdk等,如果业务log未使用中台服务,该字段置空\n */\n service_name?: string;\n /**\n * 子业务场景\n */\n sub_biz?: string;\n /**\n * 是否需要加密\n */\n need_encrypt?: boolean;\n /**\n * 防盗链id\n */\n safety_id?: string;\n /**\n * AB实验\n */\n experiment?: Base.Experiment[];\n /**\n * H5 附加参数\n */\n h5_extra_attr?: H5ExtraAttr;\n /**\n * 表示宿主平台环境,默认是 PC 端 web 页面\n */\n platform?: Base.Platform;\n /**\n * 表示页面会话 id\n */\n session_id?: string;\n};\n/**\n * 事件\n */\n// 网络类型\nexport const networkType = {\n unknown: Base.NetworkPackageType.UNKNOWN_NETWORK,\n none: Base.NetworkPackageType.NOT_CONNECTED,\n wifi: Base.NetworkPackageType.WIFI,\n '4g': Base.NetworkPackageType.MOBILE_4G,\n '3g': Base.NetworkPackageType.MOBILE_3G,\n '2g': Base.NetworkPackageType.MOBILE_2G,\n 'slow-2g': Base.NetworkPackageType.MOBILE_2G,\n};\n\n// 任务事件类型\nexport enum TaskOperations {\n CLICK = 'CLICK',\n DOUBLE_CLICK = 'DOUBLE_CLICK',\n TRIPLE_CLICK = 'TRIPLE_CLICK',\n LONG_PRESS = 'LONG_PRESS',\n PULL = 'PULL',\n DRAG = 'DRAG',\n SCALE = 'SCALE',\n PULL_DOWN = 'PULL_DOWN',\n PULL_UP = 'PULL_UP'\n}\n\n// 事件类型\nexport enum EventTypes {\n PV = 'PV',\n SHOW = 'SHOW',\n // Costume\n CUSTOM = 'CUSTOM',\n RADAR = 'RADAR',\n}\n\nexport type StatusTypes = keyof typeof Base.ActionStatus;\n\nexport type OperationDirectionTypes = keyof typeof Base.Direction;\n\nexport type TaskStatusTypes = keyof typeof Base.TaskStatus;\n\nexport interface OtherEventOptions {\n name: string;\n params?: any;\n referUrlPackage?: Base.UrlPackage;\n currentUrlPackage: Base.UrlPackage;\n contentPackage?: ContentPackage;\n status?: TaskStatusTypes;\n taskType?: TaskEventTypeStrings;\n eventId?: string;\n operationDirection?: OperationDirectionTypes;\n}\n\n\n// H5 附加参数\nexport interface H5ExtraAttr {\n // 主要用于 bridge 模式下,将当前产品的 product_name 透传\n product_name?: string;\n // 描述实际埋点对应的产品名称。比如一个h5的产品A,嵌入到产品B中使用,则product_name = A\n host_product?: string;\n // 宿主客户端版本号\n app_version_name?: string;\n seq_id?: number;\n http_seq_id?: number;\n domain?: string;\n [key: string]: any;\n}\n\n\nexport type PageTypeKey = 'web' | 'native' | 'mina';\n\nexport interface UrlMap {\n [key: string]: string;\n}\n\n\nexport type ContentPackage = string | {[key: string]: any};\n\nexport interface ShowEventOptions {\n type: 'SHOW' | 'PV';\n referUrlPackage?: Base.UrlPackage;\n currentUrlPackage: Base.UrlPackage;\n action: 'enter' | 'leave' | 'hidden' | 'visible';\n beginTime?: number;\n name?: string;\n params?: any;\n contentPackage?: ContentPackage;\n status?: StatusTypes;\n operationDirection?: OperationDirectionTypes;\n actionType?: keyof typeof Base.ActionType;\n auto?: boolean;\n}\n\nexport interface ShowEventProps {\n referUrlPackage?: Base.UrlPackage;\n currentUrlPackage: Base.UrlPackage;\n type: 'enter' | 'leave' | 'hidden' | 'visible';\n beginTime?: number;\n name: string;\n params?: any;\n contentPackage?: ContentPackage;\n status?: StatusTypes;\n eventId?: string;\n operationDirection?: OperationDirectionTypes;\n actionType?: keyof typeof Base.ActionType;\n auto?: boolean;\n}\n\nexport type TaskEventTypeStrings = keyof typeof ClientEventV3.TaskEventType;\n\nexport type TaskEventOperationTypes = keyof typeof Base.OperationType;\n\nexport interface TaskEventOptions {\n sessionId: string;\n referUrlPackage?: Base.UrlPackage;\n currentUrlPackage: Base.UrlPackage;\n name: string;\n params?: any;\n type: TaskOperations;\n contentPackage?: ContentPackage;\n status?: StatusTypes;\n taskType?: TaskEventTypeStrings | keyof typeof ClientEventV2.ClickType;\n operationDirection?: keyof typeof Base.Direction;\n}\n\nexport interface CustomStatEventOptions {\n name: string;\n params: any;\n currentUrlPackage: Base.UrlPackage;\n referUrlPackage?: Base.UrlPackage;\n [key: string]: any;\n}\n\nexport interface Weblogger {\n logConfig: any;\n collect: (type: string, ...params: any) => void;\n sendImmediately: (type: string, ...params: any) => void;\n plug: (params: any, options?: any) => void;\n addPluginInstance: (plugin: any) => void;\n unplug: (name: string) => void;\n updateBase: (options: BaseOptions) => void;\n updateCommonPackage: (options: BaseOptions) => void;\n updateReferUrlPackage: (url?: string | UrlObj, type?: 'web' | 'native' | 'mina') => void;\n updateCurrentUrlPackage: (url: string | UrlObj, type?: 'web' | 'native' | 'mina') => void;\n flush: () => void;\n logger: any;\n currentUrlPackage: Base.UrlPackage & { getRealUrlPackage: Function, update: (page: string, params: any) => void };\n referUrlPackage?: Base.UrlPackage & { getRealUrlPackage: Function };\n currentUrl: string;\n commomPackage: any;\n baseOption: any;\n plugins: {[key: string]: any};\n bridge?: any;\n yoda?: any;\n sessionId: string;\n Utils: {\n [key: string]: any;\n };\n generateLog: (\n type: string | SendConfig,\n name: string | PVOptions | ShowOptions | TaskOptions | CustomOptions | OtherEventOptions,\n params?: any,\n contentPackage?: ContentPackage,\n factory?: (type: string, data: any) => any,\n ) => any;\n}\n\nexport type AutoPVFilter = (newUrl: string, oldUrl: string | null, type: 'enter' | 'leave' | 'hidden' | 'visible') => boolean;\n\n\n/**\n * PV 类型参数\n */\nexport interface PVOptions {\n page?: string;\n identity?: string;\n pageType?: string;\n params?: string | any;\n contentPackage?: ContentPackage;\n currentUrlPackage?: Base.UrlPackage;\n status?: StatusTypes;\n type: 'enter' | 'leave' | 'hidden' | 'visible';\n beginTime?: number;\n eventId?: string;\n auto?: boolean;\n callback?: (error?: any) => void;\n}\n\ninterface UrlPage {\n page?: string; // url_package.page 当前 page 的 name\n identity?: string;\n}\n\n/**\n * Show 类型参数\n */\nexport interface ShowOptions {\n action: string;\n params?: any;\n contentPackage?: ContentPackage;\n currentUrlPackage?: Base.UrlPackage;\n eventId?: string;\n urlPage?: UrlPage;\n callback?: (error?: any) => void;\n}\n\n/**\n * TASK 类型参数\n */\nexport interface TaskOptions {\n action: string;\n params?: any;\n contentPackage?: ContentPackage;\n currentUrlPackage?: Base.UrlPackage;\n type?: TaskEventTypeStrings;\n status?: TaskStatusTypes;\n eventId?: string;\n urlPage?: UrlPage;\n callback?: (error?: any) => void;\n}\n\n/**\n * CUSTOM 类型参数\n */\nexport interface CustomOptions {\n key: string;\n value?: any;\n eventId?: string;\n urlPage?: UrlPage;\n currentUrlPackage?: Base.UrlPackage;\n callback?: (error?: any) => void;\n}\n","import { Base } from '../base';\n\nexport namespace ClientEvent {\n // 页面元素详细信息\n export interface ElementPackage extends Base.ElementPackage {\n action?: string; // 元素业务类型。参考埋点需求填写即可\n }\n\n // 页面信息\n export interface UrlPackage extends Base.UrlPackage {\n page: string; // 一级页面。参考埋点需求填写即可\n }\n\n // 曝光类型\n export enum ShowType {\n UNKNOWN_TYPE = 0, // 未知\n PAGE_AUTO = 10, // sdk自动采集页面\n PAGE_CUSTOM = 11, // 自定义页面\n ELEMENT = 12, // 自定义元素\n }\n\n // 曝光事件\n export interface ShowEvent extends Base.ShowEvent {\n type?: ShowType;\n element_package?: ElementPackage;\n content_package?: string; // 相关内容。具体项目把具体业务要上报的参数转成 json 字符串格式\n }\n\n export enum TaskEventType {\n UNKNOWN_TYPE = 0,\n USER_OPERATION = 1, // 用户操作\n STAY_LENGTH_STAT_EVENT = 2, // 非页面级别的停留时长统计事件,比如不同tab的停留时长\n BACKGROUND_TASK_EVENT = 3, // 记录客户端发起的后台请求任务\n }\n // 任务事件\n export interface TaskEvent extends Base.TaskEvent {\n type: TaskEventType;\n content_package?: string; // 相关内容。具体项目把具体业务要上报的参数转成 json 字符串格式\n }\n\n export interface CustomEvent {\n custom_stat_event: Base.CustomEvent;\n }\n\n export interface EventPackage {\n show_event?: ShowEvent;\n task_event?: TaskEvent;\n stat_package?: CustomEvent;\n }\n}","import { Base } from '../base';\n\nexport namespace ClientEvent {\n // 页面分类\n export enum PageCategory {\n UNKNOWN1 = 0,\n APP = 1, // APP\n HOME = 2, // 首页\n USER = 3, // 用户\n VIDEO = 4, // 短视频\n LIVE_STREAM = 5, // 直播\n PAY = 6, // 支付\n ADS = 7, // 广告\n SEARCH = 8, // 搜索页\n IMAGE = 9, // 图片\n }\n\n export interface ExpTagTrans {\n server_exp_tag: string; // 服务端下发,客户端只透传,不修改\n client_exp_tag: string; // 客户端信息(例如表示交互方式,作品是上滑进入,还是点击进入)\n }\n\n export interface ExpTagTransList {\n exp_tag_trans: ExpTagTrans[]\n }\n\n // 页面信息\n export interface UrlPackage extends Base.UrlPackage {\n category?: PageCategory; // 页面分类\n page2: string; // 一级页面。参考埋点需求填写即可\n page_seq?: number; // 页面创建的Sequence id,每创建一个新的页面就加1,与页面实例绑定。主要是配合ShowEvent中的page_show_seq使用\n entry_page_id?: string; // 入口id,正常启动的首页三大tab、侧边栏、首页进入视频拍摄及push、外链进入的落地页,均视为不同入口\n entry_page_source?: string; //入口页来源,从首页三个tab进入的详情页和直播页的source为相应tab页name(FIND, FOLLOW等),push、外链进入的source为(PUSH, URI),拍摄页source为进入时拍摄页当前page的name(RECORD_CAMERA等),侧边栏进入页面的source为MENU,诸如此类\n exp_tag_list?: ExpTagTransList; // feed消费栈。页面栈中,有消费feed的页面,则将该feed的exp_tag入栈,栈顶为最近一个消费feed的exp_tag\n }\n\n export enum ElementType {\n UNKNOWN1 = 0, // 未知\n BUTTON = 1, // 按钮\n LABEL = 2, // 标签\n ICON = 3, // 图标, 暂时废弃不用!\n IMAGE = 4, // 图片, 例: 作品封面\n MENU = 5, // 菜单条目\n LINK = 6, // 链接\n TAB = 7, // Tab\n INPUT_BOX = 8, // 输入框\n OPTION_BOX = 9, // 选择框\n NOTIFICATION = 10, // 通知栏\n CARD = 11, // 卡片, 暂时废弃不用!\n VIEW = 12, // 视图\n PAGE = 13, // 页面\n VIDEO = 14, // 视频\n CELL = 15, // 列表中一个元素\n BANNER = 16, // Banner\n BUBBLE = 17, // 引导气泡\n POPUP_WINDOW = 18, // 浮层\n }\n\n // 页面元素详细信息\n export interface ElementPackage extends Base.ElementPackage {\n type?: ElementType; // 元素类型(废弃,统一使用元素自定义参数上报)\n name?: string; // 元素名称(废弃,统一使用元素自定义参数上报)\n action2: string; // 业务类型字符串版本\n }\n\n export enum ShowType {\n UNKNOWN2 = 0, // 未知\n PAGE = 1, // 页面\n SUB_PAGE = 2, // 子页面\n ITEM = 3, // 条目\n DIALOG = 4, // 对话框\n BANNER = 5, // Banner\n BUTTON = 6, // 按钮\n BUBBLE = 7, // 引导气泡\n VIDEO = 8, // 视频\n LIVE = 9, // 直播\n POPUP_WINDOW = 10, // 浮层\n }\n\n export enum ShowActionType {\n UNKNOWN4 = 0, // 未知\n CLICK = 1, // 点击(除home键、系统返回、左上角图标之外的键)进入或离开页面\n LEFT_PULL = 2, // 左滑进入或离开页面\n RIGHT_PULL = 3, // 右滑进入或离开页面\n BACK_CLICK = 4, // 页面返回点击\n UP_SLIDE = 5, // 上滑进入或离开页面\n DOWN_SLIDE = 6, // 下滑进入或离开页面\n DOWN_PULL = 7, // 下拉进入或离开页面\n CLICK_HOME = 8, // 点击home键离开页面\n CLICK_SYS_BACK = 9, // 点击系统返回键进入或离开页面\n CLICK_UPLEFT_ICON = 10, // 点击左上角进入或离开页面\n COLD_LAUNCH = 11, // 冷启动\n }\n\n //页面区域信息 页面+区域+元素\n export interface AreaPackage {\n name: string; //区域名称\n params: string; //区域补充参数\n }\n\n // 曝光事件\n export interface ShowEvent extends Base.ShowEvent {\n type?: ShowType;\n show_type?: ShowActionType; // 记录进入或离开页面的方式\n page_show_seq?: number; // 页面展示的Sequence id,每次展示一次页面就加1(页面展示事件才有意义)\n content_wrapper?: string; // 上报业务相关信息,客户端将content_wrapper转成json上报\n extra_message?: string; // 用于存放一些点击时候的额外信息,可以是 json, string 分割等,此字段仅限于客户端内部分析使用!\n area_package?: AreaPackage; // 页面区域信息\n }\n\n // 任务结果分组\n export enum ResultPackageDomain {\n UNKNOWN2 = 0, // 未知\n HTTP = 1, // HTTP\n SYSTEM = 2, // 系统调用\n KUAISHOU = 3, // 快手API\n KINGSOFT_LIVE_PUSH = 4, // 金山直播推流\n KINGSOFT_LIVE_PLAY = 5, // 金山直播拉流\n }\n // 任务结果\n export interface ResultPackage {\n domain: ResultPackageDomain; // 返回码分组\n code: number; // 返回码\n message: string; // 详细信息\n time_cost: number; // 任务时长ms\n subdomain: string; // 自定义,可以为空\n }\n\n // 任务事件\n export interface TaskEvent extends Base.TaskEvent {\n action2: string;\n trigger?: number; // 任务触发器, 例如: 在送礼时触发支付, 在私信页面触发注册\n result_package?: ResultPackage; // 任务结果\n content_package?: any; // 相关内容,TODO: 比较复杂,暂时没写\n task_detail_package?: any; // 相关内容,TODO: 比较复杂,暂时没写\n ratio?: number; // 当前log的抽样统计比例 浮点数\n content_wrapper?: string; // 上报业务相关信息,客户端将content_wrapper转成json上报\n area_package?: AreaPackage;\n }\n\n export enum ClickType {\n UNKNOWN1 = 0,\n CLICK = 1, // 点击\n DOUBLE_CLICK = 2, // 双击\n TRIPLE_CLICK = 3, // 三击\n LONG_PRESS = 4, // 长按\n PULL = 5, // 滑动\n DRAG = 6, // 拖拽\n SCALE = 7, // 双指缩放\n PULL_DOWN = 8, // 下拉刷新\n PULL_UP = 9, // 上拉加载更多\n RIGHT_CLICK = 10, // 鼠标右键单击\n AUTO = 11, //自动\n }\n export interface ClickEvent extends Base.Event {\n type: ClickType; // 点击类型\n direction: Base.Direction; // Action={PULL, DRAG}时有意义\n url_package: Base.UrlPackage; // 页面\n element_package: Base.ElementPackage; // 所操作的元素信息\n content_package?: any; // 相关内容,TODO: 比较复杂,暂时没写\n extra_message?: any; // 用于存放一些点击时候的额外信息,可以是 json, string 分割等,此字段仅限于客户端内部分析使用!\n content_wrapper?: string; // 上报业务相关信息,客户端将content_wrapper转成json上报\n area_package?: AreaPackage; // 页面区域信息\n }\n \n export interface CustomEvent extends Base.CustomEvent {\n\n }\n\n export interface EventPackage {\n show_event?: ShowEvent;\n click_event?: ClickEvent;\n task_event?: TaskEvent;\n custom_event?: CustomEvent\n }\n}","import { Base } from '../proto/base';\nimport { ClientEvent as ClientEventV3 } from '../proto/v3/client_event';\nimport { ClientEvent as ClientEventV2} from '../proto/v2/client_event';\n\nimport { ShowEventOptions } from '../config/types';\nimport Global from '../config/global';\n\nlet firstLoad: boolean | undefined = true;\nlet enterTime: number = new Date().valueOf();\nexport default (options: ShowEventOptions): ClientEventV3.EventPackage | ClientEventV2.EventPackage => {\n const {\n type,\n currentUrlPackage,\n referUrlPackage,\n name = '',\n action,\n beginTime,\n params = {},\n contentPackage,\n status,\n actionType, // 这值目前似乎没传进来\n auto\n } = options;\n let url_package = currentUrlPackage;\n let refer_url_package = referUrlPackage;\n if (Global.isV2) {\n if (url_package) {\n // @ts-ignore\n url_package.page2 = url_package.page;\n delete url_package.page;\n }\n if (refer_url_package) {\n // @ts-ignore\n refer_url_package.page2 = refer_url_package.page;\n delete refer_url_package.page;\n }\n }\n const commonInfo = {\n status: status ? (Base.ActionStatus[status] || Base.ActionStatus.UNKNOWN_STATUS) : Base.ActionStatus.SUCCESS,\n [Global.isV2 ? 'show_type' : 'action_type']: actionType ? (Base.ActionType[actionType] || Base.ActionType.UNKNOWN_ACTION_TYPE) : Base.ActionType.CLICK,\n url_package,\n refer_url_package,\n [Global.isV2 ? 'content_wrapper' : 'content_package']: contentPackage,\n };\n if (type === 'PV') {\n let sub_action = Base.SubAction.PAGE_ENTER;\n let actionPB = Base.PageShowAction.ENTER;\n let first_load = firstLoad;\n let stay_length = 0;\n firstLoad = false;\n switch (action) {\n case 'leave':\n actionPB = Base.PageShowAction.LEAVE;\n sub_action = Base.SubAction.PAGE_LEAVE;\n stay_length = new Date().valueOf() - (beginTime || enterTime);\n break;\n case 'enter':\n actionPB = Base.PageShowAction.ENTER;\n sub_action = Base.SubAction.PAGE_ENTER;\n enterTime = new Date().valueOf();\n break;\n case 'visible':\n actionPB = Base.PageShowAction.RESUME;\n sub_action = Base.SubAction.PAGE_RESUME;\n enterTime = new Date().valueOf();\n break;\n case 'hidden':\n actionPB = Base.PageShowAction.LEAVE;\n sub_action = Base.SubAction.PAGE_PAUSE;\n stay_length = new Date().valueOf() - (beginTime || enterTime);\n break;\n }\n let showType: ClientEventV3.ShowType | ClientEventV2.ShowType = auto ? ClientEventV3.ShowType.PAGE_AUTO : ClientEventV3.ShowType.PAGE_CUSTOM;\n if (Global.isV2) {\n first_load = undefined;\n showType = ClientEventV2.ShowType.PAGE;\n }\n return {\n show_event: {\n action: actionPB,\n sub_action,\n type: showType,\n first_load,\n time_cost: 0,\n stay_length,\n ...commonInfo\n }\n } as ClientEventV3.EventPackage | ClientEventV2.EventPackage\n }\n return {\n show_event: {\n action: Base.PageShowAction.ENTER,\n // @ts-ignore\n type: Global.isV2 ? undefined : ClientEventV3.ShowType.ELEMENT,\n sub_action: Base.SubAction.PAGE_ENTER,\n element_package: {\n [Global.isV2 ? 'action2': 'action']: name,\n params: JSON.stringify(params),\n },\n ...commonInfo\n }\n }\n}","import { Base } from '../proto/base';\nimport { ClientEvent as ClientEventV3 } from '../proto/v3/client_event';\nimport { ClientEvent as ClientEventV2 } from '../proto/v2/client_event';\nimport Global from '../config/global';\nimport { TaskEventOptions } from '../config/types';\n\nexport default (options: TaskEventOptions): ClientEventV3.EventPackage | ClientEventV2.EventPackage => {\n const {\n sessionId,\n currentUrlPackage,\n referUrlPackage,\n name,\n params,\n type,\n contentPackage,\n status,\n taskType,\n operationDirection,\n } = options;\n let url_package = currentUrlPackage;\n let refer_url_package = referUrlPackage;\n if (Global.isV2) {\n if (url_package) {\n // @ts-ignore\n url_package.page2 = url_package.page;\n delete url_package.page;\n }\n if (refer_url_package) {\n // @ts-ignore\n refer_url_package.page2 = refer_url_package.page;\n delete refer_url_package.page;\n }\n }\n const commonInfo = {\n url_package,\n refer_url_package,\n element_package: {\n [Global.isV2 ? 'action2': 'action']: name,\n params: JSON.stringify(params),\n },\n [Global.isV2 ? 'content_wrapper' : 'content_package']: contentPackage\n }\n if (Global.isV2) {\n // v2 click_event 是一个单独的事件类型,v3 则属于 task_event\n if (type === 'CLICK') {\n return {\n click_event: {\n type: taskType && ClientEventV2.ClickType[taskType as keyof typeof ClientEventV2.ClickType] || ClientEventV2.ClickType.CLICK,\n direction: operationDirection && Base.Direction[operationDirection] || Base.Direction.UNKNOWN2,\n ...commonInfo,\n }\n }\n }\n return {\n task_event: {\n action2: type,\n status: status && Base.TaskStatus[status] || Base.TaskStatus.UNKNOWN_STATUS,\n ...commonInfo,\n }\n }\n }\n return {\n task_event: {\n type: taskType && ClientEventV3.TaskEventType[taskType as keyof typeof ClientEventV3.TaskEventType] || ClientEventV3.TaskEventType.USER_OPERATION,\n status: status && Base.TaskStatus[status] || Base.TaskStatus.UNKNOWN_STATUS,\n operation_type: Base.OperationType[type] || Base.OperationType.CLICK,\n operation_direction: operationDirection && Base.Direction[operationDirection] || Base.Direction.UNKNOWN2,\n session_id: sessionId,\n ...commonInfo\n }\n }\n}","import { Base } from '../proto/base';\nimport { CustomStatEventOptions } from '../config/types';\n\n/**\n * 自定义事件上报\n */\nexport default (options: CustomStatEventOptions): Base.CustomEvent => {\n const { name, params, currentUrlPackage, referUrlPackage, ...extra } = options;\n return {\n key: name,\n value: JSON.stringify({\n url_package: currentUrlPackage,\n refer_url_package: referUrlPackage,\n ...params,\n ...extra,\n })\n };\n}\n","import { getLocalStorageItem, setLocalStorageItem } from '../util';\n// 常规业务事件自增 id key\nconst LOCAL_INCREAMENT_ID_KEY = 'WEBLOGGER_INCREAMENT_ID_KEY';\n// 自定义事件自增 id key\nconst LOCAL_CUSTOM_INCREAMENT_ID_KEY = 'WEBLOGGER_CUSTOM_INCREAMENT_ID_KEY';\n// Bridge 常规事件自增 id 本地缓存 key\nconst H5_SEQ_ID_KEY = 'WEBLOGGER_H5_SEQ_ID';\n// Bridge 自定义事件自增 id 本地缓存 key\nconst H5_CUSTOM_SEQ_ID_KEY = 'WEBLOGGER_H5_CUSTOM_SEQ_ID';\n// http 请求自增 id 本地缓存 key\nconst LOCAL_HTTP_INCREMENT_ID_KEY = 'WEBLOGGER_HTTP_SEQ_ID';\n// v2 自增 id 本地缓存 key\nconst V2_INCREMENT_ID_KEY = 'WEBLOGGER_V2_SEQ_ID';\nconst CHANNEL_INCREMENT_ID_KEY = 'WEBLOGGER_CHANNEL_SEQ_ID';\n// 自增 id 最大值\nconst maxId = 1e8;\n\n// 如果没有 localStorage 则使用运行时自增 id,用于非浏览器场景,比如 React Native\nconst runtimeIdMap:{[key: string]: number} = {};\n\nconst genId = (key: string) => {\n try {\n if (window && window.localStorage && typeof Storage !== 'undefined' && window.localStorage instanceof Storage) {\n let id = Number(getLocalStorageItem(key)) || 0;\n if (id + 1 > maxId) {\n id = 0;\n }\n setLocalStorageItem(key, id + 1);\n return id;\n }\n } catch (err) {};\n if (!runtimeIdMap[key]) {\n runtimeIdMap[key] = 0;\n }\n return runtimeIdMap[key] ++;\n}\n/**\n * 常规事件自增 id\n */\nexport const getNomalIncrementId = () => {\n return genId(LOCAL_INCREAMENT_ID_KEY);\n};\n/**\n * 自定义事件自增 id\n */\nexport const getCustomIncrementId = () => {\n return genId(LOCAL_CUSTOM_INCREAMENT_ID_KEY);\n};\n/**\n * 桥接常规事件自增 id\n */\nexport const getBridgeNormalIncrementId = () => {\n return genId(H5_SEQ_ID_KEY);\n};\n/**\n * 桥接自定义事件自增 id\n */\nexport const getBridgeCustomIncrementId = () => {\n return genId(H5_CUSTOM_SEQ_ID_KEY);\n};\n/**\n * http 请求自增 id\n */\nexport const getHttpIncrementId = () => {\n return genId(LOCAL_HTTP_INCREMENT_ID_KEY);\n};\n/**\n * v2 channel 自增 id\n */\nexport const getChannelIncrementId = (channel: string = '') => {\n return genId(`${CHANNEL_INCREMENT_ID_KEY}_${channel}`);\n};\n/**\n * v2 事件自增 id\n */\nexport const getV2EventIncrementId = (event: string) => {\n return genId(`${V2_INCREMENT_ID_KEY}_${event}`);\n};","import { ClientEvent as ClientEventV3 } from '../proto/v3/client_event';\nimport { ClientEvent as ClientEventV2 } from '../proto/v2/client_event';\nimport { OtherEventOptions, ShowEventProps, TaskOperations, TaskEventOptions } from '../config/types';\nimport ShowEvent from './show-event';\nimport TaskEvent from './task-event';\nimport CustomStatEvent from './custom';\nimport { DeepPartial } from 'utility-types';\nimport { leftPad } from '../util';\nimport { getCustomIncrementId, getNomalIncrementId } from '../util/increment-id';\nimport Global from '../config/global';\n\nconst GMT = (() => {\n const timeZoneGMTOffset = (new Date()).getTimezoneOffset() / 60;\n return timeZoneGMTOffset <= 0\n ? `GMT+${leftPad(-timeZoneGMTOffset + '', 2, '0')}:00`\n : `GMT-${leftPad(timeZoneGMTOffset + '', 2, '0')}:00`;\n})();\n\n// 为防止每个传出都带common_package,所以用base保留大多数信息\n// 部分信息放到每个消息体内维护,比如client_timestamp\nexport class ReportEvent {\n // uint64 客户端时间, Event或Stat发生时的时间, 而不是上传时的时间\n client_timestamp = new Date().valueOf();\n\n // uint64 客户端自增Id, 每新增一条日志+1, 必须是连续的, 用于校检数据完整性\n client_increment_id = 0;\n\n // string 会话id,设备冷启动或者切到后台超过5分钟再切回前台时,重新生成一个id\n // 端内页面不可缺省\n session_id = Global.sessionId;\n time_zone?: string;\n event_package?: ClientEventV3.EventPackage | ClientEventV2.EventPackage;\n stat_package?: ClientEventV3.CustomEvent;\n // 埋点唯一主键, PB 中已不推荐使用\n event_id = '';\n constructor(options: DeepPartial) {\n // v2 没有 time_zone 字段\n if (!Global.isV2) {\n this.time_zone = GMT;\n }\n Object.assign(this, options);\n this.genIncrementId();\n }\n // 设置自增 id,自定义事件和常规事件使用不同的 localStorage key\n genIncrementId() {\n if (this.isCustomStatEvent()) {\n this.client_increment_id = getCustomIncrementId();\n } else {\n this.client_increment_id = getNomalIncrementId();\n }\n }\n // 是否是自定义事件\n isCustomStatEvent() {\n return !!(this.stat_package && this.stat_package.custom_stat_event);\n }\n // 获取埋点事件类型\n getEventType() {\n if (this.event_package) {\n const { show_event, click_event, task_event, custom_event} = this.event_package as ClientEventV2.EventPackage;\n if (show_event) return 'showEvent';\n if (click_event) return 'clickEvent';\n if (task_event) return 'taskEvent';\n if (custom_event) return 'customEvent';\n }\n return 'customEvent';\n }\n}\n\n// tslint:enable\nexport function logFactory(type: string, data: ShowEventProps | OtherEventOptions) {\n const { eventId: event_id, currentUrlPackage, referUrlPackage, contentPackage, name, params } = data;\n switch (type) {\n case 'PV':\n case 'SHOW':\n return new ReportEvent({\n event_package: ShowEvent({\n type,\n status: (data as ShowEventProps).status,\n currentUrlPackage,\n referUrlPackage,\n action: (data as ShowEventProps).type,\n beginTime: (data as ShowEventProps).beginTime,\n name,\n params,\n contentPackage,\n operationDirection: data.operationDirection,\n auto: (data as ShowEventProps).auto\n }),\n event_id,\n });\n case 'CUSTOM':\n const customData = CustomStatEvent({\n name,\n params,\n currentUrlPackage,\n referUrlPackage,\n });\n return new ReportEvent(Global.isV2 ?\n {\n event_package: {\n custom_event: customData\n },\n event_id,\n }\n :\n {\n stat_package: {\n custom_stat_event: customData,\n },\n event_id,\n }\n );\n case 'RADAR':\n return new ReportEvent({\n stat_package: {\n custom_stat_event: CustomStatEvent({\n name,\n params,\n currentUrlPackage,\n referUrlPackage,\n }),\n },\n event_id,\n });\n default:\n return new ReportEvent({\n event_package: TaskEvent({\n type: type as TaskOperations,\n status: (data as TaskEventOptions).status,\n taskType: (data as TaskEventOptions).taskType,\n sessionId: Global.sessionId,\n currentUrlPackage,\n referUrlPackage,\n name,\n params,\n contentPackage,\n }),\n event_id,\n });\n }\n}\n","import { Base } from '../proto/base';\nimport { BaseOptions } from './types';\n\nexport const BASE: BaseOptions = {\n device_id: '',\n global_id: '',\n union_id: '',\n user_id: '',\n session_id: '',\n product: 0,\n channel: '',\n version_name: '',\n package_name: '',\n product_name: '',\n network_type: 'unknown',\n container: Base.Container.H5,\n service_name: '',\n sub_biz: '',\n need_encrypt: false,\n safety_id: '',\n experiment: [],\n h5_extra_attr: {},\n};\n\nexport const initPackageKeys = [\n {\n keys: ['identity_package', 'device_id'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['identity_package', 'user_id'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['identity_package', 'union_id'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['identity_package', 'global_id'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['app_package', 'product'],\n type: 'number',\n validator: (val: any) => typeof val === 'number',\n },\n {\n keys: ['app_package', 'channel'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['app_package', 'version_name'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['app_package', 'package_name'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['app_package', 'product_name'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['app_package', 'platform'],\n type: 'number',\n validator: (val: any) => typeof val === 'number',\n },\n {\n keys: ['experiment'],\n type: 'Array',\n validator: (val: any) => val instanceof Array,\n },\n {\n keys: ['service_name'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['sub_biz'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['need_encrypt'],\n type: 'boolean',\n validator: (val: any) => typeof val === 'boolean',\n },\n {\n keys: ['safety_id'],\n type: 'string',\n validator: (val: any) => typeof val === 'string',\n },\n {\n keys: ['h5_extra_attr'],\n type: 'Object',\n validator: (val: any) => val instanceof Object,\n },\n];\n","import { getMappingPage, getUrlAndQueryFromUrl } from '../util';\nimport { uuid } from '../util/uuid';\nimport { UrlMapFn, UrlMap } from '../config/types';\nimport Global from '../config/global';\n\nexport enum PageType {\n // 未知\n UNKNOWN_PAGE_TYPE = 0,\n // native页面\n NATIVE = 1,\n // h5页面\n H5 = 2,\n // 小程序页面\n MINA = 3,\n}\n\nexport type PageTypeKey = 'web' | 'native' | 'mina';\n\nexport interface UrlObj {\n page?: string;\n params?: any;\n}\n// tslint:disable variable-name\nexport default class UrlPackage {\n // 一级页面。参考埋点需求填写即可\n page: string = '';\n // 参数列表参考埋点需求填写,并转成 json 字符串格式\n params?: {[key: string]: any};\n // 实例的全局唯一标识,使用UUID即可\n identity: string = '';\n // 应用页面类型\n // TODO这货后面还需要考虑小程序的支持\n page_type: PageType;\n // 采样结果\n sampled?: boolean | {radar: {[key: string]: number}};\n constructor(url: string | UrlObj, pageType: PageTypeKey = 'web', urlMap?: UrlMap | UrlMapFn) {\n switch (pageType) {\n case 'web':\n this.page_type = PageType.H5;\n break;\n case 'native':\n this.page_type = PageType.NATIVE;\n break;\n case 'mina':\n this.page_type = PageType.MINA;\n break;\n default:\n this.page_type = PageType.UNKNOWN_PAGE_TYPE;\n }\n if (typeof url === 'string') {\n // TODO: 避免兼容问题,暂不处理\n // try {\n // url = window.decodeURIComponent(url);\n // } catch (err) {}\n const obj = getUrlAndQueryFromUrl(url);\n this.page = obj.page;\n this.params = obj.params;\n } else {\n this.page = (url || {}).page || '';\n this.params = (url || {}).params || undefined;\n }\n this.identity = uuid(this.page);\n if (urlMap && typeof url === 'string') {\n this.init(url, urlMap);\n }\n }\n\n init(url: string, urlMap: UrlMap | UrlMapFn = {}) {\n const { page, params } = getMappingPage({url, page: this.page, params: this.params}, urlMap);\n this.update(page, params);\n }\n\n update(page: string = '', params?: any) {\n if (page && page !== this.page) {\n this.page = page;\n this.identity = uuid(page);\n }\n if (params) {\n if (!this.params) this.params = {};\n Object.assign(this.params, params);\n }\n }\n\n toJSON() {\n return {\n page: this.page,\n identity: this.identity,\n page_type: this.page_type,\n params: JSON.stringify(this.params)\n };\n }\n /**\n * 获取真实的 url 信息,并与 PV 上报的通过参数做关联\n */\n getRealUrlPackage() {\n const { page, params } = getUrlAndQueryFromUrl(location.href);\n return {\n page: page,\n params: JSON.stringify({\n url: location.href,\n page: this.page,\n query: params\n }),\n page_type: this.page_type,\n identity: this.identity\n };\n }\n}\n// tslint:enable\n","/**\n * client_common.propto ts 声明文件\n * https://git.corp.kuaishou.com/data-platform/kuaishou-common-log-proto/-/blob/master/src/main/proto/kuaishou/log/client_log/client_common.proto\n */\nimport { Base } from '../base';\n\nexport namespace ClientCommon {\n export enum Product {\n UNKNOWN1 = 0, // 未知\n KUAISHOU = 1, // 快手, 目前仅有此一个Product\n KUAISHOU_GAME_EXTENSION = 2, // 快手游戏插件\n KUAISHOU_LIVE_MATE = 3, // 快手直播伴侣\n KUAISHOU_VIDEO_EDITOR = 4, // 快影\n KWAI = 5, // 快手海外版\n KUAISHOU_H5 = 6, // 快手H5\n KWAI_LITE = 7, // 快手印尼版\n KWAI_GO = 8, // 快手印度版\n KUAISHOU_LIVE_MATE_WP = 9, // 快手直播伴侣Win (仅供埋点平台使用,log上报继续使用参数3)\n WECHAT_SMALL_APP = 12, // 微信小程序\n NEBULA = 13, // 极速版快手\n KWAI_GAME_LIVE_PLUGIN = 14, // 快手游戏直播插件\n ACFUN_GAME_CENTER = 15, // A站游戏中心\n GAME_DIANDIANXIAO = 16, // 点点消\n THANOS = 17, // 滑滑版\n UVIDEO = 18, // 快手印度版新包\n GAME_ZONE = 19, // 电喵直播\n KWAI_GO_BRAZIL = 20, //快手巴西版\n KWAI_GO_COMICS = 21, // 快手中东版\n KUAISHOU_ANTMAN = 22, // 快手小包版\n UVIDEO_V2 = 23, // 快手印度版新包v2\n KWAI_BULLDOG = 24, // 海外快手滑滑版\n LOLITA_GLOBAL = 25,// 快手中东版新版\n KUAISHOU_NEBULA_ANTMAN = 26, // 极速版快手-小包版\n ZIKZAK = 27, // x6-zikzak\n KS_TV = 28, // 云视听快TV\n UVIDEO_LITE = 29,//海外UVIDEO lite版\n KUAISHOU_VISION = 30,//快手-PC主站首页\n }\n \n // 应用基础信息\n export interface AppPackage extends Base.AppPackage {\n product?: Product; // 产品名称, 不同产品独立进行统计分析(为了灵活接入新app,废弃该参数,新接入app请上报到参数8)\n }\n\n export enum TimePackageSyncStatus {\n UNSYNCHROIZED = 0,\n SYNCHROIZED = 1,\n }\n\n export interface TimePackage {\n sync_status: TimePackageSyncStatus; // 时间是否已经与服务器校准\n client_time_diff: number;// 该字段已废弃 客户端本地时间与ntp时间的差值,单位ms (ntp时间减去客户端时间的值)\n time_zone: string; // 时区 例:GMT+08:00 Asia/Shanghai\n client_time_difference: number;// 客户端本地时间与ntp时间的差值,单位ms (ntp时间减去客户端时间的值)\n }\n\n // 所有 Event 都包含的数据\n export interface CommonPackage extends Base.CommonPackage {\n app_package: AppPackage; // 应用信息\n time_package?: TimePackage; // 客户端时间的信息\n }\n}","export interface YodaInterface {\n isInYoda: boolean;\n ready: (callback?: () => void) => Promise;\n register: (arg: { namespace: string; name: string; }) => void;\n init: () => void;\n [x: string]: any;\n}\n\nlet _yoda: YodaInterface | null;\nlet yodaNamespace: string = 'tool';\nlet yodaResolve: Promise | null = null;\nexport let yodaAlready = false;\n\n/**\n * 检查 yoda 环境\n */\nexport const checkYoda = (yoda: YodaInterface | null = _yoda || typeof window !== 'undefined' && (window as any).yoda) => {\n if (_yoda && _yoda.isInYoda) return _yoda;\n if (yoda && yoda.isInYoda) {\n _yoda = yoda;\n return _yoda;\n }\n return null;\n};\n\n/**\n * 初始化 yoda\n * @param namespace \n */\nexport const initYoda = async () => {\n if (!_yoda || yodaAlready) return;\n try {\n if (yodaResolve) {\n await yodaResolve;\n } else {\n yodaResolve = _yoda.ready();\n await yodaResolve;\n _yoda.register({\n namespace: 'webview',\n name: 'getPageLoadData',\n });\n _yoda.register({\n namespace: 'tool',\n name: 'setClientLog',\n });\n _yoda.register({\n namespace: 'tool',\n name: 'sendRadarLog',\n });\n _yoda.register({\n namespace: 'tool',\n name: 'getKswitchData',\n });\n }\n yodaResolve = null;\n yodaAlready = true;\n } catch (err) {\n console.log('initYoda err', err);\n }\n}\n/**\n * 判断是否支持桥接接口\n * @param name \n * @param namespace \n */\nexport const isSupportBridge = async (name: string = 'setClientLog', namespace: string = yodaNamespace) => {\n let isSupport = false;\n try {\n if (_yoda) {\n if (!yodaAlready) await initYoda();\n const { canUse } = await _yoda.tool.canIUse({\n namespace,\n name,\n });\n isSupport = canUse;\n }\n } catch (e) {}\n return isSupport;\n}\n\n/**\n * 获取 webview 信息\n */\nexport const getWebviewLoadPerf = async (options: any = {}) => {\n if (!_yoda) return;\n try {\n if (!yodaAlready) await initYoda();\n return await _yoda.webview['getPageLoadData'](options);\n } catch (err) {}\n};\n/**\n * 发送雷达事件\n */\nexport const sendRadarLog = async (options: any = {}) => {\n if (!_yoda) return;\n try {\n if (!yodaAlready) await initYoda();\n return await _yoda.tool['sendRadarLog'](options);\n } catch (err) {}\n};\n/**\n * 发送业务事件\n * @param type \n * @param data \n */\nexport const setClientLog = async (type: string, data: any) => {\n if (!_yoda) return;\n try {\n if (!yodaAlready) await initYoda();\n return await _yoda.tool['setClientLog']({\n type,\n data\n });\n } catch (err) {}\n}\n\nexport type SamplingConfig = {\n // 页面路径下整体采样\n overall?: number;\n // 是否强制生效\n overwrite?: boolean;\n // 插件采样\n radar: {[key: string]: number};\n};\n\nexport type KSwitchSamplingType = {\n [key: string]: SamplingConfig;\n};\n\n/**\n * 采样配置:\n * undefined 表示还未获取到配置;\n * null 表示没有配置\n */\nexport let KSwitchSampling: KSwitchSamplingType | null | undefined = undefined;\n/**\n * 获取 Kswitch 采样配置\n */\nexport const getKSwitchSampling = async () => {\n if (!_yoda) {\n KSwitchSampling = null;\n return KSwitchSampling;\n }\n if (typeof KSwitchSampling !== 'undefined') return KSwitchSampling;\n try {\n if (!yodaAlready) await initYoda();\n const {canUse} = await _yoda.tool.canIUse({\n namespace: 'tool',\n name: 'getKswitchData'\n });\n if (!canUse) {\n KSwitchSampling = null;\n return KSwitchSampling;\n }\n const res = await _yoda.tool.getKswitchData({\n keys: [\n {\n key: 'webloggerSampling'\n }\n ]\n });\n if (res && res.data) {\n let kswitchData = res.data[0];\n if (typeof kswitchData === 'string') {\n kswitchData = JSON.parse(kswitchData);\n }\n let data = kswitchData ? kswitchData.value : null;\n if (data) {\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n // 只取当前域名的采样配置\n const host = typeof location !== 'undefined' ? location.host : '*';\n for (const pathname in data) {\n if (pathname === '*' || pathname.indexOf(host) !== -1) {\n if (!KSwitchSampling) KSwitchSampling = {};\n KSwitchSampling[pathname] = data[pathname];\n }\n }\n if (KSwitchSampling) return KSwitchSampling;\n }\n }\n } catch (err) {}\n KSwitchSampling = null;\n return KSwitchSampling;\n};\n\n\nexport const clearYoda = () => {\n _yoda = null;\n yodaAlready = false;\n KSwitchSampling = undefined;\n};\n\nlet deviceInfo = null;\nexport const getDeviceInfo = async () => {\n if (!_yoda) return null;\n const enable = await isSupportBridge('getDeviceInfo', 'system');\n if (enable) {\n try {\n deviceInfo = await _yoda.system.getDeviceInfo();\n return deviceInfo;\n } catch (err) {\n return null;\n }\n }\n\n}\nlet appInfo = null;\nexport const getAppInfo = async () => {\n if (!_yoda) return null;\n const enable = await isSupportBridge('getAppInfo', 'system');\n if (enable) {\n try {\n appInfo = await _yoda.system.getAppInfo();\n return appInfo;\n } catch (err) {\n return null;\n }\n }\n\n}\n\nexport default {\n isSupportBridge,\n getWebviewLoadPerf,\n sendRadarLog,\n setClientLog,\n yodaAlready, \n}","// 为了减少点代码体积,自己搞一个简易的EventEmitter\nimport { deleteArray } from '.';\n\nexport default class EventEmitter {\n private events: {\n [key: string]: Array<(...args: any[]) => void>;\n } = {};\n on(eventName: string, callback: (...args: any[]) => void) {\n if (callback && typeof callback === 'function') {\n this.events[eventName] = this.events[eventName] || [];\n this.events[eventName].push(callback);\n }\n }\n off(eventName: string, callback?: (...args: any[]) => void) {\n if (!this.events[eventName]) {\n return;\n }\n if (callback && typeof callback === 'function') {\n deleteArray(this.events[eventName], callback);\n }\n if (!callback) {\n this.events[eventName] = [];\n }\n }\n emit(eventName: string, ...args: any[]) {\n if (!this.events[eventName]) {\n return;\n }\n this.events[eventName].forEach(callback => {\n callback(...args);\n });\n }\n}\n","import { isInApp } from './index';\nimport { getUAInfo } from './ua';\n\nconst devices: Array<[string, string, string[]]> = [\n ['a7', '640x1136', ['iPhone 5', 'iPhone 5s']],\n ['a7', '1536x2048', ['iPad Air', 'iPad Mini 2', 'iPad Mini 3']],\n ['a8', '640x1136', ['iPod touch (6th gen)']],\n ['a8', '750x1334', ['iPhone 6']],\n ['a8', '1242x2208', ['iPhone 6 Plus']],\n ['a8', '1536x2048', ['iPad Air 2', 'iPad Mini 4']],\n ['a9', '640x1136', ['iPhone SE']],\n ['a9', '750x1334', ['iPhone 6s']],\n ['a9', '1242x2208', ['iPhone 6s Plus']],\n ['a9x', '1536x2048', ['iPad Pro (1st gen 9.7-inch)']],\n ['a9x', '2048x2732', ['iPad Pro (1st gen 12.9-inch)']],\n ['a10', '750x1334', ['iPhone 7']],\n ['a10', '1242x2208', ['iPhone 7 Plus']],\n ['a10x', '1668x2224', ['iPad Pro (2th gen 10.5-inch)']],\n ['a10x', '2048x2732', ['iPad Pro (2th gen 12.9-inch)']],\n ['a11', '750x1334', ['iPhone 8']],\n ['a11', '1242x2208', ['iPhone 8 Plus']],\n ['a11', '1125x2436', ['iPhone X']],\n ['a12', '828x1792', ['iPhone Xr']],\n ['a12', '1125x2436', ['iPhone Xs']],\n ['a12', '1242x2688', ['iPhone Xs Max']],\n ['a12x', '1668x2388', ['iPad Pro (3rd gen 11-inch)']],\n ['a12x', '2048x2732', ['iPad Pro (3rd gen 12.9-inch)']],\n];\n\nexport const getResolution = (() => {\n let resolution = '';\n return () => {\n if (resolution) {\n return resolution;\n }\n try {\n const ratio = window.devicePixelRatio || 1;\n const width = Math.floor(Math.min(screen.width, screen.height) * ratio); // 有的devicePixelRatio为小数,在此转为整数\n const height = Math.floor(Math.max(screen.width, screen.height) * ratio);\n resolution = `${width}x${height}`;\n return resolution;\n } catch (err) {\n return '';\n }\n };\n})();\n\nconst getGPU = (() => {\n let gpu = '';\n return () => {\n if (gpu) {\n return gpu;\n }\n try {\n const canvas = document.createElement('canvas');\n const glRenderContext = canvas.getContext('webgl');\n if (glRenderContext) {\n const debugRenderInfo = glRenderContext.getExtension('WEBGL_debug_renderer_info');\n gpu = debugRenderInfo\n ? glRenderContext.getParameter(debugRenderInfo.UNMASKED_RENDERER_WEBGL)\n : 'unknown';\n } else {\n gpu = 'unknown';\n }\n return gpu;\n } catch (err) {\n return 'unknown';\n }\n };\n})();\n\nexport const getModel = (() => {\n let model = '';\n return () => {\n if (model) {\n return model;\n }\n try {\n const uaInfo = getUAInfo();\n const inApp = isInApp();\n // 非iOS设备走ua判断\n // iOS端内也有问题= =妈的,傻逼苹果!应该是UIWebView特有的坑\n // 链接:https://www.jianshu.com/p/bae4db1f08b2\n if (uaInfo.os.name !== 'iOS' || inApp) {\n return uaInfo.device.model || 'unknown';\n }\n const gpu = getGPU();\n const resolution = getResolution();\n const matches = gpu.match(/^apple\\s+([_a-z0-9-]+)\\s+gpu$/i);\n if (!matches) {\n model = 'unknown';\n return model;\n }\n for (const device of devices) {\n if (matches[1].toLocaleLowerCase() === device[0] && resolution === device[1]) {\n model = device[2].join(' or ');\n break;\n }\n }\n model = model || uaInfo.device.model || 'unknown';\n return model;\n } catch (err) {\n return 'unknown';\n }\n };\n})();\n\nexport function isReactNative() {\n const GLOBAL: any = typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : null);\n return GLOBAL && GLOBAL.navigator && GLOBAL.navigator.product === 'ReactNative'\n || GLOBAL && GLOBAL.ReactNative && GLOBAL.ReactNative.NativeModules;\n}","/**\n * @file 日志公参,基本确定不变的数据\n * @author \n */\nimport { Base } from '../proto/base';\nimport { getCookie } from '../util/cookie';\nimport {\n isInApp,\n getDefaultKpn,\n parseQueryString\n} from '../util';\nimport { getUAInfo } from '../util/ua';\nimport { generateDID } from '../util/uuid';\nimport { DeepPartial } from 'utility-types';\nimport { getModel, getResolution, isReactNative } from '../util/device-detect';\nimport { H5ExtraAttr, networkType } from '../config/types';\nimport { getBridgeNormalIncrementId, getBridgeCustomIncrementId, getHttpIncrementId, getChannelIncrementId, getV2EventIncrementId } from '../util/increment-id';\nimport { initPackageKeys } from '../config/base-params';\nimport Global from '../config/global';\nimport { ClientCommon as ClientCommonV2 } from '../proto/v2/client_common';\nimport { getDeviceInfo, getAppInfo } from '../util/yoda';\n\nfunction network() {\n try {\n const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\n if (!connection) {\n // 不支持connection的全部为UNKNOWN_NETWORK\n return networkType.unknown;\n }\n const type = connection.type;\n const effectiveType = connection.effectiveType;\n return networkType[type] || networkType[effectiveType] || networkType.unknown;\n } catch (err) {\n return networkType.unknown;\n }\n}\n\nfunction platform(): Base.Platform {\n try {\n const uaInfo = getUAInfo();\n if (!uaInfo.os.name) {\n return Base.Platform.UNKNOWN_PLATFORM;\n }\n const inApp = isInApp();\n if (uaInfo.os.name === 'Android') {\n return inApp\n ? Base.Platform.ANDROID_PHONE_H5\n : Base.Platform.OUTSIDE_ANDROID_H5;\n }\n if (uaInfo.os.name === 'iOS') {\n return inApp\n ? Base.Platform.IPHONE_H5\n : Base.Platform.OUTSIDE_IOS_H5;\n }\n return Base.Platform.PC_WEB;\n } catch (err) {\n return Base.Platform.UNKNOWN_PLATFORM;\n }\n}\n\nexport function container(): Base.Container {\n if (isReactNative()) {\n return Base.Container.REACT_NATIVE;\n }\n if (platform() === Base.Platform.PC_WEB) {\n return Base.Container.WEB;\n }\n return Base.Container.H5;\n}\n\nexport type CommonPackageOptions = DeepPartial;\n\nfunction mergeOptions(target: any, options: any) {\n if (!options) {\n return;\n }\n Object.keys(options).forEach(key => {\n const value = options[key];\n const isNeedMerge = key !== 'h5_extra_attr';\n if (typeof value === 'object' && isNeedMerge && target[key] !== undefined) {\n mergeOptions(target[key], value);\n } else if (value) {\n target[key] = value;\n }\n });\n}\nconst getOSVersion = () => {\n try {\n return getUAInfo().os.version || 'unknown';\n } catch (err) {\n return 'unknown';\n }\n}\n\n\nexport function transformCommonPackage(base: {[key: string]: any}, config: any) {\n const initPackage:{[key: string]: any} = {\n identity_package: {},\n network_package: {},\n app_package: {},\n experiment: [],\n service_name: '',\n safety_id: '',\n };\n if ((Global.isV2 || Global.isBridge) && !base.product) {\n base.product = ClientCommonV2.Product[base.product_name || getCookie('kpn')] || 1;\n }\n for (const { keys, validator, type } of initPackageKeys) {\n const [baseKey, subKey] = keys;\n const baseValue = base[subKey || baseKey];\n if (!subKey) {\n initPackage[baseKey] = base[baseKey];\n } else {\n initPackage[baseKey][subKey] = base[subKey];\n }\n if (typeof baseValue !== 'undefined' && !validator(baseValue)) {\n throw new Error([\n `There is an error init value on '${subKey || baseKey}', `,\n `the type should be '${type}', `,\n `but your type is '${typeof baseValue}'`,\n ].join(''));\n }\n }\n if (base.network_type) {\n initPackage.network_package.type =\n networkType[base.network_type as keyof typeof networkType] ||\n networkType.unknown;\n } else {\n delete initPackage.network_package;\n }\n return new CommonPackage(initPackage, config);\n}\nexport type ICommonPackage = typeof CommonPackage;\nexport default class CommonPackage implements Base.CommonPackage {\n identity_package = {\n device_id: generateDID(),\n global_id: isInApp() ? getCookie('egid') : '',\n user_id: getCookie('userId') || getCookie('userName') || '',\n };\n app_package = {\n product: undefined,\n language: navigator.language,\n platform: platform(),\n container: container(),\n package_name: '',\n product_name: '',\n version_name: getCookie('appver', undefined, true) || '', // 宿主客户端版本号\n channel: '',\n version_code: 0\n };\n\n device_package = {\n os_version: getOSVersion(),\n model: getModel(),\n ua: navigator.userAgent,\n };\n\n additional_seq_id_package?: Base.AdditionalSeqIdPackage;\n need_encrypt: boolean = false;\n network_package = {\n type: network(),\n };\n // H5 附加参数\n h5_extra_attr: H5ExtraAttr;\n sdk_version = '__VERSION__';\n // 默认 H5 附加信息\n static DefaultH5ExtraAttr: H5ExtraAttr = {\n host_product: getDefaultKpn(),\n app_version_name: getCookie('appver', undefined, true) || '', // 宿主客户端版本号\n resolution: getResolution(),\n domain: window && window.location && window.location.origin || '',\n sdk_name: '__SDK_NAME__',\n sdk_version: '__VERSION__',\n }\n\n constructor(options: CommonPackageOptions, logConfig: any) {\n mergeOptions(this, options);\n this.checkMustProps();\n\n if (this.app_package.version_name) {\n const lastDotIndex = this.app_package.version_name.lastIndexOf('.');\n this.app_package.version_code = +this.app_package.version_name.slice(lastDotIndex + 1) || 0;\n }\n\n // TODO: 这块参数有些混乱,options 和 logConfig 都可能传 h5_extra_attr 和 product_name 进来\n const mixinOptions: any = {\n ...options,\n ...logConfig\n };\n this.h5_extra_attr = {\n ...CommonPackage.DefaultH5ExtraAttr,\n ...mixinOptions.h5_extra_attr,\n app_version_name: this.app_package.version_name,\n product_name: mixinOptions.product_name\n };\n }\n /**\n * 检查必填参数\n */\n checkMustProps() {\n if (Global.isV2) {\n if (typeof this.app_package.product !== 'number') {\n console.error('请设置有效的 product 值!');\n }\n } else {\n if (typeof this.app_package.product_name !== 'string') {\n console.error('请设置有效的 product_name 值!');\n }\n }\n }\n\n setAdditionalSeqIdPackage(eventType: string) {\n this.additional_seq_id_package = {\n channel: Base.AdditionalSeqIdPackageChannel.NORMAL,\n channel_seq_id: getChannelIncrementId('NORMAL'),\n custom_type: eventType,\n custom_seq_id: getV2EventIncrementId(eventType)\n };\n }\n\n // h5 id 自增,用在 Bridge 模式下验证 Bridge 丢失率\n increaseH5SeqId(isCustom?: Boolean) {\n this.setH5ClientTimestamp();\n this.h5_extra_attr.seq_id = isCustom ? getBridgeCustomIncrementId() : getBridgeNormalIncrementId();\n }\n // 在 bridge 模式下生成时间戳\n setH5ClientTimestamp() {\n this.h5_extra_attr.client_timestamp = new Date().valueOf();\n }\n // HTTP 自增 id,每次发起请求连续递增,验证 http 请求丢失\n increaseHTTPSeqId() {\n this.setH5ClientTimestamp();\n this.h5_extra_attr.http_seq_id = getHttpIncrementId();\n }\n setChannel() {\n // for radar_channel\n // parseQueryString 居然需要自己去掉问号。。\n if(this.app_package.channel){\n this.h5_extra_attr.channel = this.app_package.channel\n return\n }\n const search = window && window.location && window.location.search || ''\n const queryStringRes = parseQueryString(search.slice(1))\n const queryChannel = queryStringRes ? queryStringRes.channel : ''\n this.h5_extra_attr.channel = queryChannel || getCookie('channel') || ''\n }\n getVersionName() {\n return this.app_package.version_name\n }\n getChannel() {\n return this.h5_extra_attr.channel\n }\n toJSON() {\n if (!this.identity_package.user_id) {\n this.identity_package.user_id = getCookie('userId') || getCookie('userName') || '';\n }\n const json: Base.CommonPackage = {\n ...this,\n h5_extra_attr: {\n ...this.h5_extra_attr\n },\n toJSON() {\n return {\n ...json,\n h5_extra_attr: JSON.stringify(json.h5_extra_attr)\n };\n }\n };\n if (Global.isV2) {\n // v2 中没有 product_name 和 sdk_version\n delete json.app_package.product_name;\n delete json.sdk_version;\n // v2 要求 user_id 是数字,不能为空字符串\n if (json.identity_package.user_id === '') {\n delete json.identity_package.user_id;\n }\n }\n return json;\n }\n // 设置 bridge 信息\n setBridgeInfo(info?: string) {\n if (info) {\n this.h5_extra_attr.bridge_info = info;\n }\n }\n getH5ExtraAttr() {\n return this.h5_extra_attr;\n }\n update(options: { [key: string]: any }) {\n if (typeof options !== 'object') return;\n const commonPackage = JSON.parse(JSON.stringify(this));\n Object.keys(options).forEach((key) => {\n let newValue = options[key];\n if (key in commonPackage) {\n if (typeof commonPackage[key] === 'object' && typeof newValue === 'object'\n && !(Array.isArray(commonPackage[key]) && newValue)) {\n newValue = {\n ...commonPackage[key],\n ...newValue\n };\n }\n\n (this as any)[key] = newValue;\n } else {\n const innerPackageKeys = ['identity_package', 'app_package', 'device_package'];\n for (const innerKey of innerPackageKeys) {\n if (key in commonPackage[innerKey]) {\n (this as any)[innerKey][key] = newValue;\n break;\n }\n }\n }\n });\n }\n async initYodaDeviceInfo () {\n const info = await getDeviceInfo();\n if (info && info.mod) {\n this.device_package.model = info.mod;\n }\n }\n\n async initYodaAppInfo () {\n const info = await getAppInfo();\n if (info) {\n info.did && (this.identity_package.device_id = info.did);\n info.userId && !this.identity_package.user_id && (this.identity_package.user_id = info.userId);\n info.appver && (this.app_package.version_name = info.appver);\n }\n }\n}\n","import Logger, { LogPackage } from './logger';\nimport initConfig, { LogConfig } from '../config';\nimport Global, { updateConfig } from '../config/global';\nimport { UrlMap, UrlObj, UrlMapFn, BaseOptions, TaskOperations, EventTypes, PVOptions, ShowOptions, TaskOptions, CustomOptions, OtherEventOptions, ContentPackage } from '../config/types';\nimport { logFactory } from './log';\nimport { BASE } from '../config/base-params';\nimport UrlPackage, { PageTypeKey } from './url-package';\nimport { BasePlugin, BasePluginConstructor } from '../plugins/base';\nimport EventEmitter from '../util/events';\nimport { stringifyQuery, addMonitor, removeMonitor } from '../util';\nimport CommonPackage, { CommonPackageOptions, transformCommonPackage } from './common';\nimport { ClientLog as ClientLogV3 } from '../proto/v3/client_log';\nimport cookieUtils, { getCookie } from '../util/cookie';\nimport { uuid } from '../util/uuid';\nimport yodaUtils, { YodaInterface, checkYoda, initYoda, KSwitchSampling, getKSwitchSampling } from '../util/yoda';\nimport uaUtils from '../util/ua';\nimport sendData from '../io';\n\nexport interface SendConfig {\n type: string;\n async?: boolean;\n}\n\ntype SendType = string | SendConfig;\n\nlet pluginIndex = 0;\n// session_id 用来串联在一次打开 App 期间跳转不同页面的用户行为\nexport const getSessionId = () => {\n let sessionId: string = '';\n const defaultKey = 'session_id';\n // const customKey = 'weblogger_session_id';\n sessionId = getCookie(defaultKey) || getCookie('sid'); // 端内从 cookie 中获取客户端传来的 session_id\n if (sessionId) return sessionId;\n const defaultSessionId = `weblogger_${uuid('weblogger')}`;\n // try {\n // if (typeof window !== 'undefined' && window.sessionStorage) {\n // sessionId = window.sessionStorage.getItem(defaultKey) // 尝试获取服务端传来的 session_id\n // || window.sessionStorage.getItem(customKey) || ''; // 如果都没设置,则获取 weblogger 生成的 session_id;\n // if (sessionId) return sessionId;\n // // 如果没有获取到 session_id 则生成一个,并设置到 sessionStorage 中。\n // window.sessionStorage.setItem(customKey, defaultSessionId);\n // }\n // } catch (err) { }\n return defaultSessionId;\n};\nlet isWillClosed = false;\nexport type IWeblog = typeof Weblog;\nexport default class Weblog extends EventEmitter {\n version: string = '__VERSION__';\n currentUrlPackage!: UrlPackage;\n referUrlPackage?: UrlPackage;\n commomPackage: CommonPackage;\n baseOption: BaseOptions;\n logConfig: LogConfig & T;\n yoda: YodaInterface | null = null;\n SampledPageMap: { [key: string]: boolean | { radar: { [key: string]: number; }; }; } = {};\n // 核心日志发送\n logger = new Logger();\n // 插件\n plugins: {\n [key: string]: BasePlugin | any;\n } = {};\n /**\n * @param {?object} logConfig Logger初始化配置\n * @param {object=} options 额外配置参数\n * - base 公参的覆盖\n */\n constructor(\n logConfig: LogConfig & T,\n base?: BaseOptions,\n ) {\n super();\n // 设置全局 session_id\n updateConfig('sessionId', base && base.session_id || getSessionId());\n this.baseOption = { ...BASE, ...base };\n this.logConfig = initConfig(logConfig) as LogConfig & T;\n this.initUrlPackage();\n // 构建 common_package 信息\n this.commomPackage = transformCommonPackage(this.baseOption, this.logConfig);\n this.logger.init(this.logConfig, this.commomPackage);\n\n this.initYoda();\n this.addPlugins();\n if (typeof this.initBuildInPlugins === 'function') {\n this.initBuildInPlugins();\n }\n // 事件绑定\n if (typeof window !== 'undefined') {\n addMonitor(window, 'pagehide', this.beforeUnload);\n addMonitor(window, 'beforeunload', this.beforeUnload);\n }\n }\n get Utils() {\n return {\n yoda: this.yoda && yodaUtils,\n cookie: cookieUtils,\n ua: uaUtils,\n io: {\n sendData\n }\n }\n }\n get sessionId() {\n return getSessionId();\n }\n async initYoda() {\n if (this.logConfig.yoda && !this.yoda) {\n this.yoda = checkYoda(this.logConfig.yoda);\n }\n this.yoda && await initYoda()\n getKSwitchSampling().then(() => {\n // yoda 初始化后更新采样配置\n if (this.currentUrlPackage) this.currentUrlPackage.sampled = this.getPageSampled();\n });\n this.commomPackage.initYodaDeviceInfo();\n this.commomPackage.initYodaAppInfo();\n }\n initBuildInPlugins?(option?: any){}\n // 初始化 url 信息\n private initUrlPackage() {\n // 初始化 url 信息\n this.updateCurrentUrlPackage();\n const { referer } = this.logConfig;\n let referUrl = '';\n let referType: PageTypeKey = 'web';\n if (referer) {\n referUrl = referer.value;\n referType = referer.type && referer.type || referType;\n } else if (typeof document !== 'undefined' && document.referrer) {\n referUrl = document.referrer;\n }\n if (referUrl) {\n this.referUrlPackage = new UrlPackage(referUrl, referType, this.logConfig.urlMap as UrlMapFn | UrlMap);\n }\n }\n /**\n * 是否已获取到 kswitch 采样配置\n */\n get isKSwitchSampled() {\n return typeof KSwitchSampling !== undefined;\n }\n /**\n * 获取页面级配置\n */\n getPageSampled() {\n // 如果不是 yoda 环境,或者没从 kswitch 中获取到采样结果\n if (!this.yoda || !KSwitchSampling) {\n return typeof Global.sampled === 'boolean' ? Global.sampled : true;\n }\n\n const currentUrl = typeof location !== 'undefined' ? location.href.replace(/https?:\\/\\//, '').split('?')[0] : '*';\n if (typeof this.SampledPageMap[currentUrl] !== 'undefined') {\n return this.SampledPageMap[currentUrl];\n }\n\n if (KSwitchSampling) {\n let matchedOverAll;\n let level = 0;\n let radar: { [key: string]: number; } | null = null;\n let radarConfigs = [];\n\n // 找出当前页面的采样配置\n for (const path in KSwitchSampling) {\n let curLevel = 0;\n if (path === '*') {\n // * 权重为 1\n curLevel = 1;\n } else if (currentUrl.indexOf(path) === 0) {\n if (path === currentUrl) {\n // 相等的权重为 100\n curLevel = 100;\n } else if (path[path.length - 1] === '/') {\n // 包含的权重为 10\n curLevel = 10 + 1 - 1 / path.length;\n }\n }\n if (!curLevel) continue;\n const { radar, overwrite, overall } = KSwitchSampling[path];\n curLevel = curLevel + (overwrite ? 1000 : 0);\n if (radar) {\n radarConfigs.push({\n radar,\n level: curLevel\n });\n }\n if (curLevel > level) {\n level = curLevel;\n matchedOverAll = overall;\n }\n }\n // 先判定整体采样\n if (level) {\n radar = {};\n radarConfigs.sort((r1, r2) => r1.level - r2.level).forEach(r => {\n Object.assign(radar, r.radar);\n });\n }\n let sampled: boolean | { radar: { [key: string]: number; }; };\n // 有 overwrite 或业务方没有配置采样时,使用 kswitch 采样配置\n if (level > 1000 || typeof Global.sampled === 'undefined') {\n sampled = Math.random() < Number(matchedOverAll) && (radar ? { radar } : true);\n } else {\n sampled = typeof Global.sampled === 'boolean' ? Global.sampled : true;\n }\n this.SampledPageMap[currentUrl] = sampled;\n }\n return this.SampledPageMap[currentUrl];\n }\n\n get currentUrl() {\n const { page, params } = this.currentUrlPackage;\n return params && typeof params === 'object'\n ? `${page}?${stringifyQuery(params)}`\n : page;\n }\n\n get referUrl() {\n if (!this.referUrlPackage) {\n return '';\n }\n const { page, params } = this.referUrlPackage;\n return params && typeof params === 'object'\n ? `${page}?${stringifyQuery(params)}`\n : page;\n }\n /**\n * 更新当前 url 信息\n * @param url\n * @param type\n */\n updateCurrentUrlPackage(url: string | UrlObj = typeof location !== 'undefined' ? location.href : '', type: PageTypeKey = 'web'): void {\n // 该接口不改变 refer 信息\n // this.referUrlPackage = this.currentUrlPackage;\n if (typeof url === 'object' && url.page) {\n if (this.currentUrlPackage && url.page === this.currentUrlPackage.page) {\n return this.currentUrlPackage.update(url.page, url.params);\n }\n }\n this.currentUrlPackage = new UrlPackage(url, type, this.logConfig.urlMap as UrlMapFn | UrlMap);\n this.currentUrlPackage.sampled = this.getPageSampled();\n }\n /**\n * 更新 refer url 信息\n * @param url\n * @param type\n */\n updateReferUrlPackage(url: string | UrlObj | UrlPackage = this.currentUrlPackage, type: PageTypeKey = 'web') {\n if (url instanceof UrlPackage) {\n this.referUrlPackage = url;\n } else {\n this.referUrlPackage = new UrlPackage(url, type, this.logConfig.urlMap as UrlMapFn | UrlMap);\n }\n }\n /**\n * 重设 common_package 信息\n * @param base\n */\n updateBase(base: BaseOptions) {\n this.logger.updateBase(transformCommonPackage({\n ...this.baseOption,\n ...base,\n }, this.logConfig));\n }\n\n /**\n * 更新现有 common_package 信息\n */\n updateCommonPackage(options: BaseOptions | CommonPackageOptions) {\n if (typeof options !== 'object') return;\n if (!this.commomPackage) return;\n this.commomPackage.update(options);\n }\n /**\n * 初始化插件\n * @param plugins\n */\n addPlugins() {\n if (!this.logConfig.plugins || !this.logConfig.plugins.length) return;\n // 类似 webpack plugins 的实例数组\n this.logConfig.plugins.forEach((plugin: any) => {\n if (typeof plugin === 'object' && typeof plugin.apply === 'function') {\n this.addPluginInstance(plugin);\n }\n });\n }\n /**\n * 加载插件实例\n */\n addPluginInstance(pluginInstance: any) {\n if (pluginInstance) {\n const key = pluginInstance.key || pluginInstance.constructor && pluginInstance.constructor.key || `plugin_auto_key_${pluginIndex++}`;\n if (typeof pluginInstance.apply === 'function' && (!pluginInstance.weblog || pluginInstance.weblog !== this)) {\n pluginInstance.apply(this);\n }\n this.plugins[key] = pluginInstance;\n }\n }\n /**\n * 加载插件构造函数\n * @param plugin\n * @param pluginOptions\n */\n plug(plugin: BasePluginConstructor, pluginOptions?: any) {\n if (this.plugins[plugin.key]) {\n throw new Error(`There is a duplex plugin called ${plugin.key}`);\n }\n this.addPluginInstance(new plugin(this, pluginOptions));\n }\n\n unplug(name: string) {\n const plugin = this.plugins[name];\n if (plugin) {\n plugin.destroy();\n delete this.plugins[name];\n }\n }\n\n unplugAll() {\n for (const key in this.plugins) {\n if (this.plugins[key]) {\n this.unplug(key);\n }\n }\n }\n\n public flush = () => {\n this.logger.flush();\n };\n\n generateLog(\n type: SendType = TaskOperations.CLICK,\n name: string | PVOptions | ShowOptions | TaskOptions | CustomOptions | OtherEventOptions,\n params?: any,\n contentPackage?: ContentPackage,\n factory: (type: string, data: any) => any = logFactory\n ) {\n if (typeof type !== 'string') {\n type = type.type;\n }\n type = type.toUpperCase();\n const generateLogName = name;\n const getCommonProps = (name: string) => {\n let currentUrlPackage = null;\n if (typeof generateLogName === 'object') {\n currentUrlPackage = generateLogName.currentUrlPackage;\n contentPackage = (generateLogName as PVOptions | ShowOptions | TaskOptions).contentPackage || contentPackage;\n }\n if (currentUrlPackage) {\n const { page, identity, params } = currentUrlPackage;\n currentUrlPackage = {\n identity: identity || uuid(page || ''),\n page,\n params: typeof params === 'object' ? JSON.stringify(params) : params\n };\n } else {\n currentUrlPackage = this.currentUrlPackage.toJSON();\n }\n if (contentPackage) {\n contentPackage = typeof contentPackage === 'string' ? contentPackage : JSON.stringify(contentPackage);\n }\n return {\n name,\n // 传入的 url_package 信息不应该是可变的对象,会导致延时的 log page 信息变更\n currentUrlPackage,\n referUrlPackage: this.referUrlPackage ? this.referUrlPackage.toJSON() : undefined,\n contentPackage\n };\n };\n if (typeof name === 'object') {\n if (type === 'PV') {\n // PV 类型\n const { type, page, params: pageParams } = name as PVOptions;\n this.currentUrlPackage.update(page, pageParams);\n return factory(EventTypes.PV, {\n ...name as PVOptions,\n type,\n ...getCommonProps('PV')\n });\n }\n // 如果参数中带有 urlPage 则更新 page 信息\n const { urlPage } = name as ShowOptions;\n urlPage && this.currentUrlPackage.update(urlPage.page);\n\n if (type === EventTypes.SHOW) {\n // SHOW 类型\n const { action } = name as ShowOptions;\n return factory(type, {\n ...name as ShowOptions,\n ...getCommonProps(action)\n });\n }\n // Radar 日志特殊处理\n if (type === 'RADAR') {\n return factory(type, name as OtherEventOptions);\n }\n if (type === EventTypes.CUSTOM) {\n // CUSTOM 类型\n const { key, value, eventId } = name as CustomOptions;\n return factory(type, {\n params: value,\n eventId,\n ...getCommonProps(key),\n });\n }\n // TASK 类型\n const { action, params: taskParams, status, type: taskType, eventId } = name as TaskOptions;\n return factory(type, {\n ...name,\n params: taskParams,\n status,\n taskType,\n eventId,\n ...getCommonProps(action),\n });\n }\n\n if (type === 'PV') {\n this.currentUrlPackage.update(name, params);\n }\n return factory(type, {\n params,\n ...getCommonProps(name),\n });\n }\n\n get isSendSampled() {\n return this.currentUrlPackage && this.currentUrlPackage.sampled || Global.isDebug;\n }\n\n send(\n type: SendType = TaskOperations.CLICK,\n name: string | PVOptions | ShowOptions | TaskOptions | CustomOptions,\n params?: any,\n contentPackage?: ContentPackage,\n immediately?: boolean\n ) {\n // 如果该用户不被采样,则所有日志都不会上报\n if (!this.isSendSampled) {\n return;\n }\n const log = this.generateLog(type, name, params, contentPackage) as ClientLogV3.ReportEvent;\n // 雷达日志单独处理\n if (type === 'RADAR') {\n return this.logger.sendRadar(log);\n }\n const callback = typeof name === 'object' && name.callback || undefined;\n return this.logger.send(log, !!immediately, callback);\n }\n\n collect(type: SendType, options: PVOptions | ShowOptions | TaskOptions | CustomOptions): void;\n collect(type: SendType, name: string, params: any, contentPackage?: string): void;\n collect(\n type: SendType = TaskOperations.CLICK,\n name: string | PVOptions | ShowOptions | TaskOptions | CustomOptions,\n params?: any,\n contentPackage?: ContentPackage,\n ) {\n return this.send(type, name, params, contentPackage, false);\n }\n\n sendImmediately(type: SendType, options: PVOptions | ShowOptions | TaskOptions | CustomOptions): void;\n sendImmediately(type: SendType, name: string, params: any, contentPackage?: string): void;\n sendImmediately(\n type: SendType = TaskOperations.CLICK,\n name: string | PVOptions | ShowOptions | TaskOptions | CustomOptions,\n params?: any,\n contentPackage?: ContentPackage,\n ) {\n return this.send(type, name, params, contentPackage, true);\n }\n\n sendPackage(data: LogPackage, callback?: (error?: any) => void) {\n this.logger.sendPackage(data, callback);\n }\n\n beforeUnload = (event: Event) => {\n if (isWillClosed) return;\n this.logger.drain();\n for (const key in this.plugins) {\n const plugin = this.plugins[key];\n if (typeof plugin.beforeUnload === 'function') {\n plugin.beforeUnload(event);\n }\n }\n isWillClosed = true;\n setTimeout(() => {\n isWillClosed = false;\n }, 2000);\n };\n destroy() {\n this.unplugAll();\n if (typeof window !== 'undefined') {\n removeMonitor(window, 'pagehide', this.beforeUnload);\n removeMonitor(window, 'beforeunload', this.beforeUnload);\n }\n }\n}\n","import { UrlMapFn } from './types';\nimport { updateConfig } from './global';\nimport {BasePlugin} from '../plugins/base'\nimport { YodaInterface } from '../util/yoda';\n\ntype EnvType = 'development' | 'test' | 'logger' | 'production';\nexport interface LogConfig {\n /**\n * 埋点上报环境\n */\n env?: EnvType;\n /**\n * logger 上报,建议使用 env: 'logger'\n */\n logger?: boolean;\n /**\n * 默认30秒超时, 仅在使用xhr异步发送数据时有用\n */\n timeout?: number;\n /**\n * 延迟发送毫秒数\n */\n wait?: number;\n /**\n * 同时发送消息的最大条数\n */\n maxBatchLength?: number;\n /**\n * 日志采样配置,值为 0~1 的 float number。日志发送按照 sampleRate * 100% 的比例采样\n */\n sampleRate?: number;\n /**\n * 自定义采样函数\n */\n sampleRateFn?: (() => boolean) | null;\n /**\n * 来源信息\n */\n referer?: {\n value: string,\n type?: 'web' | 'native' | 'mina'\n };\n /**\n * URL 映射\n */\n urlMap?: UrlMapFn | {[key: string]: string};\n // 自定义上报途径\n sender?: (data: {url: string, data: any, [key: string]: any}, callback?: (error?: any) => void) => void;\n /**\n * 插件实例数组\n */\n plugins?: BasePlugin[];\n /**\n * bridge 中的 命名空间\n */\n nameSpace?: string;\n /**\n * 是否在 bridge 模式下同时开启 HTTP 上报\n */\n openHttpSender?: boolean;\n /**\n * 埋点 PB 格式,v2 快手主站相关 或者 v3 新业务\n */\n proto?: 'v2' | 'v3';\n /**\n * 传入 yoda sdk,当在端内使用非桥接上报时,可以通过传入的 yoda 来使雷达桥接上报、获取 KSwitch 采样配置等功能\n */\n yoda?: YodaInterface;\n}\n\nexport default (options?: LogConfig): LogConfig => {\n const logConfig:LogConfig = {\n env: 'production',\n proto: 'v3',\n timeout: 30000,\n wait: 1000,\n maxBatchLength: 50,\n sampleRate: 1,\n // 尝试从全局中获取 yoda\n yoda: typeof window !== 'undefined' && (window as any).yoda,\n ...(options || {})\n };\n // 业务方采样配置\n if (options && (typeof options.sampleRateFn === 'function' || typeof options.sampleRate !== 'undefined')) {\n try {\n const sampled = options.sampleRateFn ? options.sampleRateFn() : Math.random() < Number(options.sampleRate);\n updateConfig('sampled', sampled);\n } catch (err) {\n updateConfig('sampled', false);\n }\n }\n updateConfig('proto', logConfig.proto || 'v3');\n return logConfig;\n};\n","import EventEmitter from '../util/events';\nimport { Weblogger } from '../config/types';\n\nexport abstract class BasePlugin extends EventEmitter {\n // @ts-ignore\n weblog: Weblogger = typeof window !== 'undefined' && window._GLOBAL_KS_WEBLOGGER_ && window._GLOBAL_KS_WEBLOGGER_.weblog;\n abstract destroy(): void;\n apply(weblog: Weblogger) {\n this.weblog = weblog;\n }\n /**\n * 统一由 weblog 在页面关闭前调用的生命周期函数\n */\n beforeUnload?: (event: Event) => void;\n static key: string;\n}\n\nexport interface BasePluginConstructor {\n new(options?: any): any;\n new(weblogger?: any, options?: any): any;\n key: string;\n}\n/**\n * 在 bootstrap 环境下自动注册插件\n * @param Plugin \n * @param optionKey \n */\nexport const autoRegister = (Plugin: any, optionKey?: string, PluginPlaceholder?: any) => {\n if (\n typeof window === 'undefined' ||\n typeof window._GLOBAL_KS_WEBLOGGER_ === 'undefined' ||\n typeof Plugin !== 'function') return;\n const { weblog, config } = window._GLOBAL_KS_WEBLOGGER_;\n let option = optionKey && config.plugins[optionKey] ? config.plugins[optionKey].options : undefined;\n if (optionKey === 'radar') {\n // 雷达插件采样特殊处理\n const radarOptions = option || weblog.logConfig[optionKey];\n if (!radarOptions) return;\n if (!radarOptions.sampling || !Plugin.samplingControl(radarOptions)) {\n return weblog.plug(PluginPlaceholder);\n }\n }\n weblog.addPluginInstance(new Plugin(option));\n}","/**\n * @file crash-monitor.js\n * @author kevin (lanlazy@163.com)\n * beforeunload触发条件:正常关闭标签,刷新,关闭浏览器\n * @created 2018-08-08\n */\n\nimport { Weblogger } from '../../config/types';\nimport { BasePlugin, autoRegister } from '../base';\nimport { addMonitor, removeMonitor } from '../../util';\n\nconst defaultOptions = {\n updateInterval: 20 * 1000,\n crashThreshold: 10 * 1000,\n};\n\nexport default class CrashMonitor extends BasePlugin {\n private eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\n static key = 'crachMonitor';\n private options = {\n ...defaultOptions,\n };\n private readonly monitorId = '@ks.monitor.crash';\n private updateIntervalId!: number;\n private historyMoniorInfo: any = null;\n /**\n * 兼容写法,如果在 Weblog 初始化设置 plugins 时,不需要设置 weblog\n * @param weblog \n */\n constructor(weblog?: Weblogger) {\n super();\n try {\n const historyMoniorString = localStorage.getItem(this.monitorId);\n this.historyMoniorInfo = JSON.parse(historyMoniorString as string) || {};\n } catch (e) {\n // nothing\n }\n if (weblog && (weblog as Weblogger).logger) {\n this.apply(weblog as Weblogger);\n }\n addMonitor(window, this.eventName, this.stop);\n }\n apply(weblog: Weblogger) {\n if (!weblog) return;\n this.weblog = weblog;\n this.on('crash', info => {\n this.weblog.sendImmediately('CUSTOM', 'crash', info);\n });\n this.start();\n }\n destroy() {\n this.stop();\n this.off('crash');\n removeMonitor(window, this.eventName, this.stop);\n }\n checkHistoryCrash() {\n const now = new Date().valueOf();\n if (\n this.historyMoniorInfo\n && now - this.historyMoniorInfo.time > this.options.crashThreshold\n ) {\n this.emit('crash', this.historyMoniorInfo);\n }\n }\n /**\n * 开始定时更新快照\n */\n start() {\n this.checkHistoryCrash();\n this.updateIntervalId = window.setInterval(() => {\n this.update();\n }, this.options.updateInterval);\n this.update();\n }\n /**\n * 更新监控快照\n * @param {*} data 外部追加额外的快照信息\n */\n update() {\n // TODO,非标准api后续可能会需要更新\n if (!window.performance || !window.performance.memory) {\n return;\n }\n // TODO后面看看需要补其他什么信息\n const monitorInfo = {\n time: new Date().valueOf(),\n memory: {\n limit: window.performance.memory.jsHeapSizeLimit / 1024,\n total: window.performance.memory.totalJSHeapSize / 1024,\n used: window.performance.memory.usedJSHeapSize / 1024,\n },\n };\n try {\n localStorage.setItem(this.monitorId, JSON.stringify(monitorInfo));\n } catch (e) {\n // nothing\n }\n }\n /**\n * 停止监控过程\n * 1.在页面正常卸载时自动调用\n * 2.需要手动卸载时手动调用\n */\n stop = () => {\n clearInterval(this.updateIntervalId);\n try {\n localStorage.removeItem(this.monitorId);\n } catch (e) {\n // nothing\n }\n }\n}","/**\n * @file fps.js\n * @author kevin (lanlazy@163.com)\n * @created 2018-08-25\n */\n\nimport { raf, caf } from '../../util';\nimport {\n FPSMonitorOptions,\n} from '../types';\nimport { BasePlugin, autoRegister } from '../base';\nimport { Weblogger } from '../../config/types';\n\nconst defaultOptions = {\n // 更新间隔\n interval: 10 * 1000,\n // 浮点精度 0 取整\n decimals: 2,\n};\n\nexport default class FPSMonitor extends BasePlugin {\n static key = 'fpsMonitor';\n private options = {\n ...defaultOptions,\n };\n private count = 0;\n private fpsTickId!: number;\n private loopId!: number;\n private loopBeginTime!: number;\n private loopEndTime!: number;\n /**\n * 兼容写法,如果在 Weblog 初始化设置 plugins 时,不需要设置 weblog\n * @param weblog \n */\n constructor(options?: FPSMonitorOptions)\n constructor(weblog?: Weblogger | FPSMonitorOptions, options?: FPSMonitorOptions) {\n super();\n // 兼容处理\n let opts;\n if (options) {\n opts = options;\n } else if (weblog) {\n if ((weblog as Weblogger).logger) {\n this.apply(weblog as Weblogger);\n } else {\n opts = weblog;\n }\n }\n Object.assign(this.options, options);\n\n this.on('performance', fps => {\n this.weblog.collect('CUSTOM', 'fps', { fps });\n });\n this.start();\n }\n destroy() {\n this.off('performance');\n this.stop();\n }\n start() {\n this.loop();\n this.fpsTick();\n }\n fpsTick() {\n this.fpsTickId = raf(() => {\n this.count++;\n this.fpsTick();\n });\n }\n loop() {\n this.loopBeginTime = new Date().valueOf();\n this.loopId = window.setTimeout(() => {\n this.loopEndTime = new Date().valueOf();\n const fps = this.calculate();\n this.emit('performance', fps);\n this.count = 0;\n this.loop();\n }, this.options.interval);\n }\n stop() {\n caf(this.fpsTickId);\n window.clearTimeout(this.loopId);\n }\n calculate() {\n const during = this.loopEndTime - this.loopBeginTime;\n // raf执行次数\n const runCount = during / this.count;\n return +(1000 / runCount).toFixed(this.options.decimals);\n }\n}","import {\n PerformanceTimingProperty,\n radarWebviewTimeingProperty,\n} from '../plugins/types';\nconst perf = typeof window !== 'undefined'\n ? window.performance\n : null;\n\nconst performanceTiming: PerformanceTiming | PerformanceTimingProperty | null = perf && perf.timing || null;\n\nconst performanceNavigationTiming: PerformanceNavigationTiming | null = perf\n && perf.getEntriesByType\n && perf.getEntriesByType('navigation')[0] as PerformanceNavigationTiming\n || null;\n\n// TODO下面这个暂时不能这么用,因为计量方式和perfirmanceTiming不一样\n// export default performanceNavigationTiming || performanceTiming || null;\nexport default performanceTiming as (PerformanceTiming & PerformanceTimingProperty);\n","export function log(message: any) {\n if (console && console.log) {\n console.log(message);\n }\n}\n\nexport function warn(message: any) {\n if (console && console.warn) {\n console.warn(message);\n }\n}\n\nexport function error(message: any) {\n if (console && console.error) {\n console.error(message);\n }\n}\n","/**\n * @file timing.js\n * @author kevin (lanlazy@163.com)\n * @created 2018-08-25\n */\nimport {\n PerformanceTimingProperty,\n TimingPerfMap,\n TimingPerfName,\n TimingPerf,\n TimingCustomOptions,\n} from '../types';\nimport { addMonitor, removeMonitor } from '../../util';\nimport { Weblogger } from '../../config/types';\nimport { BasePlugin, autoRegister } from '../base';\nimport navigationTiming from '../../util/timing';\nimport { error } from '../../util/console';\n\n// TODO页面停留时间先依赖一个全局副作用来搞,毕竟要侵入SPA模式下比较蛋疼……\nconst perfMap: TimingPerfMap = {\n // DNS查找时间\n dnsLookup: {\n end: 'domainLookupEnd',\n start: 'domainLookupStart',\n },\n // TCP建连时间\n tcpConnection: {\n end: 'connectEnd',\n start: 'connectStart',\n },\n // 静态资源加载时间\n resourceLoad: {\n end: 'responseEnd',\n start: 'requestStart',\n },\n // 首屏JS耗时……暂时先这么对付了,具体JS的耗时后面再提供吧\n // 计算的时候以第一个script开始时间点为起始,一直到DOM Complete完成\n // 这样看起来应该是可被定义为JS耗时了……\n jsCost: {\n custom() {\n if (typeof performance.getEntries !== 'function') {\n return 0;\n }\n const entries = performance.getEntries();\n const pageTimeInfo = entries[0];\n const firstJSTimeInfo = entries\n .filter(item => item.initiatorType === 'script')[0];\n if (firstJSTimeInfo) {\n return pageTimeInfo.domComplete - firstJSTimeInfo.fetchStart;\n }\n return 0;\n },\n },\n // DOM加载完毕时间\n documentContentLoaded: {\n end: 'domComplete',\n start: 'fetchStart',\n },\n // 页面加载完毕时间\n load: {\n end: 'loadEventEnd',\n start: 'fetchStart',\n },\n timeToFirstByte: {\n end: 'loadEventEnd',\n start: 'fetchStart',\n },\n // 首屏时间,依靠主动打点\n firstScreen: {\n custom(key: TimingPerfName, options?: TimingCustomOptions) {\n const { endPoint } = options || {};\n const end = typeof endPoint !== 'undefined' ? endPoint : new Date().valueOf();\n return navigationTiming && (end - navigationTiming.fetchStart) || 0;\n },\n },\n // 白屏时间,依靠主动打点\n whiteScreen: {\n custom(key: TimingPerfName, options?: TimingCustomOptions) {\n const { endPoint } = options || {};\n const end = typeof endPoint !== 'undefined' ? endPoint : new Date().valueOf();\n return navigationTiming && (end - navigationTiming.fetchStart) || 0;\n },\n },\n};\n\nexport default class TimingMonitor extends BasePlugin {\n static key = 'timingMonitor';\n /**\n * 兼容写法,如果在 Weblog 初始化设置 plugins 时,不需要设置 weblog\n * @param weblog\n */\n constructor(weblog?: Weblogger) {\n super();\n if (!navigationTiming) {\n error('The Timing Monitor need performance APIs to Support!');\n return;\n }\n if (weblog) {\n this.apply(weblog);\n }\n }\n\n apply(weblog: Weblogger) {\n this.weblog = weblog;\n addMonitor(window, 'load', this.load);\n this.on('perf', ({ key, data }: { key: string, data: any; }) => {\n this.weblog.collect('CUSTOM', costMap[key as keyof typeof costMap], {\n [costMap[key as keyof typeof costMap]]: data[key],\n });\n });\n }\n\n load = () => {\n // 严格意义上来说类似的时间对于onload计算,都是等到window.onload执行完毕才开始计算\n // 所以页面加载完毕时间使用的是loadEventEnd事件,所以手动进入下一个event loop\n // 确保获取loadEventEnd事件\n setTimeout(() => {\n const perfInfo = this.collect();\n if (!perfInfo) {\n return;\n }\n [\n 'load',\n 'documentContentLoaded',\n 'dnsLookup',\n 'tcpConnection',\n 'jsCost',\n 'timeToFirstByte',\n ].forEach(key => {\n // TODO后面做一个支持度list来维护,现在先手动过滤一下\n if (key === 'jsCost' && perfInfo[key as TimingPerfName] === 0) {\n return;\n }\n this.weblog.collect('CUSTOM', costMap[key as keyof typeof costMap], {\n [costMap[key as keyof typeof costMap]]: perfInfo[key as TimingPerfName],\n });\n });\n });\n };\n\n destroy() {\n removeMonitor(window, 'load', this.load);\n this.off('perf');\n }\n\n calculate(key: TimingPerfName, options?: TimingCustomOptions) {\n const perf = perfMap[key];\n if (!perf) {\n throw new Error('The perf key is not correct!');\n }\n if (typeof perf.custom === 'function') {\n return perf.custom(key, options);\n }\n const endPoint = navigationTiming[perfMap[key].end as PerformanceTimingProperty];\n const startPoint = navigationTiming[perfMap[key].start as PerformanceTimingProperty];\n return endPoint - startPoint;\n\n }\n // 目前只针对这两个需要手动打点;\n mark(key: 'firstScreen' | 'whiteScreen', options?: TimingCustomOptions) {\n const data = this.collect(key, options);\n this.emit('perf', {\n key,\n data,\n });\n }\n collect(key?: TimingPerfName, options?: TimingCustomOptions) {\n // 如果不支持timing api的话,就直接不上报了,免得数据污染\n if (!navigationTiming) {\n return;\n }\n if (key) {\n return {\n [key]: this.calculate(key, options),\n };\n }\n const allPerf: TimingPerf = {};\n return Object.keys(perfMap).reduce((map, key) => {\n map[key as TimingPerfName] = this.calculate(key as TimingPerfName, options as TimingCustomOptions);\n return map;\n }, allPerf);\n }\n}\n\n// 优先使用pagehide 其次使用beforeunload;\nconst costMap = {\n load: 'total_download_cost',\n documentContentLoaded: 'operational_cost',\n dnsLookup: 'dns_query_cost',\n tcpConnection: 'tcp_cost',\n jsCost: 'js_cost',\n whiteScreen: 'white_screen_cost',\n firstScreen: 'first_screen_cost',\n timeToFirstByte: 'ttfb_cost',\n};\n\n/**\n * 如果使用了 bootstrap 则自动注册插件\n */\nautoRegister(TimingMonitor);","// TODO下面这个暂时不能这么用,因为计量方式和perfirmanceTiming不一样\n// export default performanceNavigationTiming || performanceTiming || null;\nexport default () => {\n const perf = typeof window !== 'undefined'\n ? window.performance\n : null;\n\n if (perf && perf.timing) {\n if (typeof perf.timing.toJSON === 'function') {\n const performanceTiming = perf.timing.toJSON();\n if (performanceTiming && !performanceTiming.redirectStart) {\n performanceTiming.redirectStart = performanceTiming.navigationStart;\n }\n return performanceTiming;\n }\n\n return perf.timing;\n }\n\n return null;\n};\n\ninterface PerfNowDetail {\n value: number | null;\n detail?: {\n start: string;\n startPoint: number;\n end: string;\n endPoint: number;\n };\n}\n\nexport function perfNow(time?: number): PerfNowDetail {\n const perf = typeof window !== 'undefined'\n ? window.performance\n : null;\n\n if (!perf) return { value: null };\n\n // 用户传入时间戳则使用用户的传入\n if (time != null) {\n return {\n value: time - perf.timing.navigationStart,\n detail: {\n start: 'navigationStart',\n startPoint: perf.timing.navigationStart,\n end: 'customTime',\n endPoint: time,\n },\n };\n }\n\n if (typeof perf.now === 'function') {\n return {\n value: perf.now(),\n detail: {\n start: 'navigationStart',\n startPoint: perf.timing.navigationStart,\n end: 'perfNowAPI',\n endPoint: perf.now(),\n },\n };\n }\n\n const now = Date.now();\n\n return {\n value: now - perf.timing.navigationStart,\n detail: {\n start: 'navigationStart',\n startPoint: perf.timing.navigationStart,\n end: 'dateNow',\n endPoint: now,\n },\n };\n}\n","import { PerfMap, PerfName, DOMPerf, ResPerf, APIPerf, webviewPerf, radarWebviewPerf, EntryTypes, InitiatorTypes, radarCustomPerf } from './interface';\nimport navigationTiming from './timing';\n\nexport const ENTRY_TYPES: EntryTypes[] = ['resource', 'navigation'];\nexport const INITI_TYPES: string[] = ['css', 'fetch', 'img', 'script', 'xmlhttprequest', 'link'];\nexport const API_TYPES: string[] = ['fetch', 'xmlhttprequest'];\n\nexport const LEGACY_KEY = 'fe_radar';\n// 统一的 custom_key\nexport const KEY = 'radar_log';\n\nexport enum RADAR_KEY {\n // 页面加载监控\n LOAD = 'load',\n // 静态资源监控\n RES = 'resource',\n // API 性能监控\n API = 'api',\n // 异常\n ERROR = 'error',\n // 脚本自身上报异常\n SDK_ERROR = 'sdk_error',\n // 用户自定义性能监控\n CUSTOM = 'custom',\n // 批量日志,用于处理批量情况\n BATCH = 'batch',\n // 事件\n EVENT = 'event',\n}\n\nexport enum LEGACY_RADAR_KEY {\n // 页面加载监控\n LOAD = 'load_statistics',\n // 静态资源监控\n RES = 'resource_statistics',\n // API 性能监控\n API = 'api_statistics',\n // 异常\n ERROR = 'error_statistics',\n // 脚本自身上报异常\n SDK_ERROR = 'sdk_error',\n // 用户自定义性能监控\n CUSTOM = 'custom_statistics',\n}\n\nexport enum ERROR_KEY {\n // 脚本异常\n SCRIPT = 'script',\n // 资源加载异常\n RES = 'res',\n // 接口请求异常\n API = 'api',\n // 视频异常\n VIDEO = 'video',\n}\n\nexport const perfNameList: Array> = [\n 'dns',\n 'tcp',\n 'ssl',\n 'ttfb',\n 'trans',\n 'dom_parse',\n 'blank',\n 'fb',\n 'dom_ready',\n 'total',\n 'resource',\n 'fp',\n 'tti',\n 'js_cost',\n];\n\nexport const domPerfMap: PerfMap = {\n redirect: {\n end: 'fetchStart',\n start: 'navigationStart',\n },\n // DNS查找时间\n dns: {\n end: 'domainLookupEnd',\n start: 'domainLookupStart',\n },\n dns_start: {\n end: 'domainLookupEnd',\n start: 'navigationStart',\n },\n // TCP建连时间\n tcp: {\n end: 'connectEnd',\n start: 'connectStart',\n },\n // TCP建连时间\n tcp_start: {\n end: 'connectEnd',\n start: 'navigationStart',\n },\n redirect_count: {\n custom(key, perf: PerformanceResourceTiming) {\n // @ts-ignore\n return perf.redirectCount;\n },\n },\n // ssl 安全连接耗时\n ssl: {\n // 有可能不是 https,导致这里上报异常\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.secureConnectionStart === 0) return null;\n return perf.connectEnd - perf.secureConnectionStart;\n },\n },\n ssl_start: {\n // 有可能不是 https,导致这里上报异常\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.secureConnectionStart === 0) return null;\n return perf.secureConnectionStart - perf.redirectStart;\n },\n },\n // 首字节事件,Time to First Byte\n ttfb: {\n end: 'responseStart',\n start: 'requestStart',\n },\n // 数据传输耗时\n trans: {\n end: 'responseEnd',\n start: 'responseStart',\n },\n // DOM 解析耗时\n dom_parse: {\n end: 'domInteractive',\n start: 'responseEnd',\n },\n dom_parse_start: {\n end: 'domInteractive',\n start: 'navigationStart',\n },\n // 白屏耗时\n // ((domInteractive || domLoading) - fetchStart)\n blank: {\n end: 'domLoading',\n start: 'navigationStart',\n },\n // 首字节\n fb: {\n end: 'responseStart',\n start: 'navigationStart',\n },\n // DOM-ready\n dom_ready: {\n end: 'domContentLoadedEventEnd',\n start: 'navigationStart',\n },\n // 完整 loading 时间\n total: {\n end: 'loadEventStart',\n start: 'navigationStart',\n },\n // 页面中的同步加载耗时\n resource: {\n end: 'loadEventStart',\n start: 'domContentLoadedEventEnd',\n },\n // 首次渲染,可以用 entries 里面的 first_paint\n fp: {\n custom() {\n if (typeof performance.getEntries !== 'function') {\n return null;\n }\n const entries = performance.getEntries();\n const firstPaintInfo = entries\n .filter(item => item.name === 'first-paint')[0];\n if (firstPaintInfo) {\n return Math.ceil(firstPaintInfo.startTime + firstPaintInfo.duration);\n }\n return null;\n },\n },\n // 首屏JS耗时……暂时先这么对付了,具体JS的耗时后面再提供吧\n // 计算的时候以第一个script开始时间点为起始,一直到DOM Complete完成\n // 这样看起来应该是可被定义为JS耗时了……\n js_cost: {\n custom() {\n if (typeof performance.getEntries !== 'function') {\n return null;\n }\n\n const timing = navigationTiming();\n const entries = performance.getEntries();\n const pageTimeInfo = performance.getEntries()\n .filter(item => item.initiatorType === 'navigation')[0];\n const firstJSTimeInfo = entries\n .filter(item => item.initiatorType === 'script')[0];\n\n // 有的浏览器 getEntries 里没有 navigation\n const domComplete = pageTimeInfo ? pageTimeInfo.domComplete :\n timing.domComplete - timing.navigationStart;\n\n if (firstJSTimeInfo && domComplete) {\n return domComplete - firstJSTimeInfo.fetchStart;\n }\n return null;\n },\n },\n // 可交互时间,这个不确定,粗略加个默认的,让用户可以自定义\n tti: {\n end: 'domInteractive',\n start: 'navigationStart',\n },\n // 这里 load performance 如果可以的话也能拿到\n protocol: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.nextHopProtocol;\n },\n },\n dom_num: {\n custom() {\n return typeof document !== 'undefined' ? document.all.length : null;\n }\n }\n};\nexport const apiPerfMap: PerfMap = {\n // fetchStart,记录资源的 fetchStart,记录其跟页面加载的偏移量\n fetch_start: {\n custom(key, perf: PerformanceResourceTiming) {\n return Math.round(perf.fetchStart);\n },\n },\n // DNS查找时间\n dns: {\n end: 'domainLookupEnd',\n start: 'domainLookupStart',\n cachedSkip: true,\n },\n // TCP建连时间\n tcp: {\n end: 'connectEnd',\n start: 'connectStart',\n cachedSkip: true,\n },\n // ssl 安全连接耗时\n ssl: {\n cachedSkip: true,\n // 有可能不是 https,导致这里上报异常\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.secureConnectionStart === 0) return null;\n return perf.connectEnd - perf.secureConnectionStart;\n },\n },\n // 首字节事件,Time to First Byte\n ttfb: {\n end: 'responseStart',\n start: 'requestStart',\n cachedSkip: true,\n },\n // 数据传输耗时\n trans: {\n end: 'responseEnd',\n start: 'responseStart',\n cachedSkip: true,\n },\n // 首字节\n fb: {\n end: 'responseStart',\n start: 'fetchStart',\n cachedSkip: true,\n },\n total: {\n end: 'responseEnd',\n start: 'fetchStart',\n },\n // 计算逻辑与total一致\n duration: {\n end: 'responseEnd',\n start: 'fetchStart',\n },\n // 体积\n size: {\n cachedSkip: true,\n custom(key, perf: PerformanceResourceTiming) {\n return perf.encodedBodySize;\n },\n noThrottle: true,\n },\n // 首次渲染,可以用 entries 里面的 first_paint\n protocol: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.nextHopProtocol;\n },\n },\n // file 静态资源地址\n file: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.name;\n },\n noThrottle: true,\n },\n res_type: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.initiatorType;\n },\n },\n // 是否缓存\n cached: {\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.transferSize === 0) return true;\n // safari 没有实现 transferSize,因此用 domainLookupStart 来判断\n if (perf.transferSize == null && perf.domainLookupStart === 0) return true;\n return false;\n },\n noThrottle: true,\n }\n};\n\nexport const resPerfMap: PerfMap = {\n // fetchStart,记录资源的 fetchStart,记录其跟页面加载的偏移量\n fetch_start: {\n custom(key, perf: PerformanceResourceTiming) {\n return Math.round(perf.fetchStart);\n },\n noThrottle: true,\n },\n // DNS查找时间\n dns: {\n end: 'domainLookupEnd',\n start: 'domainLookupStart',\n cachedSkip: true,\n },\n // TCP建连时间\n tcp: {\n end: 'connectEnd',\n start: 'connectStart',\n cachedSkip: true,\n },\n // ssl 安全连接耗时\n ssl: {\n cachedSkip: true,\n // 有可能不是 https,导致这里上报异常\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.secureConnectionStart === 0) return null;\n return perf.connectEnd - perf.secureConnectionStart;\n },\n },\n // 首字节事件,Time to First Byte\n ttfb: {\n end: 'responseStart',\n start: 'requestStart',\n cachedSkip: true,\n },\n // 数据传输耗时\n trans: {\n end: 'responseEnd',\n start: 'responseStart',\n cachedSkip: true,\n },\n // 首字节\n fb: {\n end: 'responseStart',\n start: 'fetchStart',\n cachedSkip: true,\n },\n total: {\n end: 'responseEnd',\n start: 'fetchStart',\n },\n // 计算逻辑与total一致\n duration: {\n end: 'responseEnd',\n start: 'fetchStart',\n },\n // 体积\n size: {\n cachedSkip: true,\n custom(key, perf: PerformanceResourceTiming) {\n return perf.encodedBodySize;\n },\n noThrottle: true,\n },\n // 首次渲染,可以用 entries 里面的 first_paint\n protocol: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.nextHopProtocol;\n },\n },\n // file 静态资源地址\n file: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.name;\n },\n noThrottle: true,\n },\n res_type: {\n custom(key, perf: PerformanceResourceTiming) {\n return perf.initiatorType;\n },\n },\n // 是否缓存\n cached: {\n custom(key, perf: PerformanceResourceTiming) {\n if (perf.transferSize === 0) return true;\n // safari 没有实现 transferSize,因此用 domainLookupStart 来判断\n if (perf.transferSize == null && perf.domainLookupStart === 0) return true;\n return false;\n },\n noThrottle: true,\n }\n};\n\nexport const DEFAULT_IGNORE_LIST = [\n '//wlog.kuaishou.com/rest/n/log/web/collect',\n // v3\n '/rest/wd/common/log/collect/misc2',\n // v3 radar\n '/rest/wd/common/log/collect/radar',\n // v2\n '/rest/kd/log/collect',\n];\n\n// userStart: 1603074007776, // 外部传入打点WebView初始时间戳,比如调用JSBridge时间戳,客户端入口点击时间戳等。\n// \tpageStart: 1603074007776, // Yoda收到任务的起始时间戳\n// \tpageShow: 1603074007776, // Loading图显示时间\n// \tpreCreate: 1603074007776, // Yoda即将启动创建WebView实例的时间戳\n// \tcreated: 1603074007776, // WebView对象创建完毕时间戳\n// \tstartLoad: 1603074007776, // WebView开始加载URL时间戳\n// \tdidStartLoad: 1603074007776, // WebView 加载URL后首个回调时间戳\n// \tdidEndLoad: 1603074007776, // WebView加载完毕时间戳\n\nexport const webviewPerfMap: PerfMap = {\n to_webview_page_start: {\n end: 'pageStart',\n start: 'userStart',\n },\n to_webview_page_show: {\n end: 'pageShow',\n start: 'userStart',\n },\n to_webview_pre_create: {\n end: 'preCreate',\n start: 'userStart',\n },\n to_webview_created: {\n end: 'created',\n start: 'userStart',\n },\n to_webview_start_load: {\n end: 'startLoad',\n start: 'userStart',\n },\n to_webview_did_start_load: {\n end: 'didStartLoad',\n start: 'userStart',\n },\n to_webview_did_end_load: {\n end: 'didEndLoad',\n start: 'userStart',\n },\n to_navigation_start: {\n end: 'navigationStart',\n start: 'userStart',\n },\n to_fetch_start: {\n end: 'fetchStart',\n start: 'userStart',\n },\n to_connect_start: {\n end: 'connectStart',\n start: 'userStart',\n },\n to_dom_ready: {\n end: 'domContentLoadedEventEnd',\n start: 'userStart',\n },\n to_total: {\n end: 'loadEventStart',\n start: 'userStart',\n },\n to_fmp: {\n end: 'radarFmp',\n start: 'userStart'\n }\n};\n// load信息也需要上报时间戳了 这里提供一个rename的map\nexport const loadTimestamp = {\n navigation_start_time: 'navigationStart',\n fetch_start_time: 'fetchStart',\n dns_start_time: 'domainLookupStart',\n dns_end_time: 'domainLookupEnd',\n connect_start_time: 'connect_start',\n ssl_start_time: 'secureConnectionStart',\n request_start_time: 'requestStart',\n response_start_time: 'responseStart',\n response_end_time: 'responseEnd',\n dom_interactive_time: 'domInteractive',\n dom_loading_time: 'domLoading',\n dom_ready_time: 'domContentLoadedEventEnd',\n load_event_time: 'loadEventStart',\n fmp_time: 'radarFmp'\n};","var t,n,e=function(){return\"\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12)},i=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return{name:t,value:n,delta:0,entries:[],id:e(),isFinal:!1}},a=function(t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var e=new PerformanceObserver((function(t){return t.getEntries().map(n)}));return e.observe({type:t,buffered:!0}),e}}catch(t){}},r=!1,o=!1,s=function(t){r=!t.persisted},u=function(){addEventListener(\"pagehide\",s),addEventListener(\"beforeunload\",(function(){}))},c=function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o||(u(),o=!0),addEventListener(\"visibilitychange\",(function(n){var e=n.timeStamp;\"hidden\"===document.visibilityState&&t({timeStamp:e,isUnloading:r})}),{capture:!0,once:n})},l=function(t,n,e,i){var a;return function(){e&&n.isFinal&&e.disconnect(),n.value>=0&&(i||n.isFinal||\"hidden\"===document.visibilityState)&&(n.delta=n.value-(a||0),(n.delta||n.isFinal||void 0===a)&&(t(n),a=n.value))}},p=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=i(\"CLS\",0),o=function(t){t.hadRecentInput||(r.value+=t.value,r.entries.push(t),n())},s=a(\"layout-shift\",o);s&&(n=l(t,r,s,e),c((function(t){var e=t.isUnloading;s.takeRecords().map(o),e&&(r.isFinal=!0),n()})))},d=function(){return void 0===t&&(t=\"hidden\"===document.visibilityState?0:1/0,c((function(n){var e=n.timeStamp;return t=e}),!0)),{get timeStamp(){return t}}},v=function(t){var n,e=i(\"FCP\"),r=d(),o=a(\"paint\",(function(t){\"first-contentful-paint\"===t.name&&t.startTime1&&void 0!==arguments[1]&&arguments[1],r=i(\"LCP\"),o=d(),s=function(t){var e=t.startTime;e url.replace(reProtocol, ''));\n}\n\nexport function isInURLWhiteList(url: string, ignoreList: string[]) {\n if (!url) return false;\n const domainPath = url.replace(reProtocol, '');\n return ignoreList.some(whiteURL => {\n return domainPath.indexOf(whiteURL) >= 0;\n });\n}\n// 计算雷达自身耗时\nexport const radarCost: any = {};\n// 保留拓展能力\nexport function radarPoint(name: string, open: boolean = false) {\n // if (!open) {\n // // 默认关闭 需要业务方手动开启\n // return\n // }\n const costName = radarCost[name];\n if (!costName) {\n radarCost[name] = { startTime: new Date().getTime() };\n } else if (!costName.endTime) {\n costName.endTime = new Date().getTime();\n costName.duration = costName.endTime - costName.startTime;\n delete costName.startTime;\n delete costName.endTime;\n }\n}\n\n/**\n * 收集chrome指标 比如lcp cls fid等\n * 会在unload事件里统一合并上报\n */\nexport function collectChromeMetrics(opt: chromeMetrics) {\n Object.assign(chromeMetric, opt);\n}\nexport const chromeMetric: chromeMetrics = {};\n\nexport const chromeMetricConfig: chromeMetricsConfig[] = [\n { name: 'fid', collectFn: getFID },\n { name: 'lcp', collectFn: getLCP },\n { name: 'cls', collectFn: getCLS }\n];\n\n// 取消通过客户端注入脚本来收集错误\nexport const removeBridgeJsErrorCollect = () => {\n if (typeof window !== 'undefined') {\n (window as any).yodaCollectErrorDataDestroy && (window as any).yodaCollectErrorDataDestroy();\n }\n};\n\n// 雷达通用debug函数\nexport const radarWarnLog = (type: string, value: any) => {\n const query = parseQueryString(location.search.slice(1));\n\n if (+getCookie('debug') === 1 || +query.debug === 1) {\n console.warn(`[radar] ${type}: `, value);\n\n }\n\n};\n\n\n/**\n * @file 对 radar 的数据进行预处理\n */\nfunction squashData(data: any[]) {\n let loadLog = null;\n let j = 0;\n let i = 0;\n\n // @ts-ignore\n for (; i < data.length; i++) {\n if (data[i].key === 'load') {\n loadLog = data[i];\n } else {\n data[j++] = data[i];\n }\n }\n\n data.length = j;\n\n return loadLog;\n}\n\ninterface UrlPage {\n page?: string; // url_package.page 当前 page 的 name\n identity?: string;\n}\n\nexport interface CustomStatEventOptions {\n key: string;\n value?: any;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n urlPage?: UrlPage;\n}\ninterface SendRadarLogOptions {\n removeStashedLog: string[];\n sendImmediate: boolean;\n customData: {\n h5_extra_attr: string | undefined;\n project_id: string;\n data: any[];\n };\n}\ninterface FormattedRadarLog {\n loadLog: SendRadarLogOptions | null;\n commonLog: SendRadarLogOptions;\n}\n\nexport function formatYodaRadarData(\n options: CustomStatEventOptions,\n): FormattedRadarLog {\n if (!options.value) return options as any;\n const params = options.value;\n // 过滤出最后一条load数据\n const loadLog = squashData(params.data);\n const commomParams = {\n project_id: params.project_id,\n app_version_name: params.app_version_name,\n url_package: params.url_package,\n // 统一传下划线格式\n h5_extra_attr: options.h5ExtraAttr,\n };\n return {\n loadLog: loadLog ? {\n removeStashedLog: [],\n sendImmediate: loadLog.dimension.sendImmediate,\n customData: {\n data: [loadLog],\n ...commomParams,\n },\n } : null,\n commonLog: {\n removeStashedLog: [],\n sendImmediate: true,\n customData: {\n data: params.data,\n ...commomParams\n },\n },\n };\n}\nexport const getUAList = () => {\n const ua = window.navigator.userAgent;\n const uaList: { [key: string]: string; } = {};\n ua.split(' ').map(item => {\n const arr = item.split('/');\n uaList[arr[0]] = arr[1];\n });\n return uaList;\n};\n\n\n// 获取webview_type\nexport const getWebViewType = () => {\n const ua = window.navigator.userAgent;\n if (ua.indexOf('Android') !== -1) {\n return 'WebView';\n }\n if (ua.indexOf('iPhone') !== -1) {\n const uaList = getUAList();\n if (uaList.Yoda && uaList.WebViewType === 'WK') {\n return 'YodaWKWebView';\n }\n if (!uaList.Yoda && uaList.WebView === 'WKWebView') {\n return 'WKWebView';\n }\n return 'UIWebView';\n }\n return '';\n};\n\nexport const formatLoadTime = (timing: loadPerformanceReport, entry: loadPerformanceReport) => {\n\n const res: loadPerformanceReport = {};\n Object.keys(entry).forEach(item => {\n if (timing[entry[item]] > 0) {\n res[item] = timing[entry[item]];\n }\n });\n return res;\n};\n// 判断是否在第四tab环境下\nexport const check4Tab = () => {\n const ua = window.navigator.userAgent;\n // tbht不等于0\n const reg = /tbht\\/([\\w]+)/i;\n const res = ua.match(reg);\n return res && res[1] !== '0';\n};\n","/**\n * @file 这里进行一些对底层的封装,底层包括:\n * 1. 中间件机制;\n * 2. 对 perf API 的繁杂处理;\n * 3. 对 weblogger 上报的封装;\n * @author Malcolm Yu\n */\nimport { Base } from '../../proto/base';\nimport { Weblogger } from '../../config/types';\nimport { addMonitor, removeMonitor, getDefaultKpn } from '../../util';\nimport { BasePlugin } from '../base';\nimport {\n PerfTime, PerfMapType, PerfKey, PerfItem,\n KVPair, RadarOptions, RadarMonitor,\n PerfMap, DOMPerf, ResPerf, CustomEntry, SetDimensionParam,\n chromeMetricsConfig,\n webviewPerf,\n APIPerf, kswitchSampled\n} from './interface';\nimport RadarPlugin, { RadarPluginConstructor } from './plugin';\nimport navigationTiming from './timing';\nimport { KEY, RADAR_KEY } from './const';\nimport { error, warn } from '../../util/console';\nimport { PAGELOG_API } from '../../bridge/types';\nimport { radarPoint, radarCost, getWebViewType, getUAList, collectChromeMetrics, chromeMetricConfig, normalizeURL, removeBridgeJsErrorCollect, radarWarnLog, formatYodaRadarData, CustomStatEventOptions } from './utils';\n\nconst KWAI_KPN = ['KUAISHOU', 'THANOS', 'NEBULA'];\nconst REPORT_THRESSHOLD = 60 * 1000;\n\nexport class RadarRoot extends BasePlugin {\n private kpn: string = getDefaultKpn();\n private plugins: RadarPlugin[] = [];\n private logQueue: KVPair[] = [];\n private queueConfig = {\n // 每1s清空一次queue\n wait: 1000,\n maxBatchLength: 200,\n };\n private eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\n private batchTimer = 0;\n private currentUrlPackage!: Base.UrlPackage;\n private referUrlPackage?: Base.UrlPackage;\n private startedLoadReport: boolean = false;\n private radarSessionId: string = '';\n private chromeMetric: chromeMetricsConfig[] = chromeMetricConfig;\n // public kswitchSampled: kswitchSampled;\n public options: RadarOptions;\n public isInKwai: boolean = KWAI_KPN.indexOf(this.kpn) >= 0;\n public isUsingBridge: boolean | null = null;\n public isUsingLegacy: boolean | null = null;\n public isUsingDetachedReport: boolean | null = null;\n public isSupportedYodaConcat: boolean | null = null;\n public customDimension: SetDimensionParam = {};\n // 默认忽略列表\n public ignoreList: string[] = ['https://web-trace.ksapisrv.com/ktrace/collect'];\n lastRadarLogId: string = '';\n // 当初始化时没获取到kswitch数据时 为true 表示需要在flush时重新计算采样率\n public computedSamplingAgain: boolean = true;\n public realSampledList: any[] = [];\n constructor(weblog: Weblogger | RadarOptions, options?: RadarOptions) {\n super();\n // 兼容处理\n let opts;\n if (options) {\n opts = options;\n }\n if (weblog) {\n if ((weblog as Weblogger).logger) {\n this.apply(weblog as Weblogger);\n } else {\n opts = weblog;\n }\n }\n radarPoint('radarCreatedToFirstReport');\n radarPoint('radarCreatedToOnload');\n this.options = opts as RadarOptions;\n this.queueConfig = {\n ...this.queueConfig,\n ...(this.options ? this.options.queue : {}),\n };\n // FIXME\n this.ignoreList = this.ignoreList.concat(normalizeURL(this.options && this.options.ignoreList));\n }\n\n get KSwitchSampled(): kswitchSampled | undefined {\n // @ts-ignore\n return this.weblog.currentUrlPackage.sampled;\n }\n get isKSwitchSampled(): boolean {\n // @ts-ignore\n return this.weblog.isKSwitchSampled;\n }\n\n // 采样控制 迁移自radar.ts 子类重写该方法\n protected samplingControl(options?: RadarOptions | number) {\n if (!options) {\n return false;\n }\n // 计算随机数\n const rand = Math.random();\n if (typeof options === 'number') {\n // 传入的是单一模块采样率 无需从options中取值\n return rand < options;\n }\n // radar整体采样率逻辑\n const { sampling } = options;\n\n return rand < sampling;\n }\n protected use(plugin: RadarPluginConstructor, ctx: RadarMonitor) {\n const usedPlugin = new plugin(ctx, this.options);\n this.plugins.push(usedPlugin);\n // 如果是旧式引用,use 是在 apply 之后调用。\n if (this.weblog) {\n usedPlugin.created();\n }\n }\n\n\n apply(weblog: Weblogger) {\n this.weblog = weblog;\n this.upadteUrlPackage();\n this.register();\n this.ignoreList.push(this.weblog.logger.url);\n // 业务侧new Radar时 是不会传入weblog对象的 apply方法在weblogger插件内调用 并传入weblogger对象\n // 业务侧传入radar时,weblogger通过plug方法实例化radar并传入weblogger对象 此时由雷达自身调用apply方法\n // 结论:在调用apply方法时一定会存在weblogger对象\n this.created();\n }\n\n created() {\n // 通过apply调用created,旧式引用时 plugins 为空\n this.plugins.forEach(plugin => {\n plugin.created();\n });\n }\n destroy() {\n removeMonitor(window, 'load', this.asyncReportTiming);\n this.plugins.forEach(plugin => {\n plugin.destroy();\n });\n }\n\n\n computedRealSampled(sampling: number, type: string): number | undefined {\n // 请求kswitch后|通过h5上报\n if (this.isKSwitchSampled) {\n let KSwitchSampling;\n if (typeof this.KSwitchSampled === 'object' && this.KSwitchSampled['radar']) {\n let allSample = this.KSwitchSampled['radar']['all'];\n allSample = typeof allSample !== 'number' ? 1 : allSample;\n let theSample = this.KSwitchSampled['radar'][type];\n // load等采样率和all是相乘关系\n KSwitchSampling = typeof theSample !== 'number' ? allSample : (theSample * allSample);\n } else {\n // if (typeof this.KSwitchSampled === 'boolean') 只有这两种情况\n KSwitchSampling = this.KSwitchSampled ? 1 : 0;\n }\n return KSwitchSampling * sampling;\n } else {\n return 1;\n // bridge没有返回 先按全量收集,flush的时候在重新检测\n }\n }\n\n /**\n * 通过 perf level 2 注册监听事件\n * 实际测试需要处理几个 case:\n * 1. 部分浏览器只支持 level 1\n * 2. 部分浏览器在 PerformanceObserver 时没有 navigation 事件\n */\n private async register() {\n\n // 不支持 level 1\n\n if (!navigationTiming()) {\n warn('[Radar] 由于不支持 Performance API,只进行请求监控和异常监控');\n return;\n }\n // 鉴于部分浏览器虽然支持 level2,但 observer 时没有 navigation 事件\n // 因此这里直接上报 level1 的数据(反正不需要高精度数据)\n\n // remove js注入的 error事件 后续会通过radar收集上报\n removeBridgeJsErrorCollect();\n // 兼容业务在onload之后实例化雷达 所以手动调用一次上报方法\n if (performance.timing.loadEventEnd > 0) {\n this.asyncReportTiming();\n } else {\n addMonitor(window, 'load', this.asyncReportTiming);\n }\n if (this.options && this.options.radarCost) {\n // 默认不上报雷达自身耗时\n addMonitor(window, this.eventName, this.asyncMetricCollectDone);\n }\n // beforeunload时清空当前logqueue\n addMonitor(window, this.eventName, this.flush);\n\n // 处理支持 level 2 的情况\n\n const { Utils: { yoda } } = this.weblog;\n\n if (!yoda) {\n this.isUsingBridge = false;\n this.isSupportedYodaConcat = false;\n this.isUsingLegacy = false;\n } else {\n if (this.isUsingBridge == null) {\n this.isUsingBridge = await yoda.isSupportBridge();\n }\n if (this.isSupportedYodaConcat == null) {\n this.isSupportedYodaConcat = await yoda.isSupportBridge(PAGELOG_API);\n }\n this.isUsingLegacy = this.isUsingBridge && !this.isSupportedYodaConcat;\n }\n\n // 生成唯一sessionid\n this.radarSessionId = this.nanoId();\n\n\n // 这里需要注意:在客户端内,而且不支持 bridge,或者支持 bridge 但不支持 yodaConcat\n this.isUsingDetachedReport = (this.isInKwai && !this.isUsingBridge) || this.isUsingLegacy;\n }\n\n private observeResource = (perf: PerformanceObserverEntryList | Performance) => {\n perf.getEntriesByType('resource')\n .forEach(v => this.reportPerformance(v));\n };\n\n asyncReportTiming = () => {\n // onload之后的调用会影响该时间戳\n radarPoint('radarCreatedToOnload');\n radarPoint('onloadToFirstReport');\n setTimeout(() => {\n // 雷达自身的时间戳 不受影响\n radarPoint('asyncReportTiming');\n this.reportPerformance(navigationTiming());\n this.startedLoadReport = true;\n try {\n // 先上报一部分已经生成的 entries 数据\n this.observeResource(performance);\n // 收集lcp等数据信息\n this.observeChromeMetrics(this.chromeMetric);\n new PerformanceObserver(this.observeResource)\n .observe({ entryTypes: ['resource'] });\n } catch (e) {\n warn('[Radar] 由于不支持 Performance API Level 2,只进行请求监控和异常监控');\n }\n // 注册radar-第一次上报的时间\n // created-firstReport = async-report + register-1\n // new weblog之后 至 onload + unload 至 firstReport\n radarPoint('radarCreatedToFirstReport');\n radarPoint('onloadToFirstReport');\n radarPoint('asyncReportTiming');\n }, 1000); // 延迟一秒上报,确保不阻塞 fmp 和 total 等性能数据\n };\n\n chromeMetricCallback = (opt: any) => {\n let { name, value } = opt;\n name = name.toLocaleLowerCase();\n this.logCollect({\n key: RADAR_KEY.CUSTOM,\n value: {\n [name]: value\n }\n });\n radarPoint(`${name}Collect`);\n collectChromeMetrics({ [name]: value });\n };\n observeChromeMetrics = (arr: chromeMetricsConfig[]) => {\n // 默认配置几项可收集指标\n const options = this.options;\n // 判断默认不主动上报,由业务进行配置\n arr.forEach(metric => {\n // 收集数据\n const { name } = metric;\n\n if (!options || options[name]) {\n radarPoint(`${name}Collect`);\n metric.collectFn(this.chromeMetricCallback);\n }\n });\n };\n // 监听异步指标耗时上报情况,确保耗时数据完善\n // 通过unload事件上报\n asyncMetricCollectDone = () => {\n // 格式 key:duration⬇️\n const radarCostResult: any = {};\n\n Object.keys(radarCost).forEach(radar => {\n const costItem = radarCost[radar];\n if (!costItem.duration && costItem.startTime) {\n // 防止有部分指标在unload的时候未收集完毕,默认置0\n costItem.duration = 0;\n delete costItem.startTime;\n }\n radarCostResult[radar] = costItem.duration;\n });\n this.logCollect({\n key: RADAR_KEY.CUSTOM,\n value: radarCostResult\n });\n this.flush();\n this.weblog.flush();\n // 上报完毕删除监听\n removeMonitor(window, this.eventName, this.asyncMetricCollectDone);\n };\n /**\n * 处理上报超出阈值的情况\n */\n protected throttle(value: any, perf: PerfItem, key: string, detail: any = {}) {\n if (perf.noThrottle || typeof value !== 'number') return value;\n const { startPoint, endPoint } = detail;\n // 间隔超过一定阈值,认为上报的有问题,不上报并记录日志\n // NaN数据也算作一种异常情况 不上报\n // 雷达的异常数据采样10%\n if (value > REPORT_THRESSHOLD || value < 0 || isNaN(value)) {\n if ((Math.random() < 0.1)) {\n const msg = `[${key} 异常]: ${value},原始数据为:${perf.end}: ${endPoint} - ${perf.start}: ${startPoint}`;\n this.logCollect({\n key: RADAR_KEY.EVENT,\n value: null,\n dimension: {\n name: '雷达数据异常', // 必填\n event_type: 'radar_error', // 【可选】\n message: msg, // 【可选】\n src: location.href,\n webViewType: getWebViewType(),\n yoda_version: getUAList().yoda_version || '',\n }\n });\n }\n return null;\n }\n return Math.round(value);\n }\n\n protected reportPerformance(entry: PerformanceEntry | CustomEntry) {\n\n this.plugins.forEach(plugin => {\n if (!plugin.when(entry)) {\n return;\n }\n plugin.onPerfReport(entry);\n });\n }\n\n // 处理上报计算逻辑\n private calculate(key: PerfKey, perfMap: PerfMap, timing: PerfTime) {\n\n\n const perf = perfMap[key] as PerfItem;\n if (!perf) {\n error(`perf key ${key} is unexpected!`);\n return;\n }\n // 当资源有缓存时,好多数据为 0,不进行无意义的上报\n if (perf.cachedSkip) {\n const cached = this.calculate('cached' as PerfKey, perfMap, timing);\n if (cached) return;\n }\n if (typeof perf.custom === 'function') {\n const value = perf.custom(key, timing);\n return this.throttle(value, perf, key);\n }\n const { end, start } = perf;\n\n // 由于webview数据上报的时候 不会带上performance.time导致timing['fmp']之类的数据为NaN无法计算\n //计算webview指标时 timing[end as keyof PerfTime] 可能为undefined 故兼容一下\n // @ts-ignore\n const endPoint = +timing[end as keyof PerfTime] || performance.timing[end];\n // @ts-ignore\n const startPoint = +timing[start as keyof PerfTime] || performance.timing[start];\n // console.log(`[info] ${key} –> ${end}: ${endPoint} - ${start}: ${startPoint} = ${endPoint - startPoint}`);\n const value = endPoint - startPoint;\n\n // 间隔超过一定阈值,认为上报的有问题,不上报并记录日志\n return this.throttle(value, perf, key, { startPoint, endPoint });\n }\n\n // FIXME\n generateLog(perfMap: any, timing: PerformanceEntry) {\n\n const allPerf: PerfMapType = {};\n // 批量处理日志生成\n Object.keys(perfMap).forEach(k => {\n const key = k as PerfKey;\n\n const value = this.calculate(key, perfMap, timing as PerfTime);\n // 可能存在一些值取不到的情况,取不到的话就不上报\n if (value != null) {\n // @ts-ignore\n allPerf[key] = value;\n }\n });\n\n return allPerf;\n }\n\n subDimension(logData: KVPair) {\n if (this.customDimension) {\n if (!logData.dimension) {\n logData.dimension = {};\n }\n Object.assign(logData.dimension, this.customDimension);\n }\n }\n /**\n * 生成nano id\n * 目前radarsessionid生成逻辑与weblog相同,防止weblog修改,雷达自身保存一份\n * @return {string} 16长度的字符串\n */\n private nanoId() {\n const ts = ((Math.random() * 1e9) >>> 0);\n const randomer = [];\n const seed = '0123456789ABCDEF';\n for (let i = 0; i < 7; i++) {\n randomer.push(seed.charAt(Math.random() * 16));\n }\n\n return ts + randomer.join('');\n }\n\n // flush上报之前重新探测一下采样率的问题\n beforeFlush() {\n // 这里不关心weblogger的采样率\n\n if (this.computedSamplingAgain) {\n // 第一次flush\n const samplingList: { [key: string]: any; } = {\n radarLoadSampling: { sampling: 1, type: 'load' },\n radarApiSampling: { sampling: this.options && this.options.apiSampling || 1, type: 'api' },\n radarErrorSampling: { sampling: this.options && this.options.errorSampling || 1, type: 'error' },\n radarResourceSampling: { sampling: this.options && this.options.resourceSampling || 0.1, type: 'resource' },\n radarCustomSampling: { sampling: this.options && this.options.customSampling || 1, type: 'custom' },\n radarEventSampling: { sampling: this.options && this.options.eventSampling || 1, type: 'event' },\n };\n this.realSampledList = [];\n Object.keys(samplingList).forEach(item => {\n // 计算出每个模块的采样率\n const sampling = this.isKSwitchSampled ?\n // 初始化的时候 kswitch没有返回且 flush时 发现kswitch有返回了 重新计算\n\n // load默认为1 其他根据业务配置取值\n this.samplingControl(this.computedRealSampled(samplingList[item]['sampling'] as number, samplingList[item]['type'] as string))\n // 采样率为用户配置的采样率\n : this.samplingControl(samplingList[item]);\n if (sampling) {\n this.realSampledList.push(samplingList[item]['type']);\n }\n });\n if (this.isKSwitchSampled) {\n this.computedSamplingAgain = false;\n }\n }\n\n // 把没采样的数据从logqueue中洗出来。。。。。\n this.logQueue = this.logQueue.filter(log => this.realSampledList.indexOf(log.key) !== -1);\n }\n\n\n flush = () => {\n this.beforeFlush();\n if (!this.options) {\n return;\n }\n if (this.logQueue.length <= 0) {\n return;\n }\n // 初次上报之前都暂时存一下比较稳妥\n if (!this.startedLoadReport) {\n return;\n }\n\n const h5_extra_attr = JSON.stringify({\n ...this.weblog.commomPackage.getH5ExtraAttr(),\n // radar自定义新增非value字段可以加在这里\n // 获取客户端版本\n app_version_name: this.weblog.commomPackage.getVersionName(),\n url: location.href\n\n });\n\n // 判断端环境\n // \b数据侧在业务设置了pagename的时候无法获取到真实的url,雷达这块重新写一次忽略pagename的逻辑比较复杂 故提供一个新的字段\n // radar_h5_extra_attr和radar_custom_extra_attr 共有字段app_version_name\n // 上报位置 custom_stat_event.value和h5_extra_attr\n const commonLogData = {\n project_id: this.options.projectId,\n radar_session_id: this.radarSessionId,\n h5_extra_attr\n };\n const { commomPackage: { service_name, sub_biz, need_encrypt, app_package } } = this.weblog;\n // @ts-ignore\n const currentUrlPackage = this.currentUrlPackage && this.currentUrlPackage.toJSON();\n // const key = this.isUsingLegacy ? LEGACY_KEY : KEY;\n // 尝试先直接桥接上报\n let sended = null;\n // 如果配置了优先http上报则不使用bridge上报数据\n if (!this.options.httpReportFirst) {\n sended = this.addRadarStatEvent({\n key: KEY,\n value: {\n ...commonLogData,\n data: this.logQueue,\n // @ts-ignore\n url_package: currentUrlPackage,\n app_version_name: app_package.version_name\n },\n serviceName: service_name || '',\n subBiz: sub_biz || '',\n needEncrypt: need_encrypt || false,\n container: app_package.container,\n realtime: false,\n // 统一改成下划线格式\n h5ExtraAttr: h5_extra_attr\n });\n }\n // 桥接上报失败使用 weblogger 自定义事件上报\n if (!sended || this.options.httpReportFirst) {\n this.weblog.collect('RADAR', {\n name: KEY,\n params: {\n ...commonLogData,\n data: this.logQueue,\n },\n currentUrlPackage,\n // @ts-ignore\n referUrlPackage: this.referUrlPackage && this.referUrlPackage.toJSON(),\n });\n }\n this.logQueue = [];\n };\n upadteUrlPackage() {\n if (!this.weblog) return;\n this.computedSamplingAgain = true;\n // 通过 toJSON 确保 page 和 params 是日志产生时的信息\n // @ts-ignore\n this.currentUrlPackage = this.weblog.currentUrlPackage;\n // @ts-ignore\n this.referUrlPackage = this.weblog.referUrlPackage;\n }\n decorateLog(kv: KVPair) {\n if (!this.currentUrlPackage) {\n this.upadteUrlPackage();\n }\n\n if (this.customDimension) {\n this.subDimension(kv);\n }\n // if (this.isUsingLegacy) {\n // // @ts-ignore\n // kv.key = kv.key + '_statistics';\n // }\n\n // 由于 url 是日志公参,因此 url 发生变化时直接冲刷日志\n if (this.currentUrlPackage && this.currentUrlPackage.page !== this.weblog.currentUrlPackage.page) {\n this.flush();\n this.upadteUrlPackage();\n }\n }\n\n logCollect(kv: KVPair) {\n radarWarnLog('radarLog', kv);\n if (!this.options) {\n return;\n }\n // 不再防抖 改为节流\n // if (this.batchTimer) {\n // clearTimeout(this.batchTimer);\n // }\n\n this.decorateLog(kv);\n // 当已经收集到load数据时 不会继续push 防止同时收集到多条load数据 适用于bridge和http上报\n if (kv.key === 'load') {\n const lastLoadData = this.logQueue.find(v => v.key === 'load');\n lastLoadData ? Object.assign(lastLoadData, kv) : this.logQueue.push(kv);\n } else {\n this.logQueue.push(kv);\n }\n // 上报窗口期内 不再创建定时器 只压入队列\n // flush判断当前情况是否可上报 包括采样,空队列等情况\n if (this.batchTimer) {\n return;\n }\n if (this.logQueue.length > this.queueConfig.maxBatchLength) {\n this.flush();\n return;\n }\n // 每隔wait秒上报一次数据 并在pagehide时上报所有logqueue里的数据\n this.batchTimer = window.setTimeout(() => {\n this.flush();\n clearTimeout(this.batchTimer);\n this.batchTimer = 0;\n }, this.queueConfig.wait);\n }\n\n addRadarStatEvent(log: CustomStatEventOptions) {\n try {\n const { Utils: { yoda } } = this.weblog;\n if (!yoda) { return false; }\n const { loadLog, commonLog } = formatYodaRadarData(log);\n if (loadLog) {\n if (this.lastRadarLogId) {\n loadLog.removeStashedLog = [this.lastRadarLogId];\n // 如果报进来的是一条sendImmediate为true的数据 且在之前已经上报过一条 load数据\n // 则需要覆盖掉上一条load 保证客户端在destory的时候只上报一次load数据\n if (loadLog.sendImmediate) {\n // 当本条load数据是sendImmediate = true时 清除上一条false的数据\n const empytLoadData = {\n removeStashedLog: [this.lastRadarLogId],\n sendImmediate: false,\n custom: { \"\": \"\" }\n };\n yoda.sendRadarLog(empytLoadData).then((res: any) => {\n if (res && res.logId) {\n this.lastRadarLogId = res.logId;\n }\n });\n }\n }\n\n yoda.sendRadarLog(loadLog).then((res: any) => {\n if (res && res.logId) {\n this.lastRadarLogId = res.logId;\n }\n });\n }\n\n if (commonLog) {\n yoda.sendRadarLog(commonLog);\n }\n return true;\n } catch (err) {\n return false;\n }\n };\n}\n","import { StatusTypes, TaskEventTypeStrings, OperationDirectionTypes, TaskStatusTypes, TaskEventOperationTypes } from '../config/types';\n\ninterface UrlPage {\n page?: string; // url_package.page 当前 page 的 name\n identity?: string;\n}\n\n/**\n * PV接口入参\n */\nexport interface CurrentPageOptions {\n page: string;\n identity: string;\n pageType: string;\n actionType: 'enter' | 'leave' | 'hidden' | 'visible';\n params?: any;\n contentPackage?: any;\n status?: StatusTypes;\n serviceName?: string;\n subBiz?: string;\n beginTime?: number;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n needEncrypt?: boolean;\n}\n\n/**\n * 元素曝光接口入参\n */\nexport interface ElementShowEventOptions {\n action: string;\n params?: any;\n contentPackage?: any;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n urlPage?: UrlPage;\n}\n\n/**\n * Task事件接口入参\n */\nexport interface TaskEventOptions {\n action: string;\n params?: any;\n contentPackage?: any;\n type: TaskEventTypeStrings;\n status?: TaskStatusTypes;\n operationType?: TaskEventOperationTypes;\n operationDirection?: OperationDirectionTypes;\n sessionId?: string;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n urlPage?: UrlPage;\n}\n\n/**\n * 自定义事件\n */\nexport interface CustomStatEventOptions {\n key: string;\n value?: string;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n urlPage?: UrlPage;\n}\n\n/**\n * 异常事件\n */\nexport interface ExceptionEventOptions {\n type: string;\n message: string;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n}\n\n/**\n * 自定义PB事件\n */\nexport interface CustomProtoOptions {\n type: string;\n payload: string;\n serviceName?: string;\n subBiz?: string;\n needEncrypt?: boolean;\n realtime?: boolean;\n h5ExtraAttr?: string;\n container?: string;\n eventId?: string;\n}\n\n/**\n * 用于日志合并的 radar yoda 事件\n */\nexport interface SendRadarLogOptions {\n removeStashedLog: string[];\n sendImmediate: boolean;\n customData: {\n h5ExtraAttr: any;\n project_id: string;\n data: any[];\n };\n}\n\n/**\n * bridge接口返回数据结构\n */\nexport interface ApiResult {\n result?: number;\n message?: string;\n logId?: string;\n timeData?: any;\n}\n\n/**\n * bridge实现方法\n */\nexport const BRIDGE_API = 'setClientLog';\nexport const PAGELOG_API = 'sendRadarLog';\nexport const GET_WEBVIEW_PERF = 'getPageLoadData';\n\n/**\n * 入参类型\n */\nexport type optionTypes = CurrentPageOptions | TaskEventOptions | CustomStatEventOptions\n | ExceptionEventOptions | CustomProtoOptions | ElementShowEventOptions | SendRadarLogOptions | {};\n\n/**\n * 必须实现的接口\n */\nexport interface IYodaBridge {\n setCurrentPage(options: CurrentPageOptions): void;\n addElementShowEvent(options: ElementShowEventOptions): void;\n addTaskEvent(options: TaskEventOptions): void;\n addExceptionEvent(options: ExceptionEventOptions): void;\n addCustomProtoEvent(options: CustomProtoOptions): void;\n addCustomStatEvent(options: CustomStatEventOptions): void;\n addRadarStatEvent(options: CustomStatEventOptions): Promise;\n isSupportBridgeLogger(name?: string): Promise;\n}\n","/**\n * @file 对于每个 Plugin 的共性,使用一个抽象类来描述\n */\n\nimport { RadarMonitor, CustomEntry, lcpEntry } from './interface';\n\nexport default abstract class RadarPlugin {\n constructor(protected radar: RadarMonitor, protected options: any) { }\n abstract key: string;\n\n abstract created(): void;\n abstract destroy(): void;\n abstract when(perf: PerformanceEntry | CustomEntry | lcpEntry | PerformanceEntry[], batch?: boolean): boolean;\n abstract onPerfReport(perf: PerformanceEntry | CustomEntry | PerformanceEntry[], batch?: boolean): void;\n}\n\nexport type RadarPluginConstructor = new (radar: RadarMonitor, options?: T) => any;\n","/**\n * @file Radar 的早期设计有点问题,合理的设计应该永远主干是空的,一切均以插件方式载入\n * 插件享受主干的生命周期调度、核心逻辑处理与事件发送等\n * 由于 Navigation 的逻辑处理十分复杂,这里也把 Navi 拆出来单独处理\n */\nimport RadarPlugin from './plugin';\nimport { CustomEntry, NavigationLogData, KVPair, webviewPerfRes } from './interface';\nimport { addMonitor, removeMonitor } from '../../util';\nimport { chromeMetric, formatLoadTime, check4Tab } from './utils';\nimport { RADAR_KEY, domPerfMap, webviewPerfMap, loadTimestamp } from './const';\n\nconst LOAD_REPORT_DELAY = 10 * 1000; // 加载上报日志\n\nexport default class Navigation extends RadarPlugin {\n public key = 'navigation';\n private eventName = 'onpagehide' in window ? 'pagehide' : 'beforeunload';\n private logData: NavigationLogData = {};\n private logSended: boolean = false;\n private saveWebviewEntry: any = {};\n // 处理上报时机\n private delay: any;\n private hasReportBase: boolean = false;\n private record = {\n fmp: false,\n base: false,\n webviewPerf: false\n };\n // 端外延迟2s的timeout\n private loadTimeout: any = null;\n\n // 立即上报\n\n get sendImmediate() {\n return this.record.fmp && this.record.base && this.record.webviewPerf && !!check4Tab();\n }\n\n get data() {\n return this.sepDimension({\n key: RADAR_KEY.LOAD,\n value: this.logData,\n });\n }\n\n async created() {\n // 目前在端外和使用了 yoda 聚合 bridge 的场景下,均不需要进行兜底\n // 但是在端内没有 yoda 聚合能力的情况下,需要做一个兜底\n // if (this.radar.isUsingDetachedReport) {\n // this.delay = setTimeout(() => this.reportOnUnload('noflash'), LOAD_REPORT_DELAY);\n // }\n // addMonitor(window, this.eventName, this.reportOnUnload);\n }\n\n when(entry: PerformanceEntry | CustomEntry) {\n // 接受 fmp/play_clicked/play_idr 三个自定义指标\n if ((entry as CustomEntry).custom) {\n const { key } = (entry as CustomEntry).entry || {};\n if (['fmp', 'play_clicked', 'play_idr', 'webViewPerf'].indexOf(key) > -1) {\n return true;\n }\n return false;\n }\n\n // 接受 level1 和 level2\n return !(entry as PerformanceEntry).entryType\n || (entry as PerformanceEntry).entryType === 'navigation';\n }\n\n async getWebviewLoadData() {\n if (this.record.webviewPerf) {\n // 禁止重复获取\n return;\n }\n const { yoda } = this.radar.weblog.Utils;\n const webviewPerf = yoda && await yoda.getWebviewLoadPerf() as webviewPerfRes;\n // 调用成功后更改状态 如果第一次调用失败 会在unload之前再调用一次\n // 兼容旧版本客户端webviewPerf是一个空对象的问题\n if (webviewPerf && webviewPerf.timeData) {\n // 没有获取到就不上报\n this.record.webviewPerf = true;\n // 第四tab下 会存在没有userstart的情况 需要使用pageStart为webview初始时间进行计算\n let { userStart, pageStart } = webviewPerf.timeData;\n if (!userStart) {\n webviewPerf.timeData.userStart = pageStart;\n }\n this.onPerfReport({\n custom: true,\n entry: {\n key: 'webViewPerf',\n // 客户端返回数据为\n /**\n {\n result:number\n timeData:{string:number}\n }\n */\n value: webviewPerf.timeData,\n },\n });\n }\n }\n async onPerfReport(entry: PerformanceEntry | CustomEntry) {\n if ((entry as CustomEntry).custom) {\n const data = (entry as CustomEntry).entry;\n if (data) {\n const { key, value } = data;\n const { renderTime } = (entry as CustomEntry);\n if (key === 'fmp') {\n // fmp晚于load上报时 为了得到fmo_time数据 需要重新计算一次loadtime,随着fmp上报\n (performance.timing as any).radarFmp = renderTime;\n this.record.fmp = true;\n const loadTime = formatLoadTime(performance.timing as any, loadTimestamp);\n Object.assign(this.logData, { [key]: value }, loadTime);\n this.getWebviewLoadData();\n if (this.record.webviewPerf) {\n // 兼容一下fmp特别慢的情况,当fmp收集到的时候 补全to_fmp\n const webviewTiming = this.radar.generateLog(webviewPerfMap, this.saveWebviewEntry as PerformanceEntry);\n Object.assign(this.logData, webviewTiming);\n }\n }\n if (key === 'webViewPerf') {\n const webviewEntry = data.value;\n if (!webviewEntry) {\n // 说明没有收集到webview指标\n return;\n }\n\n this.saveWebviewEntry = webviewEntry;\n const webviewTiming = this.radar.generateLog(webviewPerfMap, webviewEntry as PerformanceEntry);\n Object.assign(this.logData, webviewTiming);\n }\n }\n } else {\n // load数据走这里的逻辑\n const logData = this.radar.generateLog(domPerfMap, entry as PerformanceEntry);\n const loadTime = formatLoadTime(performance.timing as any, loadTimestamp);\n // 无重复字段 不会覆盖\n Object.assign(this.logData, logData, loadTime);\n this.record.base = true;\n }\n // yoda 通道每次收到自定义数据都合并上报一次\n // yodaAlready用于兼容radar.bridge 使用非桥接上报版本优先通过桥接上报 如果fmp上报先于yodaready,需要在这里做一个兜底,否则会丢数据\n if (this.radar.isSupportedYodaConcat) {\n /**\n * 目前有三个位置可以调用此方法\n * 1。onload事件\n * 2。fmp上报\n * 3. webviewPerf\n * 端内分几种情况:\n * 1. onload +webviewPerf = to_fmp为NaN 客户端侧上报为Null 清洗侧为0 其他正常\n * 2. onload +fmp 不会上报to_fmp等字段 清洗侧为null\n * 3. onload +fmp+webviewperf 正常上报\n */\n // 防止上报的fmp上报之后 yoda没有ready 所以每次上报都会调用一次 如果bridge之前调用成功过,则不会继续调用bridge\n this.getWebviewLoadData();\n this.radar.logCollect(this.data);\n } else if (this.radar.isUsingDetachedReport && this.record.webviewPerf && this.record.fmp && this.record.base) {\n // 这里是为了覆盖客户端版本过低 对bridge支持不好的情况\n // 端内对 unload 支持很差,先弄成三个信息都有就强制上报(可能无需上报webviewperf 由数据侧根据时间戳计算)\n // 没有yoda 无法获取webview信息 \n // 上报之前需要合并webviewtiming\n this.reportOnUnload('noflash');\n } else if (this.record.fmp && this.record.base && !this.hasReportBase) {\n // 端外有这两个数据就立即上报\n // 这里应用于fmp先于load被收集的场景 或\n // load被收集2s内收集到fmp的场景 此时hasReportBase为false\n\n /**\n * 端外有两种情况\n * 1.fmp先于load \n * 2.load先于fmp\n */\n clearTimeout(this.loadTimeout);\n this.loadTimeout = null;\n this.loadReport();\n } else if (!this.hasReportBase && this.record.base) {\n // 端外收集到load数据后延迟2s上报等待fmp数据 \n // 这里应用于load先于fmp被收集的场景\n this.loadTimeout = setTimeout(() => {\n this.loadReport();\n this.hasReportBase = true;\n }, 2000);\n }\n }\n\n destroy() {\n clearTimeout(this.delay);\n removeMonitor(window, this.eventName, this.reportOnUnload);\n }\n\n private sepDimension(kv: KVPair) {\n const { key } = kv;\n const { protocol, ...value } = kv.value;\n const dimension = { protocol, sendImmediate: this.sendImmediate };\n return { key, value, dimension };\n }\n\n // FIXME:处理一下上报差值\n private reportFirstScreen(data: NavigationLogData) {\n if (data.play_clicked && data.play_idr) {\n const firstScreen = data.play_idr - data.play_clicked;\n if (firstScreen > 0 && firstScreen < 60000) {\n this.logData.play_first_screen = firstScreen;\n }\n }\n }\n\n // 按照苗老师处理页面离开行为的思路来进行页面性能上报\n private reportOnUnload = (flush: any) => {\n // 走 yoda 通道的不额外上报\n if (this.logSended || this.radar.isSupportedYodaConcat) return;\n this.logSended = true;\n // FIXME: 上报差值,有点丑\n\n this.reportFirstScreen(Object.assign(this.logData, chromeMetric));\n this.radar.logCollect(this.data);\n if (flush !== 'noflash') {\n this.radar.flush();\n this.radar.weblog.flush();\n }\n };\n // 强制上报当前收集到的数据\n private loadReport() {\n // 加入lcp数据\n Object.assign(this.logData, chromeMetric)\n this.radar.logCollect(this.data);\n this.radar.flush();\n this.radar.weblog.flush();\n }\n}\n","/**\n * @file 资源页面的收集\n */\nimport RadarPlugin from './plugin';\nimport { CustomEntry, KVPair } from './interface';\nimport { resPerfMap, RADAR_KEY } from './const';\nimport { isInURLWhiteList } from './utils';\nimport { addMonitor, removeMonitor, composedPath } from '../../util';\n\n// const LOAD_REPORT_DELAY = 15 * 1000; // 加载上报日志\n\nexport default class Resource extends RadarPlugin {\n public key = 'resource';\n\n created() {\n // Nothing\n addMonitor(window, 'error', this.onResError as EventListener, true);\n }\n\n when(entry: PerformanceEntry) {\n if (isInURLWhiteList(entry.name as string, this.radar.ignoreList)) {\n return false;\n }\n // load 这里可以接受自定义指标\n return entry.entryType === 'resource' && (entry.initiatorType !== 'fetch' && entry.initiatorType !== 'xmlhttprequest');\n }\n // 劫持 window onerror\n private isScriptError(e: ErrorEvent) {\n // 有 message 基本上认为是脚本异常了\n return e.message || e.lineno != null;\n }\n // 劫持 window.addEventListener('error')\n private onResError = (e: ErrorEvent & PromiseRejectionEvent) => {\n const isScriptError = this.isScriptError(e);\n if (!isScriptError) {\n // resource报错 需要遵循resource插件的采样逻辑\n // 非脚本报错\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.RES,\n value: {\n failed: true,\n file: (e.target as HTMLImageElement).src,\n // cached: false,\n // @ts-ignore\n res_path: composedPath(e.path || (e.composedPath && e.composedPath())),\n },\n }));\n }\n };\n onPerfReport(entry: PerformanceEntry | CustomEntry | PerformanceEntry[]) {\n const logData = this.radar.generateLog(resPerfMap, entry as PerformanceEntry);\n\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.RES,\n value: logData,\n }));\n }\n\n destroy() {\n // Nothing\n removeMonitor(window, 'error', this.onResError as EventListener, true);\n }\n\n private sepDimension(kv: KVPair) {\n const { key } = kv;\n const { protocol, file, cached, res_path, failed, res_type, ...value } = kv.value;\n const dimension = { protocol, file, cached, failed, res_path, res_type };\n return { key, value, dimension };\n }\n}\n","// XHook - v1.4.9 - https://github.com/jpillora/xhook\n// Jaime Pillora - MIT Copyright 2021\n(function(window,undefined) {\nvar AFTER, BEFORE, COMMON_EVENTS, EventEmitter, FETCH, FIRE, FormData, NativeFetch, NativeFormData, NativeXMLHttp, OFF, ON, READY_STATE, UPLOAD_EVENTS, WINDOW, XHookFetchRequest, XHookFormData, XHookHttpRequest, XMLHTTP, convertHeaders, depricatedProp, document, fakeEvent, mergeObjects, msie, nullify, proxyEvents, slice, useragent, xhook, _base,\n __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\nWINDOW = null;\n\nif (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n WINDOW = self;\n} else if (typeof global !== 'undefined') {\n WINDOW = global;\n} else {\n WINDOW = window;\n}\n\ndocument = WINDOW.document;\n\nBEFORE = 'before';\n\nAFTER = 'after';\n\nREADY_STATE = 'readyState';\n\nON = 'addEventListener';\n\nOFF = 'removeEventListener';\n\nFIRE = 'dispatchEvent';\n\nXMLHTTP = 'XMLHttpRequest';\n\nFETCH = 'fetch';\n\nFormData = 'FormData';\n\nUPLOAD_EVENTS = ['load', 'loadend', 'loadstart'];\n\nCOMMON_EVENTS = ['progress', 'abort', 'error', 'timeout'];\n\nuseragent = typeof navigator !== 'undefined' && navigator['useragent'] ? navigator.userAgent : '';\n\nmsie = parseInt((/msie (\\d+)/.exec(useragent.toLowerCase()) || [])[1]);\n\nif (isNaN(msie)) {\n msie = parseInt((/trident\\/.*; rv:(\\d+)/.exec(useragent.toLowerCase()) || [])[1]);\n}\n\n(_base = Array.prototype).indexOf || (_base.indexOf = function(item) {\n var i, x, _i, _len;\n for (i = _i = 0, _len = this.length; _i < _len; i = ++_i) {\n x = this[i];\n if (x === item) {\n return i;\n }\n }\n return -1;\n});\n\nslice = function(o, n) {\n return Array.prototype.slice.call(o, n);\n};\n\ndepricatedProp = function(p) {\n return p === \"returnValue\" || p === \"totalSize\" || p === \"position\";\n};\n\nmergeObjects = function(src, dst) {\n var k, v;\n for (k in src) {\n v = src[k];\n if (depricatedProp(k)) {\n continue;\n }\n try {\n dst[k] = src[k];\n } catch (_error) {}\n }\n return dst;\n};\n\nnullify = function(res) {\n if (res === void 0) {\n return null;\n }\n return res;\n};\n\nproxyEvents = function(events, src, dst) {\n var event, p, _i, _len;\n p = function(event) {\n return function(e) {\n var clone, k, val;\n clone = {};\n for (k in e) {\n if (depricatedProp(k)) {\n continue;\n }\n val = e[k];\n clone[k] = val === src ? dst : val;\n }\n return dst[FIRE](event, clone);\n };\n };\n for (_i = 0, _len = events.length; _i < _len; _i++) {\n event = events[_i];\n if (dst._has(event)) {\n src[\"on\" + event] = p(event);\n }\n }\n};\n\nfakeEvent = function(type) {\n var msieEventObject;\n if (document && (document.createEventObject != null)) {\n msieEventObject = document.createEventObject();\n msieEventObject.type = type;\n return msieEventObject;\n } else {\n try {\n return new Event(type);\n } catch (_error) {\n return {\n type: type\n };\n }\n }\n};\n\nEventEmitter = function(nodeStyle) {\n var emitter, events, listeners;\n events = {};\n listeners = function(event) {\n return events[event] || [];\n };\n emitter = {};\n emitter[ON] = function(event, callback, i) {\n events[event] = listeners(event);\n if (events[event].indexOf(callback) >= 0) {\n return;\n }\n i = i === undefined ? events[event].length : i;\n events[event].splice(i, 0, callback);\n };\n emitter[OFF] = function(event, callback) {\n var i;\n if (event === undefined) {\n events = {};\n return;\n }\n if (callback === undefined) {\n events[event] = [];\n }\n i = listeners(event).indexOf(callback);\n if (i === -1) {\n return;\n }\n listeners(event).splice(i, 1);\n };\n emitter[FIRE] = function() {\n var args, event, i, legacylistener, listener, _i, _len, _ref;\n args = slice(arguments);\n event = args.shift();\n if (!nodeStyle) {\n args[0] = mergeObjects(args[0], fakeEvent(event));\n }\n legacylistener = emitter[\"on\" + event];\n if (legacylistener) {\n legacylistener.apply(emitter, args);\n }\n _ref = listeners(event).concat(listeners(\"*\"));\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n listener = _ref[i];\n listener.apply(emitter, args);\n }\n };\n emitter._has = function(event) {\n return !!(events[event] || emitter[\"on\" + event]);\n };\n if (nodeStyle) {\n emitter.listeners = function(event) {\n return slice(listeners(event));\n };\n emitter.on = emitter[ON];\n emitter.off = emitter[OFF];\n emitter.fire = emitter[FIRE];\n emitter.once = function(e, fn) {\n var fire;\n fire = function() {\n emitter.off(e, fire);\n return fn.apply(null, arguments);\n };\n return emitter.on(e, fire);\n };\n emitter.destroy = function() {\n return events = {};\n };\n }\n return emitter;\n};\n\nxhook = EventEmitter(true);\n\nxhook.EventEmitter = EventEmitter;\n\nxhook[BEFORE] = function(handler, i) {\n if (handler.length < 1 || handler.length > 2) {\n throw \"invalid hook\";\n }\n return xhook[ON](BEFORE, handler, i);\n};\n\nxhook[AFTER] = function(handler, i) {\n if (handler.length < 2 || handler.length > 3) {\n throw \"invalid hook\";\n }\n return xhook[ON](AFTER, handler, i);\n};\n\nxhook.enable = function() {\n WINDOW[XMLHTTP] = XHookHttpRequest;\n if (typeof XHookFetchRequest === \"function\") {\n WINDOW[FETCH] = XHookFetchRequest;\n }\n if (NativeFormData) {\n WINDOW[FormData] = XHookFormData;\n }\n};\n\nxhook.disable = function() {\n WINDOW[XMLHTTP] = xhook[XMLHTTP];\n WINDOW[FETCH] = xhook[FETCH];\n if (NativeFormData) {\n WINDOW[FormData] = NativeFormData;\n }\n};\n\nconvertHeaders = xhook.headers = function(h, dest) {\n var header, headers, k, name, v, value, _i, _len, _ref;\n if (dest == null) {\n dest = {};\n }\n switch (typeof h) {\n case \"object\":\n headers = [];\n for (k in h) {\n v = h[k];\n name = k.toLowerCase();\n headers.push(\"\" + name + \":\\t\" + v);\n }\n return headers.join('\\n') + '\\n';\n case \"string\":\n headers = h.split('\\n');\n for (_i = 0, _len = headers.length; _i < _len; _i++) {\n header = headers[_i];\n if (/([^:]+):\\s*(.+)/.test(header)) {\n name = (_ref = RegExp.$1) != null ? _ref.toLowerCase() : void 0;\n value = RegExp.$2;\n if (dest[name] == null) {\n dest[name] = value;\n }\n }\n }\n return dest;\n }\n};\n\nNativeFormData = WINDOW[FormData];\n\nXHookFormData = function(form) {\n var entries;\n this.fd = form ? new NativeFormData(form) : new NativeFormData();\n this.form = form;\n entries = [];\n Object.defineProperty(this, 'entries', {\n get: function() {\n var fentries;\n fentries = !form ? [] : slice(form.querySelectorAll(\"input,select\")).filter(function(e) {\n var _ref;\n return ((_ref = e.type) !== 'checkbox' && _ref !== 'radio') || e.checked;\n }).map(function(e) {\n return [e.name, e.type === \"file\" ? e.files : e.value];\n });\n return fentries.concat(entries);\n }\n });\n this.append = (function(_this) {\n return function() {\n var args;\n args = slice(arguments);\n entries.push(args);\n return _this.fd.append.apply(_this.fd, args);\n };\n })(this);\n};\n\nif (NativeFormData) {\n xhook[FormData] = NativeFormData;\n WINDOW[FormData] = XHookFormData;\n}\n\nNativeXMLHttp = WINDOW[XMLHTTP];\n\nxhook[XMLHTTP] = NativeXMLHttp;\n\nXHookHttpRequest = WINDOW[XMLHTTP] = function() {\n var ABORTED, currentState, emitFinal, emitReadyState, event, facade, hasError, hasErrorHandler, readBody, readHead, request, response, setReadyState, status, transiting, writeBody, writeHead, xhr, _i, _len, _ref;\n ABORTED = -1;\n xhr = new xhook[XMLHTTP]();\n request = {};\n status = null;\n hasError = void 0;\n transiting = void 0;\n response = void 0;\n readHead = function() {\n var key, name, val, _ref;\n response.status = status || xhr.status;\n if (!(status === ABORTED && msie < 10)) {\n response.statusText = xhr.statusText;\n }\n if (status !== ABORTED) {\n _ref = convertHeaders(xhr.getAllResponseHeaders());\n for (key in _ref) {\n val = _ref[key];\n if (!response.headers[key]) {\n name = key.toLowerCase();\n response.headers[name] = val;\n }\n }\n }\n };\n readBody = function() {\n if (!xhr.responseType || xhr.responseType === \"text\") {\n response.text = xhr.responseText;\n response.data = xhr.responseText;\n try {\n response.xml = xhr.responseXML;\n } catch (_error) {\n\n }\n } else if (xhr.responseType === \"document\") {\n response.xml = xhr.responseXML;\n response.data = xhr.responseXML;\n } else {\n response.data = xhr.response;\n }\n if (\"responseURL\" in xhr) {\n response.finalUrl = xhr.responseURL;\n }\n };\n writeHead = function() {\n facade.status = response.status;\n facade.statusText = response.statusText;\n };\n writeBody = function() {\n if ('text' in response) {\n facade.responseText = response.text;\n }\n if ('xml' in response) {\n facade.responseXML = response.xml;\n }\n if ('data' in response) {\n facade.response = response.data;\n }\n if ('finalUrl' in response) {\n facade.responseURL = response.finalUrl;\n }\n };\n emitReadyState = function(n, event) {\n while (n > currentState && currentState < 4) {\n facade[READY_STATE] = ++currentState;\n if (currentState === 1) {\n facade[FIRE](\"loadstart\", {});\n }\n if (currentState === 2) {\n writeHead();\n }\n if (currentState === 4) {\n writeHead();\n writeBody();\n }\n facade[FIRE](\"readystatechange\", event || {});\n if (currentState === 4) {\n if (request.async === false) {\n emitFinal();\n } else {\n setTimeout(emitFinal, 0);\n }\n }\n }\n };\n emitFinal = function() {\n if (!hasError) {\n facade[FIRE](\"load\", {});\n }\n facade[FIRE](\"loadend\", {});\n if (hasError) {\n facade[READY_STATE] = 0;\n }\n };\n currentState = 0;\n setReadyState = function(n, event) {\n var hooks, process;\n if (n !== 4) {\n emitReadyState(n, event);\n return;\n }\n hooks = xhook.listeners(AFTER);\n process = function() {\n var hook;\n if (!hooks.length) {\n return emitReadyState(4, event);\n }\n hook = hooks.shift();\n if (hook.length === 2) {\n hook(request, response);\n return process();\n } else if (hook.length === 3 && request.async) {\n return hook(request, response, process);\n } else {\n return process();\n }\n };\n process();\n };\n facade = request.xhr = EventEmitter();\n xhr.onreadystatechange = function(event) {\n try {\n if (xhr[READY_STATE] === 2) {\n readHead();\n }\n } catch (_error) {}\n if (xhr[READY_STATE] === 4) {\n transiting = false;\n readHead();\n readBody();\n }\n setReadyState(xhr[READY_STATE], event);\n };\n hasErrorHandler = function() {\n hasError = true;\n };\n facade[ON]('error', hasErrorHandler);\n facade[ON]('timeout', hasErrorHandler);\n facade[ON]('abort', hasErrorHandler);\n facade[ON]('progress', function() {\n if (currentState < 3) {\n setReadyState(3);\n } else {\n facade[FIRE](\"readystatechange\", {});\n }\n });\n if ('withCredentials' in xhr || xhook.addWithCredentials) {\n facade.withCredentials = false;\n }\n facade.status = 0;\n _ref = COMMON_EVENTS.concat(UPLOAD_EVENTS);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n event = _ref[_i];\n facade[\"on\" + event] = null;\n }\n facade.open = function(method, url, async, user, pass) {\n currentState = 0;\n hasError = false;\n transiting = false;\n request.headers = {};\n request.headerNames = {};\n request.status = 0;\n response = {};\n response.headers = {};\n request.method = method;\n request.url = url;\n request.async = async !== false;\n request.user = user;\n request.pass = pass;\n setReadyState(1);\n };\n facade.send = function(body) {\n var hooks, k, modk, process, send, _j, _len1, _ref1;\n _ref1 = ['type', 'timeout', 'withCredentials'];\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\n k = _ref1[_j];\n modk = k === \"type\" ? \"responseType\" : k;\n if (modk in facade) {\n request[k] = facade[modk];\n }\n }\n request.body = body;\n send = function() {\n var header, value, _k, _len2, _ref2, _ref3;\n proxyEvents(COMMON_EVENTS, xhr, facade);\n if (facade.upload) {\n proxyEvents(COMMON_EVENTS.concat(UPLOAD_EVENTS), xhr.upload, facade.upload);\n }\n transiting = true;\n xhr.open(request.method, request.url, request.async, request.user, request.pass);\n _ref2 = ['type', 'timeout', 'withCredentials'];\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\n k = _ref2[_k];\n modk = k === \"type\" ? \"responseType\" : k;\n if (k in request) {\n xhr[modk] = request[k];\n }\n }\n _ref3 = request.headers;\n for (header in _ref3) {\n value = _ref3[header];\n if (header) {\n xhr.setRequestHeader(header, value);\n }\n }\n if (request.body instanceof XHookFormData) {\n request.body = request.body.fd;\n }\n xhr.send(request.body);\n };\n hooks = xhook.listeners(BEFORE);\n process = function() {\n var done, hook;\n if (!hooks.length) {\n return send();\n }\n done = function(userResponse) {\n if (typeof userResponse === 'object' && (typeof userResponse.status === 'number' || typeof response.status === 'number')) {\n mergeObjects(userResponse, response);\n if (__indexOf.call(userResponse, 'data') < 0) {\n userResponse.data = userResponse.response || userResponse.text;\n }\n setReadyState(4);\n return;\n }\n process();\n };\n done.head = function(userResponse) {\n mergeObjects(userResponse, response);\n return setReadyState(2);\n };\n done.progress = function(userResponse) {\n mergeObjects(userResponse, response);\n return setReadyState(3);\n };\n hook = hooks.shift();\n if (hook.length === 1) {\n return done(hook(request));\n } else if (hook.length === 2 && request.async) {\n return hook(request, done);\n } else {\n return done();\n }\n };\n process();\n };\n facade.abort = function() {\n status = ABORTED;\n if (transiting) {\n xhr.abort();\n } else {\n facade[FIRE]('abort', {});\n }\n };\n facade.setRequestHeader = function(header, value) {\n var lName, name;\n lName = header != null ? header.toLowerCase() : void 0;\n name = request.headerNames[lName] = request.headerNames[lName] || header;\n if (request.headers[name]) {\n value = request.headers[name] + ', ' + value;\n }\n request.headers[name] = value;\n };\n facade.getResponseHeader = function(header) {\n var name;\n name = header != null ? header.toLowerCase() : void 0;\n return nullify(response.headers[name]);\n };\n facade.getAllResponseHeaders = function() {\n return nullify(convertHeaders(response.headers));\n };\n if (xhr.overrideMimeType) {\n facade.overrideMimeType = function() {\n return xhr.overrideMimeType.apply(xhr, arguments);\n };\n }\n if (xhr.upload) {\n facade.upload = request.upload = EventEmitter();\n }\n facade.UNSENT = 0;\n facade.OPENED = 1;\n facade.HEADERS_RECEIVED = 2;\n facade.LOADING = 3;\n facade.DONE = 4;\n facade.response = '';\n facade.responseText = '';\n facade.responseXML = null;\n facade.readyState = 0;\n facade.statusText = '';\n return facade;\n};\n\nif (typeof WINDOW[FETCH] === \"function\") {\n NativeFetch = WINDOW[FETCH];\n xhook[FETCH] = NativeFetch;\n XHookFetchRequest = WINDOW[FETCH] = function(url, options) {\n var afterHooks, beforeHooks, request;\n if (options == null) {\n options = {\n headers: {}\n };\n }\n options.url = url;\n request = null;\n if (url instanceof Request) {\n request = url;\n options.url = request.url;\n options.headers = request.headers;\n }\n beforeHooks = xhook.listeners(BEFORE);\n afterHooks = xhook.listeners(AFTER);\n return new Promise(function(resolve, reject) {\n var done, getRequest, processAfter, processBefore, send;\n getRequest = function() {\n if (options.body instanceof XHookFormData) {\n options.body = options.body.fd;\n }\n if (options.headers) {\n options.headers = new Headers(options.headers);\n }\n if (!request) {\n request = new Request(options.url, options);\n }\n return mergeObjects(options, request);\n };\n processAfter = function(response) {\n var hook;\n if (!afterHooks.length) {\n return resolve(response);\n }\n hook = afterHooks.shift();\n if (hook.length === 2) {\n hook(getRequest(), response);\n return processAfter(response);\n } else if (hook.length === 3) {\n return hook(getRequest(), response, processAfter);\n } else {\n return processAfter(response);\n }\n };\n done = function(userResponse) {\n var response;\n if (userResponse !== void 0) {\n response = new Response(userResponse.body || userResponse.text, userResponse);\n resolve(response);\n processAfter(response);\n return;\n }\n processBefore();\n };\n processBefore = function() {\n var hook, param;\n if (!beforeHooks.length) {\n send();\n return;\n }\n hook = beforeHooks.shift();\n if (hook.length === 1) {\n param = options;\n if (url instanceof Request) {\n param = url;\n }\n return done(hook(param));\n } else if (hook.length === 2) {\n return hook(getRequest(), done);\n }\n };\n send = function() {\n return NativeFetch(url, options).then(function(response) {\n return processAfter(response);\n })[\"catch\"](function(err) {\n processAfter(err);\n return reject(err);\n });\n };\n processBefore();\n });\n };\n}\n\nXHookHttpRequest.UNSENT = 0;\n\nXHookHttpRequest.OPENED = 1;\n\nXHookHttpRequest.HEADERS_RECEIVED = 2;\n\nXHookHttpRequest.LOADING = 3;\n\nXHookHttpRequest.DONE = 4;\n\nif (typeof define === \"function\" && define.amd) {\n define(\"xhook\", [], function() {\n return xhook;\n });\n} else if (typeof module === \"object\" && module.exports) {\n module.exports = {\n xhook: xhook\n };\n} else if (WINDOW) {\n WINDOW.xhook = xhook;\n}\n\n}.call(this,window));","/**\n * @file 劫持 XMLHttpRequest,自动记录请求成功、失败打点\n * @author Malcolm Yu\n * @created 2019-11-16\n *\n * 由于发现了一个好用的 hook,这里就不闷头开发了:https://github.com/jpillora/xhook\n */\n\nimport { xhook } from '@ks/xhook';\nimport { RADAR_KEY, apiPerfMap } from './const';\nimport { APILog, APIPerf, KVPair, PerfMapType } from './interface';\nimport { isInURLWhiteList } from './utils';\nimport RadarPlugin from './plugin';\nimport { getStringBytes } from '../../util';\n\ninterface RequestMark extends APILog {\n request: Request;\n startTime: number;\n}\nconst validXhook = xhook.xhook || xhook;\n// 引入后先关闭,默认会替换 FormData\nvalidXhook.disable();\n\nexport default class APIMonitor extends RadarPlugin {\n private queue: RequestMark[] = [];\n // private xhrLog: APIPerf[] = [];\n\n public key = 'api';\n private logList: APIPerf[] = [];\n private perfList: PerfMapType[] = [];\n\n when(entry: PerformanceEntry) {\n if (isInURLWhiteList(entry.name as string, this.radar.ignoreList)) {\n return false;\n }\n return entry.entryType === 'resource' && (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest');\n }\n\n onPerfReport(entry: PerformanceEntry) {\n const logData = this.radar.generateLog(apiPerfMap, entry as PerformanceEntry);\n this.perfList.push(logData);\n this.mergeAPIPerf({ ...logData, api: logData.file });\n }\n\n mergeAPIPerf(allPerf: PerfMapType | null, info?: APIPerf) {\n const item = allPerf || info;\n const list = allPerf ? this.logList : this.perfList;\n\n if (!item) return;\n let index = -1;\n // 每次只处理一个item且fetch请求不会被xhook获取 所以可以单独处理一下fetch\n // 但是上报的信息没有xhr全面。后续有方案了可以补全\n if (item.res_type === 'fetch') {\n delete item.file;\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.API,\n value: item,\n }));\n return;\n }\n // xhr需要沿用原有方案\n for (let i = 0, len = list.length; i < len; i++) {\n const listItem = list[i];\n const itemAPI = (item.api || '').replace(/\\?.+$/, '');\n const listItemAPI = (listItem.api || '').replace(/\\?.+$/, '');\n\n const perfSize = item.size;\n if (itemAPI === listItemAPI) {\n Object.assign(item, listItem);\n // 这里 file 与 api 重复了\n delete item.file;\n // perf api 中的 size 更精确一些\n if (perfSize) {\n item.size = perfSize;\n }\n\n // 依然没有得到 size,尝试计算 responseText 体积\n if (!item.size && item.responseData) {\n item.size = getStringBytes(item.responseData);\n }\n delete item.responseData;\n\n index = i;\n }\n }\n\n if (index !== -1) {\n list.splice(index, 1);\n\n // 这里如果找不到匹配 API,还不如不报\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.API,\n value: item,\n }));\n }\n }\n\n sepDimension(kv: KVPair) {\n const { key } = kv;\n const { protocol, cached, status, api, method, ...value } = kv.value;\n const dimension = { protocol, api, status, cached, method };\n return { key, value, dimension };\n }\n\n private requestURLCompletion(url: string) {\n const { protocol, host } = document.location;\n\n if (url.indexOf('//') === 0) {\n return protocol + url;\n }\n if (url.indexOf('/') === 0) {\n return `${protocol}//${host}${url}`;\n }\n\n return url;\n }\n\n private beforeHook = (request: Request) => {\n // 禁 止 套 娃\n if (!isInURLWhiteList(request.url, this.radar.ignoreList)) {\n const info = {\n api: this.requestURLCompletion(request.url),\n method: request.method,\n request,\n startTime: Date.now(),\n };\n this.queue.push(info);\n }\n };\n // xhook重写了fetch函数,看起来会导致headers前后不相同\n // https://github.com/jpillora/xhook/blob/gh-pages/src/xhook.coffee#L524\n private afterHook = (request: Request, response: Response) => {\n const req = this.queue.filter(v => {\n // 适配fetch\n // 匹配xhr请求\n return v.request === request;\n })[0];\n if (!req) return;\n // @ts-ignore\n delete req.request;\n const { startTime, ...rest } = req;\n\n let infoStatus: number = response.status;\n // 如果用户有配置status,则使用用户配置的,返回为0则为异常\n if (typeof this.options.customizeRadarStatus === 'function') {\n infoStatus = this.options.customizeRadarStatus(response);\n }\n\n const contentLength = getResponseSize(response.headers);\n const info: any = {\n duration: Date.now() - startTime,\n // 字段兼容\n total: Date.now() - startTime,\n status: infoStatus, // 传给后端的是response的status或者是用户配置的status\n size: +contentLength,\n ...rest,\n };\n\n if (typeof response.text === 'string') {\n info.responseData = response.text;\n }\n\n // 重新定义一个response,然后进行错误判断\n const judgedResponse: Response = { ...response, status: infoStatus };\n const isError = this.isResponseError(judgedResponse);\n\n // TODO: 兼容性处理可以更优秀一点\n if (isError) {\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.API,\n value: info,\n }));\n } else {\n this.logList.push(info);\n this.mergeAPIPerf(null, info);\n }\n\n // 过滤掉这个 request,防止内存堆积\n this.queue = this.queue.filter(v => v.request !== request);\n };\n\n private isResponseError(response: Response) {\n // 在 hook 的加持下,可以拿到异常的返回,这里 status 指定为 0\n return response.status === 0;\n }\n\n public created() {\n validXhook.disable();\n const NATIVE_FORM_DATA = window.FormData;\n\n validXhook.before(this.beforeHook);\n validXhook.after(this.afterHook);\n\n validXhook.enable();\n window.FormData = NATIVE_FORM_DATA;\n }\n\n public destroy() {\n validXhook.disable();\n }\n}\n\nfunction getResponseSize(headers: any) {\n if (!headers) {\n // fix: 接口504可能导致取不到header 会报错\n return 0;\n }\n if (typeof headers.get === 'function') {\n return +headers.get('Content-Length') || 0;\n }\n return +headers['content-length'] || 0;\n}\n","import { RADAR_KEY, ERROR_KEY } from './const';\nimport { ErrorLog, CustomEntry, KVPair } from './interface';\nimport { addMonitor, removeMonitor, composedPath } from '../../util';\nimport RadarPlugin from './plugin';\n\nexport default class ErrorMonitor extends RadarPlugin {\n public key = 'error';\n // 用于存储页面报错信息,去重,合并上报\n public errorQueue: ErrorLog[] = [];\n public errorTimeInterval = 2000;\n // error 监听不响应 performance.observe\n when(entry: PerformanceEntry | CustomEntry) {\n // 接受 fmp/play_clicked/play_idr 三个自定义指标\n if ((entry as CustomEntry).custom) {\n const { key } = (entry as CustomEntry).entry || {};\n if (['play_block', 'play_error'].indexOf(key) > -1) {\n return true;\n }\n }\n return false;\n }\n\n // error 监听不响应 performance.observe\n onPerfReport(entry: CustomEntry) {\n // Nothing\n if ((entry as CustomEntry).custom) {\n const { key, value } = (entry as CustomEntry).entry || {};\n this.collect({\n error_type: ERROR_KEY.VIDEO,\n error_cons_type: key,\n msg: (value as string),\n });\n }\n }\n\n private sepDimension(kv: KVPair) {\n const { key } = kv;\n if (key === 'error') {\n const { file, error_cons_type, error_type, msg, col, line, stack, ...value } = kv.value;\n const dimension = { error_cons_type, file, error_type, msg, col, line, stack };\n return { key, value, dimension };\n }\n\n // 资源异常的处理\n const { protocol, file, cached, res_path, failed, res_type, ...value } = kv.value;\n const dimension = { protocol, file, cached, failed, res_path, res_type };\n return { key, value, dimension };\n }\n\n private collect(logInfo: ErrorLog) {\n this.radar.logCollect(this.sepDimension({\n key: RADAR_KEY.ERROR,\n value: logInfo,\n }));\n }\n\n // 劫持 window onerror\n private isScriptError(e: ErrorEvent) {\n // 有 message 基本上认为是脚本异常了\n return e.message || e.lineno != null;\n }\n private isSameErrorAndReport(error: ErrorLog) {\n /**\n * collect之前进行筛选\n * 策略是:相同的错误短时间内多次触发算作一条日志\n * 一般认为 同一文件,同一行,同一列的报错为同一错误 不重复收集\n * \n */\n // 判断是否是同一错误\n // const index = this.errorQueue.findIndex(e => {\n // const sameError = e.file === error.file && e.line === error.line && e.col === error.col\n // return sameError\n // })\n\n if (this.getSameErrorIndex(error) >= 0) { return; } // 是同一错误则不进行收集\n this.errorQueue.push(error);\n this.collect(error);\n setTimeout(() => {\n // 超过阙值则重置\n // 重新计算他在队列中的位置\n this.errorQueue.splice(this.getSameErrorIndex(error), 1);\n }, this.errorTimeInterval);\n }\n /**\n * \n * @param error 错误信息\n * @returns \n */\n private getSameErrorIndex(error: ErrorLog) {\n return this.errorQueue.findIndex(e => {\n const sameError = e.file === error.file && e.line === error.line && e.col === error.col;\n return sameError;\n });\n }\n // 劫持 window.addEventListener('error')\n private onResError = (e: ErrorEvent & PromiseRejectionEvent) => {\n const isScriptError = this.isScriptError(e);\n const error = (e as ErrorEvent).error;\n\n if (isScriptError) {\n // 脚本报错\n const logInfo: ErrorLog = {\n error_type: ERROR_KEY.SCRIPT,\n error_cons_type: e.type,\n msg: e.message || e.reason,\n stack: error ? error.stack : null,\n file: e.filename,\n line: e.lineno,\n col: e.colno,\n };\n this.isSameErrorAndReport(logInfo);\n }\n };\n\n private onPromiseError = (e: PromiseRejectionEvent) => {\n const msg = e.reason && e.reason.message || '';\n\n const logInfo: ErrorLog = {\n error_type: ERROR_KEY.SCRIPT,\n error_cons_type: e.type,\n msg,\n };\n\n this.collect(logInfo);\n };\n\n created() {\n // 这里会上报重复,感觉没必要\n // window.onerror = (...args) => {\n // if (typeof this.preWindowErrorHandler === 'function') {\n // this.preWindowErrorHandler(...args);\n // }\n // this.onError(...args);\n // };\n\n addMonitor(window, 'error', this.onResError as EventListener, true);\n addMonitor(window, 'unhandledrejection', this.onPromiseError as EventListener);\n }\n\n destroy() {\n // window.onerror = this.preWindowErrorHandler;\n removeMonitor(window, 'error', this.onResError as EventListener, true);\n removeMonitor(window, 'unhandledrejection', this.onPromiseError as EventListener);\n }\n}\n","/**\n * @file Radar 核心部件,负责插件组合、上报日志处理\n * @author Malcolm Yu\n */\n\nimport { Weblogger } from '../../config/types';\nimport { RadarRoot } from './base';\nimport { RADAR_KEY } from './const';\nimport { error } from '../../util/console';\nimport { RadarMonitor, RadarOptions, CustomKey, SetDimensionParam, CustomDimensionKey, EventDimension } from './interface';\nimport { normalizeURL, radarWarnLog, getUAList, getWebViewType } from './utils';\n\nimport { perfNow } from './timing';\nimport NavigationPlugin from './navigation';\nimport ResourcePlugin from './resource';\nimport APIPlugin from './xhr';\nimport ErrorPlugin from './error';\n\n\nconst MORE_REPORTED = ['play_block', 'play_error'];\nconst CUSTOM_DIM_KEY: CustomDimensionKey[] = ['c_dimension1', 'c_dimension2', 'c_dimension3'];\n\nexport default class Radar extends RadarRoot implements RadarMonitor {\n static key = 'radar';\n public radarIgnoreList: string[] = ['https://web-trace.ksapisrv.com/ktrace/collect'];\n // public ignoreList: string[];\n public radarFmp: number = 0;\n private customReported: CustomKey[] = [];\n /**\n * 兼容写法,如果在 Weblog 初始化设置 plugins 时,不需要设置 weblog\n * @param weblog \n * @param options \n */\n constructor(options: RadarOptions);\n constructor(weblog: Weblogger | RadarOptions, options?: RadarOptions) {\n\n // this.currentUrlPackage.sampled \n //\n super(weblog, options);\n if (!this.validOption()) {\n return;\n }\n\n this.use(NavigationPlugin, this);\n if (!this.options || !this.options.unuseResourcePlugin) {\n this.use(ResourcePlugin, this);\n }\n if (!this.options || !this.options.unuseAPIPlugin) {\n this.use(APIPlugin, this);\n }\n if (!this.options || !this.options.unuseErrorPlugin) {\n this.use(ErrorPlugin, this);\n }\n }\n\n // 采样控制 对外暴露调用\n static samplingControl(options?: RadarOptions | number) {\n if (!options) {\n return false;\n }\n // 计算随机数\n const rand = Math.random();\n if (typeof options === 'number') {\n // 传入的是单一模块采样率 无需从options中取值\n return rand < options;\n }\n // radar整体采样率逻辑\n const { sampling } = options;\n\n return rand < sampling;\n }\n\n public collect(key: string, duration: number) {\n if (key.indexOf('c_') !== 0) {\n error(`[Radar] 传入的自定义指标 ${key} 必须为 c_ 开头`);\n return;\n }\n // 支持 performance API 的可以直接用 performance now\n this.logCollect({\n key: RADAR_KEY.CUSTOM,\n value: {\n metric_value: duration,\n },\n dimension: {\n metric_name: key,\n },\n });\n }\n\n private reportTimePoint(key: CustomKey, time?: string | number) {\n\n if (this.customReported.indexOf(key) > -1) {\n return null;\n }\n // 这两个是可以上报多次的\n if (MORE_REPORTED.indexOf(key) === -1) {\n this.customReported.push(key);\n }\n\n let value = time;\n\n if (typeof time !== 'string') {\n // 支持 performance API 的可以直接用 performance now\n const detail = perfNow(time);\n // 没有 performance API 的暂不记录了\n if (detail.value == null) return;\n value = this.throttle(detail.value, detail.detail as any, 'fmp', detail.detail);\n }\n if (value == null) return;\n\n this.reportPerformance({\n custom: true,\n entry: {\n key,\n value,\n },\n renderTime: time as number\n });\n\n return value;\n }\n\n // 用户自定义系列指标\n public fmp(time?: number) {\n // 记录一下业务上报的fmp的时间戳\n this.radarFmp = time || Date.now();\n\n const fmp = this.reportTimePoint('fmp', this.radarFmp);\n\n if (fmp) {\n try {\n // @ts-ignore\n if (performance.timing) {\n // 获取fmp的时候 添加时间戳到timing上 方便后续计算\n (performance.timing as any).fmp = fmp;\n (performance.timing as any).radarFmp = this.radarFmp;\n };\n } catch (e) {\n // do nothing,防止部分机型报错\n }\n // debug模式下记录log\n radarWarnLog('fmp', fmp);\n\n this.logCollect({\n key: RADAR_KEY.CUSTOM,\n value: {\n fmp,\n fmp_time: this.radarFmp,\n // 自定义上报是否合并到load表\n 'merge': true\n },\n });\n }\n }\n\n // 用户定义的事件\n public event(dimension: EventDimension, value?: object) {\n const uaList = getUAList();\n // 处理extra_info\n if (dimension.extra_info && dimension.extra_info instanceof Object) {\n dimension.extra_info = JSON.stringify(dimension.extra_info);\n }\n // 处理yoda_version\n if (dimension.yoda_version === undefined) {\n dimension.yoda_version = uaList.Yoda || '';\n }\n // 处理webview_type\n if (dimension.webview_type === undefined) {\n dimension.webview_type = getWebViewType();\n }\n this.logCollect({\n key: RADAR_KEY.EVENT,\n value,\n dimension,\n });\n }\n\n // 用于无头浏览器环境手动模拟onload事件内容进行perf数据收集\n public headlessTestReport() {\n const ua = window.navigator.userAgent;\n if (ua.indexOf('headless')) {\n this.asyncReportTiming();\n return;\n }\n console.warn('[radar] report: ', '禁止在正常浏览器中使用手动上报功能');\n }\n\n public playClicked(time?: number) {\n this.reportTimePoint('play_clicked', time);\n }\n\n public playIDR(time?: number) {\n this.reportTimePoint('play_idr', time);\n }\n\n public playBlock(time?: string) {\n this.reportTimePoint('play_block', time);\n }\n\n public playError(time?: string) {\n this.reportTimePoint('play_error', time);\n }\n\n public setDimensions(param: SetDimensionParam) {\n const paramKey = Object.keys(param);\n const hasOtherDim = paramKey.some(key => CUSTOM_DIM_KEY.indexOf(key as CustomDimensionKey) === -1);\n if (hasOtherDim) {\n error(`[Radar] 传入的自定义维度只能为 ${CUSTOM_DIM_KEY.join('、')},目前传入的是:${paramKey.join('、')}`);\n }\n paramKey.forEach(key => {\n const k: CustomDimensionKey = key as CustomDimensionKey;\n if (param[k] == null) {\n delete this.customDimension[k];\n } else {\n this.customDimension[k] = param[k];\n }\n });\n }\n\n validOption() {\n if (!this.options) {\n // 未传入参数默认不开启\n return false;\n }\n\n const { sampling, projectId } = this.options;\n if (typeof projectId !== 'string') {\n error('[Radar] 必须配置 projectId 属性');\n return false;\n }\n if (sampling > 1 || sampling < 0) {\n error('[Radar] 采样率 sampling 必须在 0~1 之间');\n return false;\n }\n\n return true;\n }\n}","import { BasePlugin } from '../base';\nexport default class RadarPlaceHolder extends BasePlugin {\n static key = 'radar';\n\n fmp() {\n // do nothing\n }\n\n event() {\n // do nothing\n }\n\n headlessTestReport() {\n // do nothing\n }\n\n playClicked() { /* do nothing */ }\n playIDR() { /* do nothing */ }\n playBlock() { /* do nothing */ }\n playError() { /* do nothing */ }\n\n setDimensions() { /* do nothing */ }\n\n destroy() {\n // do nothing\n }\n}","/**\n * @file crash-monitor.js\n * @author kevin (lanlazy@163.com)\n * beforeunload触发条件:正常关闭标签,刷新,关闭浏览器\n * @created 2018-08-08\n */\nimport { AutoPVFilter, Weblogger } from '../../config/types';\nimport { BasePlugin, autoRegister } from '../base';\nimport navigationTiming from '../../util/timing';\nimport { addMonitor, removeMonitor, getMappingPage, urlChangeEventId } from '@/util';\n\nif (!navigationTiming) {\n console.warn('Your browser don\\'t support performance API, the auto pv duration may not correct');\n}\nlet willunload = false;\nexport default class AutoPV extends BasePlugin {\n static key = 'autoPV';\n private oldPushState = history.pushState;\n private oldReplaceState = history.replaceState;\n private beginTime = navigationTiming && navigationTiming.fetchStart\n || new Date().valueOf();\n private autoPVFilter: AutoPVFilter;\n /**\n * 兼容写法,如果在 Weblog 初始化设置 plugins 时,不需要设置 weblog\n * @param weblog\n * @param autoPVFilter\n */\n constructor(autoPVFilter?: AutoPVFilter)\n constructor(weblog?: Weblogger | AutoPVFilter, options?: {autoPVFilter?: AutoPVFilter}) {\n super();\n this.autoPVFilter = () => true;\n // 兼容处理\n if (weblog) {\n if (typeof weblog === 'function') {\n this.autoPVFilter = weblog;\n } else if (weblog.logger) {\n this.apply(weblog);\n }\n }\n if (options && typeof options.autoPVFilter === 'function') {\n this.autoPVFilter = options.autoPVFilter;\n }\n }\n\n apply(weblog: Weblogger) {\n if (!weblog || !weblog.logger) return;\n this.weblog = weblog;\n setTimeout(() => {\n if (this.autoPVFilter(location.href, null, 'enter')) {\n const { page, params } = getMappingPage({ url: location.href }, this.weblog.logConfig.urlMap);\n this.weblog.collect('PV', {\n type: 'enter',\n beginTime: this.beginTime,\n auto: true,\n page,\n params\n });\n }\n });\n history.pushState = this.proxyPushState;\n history.replaceState = this.proxyReplaceState;\n addMonitor(window, urlChangeEventId, this.urlChange);\n addMonitor(document, 'visibilitychange', this.visibilityChange);\n }\n\n private visibilityChange = () => {\n const state = document.visibilityState;\n if (state === 'visible') {\n willunload = false;\n }\n // 页面关闭也会触发 hidden 事件,这种情况下不再上报事件\n if (!this.weblog || willunload) return;\n if (this.autoPVFilter(location.href, null, state)) {\n if (state === 'hidden' || state === 'visible') {\n this.weblog.collect('PV', {\n type: state,\n beginTime: this.beginTime,\n auto: true,\n });\n if (state === 'visible') {\n // 更新新页面 enter 时间\n this.beginTime = new Date().valueOf();\n }\n }\n }\n }\n\n private proxyPushState = (data: any, title: string, url?: string | null | undefined) => {\n this.urlChange();\n return this.oldPushState.call(history, data, title, url);\n }\n\n private proxyReplaceState = (data: any, title: string, url?: string | null | undefined) => {\n this.urlChange();\n return this.oldReplaceState.call(history, data, title, url);\n }\n\n private urlChange = () => {\n setTimeout(() => {\n if (!this.weblog) return;\n const { page, params } = getMappingPage({url: location.href}, this.weblog.logConfig.urlMap);\n if (page && page === this.weblog.currentUrlPackage.page) {\n this.weblog.currentUrlPackage.update(page, params);\n return;\n };\n if (this.autoPVFilter(location.href, this.weblog.currentUrl, 'leave')) {\n // 触发旧页面离开\n this.weblog.collect('PV', {\n type: 'leave',\n beginTime: this.beginTime,\n auto: true\n });\n }\n\n if (this.autoPVFilter(location.href, this.weblog.currentUrl, 'enter')) {\n // 更新当前页面信息\n this.weblog.updateReferUrlPackage();\n this.weblog.updateCurrentUrlPackage(location.href);\n // 更新新页面 enter 时间\n this.beginTime = new Date().valueOf();\n this.weblog.collect('PV', {\n type: 'enter',\n auto: true,\n });\n }\n })\n }\n\n beforeUnload = () => {\n willunload = true;\n if (!this.weblog || !this.autoPVFilter('', this.weblog.currentUrl, 'leave')) {\n return;\n }\n this.weblog.sendImmediately('PV', {\n type: 'leave',\n beginTime: document.visibilityState === 'hidden' ? new Date().valueOf() : this.beginTime,\n auto: true,\n });\n }\n\n destroy() {\n removeMonitor(window, urlChangeEventId, this.urlChange);\n removeMonitor(document, 'visibilitychange', this.visibilityChange);\n history.pushState = this.oldPushState;\n history.replaceState = this.oldReplaceState;\n }\n}\n","/**\n * 浏览器版本,只有 HTTP 上报,兼容旧版本包含了插件\n */\n\nimport '../util/polyfill';\nimport BaseWeblogger from '../core';\nimport { BasePlugin } from '../plugins/base';\n// plugins\nimport CrashMonitor from '../plugins/crashMonitor';\nimport FpsMonitor from '../plugins/fpsMonitor';\nimport TimingMonitor from '../plugins/timingMonitor';\nimport Radar from '../plugins/radar/radar';\nimport RadarPlaceHolder from '../plugins/radar/placeholder';\nimport AutoPV from '../plugins/autoPV';\nimport { BuildInPluginsConfig } from './types';\nexport { LoggerConfigByUser, SupportTypes, SendConfig, PVOptions, ShowOptions, TaskOptions, CustomOptions, BaseOptions } from './types';\n\nclass Weblog extends BaseWeblogger {\n initBuildInPlugins() {\n const {\n autoPV, radar, fps, timing, crash, autoPVFilter\n } = this.logConfig;\n if (fps || typeof fps === 'undefined') {\n this.plug(FpsMonitor);\n }\n if (timing || typeof timing === 'undefined') {\n this.plug(TimingMonitor);\n }\n if (crash || typeof crash === 'undefined') {\n this.plug(CrashMonitor);\n }\n if (autoPV || typeof autoPV === 'undefined') {\n this.plug(AutoPV, autoPVFilter);\n }\n if (radar) {\n if (radar.sampling && Radar.samplingControl(radar)) {\n this.plug(Radar, radar);\n } else {\n this.plug(RadarPlaceHolder);\n }\n }\n }\n}\n// 注册到全局对象\nif (typeof window !== 'undefined') {\n if (typeof window._GLOBAL_KS_WEBLOGGER_ !== 'undefined') {\n window._GLOBAL_KS_WEBLOGGER_.Factory = Weblog;\n } else {\n // @ts-ignore\n window.Weblog = Weblog;\n }\n}\n\n\nexport {\n Weblog,\n BasePlugin,\n};\n\nexport default Weblog;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import React from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\n/* eslint-disable import/prefer-default-export */\nfunction invariant(condition, message) {\n if (condition) return;\n var error = new Error(\"loadable: \" + message);\n error.framesToPop = 1;\n error.name = 'Invariant Violation';\n throw error;\n}\nfunction warn(message) {\n // eslint-disable-next-line no-console\n console.warn(\"loadable: \" + message);\n}\n\nvar Context = /*#__PURE__*/\nReact.createContext();\n\nvar LOADABLE_REQUIRED_CHUNKS_KEY = '__LOADABLE_REQUIRED_CHUNKS__';\nfunction getRequiredChunkKey(namespace) {\n return \"\" + namespace + LOADABLE_REQUIRED_CHUNKS_KEY;\n}\n\nvar sharedInternals = /*#__PURE__*/Object.freeze({\n getRequiredChunkKey: getRequiredChunkKey,\n invariant: invariant,\n Context: Context\n});\n\nfunction resolveConstructor(ctor) {\n if (typeof ctor === 'function') {\n return {\n requireAsync: ctor\n };\n }\n\n return ctor;\n}\n\nvar withChunkExtractor = function withChunkExtractor(Component) {\n return function (props) {\n return React.createElement(Context.Consumer, null, function (extractor) {\n return React.createElement(Component, Object.assign({\n __chunkExtractor: extractor\n }, props));\n });\n };\n};\n\nvar identity = function identity(v) {\n return v;\n};\n\nfunction createLoadable(_ref) {\n var _ref$resolve = _ref.resolve,\n resolve = _ref$resolve === void 0 ? identity : _ref$resolve,\n _render = _ref.render,\n onLoad = _ref.onLoad;\n\n function loadable(loadableConstructor, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ctor = resolveConstructor(loadableConstructor);\n var cache = {};\n\n function _getCacheKey(props) {\n if (options.cacheKey) {\n return options.cacheKey(props);\n }\n\n if (ctor.resolve) {\n return ctor.resolve(props);\n }\n\n return null;\n }\n\n var InnerLoadable =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(InnerLoadable, _React$Component);\n\n InnerLoadable.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n var cacheKey = _getCacheKey(props);\n\n return _extends({}, state, {\n cacheKey: cacheKey,\n loading: state.loading || state.cacheKey !== cacheKey\n });\n };\n\n function InnerLoadable(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n result: null,\n error: null,\n loading: true,\n cacheKey: _getCacheKey(props)\n };\n _this.promise = null;\n invariant(!props.__chunkExtractor || ctor.requireSync, 'SSR requires `@loadable/babel-plugin`, please install it'); // Server-side\n\n if (props.__chunkExtractor) {\n // This module has been marked with no SSR\n if (options.ssr === false) {\n return _assertThisInitialized(_this);\n } // We run load function, we assume that it won't fail and that it\n // triggers a synchronous loading of the module\n\n\n ctor.requireAsync(props)[\"catch\"](function () {}); // So we can require now the module synchronously\n\n _this.loadSync();\n\n props.__chunkExtractor.addChunk(ctor.chunkName(props));\n\n return _assertThisInitialized(_this);\n } // Client-side with `isReady` method present (SSR probably)\n // If module is already loaded, we use a synchronous loading\n\n\n if (ctor.isReady && ctor.isReady(props)) {\n _this.loadSync();\n }\n\n return _this;\n }\n\n var _proto = InnerLoadable.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n\n if (this.state.loading) {\n this.loadAsync();\n } else if (!this.state.error) {\n this.triggerOnLoad();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Component is reloaded if the cacheKey has changed\n if (prevState.cacheKey !== this.state.cacheKey) {\n this.promise = null;\n this.loadAsync();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n if (this.mounted) {\n this.setState(nextState, callback);\n }\n };\n\n _proto.triggerOnLoad = function triggerOnLoad() {\n var _this2 = this;\n\n if (onLoad) {\n setTimeout(function () {\n onLoad(_this2.state.result, _this2.props);\n });\n }\n };\n\n _proto.loadSync = function loadSync() {\n if (!this.state.loading) return;\n\n try {\n var loadedModule = ctor.requireSync(this.props);\n var result = resolve(loadedModule, {\n Loadable: Loadable\n });\n this.state.result = result;\n this.state.loading = false;\n } catch (error) {\n this.state.error = error;\n }\n };\n\n _proto.getCacheKey = function getCacheKey() {\n return _getCacheKey(this.props) || JSON.stringify(this.props);\n };\n\n _proto.getCache = function getCache() {\n return cache[this.getCacheKey()];\n };\n\n _proto.setCache = function setCache(value) {\n cache[this.getCacheKey()] = value;\n };\n\n _proto.loadAsync = function loadAsync() {\n var _this3 = this;\n\n if (!this.promise) {\n var _this$props = this.props,\n __chunkExtractor = _this$props.__chunkExtractor,\n forwardedRef = _this$props.forwardedRef,\n props = _objectWithoutPropertiesLoose(_this$props, [\"__chunkExtractor\", \"forwardedRef\"]);\n\n this.promise = ctor.requireAsync(props).then(function (loadedModule) {\n var result = resolve(loadedModule, {\n Loadable: Loadable\n });\n\n if (options.suspense) {\n _this3.setCache(result);\n }\n\n _this3.safeSetState({\n result: resolve(loadedModule, {\n Loadable: Loadable\n }),\n loading: false\n }, function () {\n return _this3.triggerOnLoad();\n });\n })[\"catch\"](function (error) {\n _this3.safeSetState({\n error: error,\n loading: false\n });\n });\n }\n\n return this.promise;\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n forwardedRef = _this$props2.forwardedRef,\n propFallback = _this$props2.fallback,\n __chunkExtractor = _this$props2.__chunkExtractor,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"forwardedRef\", \"fallback\", \"__chunkExtractor\"]);\n\n var _this$state = this.state,\n error = _this$state.error,\n loading = _this$state.loading,\n result = _this$state.result;\n\n if (options.suspense) {\n var cachedResult = this.getCache();\n if (!cachedResult) throw this.loadAsync();\n return _render({\n loading: false,\n fallback: null,\n result: cachedResult,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n }\n\n if (error) {\n throw error;\n }\n\n var fallback = propFallback || options.fallback || null;\n\n if (loading) {\n return fallback;\n }\n\n return _render({\n loading: loading,\n fallback: fallback,\n result: result,\n options: options,\n props: _extends({}, props, {\n ref: forwardedRef\n })\n });\n };\n\n return InnerLoadable;\n }(React.Component);\n\n var EnhancedInnerLoadable = withChunkExtractor(InnerLoadable);\n var Loadable = React.forwardRef(function (props, ref) {\n return React.createElement(EnhancedInnerLoadable, Object.assign({\n forwardedRef: ref\n }, props));\n }); // In future, preload could use ``\n\n Loadable.preload = function (props) {\n ctor.requireAsync(props);\n };\n\n Loadable.load = function (props) {\n return ctor.requireAsync(props);\n };\n\n return Loadable;\n }\n\n function lazy(ctor, options) {\n return loadable(ctor, _extends({}, options, {\n suspense: true\n }));\n }\n\n return {\n loadable: loadable,\n lazy: lazy\n };\n}\n\nfunction resolveComponent(loadedModule, _ref) {\n var Loadable = _ref.Loadable;\n // eslint-disable-next-line no-underscore-dangle\n var Component = loadedModule.__esModule ? loadedModule[\"default\"] : loadedModule[\"default\"] || loadedModule;\n hoistNonReactStatics(Loadable, Component, {\n preload: true\n });\n return Component;\n}\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable =\n/*#__PURE__*/\ncreateLoadable({\n resolve: resolveComponent,\n render: function render(_ref) {\n var Component = _ref.result,\n props = _ref.props;\n return React.createElement(Component, props);\n }\n}),\n loadable = _createLoadable.loadable,\n lazy = _createLoadable.lazy;\n\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nvar _createLoadable$1 =\n/*#__PURE__*/\ncreateLoadable({\n onLoad: function onLoad(result, props) {\n if (result && props.forwardedRef) {\n if (typeof props.forwardedRef === 'function') {\n props.forwardedRef(result);\n } else {\n props.forwardedRef.current = result;\n }\n }\n },\n render: function render(_ref) {\n var result = _ref.result,\n loading = _ref.loading,\n props = _ref.props;\n\n if (!loading && props.children) {\n return props.children(result);\n }\n\n return null;\n }\n}),\n loadable$1 = _createLoadable$1.loadable,\n lazy$1 = _createLoadable$1.lazy;\n\n/* eslint-disable no-underscore-dangle, camelcase */\nvar BROWSER = typeof window !== 'undefined';\nfunction loadableReady(done, _temp) {\n if (done === void 0) {\n done = function done() {};\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$namespace = _ref.namespace,\n namespace = _ref$namespace === void 0 ? '' : _ref$namespace;\n\n if (!BROWSER) {\n warn('`loadableReady()` must be called in browser only');\n done();\n return Promise.resolve();\n }\n\n var requiredChunks = null;\n\n if (BROWSER) {\n var dataElement = document.getElementById(getRequiredChunkKey(namespace));\n\n if (dataElement) {\n requiredChunks = JSON.parse(dataElement.textContent);\n }\n }\n\n if (!requiredChunks) {\n warn('`loadableReady()` requires state, please use `getScriptTags` or `getScriptElements` server-side');\n done();\n return Promise.resolve();\n }\n\n var resolved = false;\n return new Promise(function (resolve) {\n window.__LOADABLE_LOADED_CHUNKS__ = window.__LOADABLE_LOADED_CHUNKS__ || [];\n var loadedChunks = window.__LOADABLE_LOADED_CHUNKS__;\n var originalPush = loadedChunks.push.bind(loadedChunks);\n\n function checkReadyState() {\n if (requiredChunks.every(function (chunk) {\n return loadedChunks.some(function (_ref2) {\n var chunks = _ref2[0];\n return chunks.includes(chunk);\n });\n })) {\n if (!resolved) {\n resolved = true;\n resolve();\n done();\n }\n }\n }\n\n loadedChunks.push = function () {\n originalPush.apply(void 0, arguments);\n checkReadyState();\n };\n\n checkReadyState();\n });\n}\n\n/* eslint-disable no-underscore-dangle */\nvar loadable$2 = loadable;\nloadable$2.lib = loadable$1;\nvar lazy$2 = lazy;\nlazy$2.lib = lazy$1;\nvar __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = sharedInternals;\n\nexport default loadable$2;\nexport { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy$2 as lazy, loadableReady };\n","/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n };\n}();\n\nvar asyncToGenerator = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step(\"next\", value);\n }, function (err) {\n return step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineEnumerableProperties = function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n return obj;\n};\n\nvar defaults = function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n};\n\nvar defineProperty$1 = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar _instanceof = function (left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n};\n\nvar interopRequireDefault = function (obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n};\n\nvar interopRequireWildcard = function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n};\n\nvar newArrowCheck = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};\n\nvar objectDestructuringEmpty = function (obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar selfGlobal = typeof global === \"undefined\" ? self : global;\n\nvar set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar slicedToArrayLoose = function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n};\n\nvar taggedTemplateLiteral = function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n};\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\nvar temporalRef = function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n } else {\n return val;\n }\n};\n\nvar temporalUndefined = {};\n\nvar toArray = function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n\n\nvar babelHelpers$1 = Object.freeze({\n jsx: jsx,\n asyncToGenerator: asyncToGenerator,\n classCallCheck: classCallCheck,\n createClass: createClass,\n defineEnumerableProperties: defineEnumerableProperties,\n defaults: defaults,\n defineProperty: defineProperty$1,\n get: get,\n inherits: inherits,\n interopRequireDefault: interopRequireDefault,\n interopRequireWildcard: interopRequireWildcard,\n newArrowCheck: newArrowCheck,\n objectDestructuringEmpty: objectDestructuringEmpty,\n objectWithoutProperties: objectWithoutProperties,\n possibleConstructorReturn: possibleConstructorReturn,\n selfGlobal: selfGlobal,\n set: set,\n slicedToArray: slicedToArray,\n slicedToArrayLoose: slicedToArrayLoose,\n taggedTemplateLiteral: taggedTemplateLiteral,\n taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,\n temporalRef: temporalRef,\n temporalUndefined: temporalUndefined,\n toArray: toArray,\n toConsumableArray: toConsumableArray,\n typeof: _typeof,\n extends: _extends,\n instanceof: _instanceof\n});\n\nvar realDefineProp = function () {\n var sentinel = function sentinel() {};\n try {\n Object.defineProperty(sentinel, 'a', {\n get: function get() {\n return 1;\n }\n });\n Object.defineProperty(sentinel, 'prototype', { writable: false });\n return sentinel.a === 1 && sentinel.prototype instanceof Object;\n } catch (e) {\n return false;\n }\n}();\n\n// Need a workaround for getters in ES3\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\n// We use this a lot (and need it for proto-less objects)\nvar hop = Object.prototype.hasOwnProperty;\n\n// Naive defineProperty for compatibility\nvar defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value;\n};\n\n// Array.prototype.indexOf, as good as we need it to be\nvar arrIndexOf = Array.prototype.indexOf || function (search) {\n /*jshint validthis:true */\n var t = this;\n if (!t.length) return -1;\n\n for (var i = arguments[1] || 0, max = t.length; i < max; i++) {\n if (t[i] === search) return i;\n }\n\n return -1;\n};\n\n// Create an object with the specified prototype (2nd arg required for Record)\nvar objCreate = Object.create || function (proto, props) {\n var obj = void 0;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (var k in props) {\n if (hop.call(props, k)) defineProperty(obj, k, props[k]);\n }\n\n return obj;\n};\n\n// Snapshot some (hopefully still) native built-ins\nvar arrSlice = Array.prototype.slice;\nvar arrConcat = Array.prototype.concat;\nvar arrPush = Array.prototype.push;\nvar arrJoin = Array.prototype.join;\nvar arrShift = Array.prototype.shift;\n\n// Naive Function.prototype.bind for compatibility\nvar fnBind = Function.prototype.bind || function (thisObj) {\n var fn = this,\n args = arrSlice.call(arguments, 1);\n\n // All our (presently) bound functions have either 1 or 0 arguments. By returning\n // different function signatures, we can pass some tests in ES3 environments\n if (fn.length === 1) {\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n }\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n};\n\n// Object housing internal properties for constructors\nvar internals = objCreate(null);\n\n// Keep internal properties internal\nvar secret = Math.random();\n\n// Helper functions\n// ================\n\n/**\n * A function to deal with the inaccuracy of calculating log10 in pre-ES6\n * JavaScript environments. Math.log(num) / Math.LN10 was responsible for\n * causing issue #62.\n */\nfunction log10Floor(n) {\n // ES6 provides the more accurate Math.log10\n if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n));\n\n var x = Math.round(Math.log(n) * Math.LOG10E);\n return x - (Number('1e' + x) > n);\n}\n\n/**\n * A map that doesn't contain Object in its prototype chain\n */\nfunction Record(obj) {\n // Copy only own properties over unless this object is already a Record instance\n for (var k in obj) {\n if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true });\n }\n}\nRecord.prototype = objCreate(null);\n\n/**\n * An ordered list\n */\nfunction List() {\n defineProperty(this, 'length', { writable: true, value: 0 });\n\n if (arguments.length) arrPush.apply(this, arrSlice.call(arguments));\n}\nList.prototype = objCreate(null);\n\n/**\n * Constructs a regular expression to restore tainted RegExp properties\n */\nfunction createRegExpRestore() {\n if (internals.disableRegExpRestore) {\n return function () {/* no-op */};\n }\n\n var regExpCache = {\n lastMatch: RegExp.lastMatch || '',\n leftContext: RegExp.leftContext,\n multiline: RegExp.multiline,\n input: RegExp.input\n },\n has = false;\n\n // Create a snapshot of all the 'captured' properties\n for (var i = 1; i <= 9; i++) {\n has = (regExpCache['$' + i] = RegExp['$' + i]) || has;\n }return function () {\n // Now we've snapshotted some properties, escape the lastMatch string\n var esc = /[.?*+^$[\\]\\\\(){}|-]/g,\n lm = regExpCache.lastMatch.replace(esc, '\\\\$&'),\n reg = new List();\n\n // If any of the captured strings were non-empty, iterate over them all\n if (has) {\n for (var _i = 1; _i <= 9; _i++) {\n var m = regExpCache['$' + _i];\n\n // If it's empty, add an empty capturing group\n if (!m) lm = '()' + lm;\n\n // Else find the string in lm and escape & wrap it to capture it\n else {\n m = m.replace(esc, '\\\\$&');\n lm = lm.replace(m, '(' + m + ')');\n }\n\n // Push it to the reg and chop lm to make sure further groups come after\n arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1));\n lm = lm.slice(lm.indexOf('(') + 1);\n }\n }\n\n var exprStr = arrJoin.call(reg, '') + lm;\n\n // Shorten the regex by replacing each part of the expression with a match\n // for a string of that exact length. This is safe for the type of\n // expressions generated above, because the expression matches the whole\n // match string, so we know each group and each segment between capturing\n // groups can be matched by its length alone.\n exprStr = exprStr.replace(/(\\\\\\(|\\\\\\)|[^()])+/g, function (match) {\n return '[\\\\s\\\\S]{' + match.replace('\\\\', '').length + '}';\n });\n\n // Create the regular expression that will reconstruct the RegExp properties\n var expr = new RegExp(exprStr, regExpCache.multiline ? 'gm' : 'g');\n\n // Set the lastIndex of the generated expression to ensure that the match\n // is found in the correct index.\n expr.lastIndex = regExpCache.leftContext.length;\n\n expr.exec(regExpCache.input);\n };\n}\n\n/**\n * Mimics ES5's abstract ToObject() function\n */\nfunction toObject(arg) {\n if (arg === null) throw new TypeError('Cannot convert null or undefined to object');\n\n if ((typeof arg === 'undefined' ? 'undefined' : babelHelpers$1['typeof'](arg)) === 'object') return arg;\n return Object(arg);\n}\n\nfunction toNumber(arg) {\n if (typeof arg === 'number') return arg;\n return Number(arg);\n}\n\nfunction toInteger(arg) {\n var number = toNumber(arg);\n if (isNaN(number)) return 0;\n if (number === +0 || number === -0 || number === +Infinity || number === -Infinity) return number;\n if (number < 0) return Math.floor(Math.abs(number)) * -1;\n return Math.floor(Math.abs(number));\n}\n\nfunction toLength(arg) {\n var len = toInteger(arg);\n if (len <= 0) return 0;\n if (len === Infinity) return Math.pow(2, 53) - 1;\n return Math.min(len, Math.pow(2, 53) - 1);\n}\n\n/**\n * Returns \"internal\" properties for an object\n */\nfunction getInternalProperties(obj) {\n if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret);\n\n return objCreate(null);\n}\n\n/**\n* Defines regular expressions for various operations related to the BCP 47 syntax,\n* as defined at http://tools.ietf.org/html/bcp47#section-2.1\n*/\n\n// extlang = 3ALPHA ; selected ISO 639 codes\n// *2(\"-\" 3ALPHA) ; permanently reserved\nvar extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}';\n\n// language = 2*3ALPHA ; shortest ISO 639 code\n// [\"-\" extlang] ; sometimes followed by\n// ; extended language subtags\n// / 4ALPHA ; or reserved for future use\n// / 5*8ALPHA ; or registered language subtag\nvar language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})';\n\n// script = 4ALPHA ; ISO 15924 code\nvar script = '[a-z]{4}';\n\n// region = 2ALPHA ; ISO 3166-1 code\n// / 3DIGIT ; UN M.49 code\nvar region = '(?:[a-z]{2}|\\\\d{3})';\n\n// variant = 5*8alphanum ; registered variants\n// / (DIGIT 3alphanum)\nvar variant = '(?:[a-z0-9]{5,8}|\\\\d[a-z0-9]{3})';\n\n// ; Single alphanumerics\n// ; \"x\" reserved for private use\n// singleton = DIGIT ; 0 - 9\n// / %x41-57 ; A - W\n// / %x59-5A ; Y - Z\n// / %x61-77 ; a - w\n// / %x79-7A ; y - z\nvar singleton = '[0-9a-wy-z]';\n\n// extension = singleton 1*(\"-\" (2*8alphanum))\nvar extension = singleton + '(?:-[a-z0-9]{2,8})+';\n\n// privateuse = \"x\" 1*(\"-\" (1*8alphanum))\nvar privateuse = 'x(?:-[a-z0-9]{1,8})+';\n\n// irregular = \"en-GB-oed\" ; irregular tags do not match\n// / \"i-ami\" ; the 'langtag' production and\n// / \"i-bnn\" ; would not otherwise be\n// / \"i-default\" ; considered 'well-formed'\n// / \"i-enochian\" ; These tags are all valid,\n// / \"i-hak\" ; but most are deprecated\n// / \"i-klingon\" ; in favor of more modern\n// / \"i-lux\" ; subtags or subtag\n// / \"i-mingo\" ; combination\n// / \"i-navajo\"\n// / \"i-pwn\"\n// / \"i-tao\"\n// / \"i-tay\"\n// / \"i-tsu\"\n// / \"sgn-BE-FR\"\n// / \"sgn-BE-NL\"\n// / \"sgn-CH-DE\"\nvar irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))';\n\n// regular = \"art-lojban\" ; these tags match the 'langtag'\n// / \"cel-gaulish\" ; production, but their subtags\n// / \"no-bok\" ; are not extended language\n// / \"no-nyn\" ; or variant subtags: their meaning\n// / \"zh-guoyu\" ; is defined by their registration\n// / \"zh-hakka\" ; and all of these are deprecated\n// / \"zh-min\" ; in favor of a more modern\n// / \"zh-min-nan\" ; subtag or sequence of subtags\n// / \"zh-xiang\"\nvar regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))';\n\n// grandfathered = irregular ; non-redundant tags registered\n// / regular ; during the RFC 3066 era\nvar grandfathered = '(?:' + irregular + '|' + regular + ')';\n\n// langtag = language\n// [\"-\" script]\n// [\"-\" region]\n// *(\"-\" variant)\n// *(\"-\" extension)\n// [\"-\" privateuse]\nvar langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?';\n\n// Language-Tag = langtag ; normal language tags\n// / privateuse ; private use tag\n// / grandfathered ; grandfathered tags\nvar expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i');\n\n// Match duplicate variants in a language tag\nvar expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\\\w{4,8}-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match duplicate singletons in a language tag (except in private use)\nvar expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\\\w+-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match all extension sequences\nvar expExtSequences = RegExp('-' + extension, 'ig');\n\n// Default locale is the first-added locale data for us\nvar defaultLocale = void 0;\nfunction setDefaultLocale(locale) {\n defaultLocale = locale;\n}\n\n// IANA Subtag Registry redundant tag and subtag maps\nvar redundantTags = {\n tags: {\n \"art-lojban\": \"jbo\",\n \"i-ami\": \"ami\",\n \"i-bnn\": \"bnn\",\n \"i-hak\": \"hak\",\n \"i-klingon\": \"tlh\",\n \"i-lux\": \"lb\",\n \"i-navajo\": \"nv\",\n \"i-pwn\": \"pwn\",\n \"i-tao\": \"tao\",\n \"i-tay\": \"tay\",\n \"i-tsu\": \"tsu\",\n \"no-bok\": \"nb\",\n \"no-nyn\": \"nn\",\n \"sgn-BE-FR\": \"sfb\",\n \"sgn-BE-NL\": \"vgt\",\n \"sgn-CH-DE\": \"sgg\",\n \"zh-guoyu\": \"cmn\",\n \"zh-hakka\": \"hak\",\n \"zh-min-nan\": \"nan\",\n \"zh-xiang\": \"hsn\",\n \"sgn-BR\": \"bzs\",\n \"sgn-CO\": \"csn\",\n \"sgn-DE\": \"gsg\",\n \"sgn-DK\": \"dsl\",\n \"sgn-ES\": \"ssp\",\n \"sgn-FR\": \"fsl\",\n \"sgn-GB\": \"bfi\",\n \"sgn-GR\": \"gss\",\n \"sgn-IE\": \"isg\",\n \"sgn-IT\": \"ise\",\n \"sgn-JP\": \"jsl\",\n \"sgn-MX\": \"mfs\",\n \"sgn-NI\": \"ncs\",\n \"sgn-NL\": \"dse\",\n \"sgn-NO\": \"nsl\",\n \"sgn-PT\": \"psr\",\n \"sgn-SE\": \"swl\",\n \"sgn-US\": \"ase\",\n \"sgn-ZA\": \"sfs\",\n \"zh-cmn\": \"cmn\",\n \"zh-cmn-Hans\": \"cmn-Hans\",\n \"zh-cmn-Hant\": \"cmn-Hant\",\n \"zh-gan\": \"gan\",\n \"zh-wuu\": \"wuu\",\n \"zh-yue\": \"yue\"\n },\n subtags: {\n BU: \"MM\",\n DD: \"DE\",\n FX: \"FR\",\n TP: \"TL\",\n YD: \"YE\",\n ZR: \"CD\",\n heploc: \"alalc97\",\n 'in': \"id\",\n iw: \"he\",\n ji: \"yi\",\n jw: \"jv\",\n mo: \"ro\",\n ayx: \"nun\",\n bjd: \"drl\",\n ccq: \"rki\",\n cjr: \"mom\",\n cka: \"cmr\",\n cmk: \"xch\",\n drh: \"khk\",\n drw: \"prs\",\n gav: \"dev\",\n hrr: \"jal\",\n ibi: \"opa\",\n kgh: \"kml\",\n lcq: \"ppr\",\n mst: \"mry\",\n myt: \"mry\",\n sca: \"hle\",\n tie: \"ras\",\n tkk: \"twm\",\n tlw: \"weo\",\n tnf: \"prs\",\n ybd: \"rki\",\n yma: \"lrr\"\n },\n extLang: {\n aao: [\"aao\", \"ar\"],\n abh: [\"abh\", \"ar\"],\n abv: [\"abv\", \"ar\"],\n acm: [\"acm\", \"ar\"],\n acq: [\"acq\", \"ar\"],\n acw: [\"acw\", \"ar\"],\n acx: [\"acx\", \"ar\"],\n acy: [\"acy\", \"ar\"],\n adf: [\"adf\", \"ar\"],\n ads: [\"ads\", \"sgn\"],\n aeb: [\"aeb\", \"ar\"],\n aec: [\"aec\", \"ar\"],\n aed: [\"aed\", \"sgn\"],\n aen: [\"aen\", \"sgn\"],\n afb: [\"afb\", \"ar\"],\n afg: [\"afg\", \"sgn\"],\n ajp: [\"ajp\", \"ar\"],\n apc: [\"apc\", \"ar\"],\n apd: [\"apd\", \"ar\"],\n arb: [\"arb\", \"ar\"],\n arq: [\"arq\", \"ar\"],\n ars: [\"ars\", \"ar\"],\n ary: [\"ary\", \"ar\"],\n arz: [\"arz\", \"ar\"],\n ase: [\"ase\", \"sgn\"],\n asf: [\"asf\", \"sgn\"],\n asp: [\"asp\", \"sgn\"],\n asq: [\"asq\", \"sgn\"],\n asw: [\"asw\", \"sgn\"],\n auz: [\"auz\", \"ar\"],\n avl: [\"avl\", \"ar\"],\n ayh: [\"ayh\", \"ar\"],\n ayl: [\"ayl\", \"ar\"],\n ayn: [\"ayn\", \"ar\"],\n ayp: [\"ayp\", \"ar\"],\n bbz: [\"bbz\", \"ar\"],\n bfi: [\"bfi\", \"sgn\"],\n bfk: [\"bfk\", \"sgn\"],\n bjn: [\"bjn\", \"ms\"],\n bog: [\"bog\", \"sgn\"],\n bqn: [\"bqn\", \"sgn\"],\n bqy: [\"bqy\", \"sgn\"],\n btj: [\"btj\", \"ms\"],\n bve: [\"bve\", \"ms\"],\n bvl: [\"bvl\", \"sgn\"],\n bvu: [\"bvu\", \"ms\"],\n bzs: [\"bzs\", \"sgn\"],\n cdo: [\"cdo\", \"zh\"],\n cds: [\"cds\", \"sgn\"],\n cjy: [\"cjy\", \"zh\"],\n cmn: [\"cmn\", \"zh\"],\n coa: [\"coa\", \"ms\"],\n cpx: [\"cpx\", \"zh\"],\n csc: [\"csc\", \"sgn\"],\n csd: [\"csd\", \"sgn\"],\n cse: [\"cse\", \"sgn\"],\n csf: [\"csf\", \"sgn\"],\n csg: [\"csg\", \"sgn\"],\n csl: [\"csl\", \"sgn\"],\n csn: [\"csn\", \"sgn\"],\n csq: [\"csq\", \"sgn\"],\n csr: [\"csr\", \"sgn\"],\n czh: [\"czh\", \"zh\"],\n czo: [\"czo\", \"zh\"],\n doq: [\"doq\", \"sgn\"],\n dse: [\"dse\", \"sgn\"],\n dsl: [\"dsl\", \"sgn\"],\n dup: [\"dup\", \"ms\"],\n ecs: [\"ecs\", \"sgn\"],\n esl: [\"esl\", \"sgn\"],\n esn: [\"esn\", \"sgn\"],\n eso: [\"eso\", \"sgn\"],\n eth: [\"eth\", \"sgn\"],\n fcs: [\"fcs\", \"sgn\"],\n fse: [\"fse\", \"sgn\"],\n fsl: [\"fsl\", \"sgn\"],\n fss: [\"fss\", \"sgn\"],\n gan: [\"gan\", \"zh\"],\n gds: [\"gds\", \"sgn\"],\n gom: [\"gom\", \"kok\"],\n gse: [\"gse\", \"sgn\"],\n gsg: [\"gsg\", \"sgn\"],\n gsm: [\"gsm\", \"sgn\"],\n gss: [\"gss\", \"sgn\"],\n gus: [\"gus\", \"sgn\"],\n hab: [\"hab\", \"sgn\"],\n haf: [\"haf\", \"sgn\"],\n hak: [\"hak\", \"zh\"],\n hds: [\"hds\", \"sgn\"],\n hji: [\"hji\", \"ms\"],\n hks: [\"hks\", \"sgn\"],\n hos: [\"hos\", \"sgn\"],\n hps: [\"hps\", \"sgn\"],\n hsh: [\"hsh\", \"sgn\"],\n hsl: [\"hsl\", \"sgn\"],\n hsn: [\"hsn\", \"zh\"],\n icl: [\"icl\", \"sgn\"],\n ils: [\"ils\", \"sgn\"],\n inl: [\"inl\", \"sgn\"],\n ins: [\"ins\", \"sgn\"],\n ise: [\"ise\", \"sgn\"],\n isg: [\"isg\", \"sgn\"],\n isr: [\"isr\", \"sgn\"],\n jak: [\"jak\", \"ms\"],\n jax: [\"jax\", \"ms\"],\n jcs: [\"jcs\", \"sgn\"],\n jhs: [\"jhs\", \"sgn\"],\n jls: [\"jls\", \"sgn\"],\n jos: [\"jos\", \"sgn\"],\n jsl: [\"jsl\", \"sgn\"],\n jus: [\"jus\", \"sgn\"],\n kgi: [\"kgi\", \"sgn\"],\n knn: [\"knn\", \"kok\"],\n kvb: [\"kvb\", \"ms\"],\n kvk: [\"kvk\", \"sgn\"],\n kvr: [\"kvr\", \"ms\"],\n kxd: [\"kxd\", \"ms\"],\n lbs: [\"lbs\", \"sgn\"],\n lce: [\"lce\", \"ms\"],\n lcf: [\"lcf\", \"ms\"],\n liw: [\"liw\", \"ms\"],\n lls: [\"lls\", \"sgn\"],\n lsg: [\"lsg\", \"sgn\"],\n lsl: [\"lsl\", \"sgn\"],\n lso: [\"lso\", \"sgn\"],\n lsp: [\"lsp\", \"sgn\"],\n lst: [\"lst\", \"sgn\"],\n lsy: [\"lsy\", \"sgn\"],\n ltg: [\"ltg\", \"lv\"],\n lvs: [\"lvs\", \"lv\"],\n lzh: [\"lzh\", \"zh\"],\n max: [\"max\", \"ms\"],\n mdl: [\"mdl\", \"sgn\"],\n meo: [\"meo\", \"ms\"],\n mfa: [\"mfa\", \"ms\"],\n mfb: [\"mfb\", \"ms\"],\n mfs: [\"mfs\", \"sgn\"],\n min: [\"min\", \"ms\"],\n mnp: [\"mnp\", \"zh\"],\n mqg: [\"mqg\", \"ms\"],\n mre: [\"mre\", \"sgn\"],\n msd: [\"msd\", \"sgn\"],\n msi: [\"msi\", \"ms\"],\n msr: [\"msr\", \"sgn\"],\n mui: [\"mui\", \"ms\"],\n mzc: [\"mzc\", \"sgn\"],\n mzg: [\"mzg\", \"sgn\"],\n mzy: [\"mzy\", \"sgn\"],\n nan: [\"nan\", \"zh\"],\n nbs: [\"nbs\", \"sgn\"],\n ncs: [\"ncs\", \"sgn\"],\n nsi: [\"nsi\", \"sgn\"],\n nsl: [\"nsl\", \"sgn\"],\n nsp: [\"nsp\", \"sgn\"],\n nsr: [\"nsr\", \"sgn\"],\n nzs: [\"nzs\", \"sgn\"],\n okl: [\"okl\", \"sgn\"],\n orn: [\"orn\", \"ms\"],\n ors: [\"ors\", \"ms\"],\n pel: [\"pel\", \"ms\"],\n pga: [\"pga\", \"ar\"],\n pks: [\"pks\", \"sgn\"],\n prl: [\"prl\", \"sgn\"],\n prz: [\"prz\", \"sgn\"],\n psc: [\"psc\", \"sgn\"],\n psd: [\"psd\", \"sgn\"],\n pse: [\"pse\", \"ms\"],\n psg: [\"psg\", \"sgn\"],\n psl: [\"psl\", \"sgn\"],\n pso: [\"pso\", \"sgn\"],\n psp: [\"psp\", \"sgn\"],\n psr: [\"psr\", \"sgn\"],\n pys: [\"pys\", \"sgn\"],\n rms: [\"rms\", \"sgn\"],\n rsi: [\"rsi\", \"sgn\"],\n rsl: [\"rsl\", \"sgn\"],\n sdl: [\"sdl\", \"sgn\"],\n sfb: [\"sfb\", \"sgn\"],\n sfs: [\"sfs\", \"sgn\"],\n sgg: [\"sgg\", \"sgn\"],\n sgx: [\"sgx\", \"sgn\"],\n shu: [\"shu\", \"ar\"],\n slf: [\"slf\", \"sgn\"],\n sls: [\"sls\", \"sgn\"],\n sqk: [\"sqk\", \"sgn\"],\n sqs: [\"sqs\", \"sgn\"],\n ssh: [\"ssh\", \"ar\"],\n ssp: [\"ssp\", \"sgn\"],\n ssr: [\"ssr\", \"sgn\"],\n svk: [\"svk\", \"sgn\"],\n swc: [\"swc\", \"sw\"],\n swh: [\"swh\", \"sw\"],\n swl: [\"swl\", \"sgn\"],\n syy: [\"syy\", \"sgn\"],\n tmw: [\"tmw\", \"ms\"],\n tse: [\"tse\", \"sgn\"],\n tsm: [\"tsm\", \"sgn\"],\n tsq: [\"tsq\", \"sgn\"],\n tss: [\"tss\", \"sgn\"],\n tsy: [\"tsy\", \"sgn\"],\n tza: [\"tza\", \"sgn\"],\n ugn: [\"ugn\", \"sgn\"],\n ugy: [\"ugy\", \"sgn\"],\n ukl: [\"ukl\", \"sgn\"],\n uks: [\"uks\", \"sgn\"],\n urk: [\"urk\", \"ms\"],\n uzn: [\"uzn\", \"uz\"],\n uzs: [\"uzs\", \"uz\"],\n vgt: [\"vgt\", \"sgn\"],\n vkk: [\"vkk\", \"ms\"],\n vkt: [\"vkt\", \"ms\"],\n vsi: [\"vsi\", \"sgn\"],\n vsl: [\"vsl\", \"sgn\"],\n vsv: [\"vsv\", \"sgn\"],\n wuu: [\"wuu\", \"zh\"],\n xki: [\"xki\", \"sgn\"],\n xml: [\"xml\", \"sgn\"],\n xmm: [\"xmm\", \"ms\"],\n xms: [\"xms\", \"sgn\"],\n yds: [\"yds\", \"sgn\"],\n ysl: [\"ysl\", \"sgn\"],\n yue: [\"yue\", \"zh\"],\n zib: [\"zib\", \"sgn\"],\n zlm: [\"zlm\", \"ms\"],\n zmi: [\"zmi\", \"ms\"],\n zsl: [\"zsl\", \"sgn\"],\n zsm: [\"zsm\", \"ms\"]\n }\n};\n\n/**\n * Convert only a-z to uppercase as per section 6.1 of the spec\n */\nfunction toLatinUpperCase(str) {\n var i = str.length;\n\n while (i--) {\n var ch = str.charAt(i);\n\n if (ch >= \"a\" && ch <= \"z\") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1);\n }\n\n return str;\n}\n\n/**\n * The IsStructurallyValidLanguageTag abstract operation verifies that the locale\n * argument (which must be a String value)\n *\n * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section\n * 2.1, or successor,\n * - does not include duplicate variant subtags, and\n * - does not include duplicate singleton subtags.\n *\n * The abstract operation returns true if locale can be generated from the ABNF\n * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not\n * contain duplicate variant or singleton subtags (other than as a private use\n * subtag). It returns false otherwise. Terminal value characters in the grammar are\n * interpreted as the Unicode equivalents of the ASCII octet values given.\n */\nfunction /* 6.2.2 */IsStructurallyValidLanguageTag(locale) {\n // represents a well-formed BCP 47 language tag as specified in RFC 5646\n if (!expBCP47Syntax.test(locale)) return false;\n\n // does not include duplicate variant subtags, and\n if (expVariantDupes.test(locale)) return false;\n\n // does not include duplicate singleton subtags.\n if (expSingletonDupes.test(locale)) return false;\n\n return true;\n}\n\n/**\n * The CanonicalizeLanguageTag abstract operation returns the canonical and case-\n * regularized form of the locale argument (which must be a String value that is\n * a structurally valid BCP 47 language tag as verified by the\n * IsStructurallyValidLanguageTag abstract operation). It takes the steps\n * specified in RFC 5646 section 4.5, or successor, to bring the language tag\n * into canonical form, and to regularize the case of the subtags, but does not\n * take the steps to bring a language tag into “extlang form” and to reorder\n * variant subtags.\n\n * The specifications for extensions to BCP 47 language tags, such as RFC 6067,\n * may include canonicalization rules for the extension subtag sequences they\n * define that go beyond the canonicalization rules of RFC 5646 section 4.5.\n * Implementations are allowed, but not required, to apply these additional rules.\n */\nfunction /* 6.2.3 */CanonicalizeLanguageTag(locale) {\n var match = void 0,\n parts = void 0;\n\n // A language tag is in 'canonical form' when the tag is well-formed\n // according to the rules in Sections 2.1 and 2.2\n\n // Section 2.1 says all subtags use lowercase...\n locale = locale.toLowerCase();\n\n // ...with 2 exceptions: 'two-letter and four-letter subtags that neither\n // appear at the start of the tag nor occur after singletons. Such two-letter\n // subtags are all uppercase (as in the tags \"en-CA-x-ca\" or \"sgn-BE-FR\") and\n // four-letter subtags are titlecase (as in the tag \"az-Latn-x-latn\").\n parts = locale.split('-');\n for (var i = 1, max = parts.length; i < max; i++) {\n // Two-letter subtags are all uppercase\n if (parts[i].length === 2) parts[i] = parts[i].toUpperCase();\n\n // Four-letter subtags are titlecase\n else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1);\n\n // Is it a singleton?\n else if (parts[i].length === 1 && parts[i] !== 'x') break;\n }\n locale = arrJoin.call(parts, '-');\n\n // The steps laid out in RFC 5646 section 4.5 are as follows:\n\n // 1. Extension sequences are ordered into case-insensitive ASCII order\n // by singleton subtag.\n if ((match = locale.match(expExtSequences)) && match.length > 1) {\n // The built-in sort() sorts by ASCII order, so use that\n match.sort();\n\n // Replace all extensions with the joined, sorted array\n locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, ''));\n }\n\n // 2. Redundant or grandfathered tags are replaced by their 'Preferred-\n // Value', if there is one.\n if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale];\n\n // 3. Subtags are replaced by their 'Preferred-Value', if there is one.\n // For extlangs, the original primary language subtag is also\n // replaced if there is a primary language subtag in the 'Preferred-\n // Value'.\n parts = locale.split('-');\n\n for (var _i = 1, _max = parts.length; _i < _max; _i++) {\n if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) {\n parts[_i] = redundantTags.extLang[parts[_i]][0];\n\n // For extlang tags, the prefix needs to be removed if it is redundant\n if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) {\n parts = arrSlice.call(parts, _i++);\n _max -= 1;\n }\n }\n }\n\n return arrJoin.call(parts, '-');\n}\n\n/**\n * The DefaultLocale abstract operation returns a String value representing the\n * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the\n * host environment’s current locale.\n */\nfunction /* 6.2.4 */DefaultLocale() {\n return defaultLocale;\n}\n\n// Sect 6.3 Currency Codes\n// =======================\n\nvar expCurrencyCode = /^[A-Z]{3}$/;\n\n/**\n * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument\n * (after conversion to a String value) represents a well-formed 3-letter ISO currency\n * code. The following steps are taken:\n */\nfunction /* 6.3.1 */IsWellFormedCurrencyCode(currency) {\n // 1. Let `c` be ToString(currency)\n var c = String(currency);\n\n // 2. Let `normalized` be the result of mapping c to upper case as described\n // in 6.1.\n var normalized = toLatinUpperCase(c);\n\n // 3. If the string length of normalized is not 3, return false.\n // 4. If normalized contains any character that is not in the range \"A\" to \"Z\"\n // (U+0041 to U+005A), return false.\n if (expCurrencyCode.test(normalized) === false) return false;\n\n // 5. Return true\n return true;\n}\n\nvar expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below\n\nfunction /* 9.2.1 */CanonicalizeLocaleList(locales) {\n // The abstract operation CanonicalizeLocaleList takes the following steps:\n\n // 1. If locales is undefined, then a. Return a new empty List\n if (locales === undefined) return new List();\n\n // 2. Let seen be a new empty List.\n var seen = new List();\n\n // 3. If locales is a String value, then\n // a. Let locales be a new array created as if by the expression new\n // Array(locales) where Array is the standard built-in constructor with\n // that name and locales is the value of locales.\n locales = typeof locales === 'string' ? [locales] : locales;\n\n // 4. Let O be ToObject(locales).\n var O = toObject(locales);\n\n // 5. Let lenValue be the result of calling the [[Get]] internal method of\n // O with the argument \"length\".\n // 6. Let len be ToUint32(lenValue).\n var len = toLength(O.length);\n\n // 7. Let k be 0.\n var k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n var Pk = String(k);\n\n // b. Let kPresent be the result of calling the [[HasProperty]] internal\n // method of O with argument Pk.\n var kPresent = Pk in O;\n\n // c. If kPresent is true, then\n if (kPresent) {\n // i. Let kValue be the result of calling the [[Get]] internal\n // method of O with argument Pk.\n var kValue = O[Pk];\n\n // ii. If the type of kValue is not String or Object, then throw a\n // TypeError exception.\n if (kValue === null || typeof kValue !== 'string' && (typeof kValue === \"undefined\" ? \"undefined\" : babelHelpers$1[\"typeof\"](kValue)) !== 'object') throw new TypeError('String or Object type expected');\n\n // iii. Let tag be ToString(kValue).\n var tag = String(kValue);\n\n // iv. If the result of calling the abstract operation\n // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as\n // the argument, is false, then throw a RangeError exception.\n if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError(\"'\" + tag + \"' is not a structurally valid language tag\");\n\n // v. Let tag be the result of calling the abstract operation\n // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the\n // argument.\n tag = CanonicalizeLanguageTag(tag);\n\n // vi. If tag is not an element of seen, then append tag as the last\n // element of seen.\n if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag);\n }\n\n // d. Increase k by 1.\n k++;\n }\n\n // 9. Return seen.\n return seen;\n}\n\n/**\n * The BestAvailableLocale abstract operation compares the provided argument\n * locale, which must be a String value with a structurally valid and\n * canonicalized BCP 47 language tag, against the locales in availableLocales and\n * returns either the longest non-empty prefix of locale that is an element of\n * availableLocales, or undefined if there is no such element. It uses the\n * fallback mechanism of RFC 4647, section 3.4. The following steps are taken:\n */\nfunction /* 9.2.2 */BestAvailableLocale(availableLocales, locale) {\n // 1. Let candidate be locale\n var candidate = locale;\n\n // 2. Repeat\n while (candidate) {\n // a. If availableLocales contains an element equal to candidate, then return\n // candidate.\n if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate;\n\n // b. Let pos be the character index of the last occurrence of \"-\"\n // (U+002D) within candidate. If that character does not occur, return\n // undefined.\n var pos = candidate.lastIndexOf('-');\n\n if (pos < 0) return;\n\n // c. If pos ≥ 2 and the character \"-\" occurs at index pos-2 of candidate,\n // then decrease pos by 2.\n if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2;\n\n // d. Let candidate be the substring of candidate from position 0, inclusive,\n // to position pos, exclusive.\n candidate = candidate.substring(0, pos);\n }\n}\n\n/**\n * The LookupMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The following steps are taken:\n */\nfunction /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) {\n // 1. Let i be 0.\n var i = 0;\n\n // 2. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n\n // 3. Let availableLocale be undefined.\n var availableLocale = void 0;\n\n var locale = void 0,\n noExtensionsLocale = void 0;\n\n // 4. Repeat while i < len and availableLocale is undefined:\n while (i < len && !availableLocale) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position i.\n locale = requestedLocales[i];\n\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. Increase i by 1.\n i++;\n }\n\n // 5. Let result be a new Record.\n var result = new Record();\n\n // 6. If availableLocale is not undefined, then\n if (availableLocale !== undefined) {\n // a. Set result.[[locale]] to availableLocale.\n result['[[locale]]'] = availableLocale;\n\n // b. If locale and noExtensionsLocale are not the same String value, then\n if (String(locale) !== String(noExtensionsLocale)) {\n // i. Let extension be the String value consisting of the first\n // substring of locale that is a Unicode locale extension sequence.\n var extension = locale.match(expUnicodeExSeq)[0];\n\n // ii. Let extensionIndex be the character position of the initial\n // \"-\" of the first Unicode locale extension sequence within locale.\n var extensionIndex = locale.indexOf('-u-');\n\n // iii. Set result.[[extension]] to extension.\n result['[[extension]]'] = extension;\n\n // iv. Set result.[[extensionIndex]] to extensionIndex.\n result['[[extensionIndex]]'] = extensionIndex;\n }\n }\n // 7. Else\n else\n // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract\n // operation (defined in 6.2.4).\n result['[[locale]]'] = DefaultLocale();\n\n // 8. Return result\n return result;\n}\n\n/**\n * The BestFitMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The algorithm is implementation dependent, but should produce results\n * that a typical user of the requested locales would perceive as at least as\n * good as those produced by the LookupMatcher abstract operation. Options\n * specified through Unicode locale extension sequences must be ignored by the\n * algorithm. Information about such subsequences is returned separately.\n * The abstract operation returns a record with a [[locale]] field, whose value\n * is the language tag of the selected locale, which must be an element of\n * availableLocales. If the language tag of the request locale that led to the\n * selected locale contained a Unicode locale extension sequence, then the\n * returned record also contains an [[extension]] field whose value is the first\n * Unicode locale extension sequence, and an [[extensionIndex]] field whose value\n * is the index of the first Unicode locale extension sequence within the request\n * locale language tag.\n */\nfunction /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) {\n return LookupMatcher(availableLocales, requestedLocales);\n}\n\n/**\n * The ResolveLocale abstract operation compares a BCP 47 language priority list\n * requestedLocales against the locales in availableLocales and determines the\n * best available language to meet the request. availableLocales and\n * requestedLocales must be provided as List values, options as a Record.\n */\nfunction /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n if (availableLocales.length === 0) {\n throw new ReferenceError('No locale data has been provided for this object yet.');\n }\n\n // The following steps are taken:\n // 1. Let matcher be the value of options.[[localeMatcher]].\n var matcher = options['[[localeMatcher]]'];\n\n var r = void 0;\n\n // 2. If matcher is \"lookup\", then\n if (matcher === 'lookup')\n // a. Let r be the result of calling the LookupMatcher abstract operation\n // (defined in 9.2.3) with arguments availableLocales and\n // requestedLocales.\n r = LookupMatcher(availableLocales, requestedLocales);\n\n // 3. Else\n else\n // a. Let r be the result of calling the BestFitMatcher abstract\n // operation (defined in 9.2.4) with arguments availableLocales and\n // requestedLocales.\n r = BestFitMatcher(availableLocales, requestedLocales);\n\n // 4. Let foundLocale be the value of r.[[locale]].\n var foundLocale = r['[[locale]]'];\n\n var extensionSubtags = void 0,\n extensionSubtagsLength = void 0;\n\n // 5. If r has an [[extension]] field, then\n if (hop.call(r, '[[extension]]')) {\n // a. Let extension be the value of r.[[extension]].\n var extension = r['[[extension]]'];\n // b. Let split be the standard built-in function object defined in ES5,\n // 15.5.4.14.\n var split = String.prototype.split;\n // c. Let extensionSubtags be the result of calling the [[Call]] internal\n // method of split with extension as the this value and an argument\n // list containing the single item \"-\".\n extensionSubtags = split.call(extension, '-');\n // d. Let extensionSubtagsLength be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument \"length\".\n extensionSubtagsLength = extensionSubtags.length;\n }\n\n // 6. Let result be a new Record.\n var result = new Record();\n\n // 7. Set result.[[dataLocale]] to foundLocale.\n result['[[dataLocale]]'] = foundLocale;\n\n // 8. Let supportedExtension be \"-u\".\n var supportedExtension = '-u';\n // 9. Let i be 0.\n var i = 0;\n // 10. Let len be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument \"length\".\n var len = relevantExtensionKeys.length;\n\n // 11 Repeat while i < len:\n while (i < len) {\n // a. Let key be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument ToString(i).\n var key = relevantExtensionKeys[i];\n // b. Let foundLocaleData be the result of calling the [[Get]] internal\n // method of localeData with the argument foundLocale.\n var foundLocaleData = localeData[foundLocale];\n // c. Let keyLocaleData be the result of calling the [[Get]] internal\n // method of foundLocaleData with the argument key.\n var keyLocaleData = foundLocaleData[key];\n // d. Let value be the result of calling the [[Get]] internal method of\n // keyLocaleData with argument \"0\".\n var value = keyLocaleData['0'];\n // e. Let supportedExtensionAddition be \"\".\n var supportedExtensionAddition = '';\n // f. Let indexOf be the standard built-in function object defined in\n // ES5, 15.4.4.14.\n var indexOf = arrIndexOf;\n\n // g. If extensionSubtags is not undefined, then\n if (extensionSubtags !== undefined) {\n // i. Let keyPos be the result of calling the [[Call]] internal\n // method of indexOf with extensionSubtags as the this value and\n // an argument list containing the single item key.\n var keyPos = indexOf.call(extensionSubtags, key);\n\n // ii. If keyPos ≠ -1, then\n if (keyPos !== -1) {\n // 1. If keyPos + 1 < extensionSubtagsLength and the length of the\n // result of calling the [[Get]] internal method of\n // extensionSubtags with argument ToString(keyPos +1) is greater\n // than 2, then\n if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) {\n // a. Let requestedValue be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument\n // ToString(keyPos + 1).\n var requestedValue = extensionSubtags[keyPos + 1];\n // b. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the\n // this value and an argument list containing the single\n // item requestedValue.\n var valuePos = indexOf.call(keyLocaleData, requestedValue);\n\n // c. If valuePos ≠ -1, then\n if (valuePos !== -1) {\n // i. Let value be requestedValue.\n value = requestedValue,\n // ii. Let supportedExtensionAddition be the\n // concatenation of \"-\", key, \"-\", and value.\n supportedExtensionAddition = '-' + key + '-' + value;\n }\n }\n // 2. Else\n else {\n // a. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the this\n // value and an argument list containing the single item\n // \"true\".\n var _valuePos = indexOf(keyLocaleData, 'true');\n\n // b. If valuePos ≠ -1, then\n if (_valuePos !== -1)\n // i. Let value be \"true\".\n value = 'true';\n }\n }\n }\n // h. If options has a field [[]], then\n if (hop.call(options, '[[' + key + ']]')) {\n // i. Let optionsValue be the value of options.[[]].\n var optionsValue = options['[[' + key + ']]'];\n\n // ii. If the result of calling the [[Call]] internal method of indexOf\n // with keyLocaleData as the this value and an argument list\n // containing the single item optionsValue is not -1, then\n if (indexOf.call(keyLocaleData, optionsValue) !== -1) {\n // 1. If optionsValue is not equal to value, then\n if (optionsValue !== value) {\n // a. Let value be optionsValue.\n value = optionsValue;\n // b. Let supportedExtensionAddition be \"\".\n supportedExtensionAddition = '';\n }\n }\n }\n // i. Set result.[[]] to value.\n result['[[' + key + ']]'] = value;\n\n // j. Append supportedExtensionAddition to supportedExtension.\n supportedExtension += supportedExtensionAddition;\n\n // k. Increase i by 1.\n i++;\n }\n // 12. If the length of supportedExtension is greater than 2, then\n if (supportedExtension.length > 2) {\n // a.\n var privateIndex = foundLocale.indexOf(\"-x-\");\n // b.\n if (privateIndex === -1) {\n // i.\n foundLocale = foundLocale + supportedExtension;\n }\n // c.\n else {\n // i.\n var preExtension = foundLocale.substring(0, privateIndex);\n // ii.\n var postExtension = foundLocale.substring(privateIndex);\n // iii.\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n // d. asserting - skipping\n // e.\n foundLocale = CanonicalizeLanguageTag(foundLocale);\n }\n // 13. Set result.[[locale]] to foundLocale.\n result['[[locale]]'] = foundLocale;\n\n // 14. Return result.\n return result;\n}\n\n/**\n * The LookupSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the BCP 47 Lookup algorithm.\n * Locales appear in the same order in the returned list as in requestedLocales.\n * The following steps are taken:\n */\nfunction /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) {\n // 1. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n // 2. Let subset be a new empty List.\n var subset = new List();\n // 3. Let k be 0.\n var k = 0;\n\n // 4. Repeat while k < len\n while (k < len) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position k.\n var locale = requestedLocales[k];\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. If availableLocale is not undefined, then append locale to the end of\n // subset.\n if (availableLocale !== undefined) arrPush.call(subset, locale);\n\n // e. Increment k by 1.\n k++;\n }\n\n // 5. Let subsetArray be a new Array object whose elements are the same\n // values in the same order as the elements of subset.\n var subsetArray = arrSlice.call(subset);\n\n // 6. Return subsetArray.\n return subsetArray;\n}\n\n/**\n * The BestFitSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the Best Fit Matcher\n * algorithm. Locales appear in the same order in the returned list as in\n * requestedLocales. The steps taken are implementation dependent.\n */\nfunction /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) {\n // ###TODO: implement this function as described by the specification###\n return LookupSupportedLocales(availableLocales, requestedLocales);\n}\n\n/**\n * The SupportedLocales abstract operation returns the subset of the provided BCP\n * 47 language priority list requestedLocales for which availableLocales has a\n * matching locale. Two algorithms are available to match the locales: the Lookup\n * algorithm described in RFC 4647 section 3.4, and an implementation dependent\n * best-fit algorithm. Locales appear in the same order in the returned list as\n * in requestedLocales. The following steps are taken:\n */\nfunction /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) {\n var matcher = void 0,\n subset = void 0;\n\n // 1. If options is not undefined, then\n if (options !== undefined) {\n // a. Let options be ToObject(options).\n options = new Record(toObject(options));\n // b. Let matcher be the result of calling the [[Get]] internal method of\n // options with argument \"localeMatcher\".\n matcher = options.localeMatcher;\n\n // c. If matcher is not undefined, then\n if (matcher !== undefined) {\n // i. Let matcher be ToString(matcher).\n matcher = String(matcher);\n\n // ii. If matcher is not \"lookup\" or \"best fit\", then throw a RangeError\n // exception.\n if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be \"lookup\" or \"best fit\"');\n }\n }\n // 2. If matcher is undefined or \"best fit\", then\n if (matcher === undefined || matcher === 'best fit')\n // a. Let subset be the result of calling the BestFitSupportedLocales\n // abstract operation (defined in 9.2.7) with arguments\n // availableLocales and requestedLocales.\n subset = BestFitSupportedLocales(availableLocales, requestedLocales);\n // 3. Else\n else\n // a. Let subset be the result of calling the LookupSupportedLocales\n // abstract operation (defined in 9.2.6) with arguments\n // availableLocales and requestedLocales.\n subset = LookupSupportedLocales(availableLocales, requestedLocales);\n\n // 4. For each named own property name P of subset,\n for (var P in subset) {\n if (!hop.call(subset, P)) continue;\n\n // a. Let desc be the result of calling the [[GetOwnProperty]] internal\n // method of subset with P.\n // b. Set desc.[[Writable]] to false.\n // c. Set desc.[[Configurable]] to false.\n // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc,\n // and true as arguments.\n defineProperty(subset, P, {\n writable: false, configurable: false, value: subset[P]\n });\n }\n // \"Freeze\" the array so no new elements can be added\n defineProperty(subset, 'length', { writable: false });\n\n // 5. Return subset\n return subset;\n}\n\n/**\n * The GetOption abstract operation extracts the value of the property named\n * property from the provided options object, converts it to the required type,\n * checks whether it is one of a List of allowed values, and fills in a fallback\n * value if necessary.\n */\nfunction /*9.2.9 */GetOption(options, property, type, values, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Assert: type is \"boolean\" or \"string\".\n // b. If type is \"boolean\", then let value be ToBoolean(value).\n // c. If type is \"string\", then let value be ToString(value).\n value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value;\n\n // d. If values is not undefined, then\n if (values !== undefined) {\n // i. If values does not contain an element equal to value, then throw a\n // RangeError exception.\n if (arrIndexOf.call(values, value) === -1) throw new RangeError(\"'\" + value + \"' is not an allowed value for `\" + property + '`');\n }\n\n // e. Return value.\n return value;\n }\n // Else return fallback.\n return fallback;\n}\n\n/**\n * The GetNumberOption abstract operation extracts a property value from the\n * provided options object, converts it to a Number value, checks whether it is\n * in the allowed range, and fills in a fallback value if necessary.\n */\nfunction /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Let value be ToNumber(value).\n value = Number(value);\n\n // b. If value is NaN or less than minimum or greater than maximum, throw a\n // RangeError exception.\n if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range');\n\n // c. Return floor(value).\n return Math.floor(value);\n }\n // 3. Else return fallback.\n return fallback;\n}\n\n// 8 The Intl Object\nvar Intl = {};\n\n// 8.2 Function Properties of the Intl Object\n\n// 8.2.1\n// @spec[tc39/ecma402/master/spec/intl.html]\n// @clause[sec-intl.getcanonicallocales]\nfunction getCanonicalLocales(locales) {\n // 1. Let ll be ? CanonicalizeLocaleList(locales).\n var ll = CanonicalizeLocaleList(locales);\n // 2. Return CreateArrayFromList(ll).\n {\n var result = [];\n\n var len = ll.length;\n var k = 0;\n\n while (k < len) {\n result[k] = ll[k];\n k++;\n }\n return result;\n }\n}\n\nObject.defineProperty(Intl, 'getCanonicalLocales', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: getCanonicalLocales\n});\n\n// Currency minor units output from get-4217 grunt task, formatted\nvar currencyMinorUnits = {\n BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0,\n XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3,\n OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0\n};\n\n// Define the NumberFormat constructor internally so it cannot be tainted\nfunction NumberFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.NumberFormat(locales, options);\n }\n\n return InitializeNumberFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'NumberFormat', {\n configurable: true,\n writable: true,\n value: NumberFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(Intl.NumberFormat, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeNumberFormat accepts the arguments\n * numberFormat (which must be an object), locales, and options. It initializes\n * numberFormat as a NumberFormat object.\n */\nfunction /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(numberFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If numberFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(numberFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. If options is undefined, then\n if (options === undefined)\n // a. Let options be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in constructor\n // with that name.\n options = {};\n\n // 5. Else\n else\n // a. Let options be ToObject(options).\n options = toObject(options);\n\n // 6. Let opt be a new Record.\n var opt = new Record(),\n\n\n // 7. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with the arguments options, \"localeMatcher\", \"string\",\n // a List containing the two String values \"lookup\" and \"best fit\", and\n // \"best fit\".\n matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 8. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 9. Let NumberFormat be the standard built-in object that is the initial value\n // of Intl.NumberFormat.\n // 10. Let localeData be the value of the [[localeData]] internal property of\n // NumberFormat.\n var localeData = internals.NumberFormat['[[localeData]]'];\n\n // 11. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of NumberFormat, and localeData.\n var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 12. Set the [[locale]] internal property of numberFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 13. Set the [[numberingSystem]] internal property of numberFormat to the value\n // of r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let s be the result of calling the GetOption abstract operation with the\n // arguments options, \"style\", \"string\", a List containing the three String\n // values \"decimal\", \"percent\", and \"currency\", and \"decimal\".\n var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal');\n\n // 16. Set the [[style]] internal property of numberFormat to s.\n internal['[[style]]'] = s;\n\n // 17. Let c be the result of calling the GetOption abstract operation with the\n // arguments options, \"currency\", \"string\", undefined, and undefined.\n var c = GetOption(options, 'currency', 'string');\n\n // 18. If c is not undefined and the result of calling the\n // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with\n // argument c is false, then throw a RangeError exception.\n if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError(\"'\" + c + \"' is not a valid currency code\");\n\n // 19. If s is \"currency\" and c is undefined, throw a TypeError exception.\n if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency');\n\n var cDigits = void 0;\n\n // 20. If s is \"currency\", then\n if (s === 'currency') {\n // a. Let c be the result of converting c to upper case as specified in 6.1.\n c = c.toUpperCase();\n\n // b. Set the [[currency]] internal property of numberFormat to c.\n internal['[[currency]]'] = c;\n\n // c. Let cDigits be the result of calling the CurrencyDigits abstract\n // operation (defined below) with argument c.\n cDigits = CurrencyDigits(c);\n }\n\n // 21. Let cd be the result of calling the GetOption abstract operation with the\n // arguments options, \"currencyDisplay\", \"string\", a List containing the\n // three String values \"code\", \"symbol\", and \"name\", and \"symbol\".\n var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol');\n\n // 22. If s is \"currency\", then set the [[currencyDisplay]] internal property of\n // numberFormat to cd.\n if (s === 'currency') internal['[[currencyDisplay]]'] = cd;\n\n // 23. Let mnid be the result of calling the GetNumberOption abstract operation\n // (defined in 9.2.10) with arguments options, \"minimumIntegerDigits\", 1, 21,\n // and 1.\n var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1);\n\n // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid.\n internal['[[minimumIntegerDigits]]'] = mnid;\n\n // 25. If s is \"currency\", then let mnfdDefault be cDigits; else let mnfdDefault\n // be 0.\n var mnfdDefault = s === 'currency' ? cDigits : 0;\n\n // 26. Let mnfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"minimumFractionDigits\", 0, 20, and mnfdDefault.\n var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault);\n\n // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd.\n internal['[[minimumFractionDigits]]'] = mnfd;\n\n // 28. If s is \"currency\", then let mxfdDefault be max(mnfd, cDigits); else if s\n // is \"percent\", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault\n // be max(mnfd, 3).\n var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3);\n\n // 29. Let mxfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"maximumFractionDigits\", mnfd, 20, and mxfdDefault.\n var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault);\n\n // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd.\n internal['[[maximumFractionDigits]]'] = mxfd;\n\n // 31. Let mnsd be the result of calling the [[Get]] internal method of options\n // with argument \"minimumSignificantDigits\".\n var mnsd = options.minimumSignificantDigits;\n\n // 32. Let mxsd be the result of calling the [[Get]] internal method of options\n // with argument \"maximumSignificantDigits\".\n var mxsd = options.maximumSignificantDigits;\n\n // 33. If mnsd is not undefined or mxsd is not undefined, then:\n if (mnsd !== undefined || mxsd !== undefined) {\n // a. Let mnsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"minimumSignificantDigits\", 1, 21,\n // and 1.\n mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1);\n\n // b. Let mxsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"maximumSignificantDigits\", mnsd,\n // 21, and 21.\n mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21);\n\n // c. Set the [[minimumSignificantDigits]] internal property of numberFormat\n // to mnsd, and the [[maximumSignificantDigits]] internal property of\n // numberFormat to mxsd.\n internal['[[minimumSignificantDigits]]'] = mnsd;\n internal['[[maximumSignificantDigits]]'] = mxsd;\n }\n // 34. Let g be the result of calling the GetOption abstract operation with the\n // arguments options, \"useGrouping\", \"boolean\", undefined, and true.\n var g = GetOption(options, 'useGrouping', 'boolean', undefined, true);\n\n // 35. Set the [[useGrouping]] internal property of numberFormat to g.\n internal['[[useGrouping]]'] = g;\n\n // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 37. Let patterns be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"patterns\".\n var patterns = dataLocaleData.patterns;\n\n // 38. Assert: patterns is an object (see 11.2.3)\n\n // 39. Let stylePatterns be the result of calling the [[Get]] internal method of\n // patterns with argument s.\n var stylePatterns = patterns[s];\n\n // 40. Set the [[positivePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"positivePattern\".\n internal['[[positivePattern]]'] = stylePatterns.positivePattern;\n\n // 41. Set the [[negativePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"negativePattern\".\n internal['[[negativePattern]]'] = stylePatterns.negativePattern;\n\n // 42. Set the [[boundFormat]] internal property of numberFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to\n // true.\n internal['[[initializedNumberFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) numberFormat.format = GetFormatNumber.call(numberFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return numberFormat;\n}\n\nfunction CurrencyDigits(currency) {\n // When the CurrencyDigits abstract operation is called with an argument currency\n // (which must be an upper case String value), the following steps are taken:\n\n // 1. If the ISO 4217 currency and funds code list contains currency as an\n // alphabetic code, then return the minor unit value corresponding to the\n // currency from the list; else return 2.\n return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2;\n}\n\n/* 11.2.3 */internals.NumberFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.NumberFormat is called, the\n * following steps are taken:\n */\n/* 11.2.2 */\ndefineProperty(Intl.NumberFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * NumberFormat object.\n */\n/* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatNumber\n});\n\nfunction GetFormatNumber() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this NumberFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 1, that takes the argument value and\n // performs the following steps:\n var F = function F(value) {\n // i. If value is not provided, then let value be undefined.\n // ii. Let x be ToNumber(value).\n // iii. Return the result of calling the FormatNumber abstract\n // operation (defined below) with arguments this and x.\n return FormatNumber(this, /* x = */Number(value));\n };\n\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts() {\n var value = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.');\n\n var x = Number(value);\n return FormatNumberToParts(this, x);\n}\n\nObject.defineProperty(Intl.NumberFormat.prototype, 'formatToParts', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: formatToParts\n});\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumbertoparts]\n */\nfunction FormatNumberToParts(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be ArrayCreate(0).\n var result = [];\n // 3. Let n be 0.\n var n = 0;\n // 4. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Let O be ObjectCreate(%ObjectPrototype%).\n var O = {};\n // a. Perform ? CreateDataPropertyOrThrow(O, \"type\", part.[[type]]).\n O.type = part['[[type]]'];\n // a. Perform ? CreateDataPropertyOrThrow(O, \"value\", part.[[value]]).\n O.value = part['[[value]]'];\n // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O).\n result[n] = O;\n // a. Increment n by 1.\n n += 1;\n }\n // 5. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-partitionnumberpattern]\n */\nfunction PartitionNumberPattern(numberFormat, x) {\n\n var internal = getInternalProperties(numberFormat),\n locale = internal['[[dataLocale]]'],\n nums = internal['[[numberingSystem]]'],\n data = internals.NumberFormat['[[localeData]]'][locale],\n ild = data.symbols[nums] || data.symbols.latn,\n pattern = void 0;\n\n // 1. If x is not NaN and x < 0, then:\n if (!isNaN(x) && x < 0) {\n // a. Let x be -x.\n x = -x;\n // a. Let pattern be the value of numberFormat.[[negativePattern]].\n pattern = internal['[[negativePattern]]'];\n }\n // 2. Else,\n else {\n // a. Let pattern be the value of numberFormat.[[positivePattern]].\n pattern = internal['[[positivePattern]]'];\n }\n // 3. Let result be a new empty List.\n var result = new List();\n // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, \"{\", 0).\n var beginIndex = pattern.indexOf('{', 0);\n // 5. Let endIndex be 0.\n var endIndex = 0;\n // 6. Let nextIndex be 0.\n var nextIndex = 0;\n // 7. Let length be the number of code units in pattern.\n var length = pattern.length;\n // 8. Repeat while beginIndex is an integer index into pattern:\n while (beginIndex > -1 && beginIndex < length) {\n // a. Set endIndex to Call(%StringProto_indexOf%, pattern, \"}\", beginIndex)\n endIndex = pattern.indexOf('}', beginIndex);\n // a. If endIndex = -1, throw new Error exception.\n if (endIndex === -1) throw new Error();\n // a. If beginIndex is greater than nextIndex, then:\n if (beginIndex > nextIndex) {\n // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive.\n var literal = pattern.substring(nextIndex, beginIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal });\n }\n // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // a. If p is equal \"number\", then:\n if (p === \"number\") {\n // i. If x is NaN,\n if (isNaN(x)) {\n // 1. Let n be an ILD String value indicating the NaN value.\n var n = ild.nan;\n // 2. Add new part record { [[type]]: \"nan\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n });\n }\n // ii. Else if isFinite(x) is false,\n else if (!isFinite(x)) {\n // 1. Let n be an ILD String value indicating infinity.\n var _n = ild.infinity;\n // 2. Add new part record { [[type]]: \"infinity\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n });\n }\n // iii. Else,\n else {\n // 1. If the value of numberFormat.[[style]] is \"percent\" and isFinite(x), let x be 100 × x.\n if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100;\n\n var _n2 = void 0;\n // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then\n if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) {\n // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]).\n _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']);\n }\n // 3. Else,\n else {\n // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]).\n _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']);\n }\n // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the \"Numbering System\" column of Table 2 below, then\n if (numSys[nums]) {\n (function () {\n // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the \"Digits\" column of the matching row in Table 2.\n var digits = numSys[nums];\n // a. Replace each digit in n with the value of digits[digit].\n _n2 = String(_n2).replace(/\\d/g, function (digit) {\n return digits[digit];\n });\n })();\n }\n // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system.\n else _n2 = String(_n2); // ###TODO###\n\n var integer = void 0;\n var fraction = void 0;\n // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, \".\", 0).\n var decimalSepIndex = _n2.indexOf('.', 0);\n // 7. If decimalSepIndex > 0, then:\n if (decimalSepIndex > 0) {\n // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive.\n integer = _n2.substring(0, decimalSepIndex);\n // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n.\n fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length);\n }\n // 8. Else:\n else {\n // a. Let integer be n.\n integer = _n2;\n // a. Let fraction be undefined.\n fraction = undefined;\n }\n // 9. If the value of the numberFormat.[[useGrouping]] is true,\n if (internal['[[useGrouping]]'] === true) {\n // a. Let groupSepSymbol be the ILND String representing the grouping separator.\n var groupSepSymbol = ild.group;\n // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer.\n var groups = [];\n // ----> implementation:\n // Primary group represents the group closest to the decimal\n var pgSize = data.patterns.primaryGroupSize || 3;\n // Secondary group is every other group\n var sgSize = data.patterns.secondaryGroupSize || pgSize;\n // Group only if necessary\n if (integer.length > pgSize) {\n // Index of the primary grouping separator\n var end = integer.length - pgSize;\n // Starting index for our loop\n var idx = end % sgSize;\n var start = integer.slice(0, idx);\n if (start.length) arrPush.call(groups, start);\n // Loop to separate into secondary grouping digits\n while (idx < end) {\n arrPush.call(groups, integer.slice(idx, idx + sgSize));\n idx += sgSize;\n }\n // Add the primary grouping digits\n arrPush.call(groups, integer.slice(end));\n } else {\n arrPush.call(groups, integer);\n }\n // a. Assert: The number of elements in groups List is greater than 0.\n if (groups.length === 0) throw new Error();\n // a. Repeat, while groups List is not empty:\n while (groups.length) {\n // i. Remove the first element from groups and let integerGroup be the value of that element.\n var integerGroup = arrShift.call(groups);\n // ii. Add new part record { [[type]]: \"integer\", [[value]]: integerGroup } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup });\n // iii. If groups List is not empty, then:\n if (groups.length) {\n // 1. Add new part record { [[type]]: \"group\", [[value]]: groupSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol });\n }\n }\n }\n // 10. Else,\n else {\n // a. Add new part record { [[type]]: \"integer\", [[value]]: integer } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer });\n }\n // 11. If fraction is not undefined, then:\n if (fraction !== undefined) {\n // a. Let decimalSepSymbol be the ILND String representing the decimal separator.\n var decimalSepSymbol = ild.decimal;\n // a. Add new part record { [[type]]: \"decimal\", [[value]]: decimalSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol });\n // a. Add new part record { [[type]]: \"fraction\", [[value]]: fraction } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction });\n }\n }\n }\n // a. Else if p is equal \"plusSign\", then:\n else if (p === \"plusSign\") {\n // i. Let plusSignSymbol be the ILND String representing the plus sign.\n var plusSignSymbol = ild.plusSign;\n // ii. Add new part record { [[type]]: \"plusSign\", [[value]]: plusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol });\n }\n // a. Else if p is equal \"minusSign\", then:\n else if (p === \"minusSign\") {\n // i. Let minusSignSymbol be the ILND String representing the minus sign.\n var minusSignSymbol = ild.minusSign;\n // ii. Add new part record { [[type]]: \"minusSign\", [[value]]: minusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol });\n }\n // a. Else if p is equal \"percentSign\" and numberFormat.[[style]] is \"percent\", then:\n else if (p === \"percentSign\" && internal['[[style]]'] === \"percent\") {\n // i. Let percentSignSymbol be the ILND String representing the percent sign.\n var percentSignSymbol = ild.percentSign;\n // ii. Add new part record { [[type]]: \"percentSign\", [[value]]: percentSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol });\n }\n // a. Else if p is equal \"currency\" and numberFormat.[[style]] is \"currency\", then:\n else if (p === \"currency\" && internal['[[style]]'] === \"currency\") {\n // i. Let currency be the value of numberFormat.[[currency]].\n var currency = internal['[[currency]]'];\n\n var cd = void 0;\n\n // ii. If numberFormat.[[currencyDisplay]] is \"code\", then\n if (internal['[[currencyDisplay]]'] === \"code\") {\n // 1. Let cd be currency.\n cd = currency;\n }\n // iii. Else if numberFormat.[[currencyDisplay]] is \"symbol\", then\n else if (internal['[[currencyDisplay]]'] === \"symbol\") {\n // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself.\n cd = data.currencies[currency] || currency;\n }\n // iv. Else if numberFormat.[[currencyDisplay]] is \"name\", then\n else if (internal['[[currencyDisplay]]'] === \"name\") {\n // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself.\n cd = currency;\n }\n // v. Add new part record { [[type]]: \"currency\", [[value]]: cd } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd });\n }\n // a. Else,\n else {\n // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive.\n var _literal = pattern.substring(beginIndex, endIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal });\n }\n // a. Set nextIndex to endIndex + 1.\n nextIndex = endIndex + 1;\n // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, \"{\", nextIndex)\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n // 9. If nextIndex is less than length, then:\n if (nextIndex < length) {\n // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive.\n var _literal2 = pattern.substring(nextIndex, length);\n // a. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 });\n }\n // 10. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumber]\n */\nfunction FormatNumber(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be an empty String.\n var result = '';\n // 3. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Set result to a String value produced by concatenating result and part.[[value]].\n result += part['[[value]]'];\n }\n // 4. Return result.\n return result;\n}\n\n/**\n * When the ToRawPrecision abstract operation is called with arguments x (which\n * must be a finite non-negative number), minPrecision, and maxPrecision (both\n * must be integers between 1 and 21) the following steps are taken:\n */\nfunction ToRawPrecision(x, minPrecision, maxPrecision) {\n // 1. Let p be maxPrecision.\n var p = maxPrecision;\n\n var m = void 0,\n e = void 0;\n\n // 2. If x = 0, then\n if (x === 0) {\n // a. Let m be the String consisting of p occurrences of the character \"0\".\n m = arrJoin.call(Array(p + 1), '0');\n // b. Let e be 0.\n e = 0;\n }\n // 3. Else\n else {\n // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the\n // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as\n // possible. If there are two such sets of e and n, pick the e and n for\n // which n × 10ᵉ⁻ᵖ⁺¹ is larger.\n e = log10Floor(Math.abs(x));\n\n // Easier to get to m from here\n var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10));\n\n // b. Let m be the String consisting of the digits of the decimal\n // representation of n (in order, with no leading zeroes)\n m = String(Math.round(e - p + 1 < 0 ? x * f : x / f));\n }\n\n // 4. If e ≥ p, then\n if (e >= p)\n // a. Return the concatenation of m and e-p+1 occurrences of the character \"0\".\n return m + arrJoin.call(Array(e - p + 1 + 1), '0');\n\n // 5. If e = p-1, then\n else if (e === p - 1)\n // a. Return m.\n return m;\n\n // 6. If e ≥ 0, then\n else if (e >= 0)\n // a. Let m be the concatenation of the first e+1 characters of m, the character\n // \".\", and the remaining p–(e+1) characters of m.\n m = m.slice(0, e + 1) + '.' + m.slice(e + 1);\n\n // 7. If e < 0, then\n else if (e < 0)\n // a. Let m be the concatenation of the String \"0.\", –(e+1) occurrences of the\n // character \"0\", and the string m.\n m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m;\n\n // 8. If m contains the character \".\", and maxPrecision > minPrecision, then\n if (m.indexOf(\".\") >= 0 && maxPrecision > minPrecision) {\n // a. Let cut be maxPrecision – minPrecision.\n var cut = maxPrecision - minPrecision;\n\n // b. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.charAt(m.length - 1) === '0') {\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n\n // ii. Decrease cut by 1.\n cut--;\n }\n\n // c. If the last character of m is \".\", then\n if (m.charAt(m.length - 1) === '.')\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. Return m.\n return m;\n}\n\n/**\n * @spec[tc39/ecma402/master/spec/numberformat.html]\n * @clause[sec-torawfixed]\n * When the ToRawFixed abstract operation is called with arguments x (which must\n * be a finite non-negative number), minInteger (which must be an integer between\n * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and\n * 20) the following steps are taken:\n */\nfunction ToRawFixed(x, minInteger, minFraction, maxFraction) {\n // 1. Let f be maxFraction.\n var f = maxFraction;\n // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n.\n var n = Math.pow(10, f) * x; // diverging...\n // 3. If n = 0, let m be the String \"0\". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes).\n var m = n === 0 ? \"0\" : n.toFixed(0); // divering...\n\n {\n // this diversion is needed to take into consideration big numbers, e.g.:\n // 1.2344501e+37 -> 12344501000000000000000000000000000000\n var idx = void 0;\n var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0;\n if (exp) {\n m = m.slice(0, idx).replace('.', '');\n m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0');\n }\n }\n\n var int = void 0;\n // 4. If f ≠ 0, then\n if (f !== 0) {\n // a. Let k be the number of characters in m.\n var k = m.length;\n // a. If k ≤ f, then\n if (k <= f) {\n // i. Let z be the String consisting of f+1–k occurrences of the character \"0\".\n var z = arrJoin.call(Array(f + 1 - k + 1), '0');\n // ii. Let m be the concatenation of Strings z and m.\n m = z + m;\n // iii. Let k be f+1.\n k = f + 1;\n }\n // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m.\n var a = m.substring(0, k - f),\n b = m.substring(k - f, m.length);\n // a. Let m be the concatenation of the three Strings a, \".\", and b.\n m = a + \".\" + b;\n // a. Let int be the number of characters in a.\n int = a.length;\n }\n // 5. Else, let int be the number of characters in m.\n else int = m.length;\n // 6. Let cut be maxFraction – minFraction.\n var cut = maxFraction - minFraction;\n // 7. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.slice(-1) === \"0\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n // a. Decrease cut by 1.\n cut--;\n }\n // 8. If the last character of m is \".\", then\n if (m.slice(-1) === \".\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. If int < minInteger, then\n if (int < minInteger) {\n // a. Let z be the String consisting of minInteger–int occurrences of the character \"0\".\n var _z = arrJoin.call(Array(minInteger - int + 1), '0');\n // a. Let m be the concatenation of Strings z and m.\n m = _z + m;\n }\n // 10. Return m.\n return m;\n}\n\n// Sect 11.3.2 Table 2, Numbering systems\n// ======================================\nvar numSys = {\n arab: [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n arabext: [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"],\n bali: [\"᭐\", \"᭑\", \"᭒\", \"᭓\", \"᭔\", \"᭕\", \"᭖\", \"᭗\", \"᭘\", \"᭙\"],\n beng: [\"০\", \"১\", \"২\", \"৩\", \"৪\", \"৫\", \"৬\", \"৭\", \"৮\", \"৯\"],\n deva: [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"],\n fullwide: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n gujr: [\"૦\", \"૧\", \"૨\", \"૩\", \"૪\", \"૫\", \"૬\", \"૭\", \"૮\", \"૯\"],\n guru: [\"੦\", \"੧\", \"੨\", \"੩\", \"੪\", \"੫\", \"੬\", \"੭\", \"੮\", \"੯\"],\n hanidec: [\"〇\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\"],\n khmr: [\"០\", \"១\", \"២\", \"៣\", \"៤\", \"៥\", \"៦\", \"៧\", \"៨\", \"៩\"],\n knda: [\"೦\", \"೧\", \"೨\", \"೩\", \"೪\", \"೫\", \"೬\", \"೭\", \"೮\", \"೯\"],\n laoo: [\"໐\", \"໑\", \"໒\", \"໓\", \"໔\", \"໕\", \"໖\", \"໗\", \"໘\", \"໙\"],\n latn: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n limb: [\"᥆\", \"᥇\", \"᥈\", \"᥉\", \"᥊\", \"᥋\", \"᥌\", \"᥍\", \"᥎\", \"᥏\"],\n mlym: [\"൦\", \"൧\", \"൨\", \"൩\", \"൪\", \"൫\", \"൬\", \"൭\", \"൮\", \"൯\"],\n mong: [\"᠐\", \"᠑\", \"᠒\", \"᠓\", \"᠔\", \"᠕\", \"᠖\", \"᠗\", \"᠘\", \"᠙\"],\n mymr: [\"၀\", \"၁\", \"၂\", \"၃\", \"၄\", \"၅\", \"၆\", \"၇\", \"၈\", \"၉\"],\n orya: [\"୦\", \"୧\", \"୨\", \"୩\", \"୪\", \"୫\", \"୬\", \"୭\", \"୮\", \"୯\"],\n tamldec: [\"௦\", \"௧\", \"௨\", \"௩\", \"௪\", \"௫\", \"௬\", \"௭\", \"௮\", \"௯\"],\n telu: [\"౦\", \"౧\", \"౨\", \"౩\", \"౪\", \"౫\", \"౬\", \"౭\", \"౮\", \"౯\"],\n thai: [\"๐\", \"๑\", \"๒\", \"๓\", \"๔\", \"๕\", \"๖\", \"๗\", \"๘\", \"๙\"],\n tibt: [\"༠\", \"༡\", \"༢\", \"༣\", \"༤\", \"༥\", \"༦\", \"༧\", \"༨\", \"༩\"]\n};\n\n/**\n * This function provides access to the locale and formatting options computed\n * during initialization of the object.\n *\n * The function returns a new object whose properties and attributes are set as\n * if constructed by an object literal assigning to each of the following\n * properties the value of the corresponding internal property of this\n * NumberFormat object (see 11.4): locale, numberingSystem, style, currency,\n * currencyDisplay, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and\n * useGrouping. Properties whose corresponding internal properties are not present\n * are not assigned.\n */\n/* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', {\n configurable: true,\n writable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\n/* jslint esnext: true */\n\n// Match these datetime components in a CLDR pattern, except those in single quotes\nvar expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n// Skip over patterns with these datetime components because we don't have data\n// to back them up:\n// timezone, weekday, amoung others\nvar unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string\n\nvar dtKeys = [\"era\", \"year\", \"month\", \"day\", \"weekday\", \"quarter\"];\nvar tmKeys = [\"hour\", \"minute\", \"second\", \"hour12\", \"timeZoneName\"];\n\nfunction isDateFormatOnly(obj) {\n for (var i = 0; i < tmKeys.length; i += 1) {\n if (obj.hasOwnProperty(tmKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isTimeFormatOnly(obj) {\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (obj.hasOwnProperty(dtKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction joinDateAndTimeFormats(dateFormatObj, timeFormatObj) {\n var o = { _: {} };\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (dateFormatObj[dtKeys[i]]) {\n o[dtKeys[i]] = dateFormatObj[dtKeys[i]];\n }\n if (dateFormatObj._[dtKeys[i]]) {\n o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]];\n }\n }\n for (var j = 0; j < tmKeys.length; j += 1) {\n if (timeFormatObj[tmKeys[j]]) {\n o[tmKeys[j]] = timeFormatObj[tmKeys[j]];\n }\n if (timeFormatObj._[tmKeys[j]]) {\n o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]];\n }\n }\n return o;\n}\n\nfunction computeFinalPatterns(formatObj) {\n // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns:\n // 'In patterns, two single quotes represents a literal single quote, either\n // inside or outside single quotes. Text within single quotes is not\n // interpreted in any way (except for two adjacent single quotes).'\n formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) {\n return literal ? literal : \"'\";\n });\n\n // pattern 12 is always the default. we can produce the 24 by removing {ampm}\n formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, '');\n return formatObj;\n}\n\nfunction expDTComponentsMeta($0, formatObj) {\n switch ($0.charAt(0)) {\n // --- Era\n case 'G':\n formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1];\n return '{era}';\n\n // --- Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n formatObj.year = $0.length === 2 ? '2-digit' : 'numeric';\n return '{year}';\n\n // --- Quarter (not supported in this polyfill)\n case 'Q':\n case 'q':\n formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{quarter}';\n\n // --- Month\n case 'M':\n case 'L':\n formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{month}';\n\n // --- Week (not supported in this polyfill)\n case 'w':\n // week of the year\n formatObj.week = $0.length === 2 ? '2-digit' : 'numeric';\n return '{weekday}';\n case 'W':\n // week of the month\n formatObj.week = 'numeric';\n return '{weekday}';\n\n // --- Day\n case 'd':\n // day of the month\n formatObj.day = $0.length === 2 ? '2-digit' : 'numeric';\n return '{day}';\n case 'D': // day of the year\n case 'F': // day of the week\n case 'g':\n // 1..n: Modified Julian day\n formatObj.day = 'numeric';\n return '{day}';\n\n // --- Week Day\n case 'E':\n // day of the week\n formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'e':\n // local day of the week\n formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'c':\n // stand alone local day of the week\n formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n\n // --- Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B':\n // flexible day periods\n formatObj.hour12 = true;\n return '{ampm}';\n\n // --- Hour\n case 'h':\n case 'H':\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n case 'k':\n case 'K':\n formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K)\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n\n // --- Minute\n case 'm':\n formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric';\n return '{minute}';\n\n // --- Second\n case 's':\n formatObj.second = $0.length === 2 ? '2-digit' : 'numeric';\n return '{second}';\n case 'S':\n case 'A':\n formatObj.second = 'numeric';\n return '{second}';\n\n // --- Timezone\n case 'z': // 1..3, 4: specific non-location format\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n // this polyfill only supports much, for now, we are just doing something dummy\n formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long';\n return '{timeZoneName}';\n }\n}\n\n/**\n * Converts the CLDR availableFormats into the objects and patterns required by\n * the ECMAScript Internationalization API specification.\n */\nfunction createDateTimeFormat(skeleton, pattern) {\n // we ignore certain patterns that are unsupported to avoid this expensive op.\n if (unwantedDTCs.test(pattern)) return undefined;\n\n var formatObj = {\n originalPattern: pattern,\n _: {}\n };\n\n // Replace the pattern string with the one required by the specification, whilst\n // at the same time evaluating it for the subsets and formats\n formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj._);\n });\n\n // Match the skeleton string with the one required by the specification\n // this implementation is based on the Date Field Symbol Table:\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n // Note: we are adding extra data to the formatObject even though this polyfill\n // might not support it.\n skeleton.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj);\n });\n\n return computeFinalPatterns(formatObj);\n}\n\n/**\n * Processes DateTime formats from CLDR to an easier-to-parse format.\n * the result of this operation should be cached the first time a particular\n * calendar is analyzed.\n *\n * The specification requires we support at least the following subsets of\n * date/time components:\n *\n * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second'\n * - 'weekday', 'year', 'month', 'day'\n * - 'year', 'month', 'day'\n * - 'year', 'month'\n * - 'month', 'day'\n * - 'hour', 'minute', 'second'\n * - 'hour', 'minute'\n *\n * We need to cherry pick at least these subsets from the CLDR data and convert\n * them into the pattern objects used in the ECMA-402 API.\n */\nfunction createDateTimeFormats(formats) {\n var availableFormats = formats.availableFormats;\n var timeFormats = formats.timeFormats;\n var dateFormats = formats.dateFormats;\n var result = [];\n var skeleton = void 0,\n pattern = void 0,\n computed = void 0,\n i = void 0,\n j = void 0;\n var timeRelatedFormats = [];\n var dateRelatedFormats = [];\n\n // Map available (custom) formats into a pattern for createDateTimeFormats\n for (skeleton in availableFormats) {\n if (availableFormats.hasOwnProperty(skeleton)) {\n pattern = availableFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n // in some cases, the format is only displaying date specific props\n // or time specific props, in which case we need to also produce the\n // combined formats.\n if (isDateFormatOnly(computed)) {\n dateRelatedFormats.push(computed);\n } else if (isTimeFormatOnly(computed)) {\n timeRelatedFormats.push(computed);\n }\n }\n }\n }\n\n // Map time formats into a pattern for createDateTimeFormats\n for (skeleton in timeFormats) {\n if (timeFormats.hasOwnProperty(skeleton)) {\n pattern = timeFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n timeRelatedFormats.push(computed);\n }\n }\n }\n\n // Map date formats into a pattern for createDateTimeFormats\n for (skeleton in dateFormats) {\n if (dateFormats.hasOwnProperty(skeleton)) {\n pattern = dateFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n dateRelatedFormats.push(computed);\n }\n }\n }\n\n // combine custom time and custom date formats when they are orthogonals to complete the\n // formats supported by CLDR.\n // This Algo is based on section \"Missing Skeleton Fields\" from:\n // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n for (i = 0; i < timeRelatedFormats.length; i += 1) {\n for (j = 0; j < dateRelatedFormats.length; j += 1) {\n if (dateRelatedFormats[j].month === 'long') {\n pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long;\n } else if (dateRelatedFormats[j].month === 'short') {\n pattern = formats.medium;\n } else {\n pattern = formats.short;\n }\n computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]);\n computed.originalPattern = pattern;\n computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\\s]+|[,\\s]+$/gi, '');\n result.push(computeFinalPatterns(computed));\n }\n }\n\n return result;\n}\n\n// this represents the exceptions of the rule that are not covered by CLDR availableFormats\n// for single property configurations, they play no role when using multiple properties, and\n// those that are not in this table, are not exceptions or are not covered by the data we\n// provide.\nvar validSyntheticProps = {\n second: {\n numeric: 's',\n '2-digit': 'ss'\n },\n minute: {\n numeric: 'm',\n '2-digit': 'mm'\n },\n year: {\n numeric: 'y',\n '2-digit': 'yy'\n },\n day: {\n numeric: 'd',\n '2-digit': 'dd'\n },\n month: {\n numeric: 'L',\n '2-digit': 'LL',\n narrow: 'LLLLL',\n short: 'LLL',\n long: 'LLLL'\n },\n weekday: {\n narrow: 'ccccc',\n short: 'ccc',\n long: 'cccc'\n }\n};\n\nfunction generateSyntheticFormat(propName, propValue) {\n if (validSyntheticProps[propName] && validSyntheticProps[propName][propValue]) {\n var _ref2;\n\n return _ref2 = {\n originalPattern: validSyntheticProps[propName][propValue],\n _: defineProperty$1({}, propName, propValue),\n extendedPattern: \"{\" + propName + \"}\"\n }, defineProperty$1(_ref2, propName, propValue), defineProperty$1(_ref2, \"pattern12\", \"{\" + propName + \"}\"), defineProperty$1(_ref2, \"pattern\", \"{\" + propName + \"}\"), _ref2;\n }\n}\n\n// An object map of date component keys, saves using a regex later\nvar dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} });\n\n/**\n * Returns a string for a date component, resolved using multiple inheritance as specified\n * as specified in the Unicode Technical Standard 35.\n */\nfunction resolveDateString(data, ca, component, width, key) {\n // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance:\n // 'In clearly specified instances, resources may inherit from within the same locale.\n // For example, ... the Buddhist calendar inherits from the Gregorian calendar.'\n var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component],\n\n\n // \"sideways\" inheritance resolves strings when a key doesn't exist\n alts = {\n narrow: ['short', 'long'],\n short: ['long', 'narrow'],\n long: ['short', 'narrow']\n },\n\n\n //\n resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]];\n\n // `key` wouldn't be specified for components 'dayPeriods'\n return key !== null ? resolved[key] : resolved;\n}\n\n// Define the DateTimeFormat constructor internally so it cannot be tainted\nfunction DateTimeFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.DateTimeFormat(locales, options);\n }\n return InitializeDateTimeFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'DateTimeFormat', {\n configurable: true,\n writable: true,\n value: DateTimeFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(DateTimeFormatConstructor, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat\n * (which must be an object), locales, and options. It initializes dateTimeFormat as a\n * DateTimeFormat object.\n */\nfunction /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(dateTimeFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(dateTimeFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined below) with arguments options, \"any\", and \"date\".\n options = ToDateTimeOptions(options, 'any', 'date');\n\n // 5. Let opt be a new Record.\n var opt = new Record();\n\n // 6. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with arguments options, \"localeMatcher\", \"string\", a List\n // containing the two String values \"lookup\" and \"best fit\", and \"best fit\".\n var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 7. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 8. Let DateTimeFormat be the standard built-in object that is the initial\n // value of Intl.DateTimeFormat.\n var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need\n\n // 9. Let localeData be the value of the [[localeData]] internal property of\n // DateTimeFormat.\n var localeData = DateTimeFormat['[[localeData]]'];\n\n // 10. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of DateTimeFormat, and localeData.\n var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 11. Set the [[locale]] internal property of dateTimeFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of\n // r.[[ca]].\n internal['[[calendar]]'] = r['[[ca]]'];\n\n // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of\n // r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let tz be the result of calling the [[Get]] internal method of options with\n // argument \"timeZone\".\n var tz = options.timeZone;\n\n // 16. If tz is not undefined, then\n if (tz !== undefined) {\n // a. Let tz be ToString(tz).\n // b. Convert tz to upper case as described in 6.1.\n // NOTE: If an implementation accepts additional time zone values, as permitted\n // under certain conditions by the Conformance clause, different casing\n // rules apply.\n tz = toLatinUpperCase(tz);\n\n // c. If tz is not \"UTC\", then throw a RangeError exception.\n // ###TODO: accept more time zones###\n if (tz !== 'UTC') throw new RangeError('timeZone is not supported.');\n }\n\n // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz.\n internal['[[timeZone]]'] = tz;\n\n // 18. Let opt be a new Record.\n opt = new Record();\n\n // 19. For each row of Table 3, except the header row, do:\n for (var prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, prop)) continue;\n\n // 20. Let prop be the name given in the Property column of the row.\n // 21. Let value be the result of calling the GetOption abstract operation,\n // passing as argument options, the name given in the Property column of the\n // row, \"string\", a List containing the strings given in the Values column of\n // the row, and undefined.\n var value = GetOption(options, prop, 'string', dateTimeComponents[prop]);\n\n // 22. Set opt.[[]] to value.\n opt['[[' + prop + ']]'] = value;\n }\n\n // Assigned a value below\n var bestFormat = void 0;\n\n // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 24. Let formats be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"formats\".\n // Note: we process the CLDR formats into the spec'd structure\n var formats = ToDateTimeFormats(dataLocaleData.formats);\n\n // 25. Let matcher be the result of calling the GetOption abstract operation with\n // arguments options, \"formatMatcher\", \"string\", a List containing the two String\n // values \"basic\" and \"best fit\", and \"best fit\".\n matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit');\n\n // Optimization: caching the processed formats as a one time operation by\n // replacing the initial structure from localeData\n dataLocaleData.formats = formats;\n\n // 26. If matcher is \"basic\", then\n if (matcher === 'basic') {\n // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract\n // operation (defined below) with opt and formats.\n bestFormat = BasicFormatMatcher(opt, formats);\n\n // 28. Else\n } else {\n {\n // diverging\n var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr;\n }\n // 29. Let bestFormat be the result of calling the BestFitFormatMatcher\n // abstract operation (defined below) with opt and formats.\n bestFormat = BestFitFormatMatcher(opt, formats);\n }\n\n // 30. For each row in Table 3, except the header row, do\n for (var _prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _prop)) continue;\n\n // a. Let prop be the name given in the Property column of the row.\n // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of\n // bestFormat with argument prop.\n // c. If pDesc is not undefined, then\n if (hop.call(bestFormat, _prop)) {\n // i. Let p be the result of calling the [[Get]] internal method of bestFormat\n // with argument prop.\n var p = bestFormat[_prop];\n {\n // diverging\n p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p;\n }\n\n // ii. Set the [[]] internal property of dateTimeFormat to p.\n internal['[[' + _prop + ']]'] = p;\n }\n }\n\n var pattern = void 0; // Assigned a value below\n\n // 31. Let hr12 be the result of calling the GetOption abstract operation with\n // arguments options, \"hour12\", \"boolean\", undefined, and undefined.\n var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n\n // 32. If dateTimeFormat has an internal property [[hour]], then\n if (internal['[[hour]]']) {\n // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]]\n // internal method of dataLocaleData with argument \"hour12\".\n hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12;\n\n // b. Set the [[hour12]] internal property of dateTimeFormat to hr12.\n internal['[[hour12]]'] = hr12;\n\n // c. If hr12 is true, then\n if (hr12 === true) {\n // i. Let hourNo0 be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"hourNo0\".\n var hourNo0 = dataLocaleData.hourNo0;\n\n // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0.\n internal['[[hourNo0]]'] = hourNo0;\n\n // iii. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern12\".\n pattern = bestFormat.pattern12;\n }\n\n // d. Else\n else\n // i. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n }\n\n // 33. Else\n else\n // a. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n\n // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern.\n internal['[[pattern]]'] = pattern;\n\n // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to\n // true.\n internal['[[initializedDateTimeFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return dateTimeFormat;\n}\n\n/**\n * Several DateTimeFormat algorithms use values from the following table, which provides\n * property names and allowable values for the components of date and time formats:\n */\nvar dateTimeComponents = {\n weekday: [\"narrow\", \"short\", \"long\"],\n era: [\"narrow\", \"short\", \"long\"],\n year: [\"2-digit\", \"numeric\"],\n month: [\"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\"],\n day: [\"2-digit\", \"numeric\"],\n hour: [\"2-digit\", \"numeric\"],\n minute: [\"2-digit\", \"numeric\"],\n second: [\"2-digit\", \"numeric\"],\n timeZoneName: [\"short\", \"long\"]\n};\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeFormats(formats) {\n if (Object.prototype.toString.call(formats) === '[object Array]') {\n return formats;\n }\n return createDateTimeFormats(formats);\n}\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeOptions(options, required, defaults) {\n // 1. If options is undefined, then let options be null, else let options be\n // ToObject(options).\n if (options === undefined) options = null;else {\n // (#12) options needs to be a Record, but it also needs to inherit properties\n var opt2 = toObject(options);\n options = new Record();\n\n for (var k in opt2) {\n options[k] = opt2[k];\n }\n }\n\n // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5.\n var create = objCreate;\n\n // 3. Let options be the result of calling the [[Call]] internal method of create with\n // undefined as the this value and an argument list containing the single item\n // options.\n options = create(options);\n\n // 4. Let needDefaults be true.\n var needDefaults = true;\n\n // 5. If required is \"date\" or \"any\", then\n if (required === 'date' || required === 'any') {\n // a. For each of the property names \"weekday\", \"year\", \"month\", \"day\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false;\n }\n\n // 6. If required is \"time\" or \"any\", then\n if (required === 'time' || required === 'any') {\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false;\n }\n\n // 7. If needDefaults is true and defaults is either \"date\" or \"all\", then\n if (needDefaults && (defaults === 'date' || defaults === 'all'))\n // a. For each of the property names \"year\", \"month\", \"day\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.year = options.month = options.day = 'numeric';\n\n // 8. If needDefaults is true and defaults is either \"time\" or \"all\", then\n if (needDefaults && (defaults === 'time' || defaults === 'all'))\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.hour = options.minute = options.second = 'numeric';\n\n // 9. Return options.\n return options;\n}\n\n/**\n * When the BasicFormatMatcher abstract operation is called with two arguments options and\n * formats, the following steps are taken:\n */\nfunction BasicFormatMatcher(options, formats) {\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, property) ? format[property] : undefined;\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta === 2) score -= longMorePenalty;\n\n // 6. Else if delta = 1, decrease score by shortMorePenalty.\n else if (delta === 1) score -= shortMorePenalty;\n\n // 7. Else if delta = -1, decrease score by shortLessPenalty.\n else if (delta === -1) score -= shortLessPenalty;\n\n // 8. Else if delta = -2, decrease score by longLessPenalty.\n else if (delta === -2) score -= longLessPenalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/**\n * When the BestFitFormatMatcher abstract operation is called with two arguments options\n * and formats, it performs implementation dependent steps, which should return a set of\n * component representations that a typical user of the selected locale would perceive as\n * at least as good as the one returned by BasicFormatMatcher.\n *\n * This polyfill defines the algorithm to be the same as BasicFormatMatcher,\n * with the addition of bonus points awarded where the requested format is of\n * the same data type as the potentially matching format.\n *\n * This algo relies on the concept of closest distance matching described here:\n * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n * Typically a “best match” is found using a closest distance match, such as:\n *\n * Symbols requesting a best choice for the locale are replaced.\n * j → one of {H, k, h, K}; C → one of {a, b, B}\n * -> Covered by cldr.js matching process\n *\n * For fields with symbols representing the same type (year, month, day, etc):\n * Most symbols have a small distance from each other.\n * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ...\n * -> Covered by cldr.js matching process\n *\n * Width differences among fields, other than those marking text vs numeric, are given small distance from each other.\n * MMM ≅ MMMM\n * MM ≅ M\n * Numeric and text fields are given a larger distance from each other.\n * MMM ≈ MM\n * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other.\n * d ≋ D; ...\n * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields).\n *\n *\n * For example,\n *\n * { month: 'numeric', day: 'numeric' }\n *\n * should match\n *\n * { month: '2-digit', day: '2-digit' }\n *\n * rather than\n *\n * { month: 'short', day: 'numeric' }\n *\n * This makes sense because a user requesting a formatted date with numeric parts would\n * not expect to see the returned format containing narrow, short or long part names\n */\nfunction BestFitFormatMatcher(options, formats) {\n /** Diverging: this block implements the hack for single property configuration, eg.:\n *\n * `new Intl.DateTimeFormat('en', {day: 'numeric'})`\n *\n * should produce a single digit with the day of the month. This is needed because\n * CLDR `availableFormats` data structure doesn't cover these cases.\n */\n {\n var optionsPropNames = [];\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n if (options['[[' + property + ']]'] !== undefined) {\n optionsPropNames.push(property);\n }\n }\n if (optionsPropNames.length === 1) {\n var _bestFormat = generateSyntheticFormat(optionsPropNames[0], options['[[' + optionsPropNames[0] + ']]']);\n if (_bestFormat) {\n return _bestFormat;\n }\n }\n }\n\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n var patternPenalty = 2;\n\n var hour12Penalty = 1;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var _property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + _property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, _property) ? format[_property] : undefined;\n\n // Diverging: using the default properties produced by the pattern/skeleton\n // to match it with user options, and apply a penalty\n var patternProp = hop.call(format._, _property) ? format._[_property] : undefined;\n if (optionsProp !== patternProp) {\n score -= patternPenalty;\n }\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n {\n // diverging from spec\n // When the bestFit argument is true, subtract additional penalty where data types are not the same\n if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty;\n } else {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty;\n }\n }\n }\n }\n\n {\n // diverging to also take into consideration differences between 12 or 24 hours\n // which is special for the best fit only.\n if (format._.hour12 !== options.hour12) {\n score -= hour12Penalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/* 12.2.3 */internals.DateTimeFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['ca', 'nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the\n * following steps are taken:\n */\n/* 12.2.2 */\ndefineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * DateTimeFormat object.\n */\n/* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatDateTime\n});\n\nfunction GetFormatDateTime() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this DateTimeFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 0, that takes the argument date and\n // performs the following steps:\n var F = function F() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n // i. If date is not provided or is undefined, then let x be the\n // result as if by the expression Date.now() where Date.now is\n // the standard built-in function defined in ES5, 15.9.4.4.\n // ii. Else let x be ToNumber(date).\n // iii. Return the result of calling the FormatDateTime abstract\n // operation (defined below) with arguments this and x.\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatDateTime(this, x);\n };\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts$1() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.');\n\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatToPartsDateTime(this, x);\n}\n\nObject.defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: formatToParts$1\n});\n\nfunction CreateDateTimeParts(dateTimeFormat, x) {\n // 1. If x is not a finite Number, then throw a RangeError exception.\n if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format');\n\n var internal = dateTimeFormat.__getInternalProperties(secret);\n\n // Creating restore point for properties on the RegExp object... please wait\n /* let regexpRestore = */createRegExpRestore(); // ###TODO: review this\n\n // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat.\n var locale = internal['[[locale]]'];\n\n // 3. Let nf be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {useGrouping: false}) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n var nf = new Intl.NumberFormat([locale], { useGrouping: false });\n\n // 4. Let nf2 be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping:\n // false}) where Intl.NumberFormat is the standard built-in constructor defined in\n // 11.1.3.\n var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false });\n\n // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined\n // below) with x, the value of the [[calendar]] internal property of dateTimeFormat,\n // and the value of the [[timeZone]] internal property of dateTimeFormat.\n var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']);\n\n // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat.\n var pattern = internal['[[pattern]]'];\n\n // 7.\n var result = new List();\n\n // 8.\n var index = 0;\n\n // 9.\n var beginIndex = pattern.indexOf('{');\n\n // 10.\n var endIndex = 0;\n\n // Need the locale minus any extensions\n var dataLocale = internal['[[dataLocale]]'];\n\n // Need the calendar data from CLDR\n var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars;\n var ca = internal['[[calendar]]'];\n\n // 11.\n while (beginIndex !== -1) {\n var fv = void 0;\n // a.\n endIndex = pattern.indexOf('}', beginIndex);\n // b.\n if (endIndex === -1) {\n throw new Error('Unclosed pattern');\n }\n // c.\n if (beginIndex > index) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(index, beginIndex)\n });\n }\n // d.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // e.\n if (dateTimeComponents.hasOwnProperty(p)) {\n // i. Let f be the value of the [[

]] internal property of dateTimeFormat.\n var f = internal['[[' + p + ']]'];\n // ii. Let v be the value of tm.[[

]].\n var v = tm['[[' + p + ']]'];\n // iii. If p is \"year\" and v ≤ 0, then let v be 1 - v.\n if (p === 'year' && v <= 0) {\n v = 1 - v;\n }\n // iv. If p is \"month\", then increase v by 1.\n else if (p === 'month') {\n v++;\n }\n // v. If p is \"hour\" and the value of the [[hour12]] internal property of\n // dateTimeFormat is true, then\n else if (p === 'hour' && internal['[[hour12]]'] === true) {\n // 1. Let v be v modulo 12.\n v = v % 12;\n // 2. If v is 0 and the value of the [[hourNo0]] internal property of\n // dateTimeFormat is true, then let v be 12.\n if (v === 0 && internal['[[hourNo0]]'] === true) {\n v = 12;\n }\n }\n\n // vi. If f is \"numeric\", then\n if (f === 'numeric') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments nf and v.\n fv = FormatNumber(nf, v);\n }\n // vii. Else if f is \"2-digit\", then\n else if (f === '2-digit') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // with arguments nf2 and v.\n fv = FormatNumber(nf2, v);\n // 2. If the length of fv is greater than 2, let fv be the substring of fv\n // containing the last two characters.\n if (fv.length > 2) {\n fv = fv.slice(-2);\n }\n }\n // viii. Else if f is \"narrow\", \"short\", or \"long\", then let fv be a String\n // value representing f in the desired form; the String value depends upon\n // the implementation and the effective locale and calendar of\n // dateTimeFormat. If p is \"month\", then the String value may also depend\n // on whether dateTimeFormat has a [[day]] internal property. If p is\n // \"timeZoneName\", then the String value may also depend on the value of\n // the [[inDST]] field of tm.\n else if (f in dateWidths) {\n switch (p) {\n case 'month':\n fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']);\n break;\n\n case 'weekday':\n try {\n fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']);\n // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']];\n } catch (e) {\n throw new Error('Could not find weekday data for locale ' + locale);\n }\n break;\n\n case 'timeZoneName':\n fv = ''; // ###TODO\n break;\n\n case 'era':\n try {\n fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']);\n } catch (e) {\n throw new Error('Could not find era data for locale ' + locale);\n }\n break;\n\n default:\n fv = tm['[[' + p + ']]'];\n }\n }\n // ix\n arrPush.call(result, {\n type: p,\n value: fv\n });\n // f.\n } else if (p === 'ampm') {\n // i.\n var _v = tm['[[hour]]'];\n // ii./iii.\n fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null);\n // iv.\n arrPush.call(result, {\n type: 'dayPeriod',\n value: fv\n });\n // g.\n } else {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(beginIndex, endIndex + 1)\n });\n }\n // h.\n index = endIndex + 1;\n // i.\n beginIndex = pattern.indexOf('{', index);\n }\n // 12.\n if (endIndex < pattern.length - 1) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substr(endIndex + 1)\n });\n }\n // 13.\n return result;\n}\n\n/**\n * When the FormatDateTime abstract operation is called with arguments dateTimeFormat\n * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number\n * value), it returns a String value representing x (interpreted as a time value as\n * specified in ES5, 15.9.1.1) according to the effective locale and the formatting\n * options of dateTimeFormat.\n */\nfunction FormatDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = '';\n\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result += part.value;\n }\n return result;\n}\n\nfunction FormatToPartsDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = [];\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result.push({\n type: part.type,\n value: part.value\n });\n }\n return result;\n}\n\n/**\n * When the ToLocalTime abstract operation is called with arguments date, calendar, and\n * timeZone, the following steps are taken:\n */\nfunction ToLocalTime(date, calendar, timeZone) {\n // 1. Apply calendrical calculations on date for the given calendar and time zone to\n // produce weekday, era, year, month, day, hour, minute, second, and inDST values.\n // The calculations should use best available information about the specified\n // calendar and time zone. If the calendar is \"gregory\", then the calculations must\n // match the algorithms specified in ES5, 15.9.1, except that calculations are not\n // bound by the restrictions on the use of best available information on time zones\n // for local time zone adjustment and daylight saving time adjustment imposed by\n // ES5, 15.9.1.7 and 15.9.1.8.\n // ###TODO###\n var d = new Date(date),\n m = 'get' + (timeZone || '');\n\n // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]],\n // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding\n // calculated value.\n return new Record({\n '[[weekday]]': d[m + 'Day'](),\n '[[era]]': +(d[m + 'FullYear']() >= 0),\n '[[year]]': d[m + 'FullYear'](),\n '[[month]]': d[m + 'Month'](),\n '[[day]]': d[m + 'Date'](),\n '[[hour]]': d[m + 'Hours'](),\n '[[minute]]': d[m + 'Minutes'](),\n '[[second]]': d[m + 'Seconds'](),\n '[[inDST]]': false // ###TODO###\n });\n}\n\n/**\n * The function returns a new object whose properties and attributes are set as if\n * constructed by an object literal assigning to each of the following properties the\n * value of the corresponding internal property of this DateTimeFormat object (see 12.4):\n * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day,\n * hour, minute, second, and timeZoneName. Properties whose corresponding internal\n * properties are not present are not assigned.\n */\n/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {\n writable: true,\n configurable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\nvar ls = Intl.__localeSensitiveProtos = {\n Number: {},\n Date: {}\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.2.1 */ls.Number.toLocaleString = function () {\n // Satisfy test 13.2.1_1\n if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()');\n\n // 1. Let x be this Number value (as defined in ES5, 15.7.4).\n // 2. If locales is not provided, then let locales be undefined.\n // 3. If options is not provided, then let options be undefined.\n // 4. Let numberFormat be the result of creating a new object as if by the\n // expression new Intl.NumberFormat(locales, options) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n // 5. Return the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments numberFormat and x.\n return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this);\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.3.1 */ls.Date.toLocaleString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"any\", and \"all\".\n options = ToDateTimeOptions(options, 'any', 'all');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleDateString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.2 */ls.Date.toLocaleDateString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0],\n\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"date\", and \"date\".\n options = ToDateTimeOptions(options, 'date', 'date');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleTimeString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.3 */ls.Date.toLocaleTimeString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"time\", and \"time\".\n options = ToDateTimeOptions(options, 'time', 'time');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\ndefineProperty(Intl, '__applyLocaleSensitivePrototypes', {\n writable: true,\n configurable: true,\n value: function value() {\n defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString });\n // Need this here for IE 8, to avoid the _DontEnum_ bug\n defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString });\n\n for (var k in ls.Date) {\n if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] });\n }\n }\n});\n\n/**\n * Can't really ship a single script with data for hundreds of locales, so we provide\n * this __addLocaleData method as a means for the developer to add the data on an\n * as-needed basis\n */\ndefineProperty(Intl, '__addLocaleData', {\n value: function value(data) {\n if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error(\"Object passed doesn't identify itself with a valid language tag\");\n\n addLocaleData(data, data.locale);\n }\n});\n\nfunction addLocaleData(data, tag) {\n // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present\n if (!data.number) throw new Error(\"Object passed doesn't contain locale data for Intl.NumberFormat\");\n\n var locale = void 0,\n locales = [tag],\n parts = tag.split('-');\n\n // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc\n if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]);\n\n while (locale = arrShift.call(locales)) {\n // Add to NumberFormat internal properties as per 11.2.3\n arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale);\n internals.NumberFormat['[[localeData]]'][locale] = data.number;\n\n // ...and DateTimeFormat internal properties as per 12.2.3\n if (data.date) {\n data.date.nu = data.number.nu;\n arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale);\n internals.DateTimeFormat['[[localeData]]'][locale] = data.date;\n }\n }\n\n // If this is the first set of locale data added, make it the default\n if (defaultLocale === undefined) setDefaultLocale(tag);\n}\n\ndefineProperty(Intl, '__disableRegExpRestore', {\n value: function value() {\n internals.disableRegExpRestore = true;\n }\n});\n\nmodule.exports = Intl;","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","// Console-polyfill. MIT license.\n// https://github.com/paulmillr/console-polyfill\n// Make it safe to do console.log() always.\n(function(global) {\n 'use strict';\n if (!global.console) {\n global.console = {};\n }\n var con = global.console;\n var prop, method;\n var dummy = function() {};\n var properties = ['memory'];\n var methods = ('assert,clear,count,debug,dir,dirxml,error,exception,group,' +\n 'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' +\n 'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',');\n while (prop = properties.pop()) if (!con[prop]) con[prop] = {};\n while (method = methods.pop()) if (!con[method]) con[method] = dummy;\n // Using `this` for web workers & supports Browserify / Webpack.\n})(typeof window === 'undefined' ? this : window);\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.on = on;\nexports.off = off;\nfunction on(el, eventName, callback, opts) {\n opts = opts || false;\n if (el.addEventListener) {\n el.addEventListener(eventName, callback, opts);\n } else if (el.attachEvent) {\n el.attachEvent(\"on\" + eventName, function (e) {\n callback.call(el, e || window.event);\n });\n }\n}\n\nfunction off(el, eventName, callback, opts) {\n opts = opts || false;\n if (el.removeEventListener) {\n el.removeEventListener(eventName, callback, opts);\n } else if (el.detachEvent) {\n el.detachEvent(\"on\" + eventName, callback);\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * @fileOverview Find scroll parent\n */\n\nexports.default = function (node) {\n if (!(node instanceof HTMLElement)) {\n return document.documentElement;\n }\n\n var excludeStaticParent = node.style.position === 'absolute';\n var overflowRegex = /(scroll|auto)/;\n var parent = node;\n\n while (parent) {\n if (!parent.parentNode) {\n return node.ownerDocument || document.documentElement;\n }\n\n var style = window.getComputedStyle(parent);\n var position = style.position;\n var overflow = style.overflow;\n var overflowX = style['overflow-x'];\n var overflowY = style['overflow-y'];\n\n if (position === 'static' && excludeStaticParent) {\n parent = parent.parentNode;\n continue;\n }\n\n if (overflowRegex.test(overflow) && overflowRegex.test(overflowX) && overflowRegex.test(overflowY)) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n\n return node.ownerDocument || node.documentElement || document.documentElement;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = debounce;\nfunction debounce(func, wait, immediate) {\n var timeout = void 0;\n var args = void 0;\n var context = void 0;\n var timestamp = void 0;\n var result = void 0;\n\n var later = function later() {\n var last = +new Date() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n if (!timeout) {\n context = null;\n args = null;\n }\n }\n }\n };\n\n return function debounced() {\n context = this;\n args = arguments;\n timestamp = +new Date();\n\n var callNow = immediate && !timeout;\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n\n if (callNow) {\n result = func.apply(context, args);\n context = null;\n args = null;\n }\n\n return result;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = throttle;\n/*eslint-disable */\nfunction throttle(fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last, deferTimer;\n return function () {\n var context = scope || this;\n\n var now = +new Date(),\n args = arguments;\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n }).join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key') : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key');\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value'))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj; // eslint-disable-line no-param-reassign\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n})(TYPE || (TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === 0 /* number */);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === 1 /* dateTime */);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// tslint:disable:only-arrow-functions\n// tslint:disable:object-literal-shorthand\n// tslint:disable:trailing-comma\n// tslint:disable:object-literal-sort-keys\n// tslint:disable:one-variable-per-declaration\n// tslint:disable:max-line-length\n// tslint:disable:no-consecutive-blank-lines\n// tslint:disable:align\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n// Generated by PEG.js v. 0.10.0 (ts-pegjs plugin v. 0.2.6 )\n//\n// https://pegjs.org/ https://github.com/metadevpro/ts-pegjs\nimport { TYPE, } from './types';\nvar SyntaxError = /** @class */ (function (_super) {\n __extends(SyntaxError, _super);\n function SyntaxError(message, expected, found, location) {\n var _this = _super.call(this) || this;\n _this.message = message;\n _this.expected = expected;\n _this.found = found;\n _this.location = location;\n _this.name = \"SyntaxError\";\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(_this, SyntaxError);\n }\n return _this;\n }\n SyntaxError.buildMessage = function (expected, found) {\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) { return \"\\\\x\" + hex(ch); });\n }\n function describeExpectation(expectation) {\n switch (expectation.type) {\n case \"literal\":\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n case \"class\":\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n case \"any\":\n return \"any character\";\n case \"end\":\n return \"end of input\";\n case \"other\":\n return expectation.description;\n }\n }\n function describeExpected(expected1) {\n var descriptions = expected1.map(describeExpectation);\n var i;\n var j;\n descriptions.sort();\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n function describeFound(found1) {\n return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n }\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n };\n return SyntaxError;\n}(Error));\nexport { SyntaxError };\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n var peg$FAILED = {};\n var peg$startRuleFunctions = { start: peg$parsestart };\n var peg$startRuleFunction = peg$parsestart;\n var peg$c0 = function (parts) {\n return parts.join('');\n };\n var peg$c1 = function (messageText) {\n return __assign({ type: TYPE.literal, value: messageText }, insertLocation());\n };\n var peg$c2 = \"#\";\n var peg$c3 = peg$literalExpectation(\"#\", false);\n var peg$c4 = function () {\n return __assign({ type: TYPE.pound }, insertLocation());\n };\n var peg$c5 = peg$otherExpectation(\"argumentElement\");\n var peg$c6 = \"{\";\n var peg$c7 = peg$literalExpectation(\"{\", false);\n var peg$c8 = \"}\";\n var peg$c9 = peg$literalExpectation(\"}\", false);\n var peg$c10 = function (value) {\n return __assign({ type: TYPE.argument, value: value }, insertLocation());\n };\n var peg$c11 = peg$otherExpectation(\"numberSkeletonId\");\n var peg$c12 = /^['\\/{}]/;\n var peg$c13 = peg$classExpectation([\"'\", \"/\", \"{\", \"}\"], false, false);\n var peg$c14 = peg$anyExpectation();\n var peg$c15 = peg$otherExpectation(\"numberSkeletonTokenOption\");\n var peg$c16 = \"/\";\n var peg$c17 = peg$literalExpectation(\"/\", false);\n var peg$c18 = function (option) { return option; };\n var peg$c19 = peg$otherExpectation(\"numberSkeletonToken\");\n var peg$c20 = function (stem, options) {\n return { stem: stem, options: options };\n };\n var peg$c21 = function (tokens) {\n return __assign({ type: 0 /* number */, tokens: tokens }, insertLocation());\n };\n var peg$c22 = \"::\";\n var peg$c23 = peg$literalExpectation(\"::\", false);\n var peg$c24 = function (skeleton) { return skeleton; };\n var peg$c25 = function () { messageCtx.push('numberArgStyle'); return true; };\n var peg$c26 = function (style) {\n messageCtx.pop();\n return style.replace(/\\s*$/, '');\n };\n var peg$c27 = \",\";\n var peg$c28 = peg$literalExpectation(\",\", false);\n var peg$c29 = \"number\";\n var peg$c30 = peg$literalExpectation(\"number\", false);\n var peg$c31 = function (value, type, style) {\n return __assign({ type: type === 'number' ? TYPE.number : type === 'date' ? TYPE.date : TYPE.time, style: style && style[2], value: value }, insertLocation());\n };\n var peg$c32 = \"'\";\n var peg$c33 = peg$literalExpectation(\"'\", false);\n var peg$c34 = /^[^']/;\n var peg$c35 = peg$classExpectation([\"'\"], true, false);\n var peg$c36 = /^[^a-zA-Z'{}]/;\n var peg$c37 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"'\", \"{\", \"}\"], true, false);\n var peg$c38 = /^[a-zA-Z]/;\n var peg$c39 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n var peg$c40 = function (pattern) {\n return __assign({ type: 1 /* dateTime */, pattern: pattern }, insertLocation());\n };\n var peg$c41 = function () { messageCtx.push('dateOrTimeArgStyle'); return true; };\n var peg$c42 = \"date\";\n var peg$c43 = peg$literalExpectation(\"date\", false);\n var peg$c44 = \"time\";\n var peg$c45 = peg$literalExpectation(\"time\", false);\n var peg$c46 = \"plural\";\n var peg$c47 = peg$literalExpectation(\"plural\", false);\n var peg$c48 = \"selectordinal\";\n var peg$c49 = peg$literalExpectation(\"selectordinal\", false);\n var peg$c50 = \"offset:\";\n var peg$c51 = peg$literalExpectation(\"offset:\", false);\n var peg$c52 = function (value, pluralType, offset, options) {\n return __assign({ type: TYPE.plural, pluralType: pluralType === 'plural' ? 'cardinal' : 'ordinal', value: value, offset: offset ? offset[2] : 0, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in plural element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c53 = \"select\";\n var peg$c54 = peg$literalExpectation(\"select\", false);\n var peg$c55 = function (value, options) {\n return __assign({ type: TYPE.select, value: value, options: options.reduce(function (all, _a) {\n var id = _a.id, value = _a.value, optionLocation = _a.location;\n if (id in all) {\n error(\"Duplicate option \\\"\" + id + \"\\\" in select element: \\\"\" + text() + \"\\\"\", location());\n }\n all[id] = {\n value: value,\n location: optionLocation\n };\n return all;\n }, {}) }, insertLocation());\n };\n var peg$c56 = \"=\";\n var peg$c57 = peg$literalExpectation(\"=\", false);\n var peg$c58 = function (id) { messageCtx.push('select'); return true; };\n var peg$c59 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c60 = function (id) { messageCtx.push('plural'); return true; };\n var peg$c61 = function (id, value) {\n messageCtx.pop();\n return __assign({ id: id,\n value: value }, insertLocation());\n };\n var peg$c62 = peg$otherExpectation(\"whitespace\");\n var peg$c63 = /^[\\t-\\r \\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n var peg$c64 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\xA0\", \"\\u1680\", [\"\\u2000\", \"\\u200A\"], \"\\u2028\", \"\\u2029\", \"\\u202F\", \"\\u205F\", \"\\u3000\"], false, false);\n var peg$c65 = peg$otherExpectation(\"syntax pattern\");\n var peg$c66 = /^[!-\\/:-@[-\\^`{-~\\xA1-\\xA7\\xA9\\xAB\\xAC\\xAE\\xB0\\xB1\\xB6\\xBB\\xBF\\xD7\\xF7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]/;\n var peg$c67 = peg$classExpectation([[\"!\", \"/\"], [\":\", \"@\"], [\"[\", \"^\"], \"`\", [\"{\", \"~\"], [\"\\xA1\", \"\\xA7\"], \"\\xA9\", \"\\xAB\", \"\\xAC\", \"\\xAE\", \"\\xB0\", \"\\xB1\", \"\\xB6\", \"\\xBB\", \"\\xBF\", \"\\xD7\", \"\\xF7\", [\"\\u2010\", \"\\u2027\"], [\"\\u2030\", \"\\u203E\"], [\"\\u2041\", \"\\u2053\"], [\"\\u2055\", \"\\u205E\"], [\"\\u2190\", \"\\u245F\"], [\"\\u2500\", \"\\u2775\"], [\"\\u2794\", \"\\u2BFF\"], [\"\\u2E00\", \"\\u2E7F\"], [\"\\u3001\", \"\\u3003\"], [\"\\u3008\", \"\\u3020\"], \"\\u3030\", \"\\uFD3E\", \"\\uFD3F\", \"\\uFE45\", \"\\uFE46\"], false, false);\n var peg$c68 = peg$otherExpectation(\"optional whitespace\");\n var peg$c69 = peg$otherExpectation(\"number\");\n var peg$c70 = \"-\";\n var peg$c71 = peg$literalExpectation(\"-\", false);\n var peg$c72 = function (negative, num) {\n return num\n ? negative\n ? -num\n : num\n : 0;\n };\n var peg$c73 = peg$otherExpectation(\"apostrophe\");\n var peg$c74 = peg$otherExpectation(\"double apostrophes\");\n var peg$c75 = \"''\";\n var peg$c76 = peg$literalExpectation(\"''\", false);\n var peg$c77 = function () { return \"'\"; };\n var peg$c78 = function (escapedChar, quotedChars) {\n return escapedChar + quotedChars.replace(\"''\", \"'\");\n };\n var peg$c79 = function (x) {\n return (x !== '{' &&\n !(isInPluralOption() && x === '#') &&\n !(isNestedMessageText() && x === '}'));\n };\n var peg$c80 = \"\\n\";\n var peg$c81 = peg$literalExpectation(\"\\n\", false);\n var peg$c82 = function (x) {\n return x === '{' || x === '}' || (isInPluralOption() && x === '#');\n };\n var peg$c83 = peg$otherExpectation(\"argNameOrNumber\");\n var peg$c84 = peg$otherExpectation(\"argNumber\");\n var peg$c85 = \"0\";\n var peg$c86 = peg$literalExpectation(\"0\", false);\n var peg$c87 = function () { return 0; };\n var peg$c88 = /^[1-9]/;\n var peg$c89 = peg$classExpectation([[\"1\", \"9\"]], false, false);\n var peg$c90 = /^[0-9]/;\n var peg$c91 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$c92 = function (digits) {\n return parseInt(digits.join(''), 10);\n };\n var peg$c93 = peg$otherExpectation(\"argName\");\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n var peg$result;\n if (options.startRule !== undefined) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n function expected(description, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildStructuredError([peg$otherExpectation(description)], input.substring(peg$savedPos, peg$currPos), location1);\n }\n function error(message, location1) {\n location1 = location1 !== undefined\n ? location1\n : peg$computeLocation(peg$savedPos, peg$currPos);\n throw peg$buildSimpleError(message, location1);\n }\n function peg$literalExpectation(text1, ignoreCase) {\n return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n }\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n if (details) {\n return details;\n }\n else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n }\n else {\n details.column++;\n }\n p++;\n }\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n function peg$fail(expected1) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n peg$maxFailExpected.push(expected1);\n }\n function peg$buildSimpleError(message, location1) {\n return new SyntaxError(message, [], \"\", location1);\n }\n function peg$buildStructuredError(expected1, found, location1) {\n return new SyntaxError(SyntaxError.buildMessage(expected1, found), expected1, found, location1);\n }\n function peg$parsestart() {\n var s0;\n s0 = peg$parsemessage();\n return s0;\n }\n function peg$parsemessage() {\n var s0, s1;\n s0 = [];\n s1 = peg$parsemessageElement();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsemessageElement();\n }\n return s0;\n }\n function peg$parsemessageElement() {\n var s0;\n s0 = peg$parseliteralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesimpleFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepoundElement();\n }\n }\n }\n }\n }\n return s0;\n }\n function peg$parsemessageText() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedoubleApostrophes();\n if (s2 === peg$FAILED) {\n s2 = peg$parsequotedString();\n if (s2 === peg$FAILED) {\n s2 = peg$parseunquotedString();\n }\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parseliteralElement() {\n var s0, s1;\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsepoundElement() {\n var s0, s1;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c2;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c3);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4();\n }\n s0 = s1;\n return s0;\n }\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c8;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c10(s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonId() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c12.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n if (peg$c12.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c11);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonTokenOption() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c16;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c17);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c15);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeletonToken() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeletonId();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsenumberSkeletonTokenOption();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsenumberSkeletonTokenOption();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c19);\n }\n }\n return s0;\n }\n function peg$parsenumberSkeleton() {\n var s0, s1, s2;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsenumberSkeletonToken();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsenumberSkeletonToken();\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsenumberArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumberSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c25();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsenumberFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c29) {\n s7 = peg$c29;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c30);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c27;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsenumberArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c8;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonLiteral() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c32;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedoubleApostrophes();\n if (s3 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c32;\n peg$currPos++;\n }\n else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = [];\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedoubleApostrophes();\n if (s1 === peg$FAILED) {\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateTimeSkeletonPattern() {\n var s0, s1;\n s0 = [];\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c38.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c39);\n }\n }\n }\n }\n else {\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsedateTimeSkeleton() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsedateTimeSkeletonLiteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsedateTimeSkeletonPattern();\n }\n }\n }\n else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n }\n else {\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1);\n }\n s0 = s1;\n return s0;\n }\n function peg$parsedateOrTimeArgStyle() {\n var s0, s1, s2;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedateTimeSkeleton();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c41();\n if (s1) {\n s1 = undefined;\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemessageText();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n return s0;\n }\n function peg$parsedateOrTimeFormatElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c42) {\n s7 = peg$c42;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c43);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c44) {\n s7 = peg$c44;\n peg$currPos += 4;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c45);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s10 = peg$c27;\n peg$currPos++;\n }\n else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse_();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsedateOrTimeArgStyle();\n if (s12 !== peg$FAILED) {\n s10 = [s10, s11, s12];\n s9 = s10;\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s11 = peg$c8;\n peg$currPos++;\n }\n else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s3, s7, s9);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsesimpleFormatElement() {\n var s0;\n s0 = peg$parsenumberFormatElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedateOrTimeFormatElement();\n }\n return s0;\n }\n function peg$parsepluralElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c46) {\n s7 = peg$c46;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c47);\n }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c48) {\n s7 = peg$c48;\n peg$currPos += 13;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c49);\n }\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c27;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c50) {\n s12 = peg$c50;\n peg$currPos += 7;\n }\n else {\n s12 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c51);\n }\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsenumber();\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n s13 = [];\n s14 = peg$parsepluralOption();\n if (s14 !== peg$FAILED) {\n while (s14 !== peg$FAILED) {\n s13.push(s14);\n s14 = peg$parsepluralOption();\n }\n }\n else {\n s13 = peg$FAILED;\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse_();\n if (s14 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s15 = peg$c8;\n peg$currPos++;\n }\n else {\n s15 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s15 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52(s3, s7, s11, s13);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseselectElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c6;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargNameOrNumber();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c27;\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c53) {\n s7 = peg$c53;\n peg$currPos += 6;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c54);\n }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c27;\n peg$currPos++;\n }\n else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c28);\n }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = [];\n s12 = peg$parseselectOption();\n if (s12 !== peg$FAILED) {\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n s12 = peg$parseselectOption();\n }\n }\n else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c8;\n peg$currPos++;\n }\n else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55(s3, s11);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralRuleSelectValue() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c56;\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c57);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseargName();\n }\n return s0;\n }\n function peg$parseselectOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c6;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c58(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c8;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsepluralOption() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralRuleSelectValue();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c6;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c60(s2);\n if (s5) {\n s5 = undefined;\n }\n else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessage();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c8;\n peg$currPos++;\n }\n else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c9);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61(s2, s6);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parsewhiteSpace() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c63.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c64);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c62);\n }\n }\n return s0;\n }\n function peg$parsepatternSyntax() {\n var s0, s1;\n peg$silentFails++;\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c67);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c65);\n }\n }\n return s0;\n }\n function peg$parse_() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewhiteSpace();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewhiteSpace();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c68);\n }\n }\n return s0;\n }\n function peg$parsenumber() {\n var s0, s1, s2;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c70;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c71);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseargNumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c72(s1, s2);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c69);\n }\n }\n return s0;\n }\n function peg$parseapostrophe() {\n var s0, s1;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s0 = peg$c32;\n peg$currPos++;\n }\n else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c73);\n }\n }\n return s0;\n }\n function peg$parsedoubleApostrophes() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s1 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c74);\n }\n }\n return s0;\n }\n function peg$parsequotedString() {\n var s0, s1, s2, s3, s4, s5;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c32;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseescapedChar();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n s4 = [];\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s5 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (input.substr(peg$currPos, 2) === peg$c75) {\n s5 = peg$c75;\n peg$currPos += 2;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c76);\n }\n }\n if (s5 === peg$FAILED) {\n if (peg$c34.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c35);\n }\n }\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = input.substring(s3, peg$currPos);\n }\n else {\n s3 = s4;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c32;\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c33);\n }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c78(s2, s3);\n s0 = s1;\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n return s0;\n }\n function peg$parseunquotedString() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c79(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c80;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c81);\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseescapedChar() {\n var s0, s1, s2, s3;\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c82(s2);\n if (s3) {\n s3 = undefined;\n }\n else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n return s0;\n }\n function peg$parseargNameOrNumber() {\n var s0, s1;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parseargNumber();\n if (s1 === peg$FAILED) {\n s1 = peg$parseargName();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c83);\n }\n }\n return s0;\n }\n function peg$parseargNumber() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c85;\n peg$currPos++;\n }\n else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c86);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c87();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c88.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c89);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c90.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c91);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c90.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c91);\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c92(s1);\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c84);\n }\n }\n return s0;\n }\n function peg$parseargName() {\n var s0, s1, s2, s3, s4;\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parsewhiteSpace();\n if (s4 === peg$FAILED) {\n s4 = peg$parsepatternSyntax();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = undefined;\n }\n else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n }\n else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c14);\n }\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n }\n else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n }\n else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c93);\n }\n }\n return s0;\n }\n var messageCtx = ['root'];\n function isNestedMessageText() {\n return messageCtx.length > 1;\n }\n function isInPluralOption() {\n return messageCtx[messageCtx.length - 1] === 'plural';\n }\n function insertLocation() {\n return options && options.captureLocation ? {\n location: location()\n } : {};\n }\n peg$result = peg$startRuleFunction();\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n }\n else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));\n }\n}\nexport var pegParse = peg$parse;\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { isPluralElement, isLiteralElement, isSelectElement, } from './types';\nimport { pegParse } from './parser';\nvar PLURAL_HASHTAG_REGEX = /(^|[^\\\\])#/g;\n/**\n * Whether to convert `#` in plural rule options\n * to `{var, number}`\n * @param el AST Element\n * @param pluralStack current plural stack\n */\nexport function normalizeHashtagInPlural(els) {\n els.forEach(function (el) {\n // If we're encountering a plural el\n if (!isPluralElement(el) && !isSelectElement(el)) {\n return;\n }\n // Go down the options and search for # in any literal element\n Object.keys(el.options).forEach(function (id) {\n var _a;\n var opt = el.options[id];\n // If we got a match, we have to split this\n // and inject a NumberElement in the middle\n var matchingLiteralElIndex = -1;\n var literalEl = undefined;\n for (var i = 0; i < opt.value.length; i++) {\n var el_1 = opt.value[i];\n if (isLiteralElement(el_1) && PLURAL_HASHTAG_REGEX.test(el_1.value)) {\n matchingLiteralElIndex = i;\n literalEl = el_1;\n break;\n }\n }\n if (literalEl) {\n var newValue = literalEl.value.replace(PLURAL_HASHTAG_REGEX, \"$1{\" + el.value + \", number}\");\n var newEls = pegParse(newValue);\n (_a = opt.value).splice.apply(_a, __spreadArrays([matchingLiteralElIndex, 1], newEls));\n }\n normalizeHashtagInPlural(opt.value);\n });\n });\n}\n","import { pegParse } from './parser';\nimport { normalizeHashtagInPlural } from './normalize';\nexport * from './types';\nexport * from './parser';\nexport * from './skeleton';\nexport function parse(input, opts) {\n var els = pegParse(input, opts);\n if (!opts || opts.normalizeHashtagInPlural !== false) {\n normalizeHashtagInPlural(els);\n }\n return els;\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n// -- Utilities ----------------------------------------------------------------\nfunction getCacheId(inputs) {\n return JSON.stringify(inputs.map(function (input) {\n return input && typeof input === 'object' ? orderedProps(input) : input;\n }));\n}\nfunction orderedProps(obj) {\n return Object.keys(obj)\n .sort()\n .map(function (k) {\n var _a;\n return (_a = {}, _a[k] = obj[k], _a);\n });\n}\nvar memoizeFormatConstructor = function (FormatConstructor, cache) {\n if (cache === void 0) { cache = {}; }\n return function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var cacheId = getCacheId(args);\n var format = cacheId && cache[cacheId];\n if (!format) {\n format = new ((_a = FormatConstructor).bind.apply(_a, __spreadArrays([void 0], args)))();\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n return format;\n };\n};\nexport default memoizeFormatConstructor;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) pattenrs are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) pattenrs are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\+|#+)?)?$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function convertNumberSkeletonToNumberFormatOptions(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n result.style = 'percent';\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n }\n // Precision\n // https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#fraction-precision\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (match, g1, g2) {\n // precision-integer case\n if (match === '.') {\n result.maximumFractionDigits = 0;\n }\n // .000+ case\n else if (g2 === '+') {\n result.minimumFractionDigits = g2.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumFractionDigits = g1.length;\n }\n // .00## or .000 case\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n if (token.options.length) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n }\n continue;\n }\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n }\n return result;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { convertNumberSkeletonToNumberFormatOptions, isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, parseDateTimeSkeleton, } from 'intl-messageformat-parser';\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, variableId) {\n var _this = _super.call(this, msg) || this;\n _this.variableId = variableId;\n return _this;\n }\n return FormatError;\n}(Error));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== 0 /* literal */ ||\n part.type !== 0 /* literal */) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: 0 /* literal */,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: 0 /* literal */,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: 0 /* literal */,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new FormatError(\"The intl string context variable \\\"\" + varName + \"\\\" was not provided to the string \\\"\" + originalMessage + \"\\\"\");\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: 1 /* argument */,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string' ? formats.date[el.style] : undefined;\n result.push({\n type: 0 /* literal */,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? parseDateTimeSkeleton(el.style.pattern)\n : undefined;\n result.push({\n type: 0 /* literal */,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? convertNumberSkeletonToNumberFormatOptions(el.style.tokens)\n : undefined;\n result.push({\n type: 0 /* literal */,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new RangeError(\"Invalid values for \\\"\" + el.value + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(el.options).join('\", \"') + \"\\\"\");\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\" + value];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\");\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new RangeError(\"Invalid values for \\\"\" + el.value + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(el.options).join('\", \"') + \"\\\"\");\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\nexport function formatToString(els, locales, formatters, formats, values, \n// For debugging\noriginalMessage) {\n var parts = formatToParts(els, locales, formatters, formats, values, undefined, originalMessage);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n return parts.reduce(function (all, part) { return (all += part.value); }, '');\n}\n// Singleton\nvar domParser;\nvar TOKEN_DELIMITER = '@@';\nvar TOKEN_REGEX = /@@(\\d+_\\d+)@@/g;\nvar counter = 0;\nfunction generateId() {\n return Date.now() + \"_\" + ++counter;\n}\nfunction restoreRichPlaceholderMessage(text, objectParts) {\n return text\n .split(TOKEN_REGEX)\n .filter(Boolean)\n .map(function (c) { return (objectParts[c] != null ? objectParts[c] : c); })\n .reduce(function (all, c) {\n if (!all.length) {\n all.push(c);\n }\n else if (typeof c === 'string' &&\n typeof all[all.length - 1] === 'string') {\n all[all.length - 1] += c;\n }\n else {\n all.push(c);\n }\n return all;\n }, []);\n}\n/**\n * Not exhaustive, just for sanity check\n */\nvar SIMPLE_XML_REGEX = /(<([0-9a-zA-Z-_]*?)>(.*?)<\\/([0-9a-zA-Z-_]*?)>)|(<[0-9a-zA-Z-_]*?\\/>)/;\nvar TEMPLATE_ID = Date.now() + '@@';\nvar VOID_ELEMENTS = [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n];\nfunction formatHTMLElement(el, objectParts, values) {\n var tagName = el.tagName;\n var outerHTML = el.outerHTML, textContent = el.textContent, childNodes = el.childNodes;\n // Regular text\n if (!tagName) {\n return restoreRichPlaceholderMessage(textContent || '', objectParts);\n }\n tagName = tagName.toLowerCase();\n var isVoidElement = ~VOID_ELEMENTS.indexOf(tagName);\n var formatFnOrValue = values[tagName];\n if (formatFnOrValue && isVoidElement) {\n throw new FormatError(tagName + \" is a self-closing tag and can not be used, please use another tag name.\");\n }\n if (!childNodes.length) {\n return [outerHTML];\n }\n var chunks = Array.prototype.slice.call(childNodes).reduce(function (all, child) {\n return all.concat(formatHTMLElement(child, objectParts, values));\n }, []);\n // Legacy HTML\n if (!formatFnOrValue) {\n return __spreadArrays([\"<\" + tagName + \">\"], chunks, [\"\"]);\n }\n // HTML Tag replacement\n if (typeof formatFnOrValue === 'function') {\n return [formatFnOrValue.apply(void 0, chunks)];\n }\n return [formatFnOrValue];\n}\nexport function formatHTMLMessage(els, locales, formatters, formats, values, \n// For debugging\noriginalMessage) {\n var parts = formatToParts(els, locales, formatters, formats, values, undefined, originalMessage);\n var objectParts = {};\n var formattedMessage = parts.reduce(function (all, part) {\n if (part.type === 0 /* literal */) {\n return (all += part.value);\n }\n var id = generateId();\n objectParts[id] = part.value;\n return (all += \"\" + TOKEN_DELIMITER + id + TOKEN_DELIMITER);\n }, '');\n // Not designed to filter out aggressively\n if (!SIMPLE_XML_REGEX.test(formattedMessage)) {\n return restoreRichPlaceholderMessage(formattedMessage, objectParts);\n }\n if (!values) {\n throw new FormatError('Message has placeholders but no values was given');\n }\n if (typeof DOMParser === 'undefined') {\n throw new FormatError('Cannot format XML message without DOMParser');\n }\n if (!domParser) {\n domParser = new DOMParser();\n }\n var content = domParser\n .parseFromString(\"\" + formattedMessage + \"\", 'text/html')\n .getElementById(TEMPLATE_ID);\n if (!content) {\n throw new FormatError(\"Malformed HTML message \" + formattedMessage);\n }\n var tagsToFormat = Object.keys(values).filter(function (varName) { return !!content.getElementsByTagName(varName).length; });\n // No tags to format\n if (!tagsToFormat.length) {\n return restoreRichPlaceholderMessage(formattedMessage, objectParts);\n }\n var caseSensitiveTags = tagsToFormat.filter(function (tagName) { return tagName !== tagName.toLowerCase(); });\n if (caseSensitiveTags.length) {\n throw new FormatError(\"HTML tag must be lowercased but the following tags are not: \" + caseSensitiveTags.join(', '));\n }\n // We're doing this since top node is `` which does not have a formatter\n return Array.prototype.slice\n .call(content.childNodes)\n .reduce(function (all, child) { return all.concat(formatHTMLElement(child, objectParts, values)); }, []);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { parse } from 'intl-messageformat-parser';\nimport memoizeIntlConstructor from 'intl-format-cache';\nimport { formatToString, formatToParts, formatHTMLMessage, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nexport function createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat, cache.number),\n getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat, cache.dateTime),\n getPluralRules: memoizeIntlConstructor(Intl.PluralRules, cache.pluralRules),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n return formatToString(_this.ast, _this.locales, _this.formatters, _this.formats, values, _this.message);\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.formatHTMLMessage = function (values) {\n return formatHTMLMessage(_this.ast, _this.locales, _this.formatters, _this.formats, values, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n normalizeHashtagInPlural: false,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n IntlMessageFormat.defaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport IntlMessageFormat from './core';\nexport * from './formatters';\nexport * from './core';\nexport default IntlMessageFormat;\n"],"sourceRoot":""}