From 7fb7ba150ee313dd42f3d91327fba8cb752e4526 Mon Sep 17 00:00:00 2001 From: Nikita Manovich <40690625+nmanovic@users.noreply.github.com> Date: Wed, 21 Aug 2019 13:04:37 +0300 Subject: [PATCH] Debug cvat-core inside cvat-ui (#655) * Added ability to debug cvat-core inside cvat-ui (use `ui.js: debug` configuration). * Fix a codacy issue. --- .vscode/launch.json | 15 ++++++++++----- cvat-ui/public/cvat-core.min.js.map | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 cvat-ui/public/cvat-core.min.js.map diff --git a/.vscode/launch.json b/.vscode/launch.json index e60884e7..ee8bb4fb 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,16 @@ "preLaunchTask": "ui.js: server", "name": "ui.js: debug", "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}/cvat-ui" + "webRoot": "${workspaceFolder}/cvat-ui", + "sourceMaps": true, + "sourceMapPathOverrides": { + "webpack://cvat/./*": "${workspaceFolder}/cvat-core/*", + "webpack:///./*": "${webRoot}/*", + "webpack:///src/*": "${webRoot}/*", + "webpack:///*": "*", + "webpack:///./~/*": "${webRoot}/node_modules/*" + }, + "smartStep": true, }, { "name": "server: django", @@ -157,10 +166,6 @@ "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "disableOptimisticBPs": true, - }, - { - "type": "chrome", - } ], "compounds": [ diff --git a/cvat-ui/public/cvat-core.min.js.map b/cvat-ui/public/cvat-core.min.js.map new file mode 100644 index 00000000..bf84f751 --- /dev/null +++ b/cvat-ui/public/cvat-core.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://cvat/webpack/bootstrap","webpack://cvat/./node_modules/core-js/internals/global.js","webpack://cvat/./node_modules/core-js/internals/well-known-symbol.js","webpack://cvat/./node_modules/core-js/internals/fails.js","webpack://cvat/./node_modules/core-js/internals/an-object.js","webpack://cvat/./node_modules/core-js/modules/es.array.iterator.js","webpack://cvat/./src/exceptions.js","webpack://cvat/./node_modules/axios/lib/utils.js","webpack://cvat/./node_modules/core-js/internals/has.js","webpack://cvat/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://cvat/./node_modules/core-js/modules/es.promise.js","webpack://cvat/./node_modules/core-js/internals/descriptors.js","webpack://cvat/./node_modules/core-js/internals/is-object.js","webpack://cvat/./node_modules/core-js/internals/hide.js","webpack://cvat/./node_modules/core-js/internals/export.js","webpack://cvat/./node_modules/core-js/internals/object-define-property.js","webpack://cvat/./node_modules/core-js/internals/classof-raw.js","webpack://cvat/./node_modules/core-js/internals/redefine.js","webpack://cvat/./node_modules/core-js/internals/internal-state.js","webpack://cvat/./src/server-proxy.js","webpack://cvat/./node_modules/store/src/util.js","webpack://cvat/./src/enums.js","webpack://cvat/./node_modules/core-js/internals/require-object-coercible.js","webpack://cvat/./node_modules/core-js/internals/is-pure.js","webpack://cvat/./node_modules/core-js/internals/set-to-string-tag.js","webpack://cvat/./node_modules/core-js/internals/a-function.js","webpack://cvat/./node_modules/core-js/internals/iterators.js","webpack://cvat/./src/plugins.js","webpack://cvat/./node_modules/core-js/internals/to-object.js","webpack://cvat/(webpack)/buildin/global.js","webpack://cvat/./node_modules/core-js/internals/create-property-descriptor.js","webpack://cvat/./node_modules/core-js/internals/to-indexed-object.js","webpack://cvat/./node_modules/core-js/internals/shared.js","webpack://cvat/./node_modules/core-js/internals/get-built-in.js","webpack://cvat/./node_modules/core-js/internals/to-length.js","webpack://cvat/./node_modules/core-js/internals/to-integer.js","webpack://cvat/./node_modules/core-js/internals/bind-context.js","webpack://cvat/./node_modules/core-js/internals/get-iterator-method.js","webpack://cvat/./src/session.js","webpack://cvat/./src/labels.js","webpack://cvat/./src/common.js","webpack://cvat/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://cvat/./node_modules/core-js/internals/to-primitive.js","webpack://cvat/./node_modules/core-js/internals/document-create-element.js","webpack://cvat/./node_modules/core-js/internals/set-global.js","webpack://cvat/./node_modules/core-js/internals/shared-key.js","webpack://cvat/./node_modules/core-js/internals/hidden-keys.js","webpack://cvat/./node_modules/core-js/internals/enum-bug-keys.js","webpack://cvat/./node_modules/core-js/internals/an-instance.js","webpack://cvat/./src/config.js","webpack://cvat/./node_modules/core-js/internals/string-multibyte.js","webpack://cvat/./node_modules/axios/lib/defaults.js","webpack://cvat/./src/object-state.js","webpack://cvat/./node_modules/core-js/modules/web.url.to-json.js","webpack://cvat/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://cvat/./node_modules/core-js/internals/indexed-object.js","webpack://cvat/./node_modules/core-js/internals/ie8-dom-define.js","webpack://cvat/./node_modules/core-js/internals/function-to-string.js","webpack://cvat/./node_modules/core-js/internals/uid.js","webpack://cvat/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://cvat/./node_modules/core-js/internals/path.js","webpack://cvat/./node_modules/core-js/internals/object-keys-internal.js","webpack://cvat/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://cvat/./node_modules/core-js/internals/is-forced.js","webpack://cvat/./node_modules/core-js/internals/redefine-all.js","webpack://cvat/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://cvat/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://cvat/./node_modules/core-js/internals/task.js","webpack://cvat/./node_modules/core-js/internals/html.js","webpack://cvat/./node_modules/core-js/internals/user-agent.js","webpack://cvat/./node_modules/core-js/internals/new-promise-capability.js","webpack://cvat/./node_modules/core-js/internals/object-create.js","webpack://cvat/./node_modules/core-js/internals/object-define-properties.js","webpack://cvat/./node_modules/core-js/internals/object-keys.js","webpack://cvat/./node_modules/core-js/internals/define-iterator.js","webpack://cvat/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://cvat/./node_modules/core-js/internals/iterators-core.js","webpack://cvat/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://cvat/./node_modules/core-js/internals/regexp-exec.js","webpack://cvat/./node_modules/axios/lib/helpers/bind.js","webpack://cvat/./node_modules/process/browser.js","webpack://cvat/./node_modules/axios/lib/adapters/xhr.js","webpack://cvat/./node_modules/axios/lib/core/createError.js","webpack://cvat/./node_modules/axios/lib/cancel/isCancel.js","webpack://cvat/./node_modules/axios/lib/cancel/Cancel.js","webpack://cvat/./src/user.js","webpack://cvat/./src/statistics.js","webpack://cvat/./node_modules/core-js/internals/whitespaces.js","webpack://cvat/./node_modules/core-js/modules/es.array.sort.js","webpack://cvat/./src/annotation-format.js","webpack://cvat/./node_modules/core-js/internals/native-url.js","webpack://cvat/./src/api.js","webpack://cvat/./node_modules/core-js/internals/native-weak-map.js","webpack://cvat/./node_modules/core-js/internals/own-keys.js","webpack://cvat/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://cvat/./node_modules/core-js/internals/array-includes.js","webpack://cvat/./node_modules/core-js/internals/to-absolute-index.js","webpack://cvat/./node_modules/core-js/internals/native-symbol.js","webpack://cvat/./node_modules/core-js/internals/set-species.js","webpack://cvat/./node_modules/core-js/internals/iterate.js","webpack://cvat/./node_modules/core-js/internals/classof.js","webpack://cvat/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://cvat/./node_modules/core-js/internals/species-constructor.js","webpack://cvat/./node_modules/core-js/internals/microtask.js","webpack://cvat/./node_modules/core-js/internals/promise-resolve.js","webpack://cvat/./node_modules/core-js/internals/host-report-errors.js","webpack://cvat/./node_modules/core-js/internals/perform.js","webpack://cvat/./node_modules/core-js/modules/es.symbol.description.js","webpack://cvat/./node_modules/core-js/internals/add-to-unscopables.js","webpack://cvat/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://cvat/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://cvat/./node_modules/core-js/internals/a-possible-prototype.js","webpack://cvat/./node_modules/core-js/internals/dom-iterables.js","webpack://cvat/./node_modules/platform/platform.js","webpack://cvat/(webpack)/buildin/module.js","webpack://cvat/./node_modules/error-stack-parser/error-stack-parser.js","webpack://cvat/./node_modules/stackframe/stackframe.js","webpack://cvat/./node_modules/core-js/modules/es.string.replace.js","webpack://cvat/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://cvat/./node_modules/core-js/internals/regexp-flags.js","webpack://cvat/./node_modules/core-js/internals/advance-string-index.js","webpack://cvat/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://cvat/./node_modules/form-data/lib/browser.js","webpack://cvat/./node_modules/store/dist/store.legacy.js","webpack://cvat/./node_modules/store/src/store-engine.js","webpack://cvat/./node_modules/store/storages/all.js","webpack://cvat/./node_modules/store/storages/localStorage.js","webpack://cvat/./node_modules/store/storages/oldFF-globalStorage.js","webpack://cvat/./node_modules/store/storages/oldIE-userDataStorage.js","webpack://cvat/./node_modules/store/storages/cookieStorage.js","webpack://cvat/./node_modules/store/storages/sessionStorage.js","webpack://cvat/./node_modules/store/storages/memoryStorage.js","webpack://cvat/./node_modules/store/plugins/json2.js","webpack://cvat/./node_modules/store/plugins/lib/json2.js","webpack://cvat/./node_modules/axios/index.js","webpack://cvat/./node_modules/axios/lib/axios.js","webpack://cvat/./node_modules/axios/node_modules/is-buffer/index.js","webpack://cvat/./node_modules/axios/lib/core/Axios.js","webpack://cvat/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://cvat/./node_modules/axios/lib/core/settle.js","webpack://cvat/./node_modules/axios/lib/core/enhanceError.js","webpack://cvat/./node_modules/axios/lib/helpers/buildURL.js","webpack://cvat/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://cvat/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://cvat/./node_modules/axios/lib/helpers/cookies.js","webpack://cvat/./node_modules/axios/lib/core/InterceptorManager.js","webpack://cvat/./node_modules/axios/lib/core/dispatchRequest.js","webpack://cvat/./node_modules/axios/lib/core/transformData.js","webpack://cvat/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://cvat/./node_modules/axios/lib/helpers/combineURLs.js","webpack://cvat/./node_modules/axios/lib/cancel/CancelToken.js","webpack://cvat/./node_modules/axios/lib/helpers/spread.js","webpack://cvat/./node_modules/core-js/modules/es.string.trim.js","webpack://cvat/./node_modules/core-js/internals/string-trim.js","webpack://cvat/./node_modules/core-js/internals/forced-string-trim-method.js","webpack://cvat/./src/frames.js","webpack://cvat/./node_modules/browser-or-node/lib/index.js","webpack://cvat/./src/annotations.js","webpack://cvat/./src/annotations-collection.js","webpack://cvat/./node_modules/core-js/internals/sloppy-array-method.js","webpack://cvat/./src/annotations-objects.js","webpack://cvat/./src/annotations-saver.js","webpack://cvat/./src/api-implementation.js","webpack://cvat/./node_modules/core-js/modules/web.url.js","webpack://cvat/./node_modules/core-js/modules/es.string.iterator.js","webpack://cvat/./node_modules/core-js/internals/object-assign.js","webpack://cvat/./node_modules/core-js/internals/array-from.js","webpack://cvat/./node_modules/core-js/internals/create-property.js","webpack://cvat/./node_modules/core-js/internals/punycode-to-ascii.js","webpack://cvat/./node_modules/core-js/modules/web.url-search-params.js","webpack://cvat/./node_modules/core-js/internals/get-iterator.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","check","it","Math","globalThis","O","window","self","global","Function","shared","uid","NATIVE_SYMBOL","store","exec","error","isObject","TypeError","String","toIndexedObject","addToUnscopables","Iterators","InternalStateModule","defineIterator","setInternalState","set","getInternalState","getterFor","Array","iterated","kind","this","type","target","index","state","length","undefined","done","Arguments","Platform","require","ErrorStackParser","config","Exception","Error","constructor","message","super","time","Date","toISOString","system","os","toString","client","version","info","parse","filename","fileName","line","lineNumber","column","columnNumber","jobID","taskID","clientID","defineProperties","freeze","projID","exceptionObject","job_id","task_id","proj_id","client_id","stack","serverProxy","server","exception","ArgumentError","DataError","ScriptingError","PluginError","ServerError","code","isBuffer","isArray","val","isFunction","forEach","obj","fn","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","document","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","replace","DOMIterables","ArrayIteratorMethods","hide","wellKnownSymbol","ITERATOR","TO_STRING_TAG","ArrayValues","values","COLLECTION_NAME","Collection","CollectionPrototype","METHOD_NAME","Internal","OwnPromiseCapability","PromiseWrapper","$","IS_PURE","path","redefineAll","setToStringTag","setSpecies","aFunction","anInstance","classof","iterate","checkCorrectnessOfIteration","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","userAgent","isForced","SPECIES","PROMISE","getInternalPromiseState","PromiseConstructor","process","$fetch","fetch","versions","v8","newPromiseCapability","f","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","createEvent","dispatchEvent","FORCED","promise","resolve","empty","FakePromise","PromiseRejectionEvent","then","indexOf","INCORRECT_ITERATION","iterable","all","isThenable","notify","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","reject","domain","rejection","onHandleUnhandled","enter","exit","onUnhandled","reason","event","initEvent","isUnhandled","emit","parent","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","push","C","forced","input","apply","wrap","Promise","stat","capability","x","$promiseResolve","counter","remaining","alreadyCalled","race","fails","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","getOwnPropertyDescriptor","redefine","setGlobal","copyConstructorProperties","options","source","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","noTargetGet","sham","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","P","Attributes","slice","has","nativeFunctionToString","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","TYPE","Axios","defaults","withCredentials","xsrfHeaderName","xsrfCookieName","token","async","getTasks","filter","backendAPI","response","proxy","errorData","status","data","results","count","deleteTask","id","delete","headers","common","Authorization","about","share","directory","encodeURIComponent","formats","post","JSON","stringify","login","username","password","authenticationData","authenticationResponse","cookies","Cookie","logout","remove","authorized","users","getSelf","serverError","register","firstName","lastName","email","password1","password2","first_name","last_name","writable","tasks","saveTask","taskData","patch","createTask","files","onUpdate","batchOfFiles","append","setTimeout","checkStatus","includes","wait","createException","jobs","getJob","saveJob","jobData","getUsers","frames","getData","tid","frame","responseType","getMeta","annotations","updateAnnotations","session","action","requestFunc","url","toUpperCase","put","getAnnotations","dumpAnnotations","format","request","uploadAnnotations","file","annotationData","assign","props1","props2","etc","each","assignProps1","assignProps2","assignArgsList","concat","F","make_create","Global","arr","pluck","isList","map","res","v","k","ShareFileType","DIR","REG","TaskStatus","ANNOTATION","VALIDATION","COMPLETED","TaskMode","INTERPOLATION","AttributeType","CHECKBOX","RADIO","SELECT","NUMBER","TEXT","ObjectType","TAG","SHAPE","TRACK","ObjectShape","RECTANGLE","POLYGON","POLYLINE","POINTS","EventType","frameDownloaded","LogType","pasteObject","changeAttribute","dragObject","deleteObject","pressShortcut","resizeObject","sendLogs","jumpFrame","drawObject","changeLabel","sendTaskInfo","loadJob","moveImage","zoomImage","lockObject","mergeObjects","copyObject","propagateObject","undoAction","redoAction","sendUserActivity","sendException","changeFrame","debugInfo","fitImage","rotateImage","configurable","plugins","PluginRegistry","wrappedFunc","args","pluginList","list","plugin","pluginDecorators","functions","callback","implementation","leave","plug","description","traverse","api","decorator","keys","cvat","requireObjectCoercible","argument","g","e","bitmap","IndexedObject","copyright","variable","namespace","method","toInteger","min","ceil","floor","isNaN","that","getFrame","Label","buildDublicatedAPI","loader","apiWrapper","upload","save","reload","clear","dumper","dump","statistics","arrayOfObjects","frameFrom","frameTo","search","objectStates","y","select","hasUnsavedChanges","objectState","reset","group","logs","logType","details","actions","undo","redo","events","evType","subscribe","unsubscribe","Session","Job","initialData","assignee","start_frame","stop_frame","Number","isInteger","valueInEnum","startFrame","stopFrame","getPrototypeOf","Task","size","owner","created_date","updated_date","bug_tracker","overlap","segment_size","z_order","image_quality","frame_filter","labels","server_files","client_files","remote_files","segments","segment","job","jobInstance","label","classInstance","createdDate","updatedDate","bugTracker","tracker","segmentSize","zOrder","imageQuality","quality","serverFiles","clientFiles","File","remoteFiles","frameFilter","putAnnotations","saveAnnotations","mergeAnnotations","splitAnnotations","groupAnnotations","clearAnnotations","selectObject","annotationsStatistics","el","toJSON","Boolean","taskFiles","Attribute","default_value","input_type","mutable","defaultValue","inputType","attributes","attrData","isBoolean","isEnum","checkFilter","fields","prop","checkObjectType","instance","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","PREFERRED_STRING","valueOf","EXISTS","createElement","Constructor","now","substr","createMethod","CONVERT_TO_STRING","$this","pos","first","second","S","position","charCodeAt","charAt","codeAt","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","transformRequest","transformResponse","timeout","maxContentLength","validateStatus","ObjectState","serialized","points","outside","occluded","keyframe","lock","color","serverID","objectType","shapeType","updateFlags","labelInstance","attrID","force","up","down","hidden","proto","URL","nativePropertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","1","V","postfix","random","ownKeys","getOwnPropertyDescriptorModule","names","getOwnPropertySymbols","replacement","feature","detection","normalize","POLYFILL","NATIVE","string","toLowerCase","src","ArrayPrototype","iterator","ENTRIES","returnMethod","defer","channel","port","html","location","setImmediate","clearImmediate","MessageChannel","Dispatch","queue","run","runner","listener","postMessage","protocol","host","nextTick","port2","port1","onmessage","addEventListener","importScripts","appendChild","removeChild","getBuiltIn","PromiseCapability","$$resolve","$$reject","enumBugKeys","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","write","lt","close","Properties","objectKeys","internalObjectKeys","createIteratorConstructor","setPrototypeOf","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","NAME","IteratorConstructor","next","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","reCopy","match","re","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","array","noop","title","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","settle","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","auth","btoa","params","paramsSerializer","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseText","statusText","onerror","ontimeout","xsrfValue","read","setRequestHeader","onDownloadProgress","onUploadProgress","cancelToken","cancel","abort","send","enhanceError","__CANCEL__","Cancel","groups","last_login","date_joined","is_staff","is_superuser","is_active","lastLogin","dateJoined","isStaff","isSuperuser","isActive","total","sloppyArrayMethod","nativeSort","sort","test","FAILS_ON_UNDEFINED","FAILS_ON_NULL","SLOPPY_METHOD","comparefn","Loader","display_name","Dumper","AnnotationFormat","handler_file","dumpers","loaders","handlerFile","searchParams","pathname","href","hash","User","Statistics","pjson","enums","exceptions","classes","implementAPI","clamp","max","build","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getOwnPropertyNames","toLength","toAbsoluteIndex","IS_INCLUDES","fromIndex","integer","CONSTRUCTOR_NAME","isArrayIteratorMethod","getIteratorMethod","callWithSafeIterationClosing","Result","stopped","AS_ENTRIES","IS_ITERATOR","iterFn","step","boundFunction","stop","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","SAFE_CLOSING","called","iteratorWithReturn","from","SKIP_CLOSING","ITERATION_SUPPORT","defaultConstructor","flush","head","last","toggle","node","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","promiseCapability","console","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","regexp","symbol","desc","UNSCOPABLES","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","objectTypes","root","freeExports","freeModule","nodeType","freeGlobal","maxSafeInteger","pow","reOpera","objectProto","capitalize","forOwn","getClassOf","qualify","reduce","accumulator","platform","ua","context","isCustomContext","nav","isSpecialCasedOS","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","opera","operamini","operaClass","arch","prerelease","useFeatures","layout","guess","pattern","guesses","getName","getProduct","manufacturer","getManufacturer","cleanupOS","getOS","unshift","parseFloat","runtime","flash","Capabilities","phantom","major","minor","documentMode","toFixed","lang","System","getProperty","electron","nw","appMinorVersion","external","parseInt","family","architecture","cpuClass","webpackPolyfill","deprecate","paths","children","StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","parts","tokens","locationParts","pop","functionName","functionNameRegex","matches","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","shift","_isNumber","isFinite","_capitalize","substring","_getter","booleanProps","numericProps","stringProps","props","getArgs","setArgs","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","j","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","replacer","rx","functionalReplace","fullUnicode","unicode","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","stringMethod","regexMethod","arg","ignoreCase","multiline","dotAll","sticky","R","engine","storages","createStore","util","storeAPI","enabled","optionalDefaultValue","storage","_namespacePrefix","_deserialize","_serialize","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","addPlugin","_addPlugin","namespacePrefix","namespaceRegexp","_testStorage","testStr","_assignPluginFnProp","pluginFnProp","propName","oldFn","super_fn","newFnArgs","strVal","defaultVal","_addStorage","seenPlugin","pluginProperties","addStorage","_console","warn","log","_warn","raw","localStorage","getItem","setItem","removeItem","globalStorage","_","unfixedKey","disable","fixedKey","fixKey","_withStorageEl","storageEl","setAttribute","storageName","getAttribute","XMLDocument","documentElement","attr","removeAttribute","load","addBehavior","storageOwner","storageContainer","ActiveXObject","w","body","storeFunction","_makeIEStorageElFunction","forbiddenCharsRegex","_has","regexpStr","escape","unescape","cookie","kvp","sessionStorage","memoryStorage","rx_one","rx_two","rx_three","rx_four","rx_escapable","rx_dangerous","gap","indent","meta","rep","this_value","quote","holder","partial","mind","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","\"","space","text","reviver","walk","eval","SyntaxError","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","spread","default","InterceptorManager","dispatchRequest","interceptors","interceptor","fulfilled","rejected","normalizedName","encode","serializedParams","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","hostname","requestURL","expires","secure","toGMTString","decodeURIComponent","handlers","use","eject","h","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","fns","relativeURL","resolvePromise","$trim","forcedStringTrimMethod","whitespace","ltrim","rtrim","start","end","whitespaces","isBrowser","isNode","frameDataCache","frameCache","FrameData","width","height","number","onServerRequest","Buffer","reader","FileReader","onload","readAsDataURL","_typeof","isWebWorker","AnnotationsSaver","jobCache","taskCache","getCache","sessionType","getAnnotationsFromServer","cache","rawAnnotations","frameMeta","collection","import","saver","RectangleShape","PolygonShape","PolylineShape","PointsShape","RectangleTrack","PolygonTrack","PolylineTrack","PointsTrack","Track","Shape","Tag","objectStateFactory","colors","shapeFactory","shapeData","injection","shapeModel","trackFactory","trackData","shapes","trackModel","labelAccumulator","tags","tracks","objects","collectionZ","tagModel","shape","track","export","removed","stateData","objectsForMerge","keyframes","labelAttributes","attribute","spec_id","updatedAttributes","firstNonOutside","label_id","resetCache","exported","prev","prevTrack","nextTrack","objectsForGroup","groupIdx","skeleton","rectangle","polygon","polyline","manually","interpolated","prevKeyframe","visible","lastKey","constructed","convertAttributes","specID","coord","minimumDistance","minimumState","distance","checkNumberOfPoints","checkShapeArea","xmin","MAX_SAFE_INTEGER","xmax","MIN_SAFE_INTEGER","ymin","ymax","validateAttributeValue","Annotation","taskLabels","attributeAccumulator","appendDefaultAttributes","Drawn","_getZ","z","attrId","copy","updated","cutPoints","shapeAccumulator","shapesAccumulator","interpolation","getPosition","getAttributes","neighborsFrames","targetFrame","lDiff","rDiff","diff","abs","leftFrame","rightFrame","positionUpdated","cacheFrame","rightPosition","leftPosition","interpolatePosition","xtl","ytl","xbr","ybr","PolyShape","x1","y1","x2","y2","wn","distances","xCross","yCross","sqrt","offset","positionOffset","PolyTrack","findBox","box","normalized","denormalize","denormalized","toPoints","toArray","point","getMapping","sumEdges","computeDeviation","average","processedSource","processedTarget","dx","dy","computeDistances","mapping","men","women","menPreferences","man","w1","w2","womenMaybe","menBusy","prefIndex","woman","prevChoice","stableMarriageProblem","threshold","truncateByThreshold","receivingOrder","appendMapping","pointIdx","leftBox","rightBox","leftPoints","rightPoints","newLeftPoints","newRightPoints","processedRight","processedLeft","absoluteLeftPoints","absoluteRightPoints","targetMatched","sourceMatched","orderForReceive","findNeighbors","computeOffset","pathPoints","curveLength","iCrossed","p1","p2","prevPoint","nextPoint","autoPoint","initialObjects","_getHash","_request","created","deleted","_split","splitted","indexes","_updateCreatedObjects","saved","savedLength","indexesLength","_receiveIndexes","savedData","_put","createdData","_create","updatedData","_update","deletedData","_delete","_version","user","page","field","tasksData","EOF","USE_NATIVE_URL","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getState","getInternalURLState","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","radix","ipv4","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","char","serializeHost","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","gopher","http","https","ws","wss","scheme","includesCredentials","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","base","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","query","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","output","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","nativeAssign","A","B","chr","T","argumentsLength","createProperty","arrayLike","mapfn","iteratorMethod","propertyKey","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","currentValue","inputLength","extra","ucs2decode","bias","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","q","qMinusT","baseMinusT","encoded","hasOwn","getIterator","getInternalParamsState","getInternalIteratorState","URL_SEARCH_PARAMS","plus","sequences","percentSequence","bytes","percentDecode","sequence","deserialize","find","serialize","parseSearchParams","entry","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","init","URLSearchParamsPrototype","splice","getAll","found","entriesIndex","sliceIndex"],"mappings":"wBACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,mBClFrD,2BACIC,EAAQ,SAAUC,GACpB,OAAOA,GAAMA,EAAGC,MAAQA,MAAQD,GAIlClC,EAAOD,QAELkC,SAAaG,YAAcC,GAAKD,aAChCH,SAAaK,QAAUD,GAAKC,SAC5BL,SAAaM,MAAQF,GAAKE,OAC1BN,SAAaO,GAAUH,GAAKG,IAE5BC,SAAS,cAATA,K,kCCbF,IAAID,EAAS,EAAQ,GACjBE,EAAS,EAAQ,IACjBC,EAAM,EAAQ,IACdC,EAAgB,EAAQ,IAExB5B,EAASwB,EAAOxB,OAChB6B,EAAQH,EAAO,OAEnB1C,EAAOD,QAAU,SAAUS,GACzB,OAAOqC,EAAMrC,KAAUqC,EAAMrC,GAAQoC,GAAiB5B,EAAOR,KACvDoC,EAAgB5B,EAAS2B,GAAK,UAAYnC,M,cCVlDR,EAAOD,QAAU,SAAU+C,GACzB,IACE,QAASA,IACT,MAAOC,GACP,OAAO,K,gBCJX,IAAIC,EAAW,EAAQ,IAEvBhD,EAAOD,QAAU,SAAUmC,GACzB,IAAKc,EAASd,GACZ,MAAMe,UAAUC,OAAOhB,GAAM,qBAC7B,OAAOA,I,6BCJX,IAAIiB,EAAkB,EAAQ,IAC1BC,EAAmB,EAAQ,KAC3BC,EAAY,EAAQ,IACpBC,EAAsB,EAAQ,IAC9BC,EAAiB,EAAQ,IAGzBC,EAAmBF,EAAoBG,IACvCC,EAAmBJ,EAAoBK,UAFtB,kBAcrB3D,EAAOD,QAAUwD,EAAeK,MAAO,QAAS,SAAUC,EAAUC,GAClEN,EAAiBO,KAAM,CACrBC,KAhBiB,iBAiBjBC,OAAQd,EAAgBU,GACxBK,MAAO,EACPJ,KAAMA,KAIP,WACD,IAAIK,EAAQT,EAAiBK,MACzBE,EAASE,EAAMF,OACfH,EAAOK,EAAML,KACbI,EAAQC,EAAMD,QAClB,OAAKD,GAAUC,GAASD,EAAOG,QAC7BD,EAAMF,YAASI,EACR,CAAEnD,WAAOmD,EAAWC,MAAM,IAEvB,QAARR,EAAuB,CAAE5C,MAAOgD,EAAOI,MAAM,GACrC,UAARR,EAAyB,CAAE5C,MAAO+C,EAAOC,GAAQI,MAAM,GACpD,CAAEpD,MAAO,CAACgD,EAAOD,EAAOC,IAASI,MAAM,IAC7C,UAKHjB,EAAUkB,UAAYlB,EAAUO,MAGhCR,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,Y,qBC3CjB,MACI,MAAMoB,EAAWC,EAAQ,KACnBC,EAAmBD,EAAQ,KAC3BE,EAASF,EAAQ,IAQvB,MAAMG,UAAkBC,MAIpBC,YAAYC,GACRC,MAAMD,GAEN,MAAME,GAAO,IAAIC,MAAOC,cAClBC,EAASZ,EAASa,GAAGC,WACrBC,KAAYf,EAAShE,QAAQgE,EAASgB,UACtCC,EAAOf,EAAiBgB,MAAM3B,MAAM,GACpC4B,KAAcF,EAAKG,WACnBC,EAAOJ,EAAKK,WACZC,EAASN,EAAKO,cACd,MACFC,EADE,OAEFC,EAFE,SAGFC,GACAxB,EAIJhE,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CACxCjB,OAAQ,CAQJtE,IAAK,IAAMsE,GAEfG,OAAQ,CAQJzE,IAAK,IAAMyE,GAEfN,KAAM,CAQFnE,IAAK,IAAMmE,GAEfgB,MAAO,CAQHnF,IAAK,IAAMmF,GAEfC,OAAQ,CAQJpF,IAAK,IAAMoF,GAEfI,OAAQ,CAQJxF,IAAK,SA7DEuD,GA+DX8B,SAAU,CAQNrF,IAAK,IAAMqF,GAEfR,SAAU,CAQN7E,IAAK,IAAM6E,GAEfE,KAAM,CAQF/E,IAAK,IAAM+E,GAEfE,OAAQ,CAQJjF,IAAK,IAAMiF,MAavB,aACI,MAAMQ,EAAkB,CACpBnB,OAAQrB,KAAKqB,OACbG,OAAQxB,KAAKwB,OACbN,KAAMlB,KAAKkB,KACXuB,OAAQzC,KAAKkC,MACbQ,QAAS1C,KAAKmC,OACdQ,QAAS3C,KAAKuC,OACdK,UAAW5C,KAAKoC,SAChBpB,QAAShB,KAAKgB,QACdY,SAAU5B,KAAK4B,SACfE,KAAM9B,KAAK8B,KACXE,OAAQhC,KAAKgC,OACba,MAAO7C,KAAK6C,OAGhB,IACI,MAAMC,EAAcpC,EAAQ,UACtBoC,EAAYC,OAAOC,UAAUR,GACrC,MAAOQ,MA0FjB/G,EAAOD,QAAU,CACb6E,YACAoC,cAjFJ,cAA4BpC,EAIxBE,YAAYC,GACRC,MAAMD,KA6EVkC,UApEJ,cAAwBrC,EAIpBE,YAAYC,GACRC,MAAMD,KAgEVmC,eAvDJ,cAA6BtC,EAIzBE,YAAYC,GACRC,MAAMD,KAmDVoC,YA1CJ,cAA0BvC,EAItBE,YAAYC,GACRC,MAAMD,KAsCVqC,YA7BJ,cAA0BxC,EAKtBE,YAAYC,EAASsC,GACjBrC,MAAMD,GAENpE,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCgB,KAAM,CACFvG,IAAK,IAAMuG,UAxP/B,I,6BCPA,IAAI5F,EAAO,EAAQ,IACf6F,EAAW,EAAQ,KAMnBhC,EAAW3E,OAAOkB,UAAUyD,SAQhC,SAASiC,EAAQC,GACf,MAA8B,mBAAvBlC,EAASlF,KAAKoH,GA2EvB,SAASxE,EAASwE,GAChB,OAAe,OAARA,GAA+B,iBAARA,EAuChC,SAASC,EAAWD,GAClB,MAA8B,sBAAvBlC,EAASlF,KAAKoH,GAoEvB,SAASE,EAAQC,EAAKC,GAEpB,GAAID,QAUJ,GALmB,iBAARA,IAETA,EAAM,CAACA,IAGLJ,EAAQI,GAEV,IAAK,IAAI1H,EAAI,EAAGC,EAAIyH,EAAIvD,OAAQnE,EAAIC,EAAGD,IACrC2H,EAAGxH,KAAK,KAAMuH,EAAI1H,GAAIA,EAAG0H,QAI3B,IAAK,IAAInG,KAAOmG,EACVhH,OAAOkB,UAAUC,eAAe1B,KAAKuH,EAAKnG,IAC5CoG,EAAGxH,KAAK,KAAMuH,EAAInG,GAAMA,EAAKmG,GA0DrC3H,EAAOD,QAAU,CACfwH,QAASA,EACTM,cAhQF,SAAuBL,GACrB,MAA8B,yBAAvBlC,EAASlF,KAAKoH,IAgQrBF,SAAUA,EACVQ,WAxPF,SAAoBN,GAClB,MAA4B,oBAAbO,UAA8BP,aAAeO,UAwP5DC,kBA/OF,SAA2BR,GAOzB,MAL4B,oBAAhBS,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOV,GAEnB,GAAUA,EAAU,QAAMA,EAAIW,kBAAkBF,aA2O3DG,SAhOF,SAAkBZ,GAChB,MAAsB,iBAARA,GAgOda,SAvNF,SAAkBb,GAChB,MAAsB,iBAARA,GAuNdxE,SAAUA,EACVsF,YA/MF,SAAqBd,GACnB,YAAsB,IAARA,GA+Mde,OA5LF,SAAgBf,GACd,MAA8B,kBAAvBlC,EAASlF,KAAKoH,IA4LrBgB,OAnLF,SAAgBhB,GACd,MAA8B,kBAAvBlC,EAASlF,KAAKoH,IAmLrBiB,OA1KF,SAAgBjB,GACd,MAA8B,kBAAvBlC,EAASlF,KAAKoH,IA0KrBC,WAAYA,EACZiB,SAxJF,SAAkBlB,GAChB,OAAOxE,EAASwE,IAAQC,EAAWD,EAAImB,OAwJvCC,kBA/IF,SAA2BpB,GACzB,MAAkC,oBAApBqB,iBAAmCrB,aAAeqB,iBA+IhEC,qBArHF,WACE,OAAyB,oBAAdC,WAAmD,gBAAtBA,UAAUC,WAI9B,oBAAX1G,QACa,oBAAb2G,WAgHTvB,QAASA,EACTwB,MArDF,SAASA,IACP,IAAIC,EAAS,GACb,SAASC,EAAY5B,EAAKhG,GACG,iBAAhB2H,EAAO3H,IAAoC,iBAARgG,EAC5C2B,EAAO3H,GAAO0H,EAAMC,EAAO3H,GAAMgG,GAEjC2B,EAAO3H,GAAOgG,EAIlB,IAAK,IAAIvH,EAAI,EAAGC,EAAImJ,UAAUjF,OAAQnE,EAAIC,EAAGD,IAC3CyH,EAAQ2B,UAAUpJ,GAAImJ,GAExB,OAAOD,GAyCPG,OA9BF,SAAgBC,EAAGC,EAAGC,GAQpB,OAPA/B,EAAQ8B,EAAG,SAAqBhC,EAAKhG,GAEjC+H,EAAE/H,GADAiI,GAA0B,mBAARjC,EACX/F,EAAK+F,EAAKiC,GAEVjC,IAGN+B,GAuBPG,KA1IF,SAAcC,GACZ,OAAOA,EAAIC,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,O,cCpKjD,IAAI9H,EAAiB,GAAGA,eAExB9B,EAAOD,QAAU,SAAUmC,EAAIV,GAC7B,OAAOM,EAAe1B,KAAK8B,EAAIV,K,gBCHjC,IAAIgB,EAAS,EAAQ,GACjBqH,EAAe,EAAQ,KACvBC,EAAuB,EAAQ,GAC/BC,EAAO,EAAQ,IACfC,EAAkB,EAAQ,GAE1BC,EAAWD,EAAgB,YAC3BE,EAAgBF,EAAgB,eAChCG,EAAcL,EAAqBM,OAEvC,IAAK,IAAIC,KAAmBR,EAAc,CACxC,IAAIS,EAAa9H,EAAO6H,GACpBE,EAAsBD,GAAcA,EAAWzI,UACnD,GAAI0I,EAAqB,CAEvB,GAAIA,EAAoBN,KAAcE,EAAa,IACjDJ,EAAKQ,EAAqBN,EAAUE,GACpC,MAAOpH,GACPwH,EAAoBN,GAAYE,EAGlC,GADKI,EAAoBL,IAAgBH,EAAKQ,EAAqBL,EAAeG,GAC9ER,EAAaQ,GAAkB,IAAK,IAAIG,KAAeV,EAEzD,GAAIS,EAAoBC,KAAiBV,EAAqBU,GAAc,IAC1ET,EAAKQ,EAAqBC,EAAaV,EAAqBU,IAC5D,MAAOzH,GACPwH,EAAoBC,GAAeV,EAAqBU,O,6BCzBhE,IAgDIC,EAAUC,EAAsBC,EAhDhCC,EAAI,EAAQ,IACZC,EAAU,EAAQ,IAClBrI,EAAS,EAAQ,GACjBsI,EAAO,EAAQ,IACfC,EAAc,EAAQ,IACtBC,EAAiB,EAAQ,IACzBC,EAAa,EAAQ,IACrBjI,EAAW,EAAQ,IACnBkI,EAAY,EAAQ,IACpBC,EAAa,EAAQ,IACrBC,EAAU,EAAQ,IAClBC,EAAU,EAAQ,IAClBC,EAA8B,EAAQ,KACtCC,EAAqB,EAAQ,KAC7BC,EAAO,EAAQ,IAAqB/H,IACpCgI,EAAY,EAAQ,KACpBC,EAAiB,EAAQ,KACzBC,EAAmB,EAAQ,KAC3BC,EAA6B,EAAQ,IACrCC,EAAU,EAAQ,KAClBC,EAAY,EAAQ,IACpBxI,EAAsB,EAAQ,IAC9ByI,EAAW,EAAQ,IAGnBC,EAFkB,EAAQ,EAEhBhC,CAAgB,WAC1BiC,EAAU,UACVvI,EAAmBJ,EAAoBxC,IACvC0C,EAAmBF,EAAoBG,IACvCyI,EAA0B5I,EAAoBK,UAAUsI,GACxDE,EAAqB3J,EAAc,QACnCS,EAAYT,EAAOS,UACnBgG,EAAWzG,EAAOyG,SAClBmD,EAAU5J,EAAO4J,QACjBC,EAAS7J,EAAO8J,MAChBC,EAAWH,GAAWA,EAAQG,SAC9BC,EAAKD,GAAYA,EAASC,IAAM,GAChCC,EAAuBb,EAA2Bc,EAClDC,EAA8BF,EAC9BG,EAA8B,WAApBxB,EAAQgB,GAClBS,KAAoB5D,GAAYA,EAAS6D,aAAetK,EAAOuK,eAU/DC,EAASjB,EAASE,EAAS,WAE7B,IAAIgB,EAAUd,EAAmBe,QAAQ,GACrCC,EAAQ,aACRC,GAAeH,EAAQnI,YAAc,IAAIkH,GAAW,SAAUlJ,GAChEA,EAAKqK,EAAOA,IAGd,SAAUP,GAA2C,mBAAzBS,0BACrBxC,GAAWoC,EAAiB,UAC9BA,EAAQK,KAAKH,aAAkBC,GAIT,IAAtBZ,EAAGe,QAAQ,SACyB,IAApCzB,EAAUyB,QAAQ,gBAGrBC,EAAsBR,IAAW1B,EAA4B,SAAUmC,GACzEtB,EAAmBuB,IAAID,GAAiB,MAAE,gBAIxCE,EAAa,SAAUzL,GACzB,IAAIoL,EACJ,SAAOtK,EAASd,IAAkC,mBAAnBoL,EAAOpL,EAAGoL,QAAsBA,GAG7DM,EAAS,SAAUX,EAAS9I,EAAO0J,GACrC,IAAI1J,EAAM2J,SAAV,CACA3J,EAAM2J,UAAW,EACjB,IAAIC,EAAQ5J,EAAM6J,UAClBvC,EAAU,WAKR,IAJA,IAAIvK,EAAQiD,EAAMjD,MACd+M,EAxCQ,GAwCH9J,EAAMA,MACXD,EAAQ,EAEL6J,EAAM3J,OAASF,GAAO,CAC3B,IAKIiF,EAAQmE,EAAMY,EALdC,EAAWJ,EAAM7J,KACjBkK,EAAUH,EAAKE,EAASF,GAAKE,EAASE,KACtCnB,EAAUiB,EAASjB,QACnBoB,EAASH,EAASG,OAClBC,EAASJ,EAASI,OAEtB,IACMH,GACGH,IAjDC,IAkDA9J,EAAMqK,WAAyBC,EAAkBxB,EAAS9I,GAC9DA,EAAMqK,UApDJ,IAsDY,IAAZJ,EAAkBjF,EAASjI,GAEzBqN,GAAQA,EAAOG,QACnBvF,EAASiF,EAAQlN,GACbqN,IACFA,EAAOI,OACPT,GAAS,IAGT/E,IAAWgF,EAASlB,QACtBqB,EAAOrL,EAAU,yBACRqK,EAAOK,EAAWxE,IAC3BmE,EAAKlN,KAAK+I,EAAQ+D,EAASoB,GACtBpB,EAAQ/D,IACVmF,EAAOpN,GACd,MAAO6B,GACHwL,IAAWL,GAAQK,EAAOI,OAC9BL,EAAOvL,IAGXoB,EAAM6J,UAAY,GAClB7J,EAAM2J,UAAW,EACbD,IAAa1J,EAAMqK,WAAWI,EAAY3B,EAAS9I,OAIvD4I,EAAgB,SAAUvM,EAAMyM,EAAS4B,GAC3C,IAAIC,EAAOV,EACPvB,IACFiC,EAAQ7F,EAAS6D,YAAY,UACvBG,QAAUA,EAChB6B,EAAMD,OAASA,EACfC,EAAMC,UAAUvO,GAAM,GAAO,GAC7BgC,EAAOuK,cAAc+B,IAChBA,EAAQ,CAAE7B,QAASA,EAAS4B,OAAQA,IACvCT,EAAU5L,EAAO,KAAOhC,IAAO4N,EAAQU,GA9FnB,uBA+FftO,GAA8BmL,EAAiB,8BAA+BkD,IAGrFD,EAAc,SAAU3B,EAAS9I,GACnCqH,EAAKpL,KAAKoC,EAAQ,WAChB,IAEI2G,EAFAjI,EAAQiD,EAAMjD,MAGlB,GAFmB8N,EAAY7K,KAG7BgF,EAAS0C,EAAQ,WACXe,EACFR,EAAQ6C,KAAK,qBAAsB/N,EAAO+L,GACrCF,EA3GW,qBA2GwBE,EAAS/L,KAGrDiD,EAAMqK,UAAY5B,GAAWoC,EAAY7K,GAxG/B,EADF,EA0GJgF,EAAOpG,OAAO,MAAMoG,EAAOjI,SAKjC8N,EAAc,SAAU7K,GAC1B,OAhHY,IAgHLA,EAAMqK,YAA0BrK,EAAM+K,QAG3CT,EAAoB,SAAUxB,EAAS9I,GACzCqH,EAAKpL,KAAKoC,EAAQ,WACZoK,EACFR,EAAQ6C,KAAK,mBAAoBhC,GAC5BF,EA3Ha,mBA2HoBE,EAAS9I,EAAMjD,UAIvDO,EAAO,SAAUmG,EAAIqF,EAAS9I,EAAOgL,GACvC,OAAO,SAAUjO,GACf0G,EAAGqF,EAAS9I,EAAOjD,EAAOiO,KAI1BC,GAAiB,SAAUnC,EAAS9I,EAAOjD,EAAOiO,GAChDhL,EAAMG,OACVH,EAAMG,MAAO,EACT6K,IAAQhL,EAAQgL,GACpBhL,EAAMjD,MAAQA,EACdiD,EAAMA,MAvIO,EAwIbyJ,EAAOX,EAAS9I,GAAO,KAGrBkL,GAAkB,SAAUpC,EAAS9I,EAAOjD,EAAOiO,GACrD,IAAIhL,EAAMG,KAAV,CACAH,EAAMG,MAAO,EACT6K,IAAQhL,EAAQgL,GACpB,IACE,GAAIlC,IAAY/L,EAAO,MAAM+B,EAAU,oCACvC,IAAIqK,EAAOK,EAAWzM,GAClBoM,EACF7B,EAAU,WACR,IAAI6D,EAAU,CAAEhL,MAAM,GACtB,IACEgJ,EAAKlN,KAAKc,EACRO,EAAK4N,GAAiBpC,EAASqC,EAASnL,GACxC1C,EAAK2N,GAAgBnC,EAASqC,EAASnL,IAEzC,MAAOpB,GACPqM,GAAenC,EAASqC,EAASvM,EAAOoB,OAI5CA,EAAMjD,MAAQA,EACdiD,EAAMA,MAjKI,EAkKVyJ,EAAOX,EAAS9I,GAAO,IAEzB,MAAOpB,GACPqM,GAAenC,EAAS,CAAE3I,MAAM,GAASvB,EAAOoB,MAKhD6I,IAEFb,EAAqB,SAAiBoD,GACpCpE,EAAWpH,KAAMoI,EAAoBF,GACrCf,EAAUqE,GACV9E,EAASrK,KAAK2D,MACd,IAAII,EAAQT,EAAiBK,MAC7B,IACEwL,EAAS9N,EAAK4N,GAAiBtL,KAAMI,GAAQ1C,EAAK2N,GAAgBrL,KAAMI,IACxE,MAAOpB,GACPqM,GAAerL,KAAMI,EAAOpB,MAIhC0H,EAAW,SAAiB8E,GAC1B/L,EAAiBO,KAAM,CACrBC,KAAMiI,EACN3H,MAAM,EACNwJ,UAAU,EACVoB,QAAQ,EACRlB,UAAW,GACXQ,WAAW,EACXrK,MAjMQ,EAkMRjD,WAAOmD,MAGFxC,UAAYkJ,EAAYoB,EAAmBtK,UAAW,CAG7DyL,KAAM,SAAckC,EAAaC,GAC/B,IAAItL,EAAQ+H,EAAwBnI,MAChCoK,EAAW1B,EAAqBlB,EAAmBxH,KAAMoI,IAO7D,OANAgC,EAASF,GAA2B,mBAAfuB,GAA4BA,EACjDrB,EAASE,KAA4B,mBAAdoB,GAA4BA,EACnDtB,EAASI,OAAS3B,EAAUR,EAAQmC,YAASlK,EAC7CF,EAAM+K,QAAS,EACf/K,EAAM6J,UAAU0B,KAAKvB,GA/Mb,GAgNJhK,EAAMA,OAAkByJ,EAAO7J,KAAMI,GAAO,GACzCgK,EAASlB,SAIlB,MAAS,SAAUwC,GACjB,OAAO1L,KAAKuJ,UAAKjJ,EAAWoL,MAGhC/E,EAAuB,WACrB,IAAIuC,EAAU,IAAIxC,EACdtG,EAAQT,EAAiBuJ,GAC7BlJ,KAAKkJ,QAAUA,EACflJ,KAAKmJ,QAAUzL,EAAK4N,GAAiBpC,EAAS9I,GAC9CJ,KAAKuK,OAAS7M,EAAK2N,GAAgBnC,EAAS9I,IAE9CyH,EAA2Bc,EAAID,EAAuB,SAAUkD,GAC9D,OAAOA,IAAMxD,GAAsBwD,IAAMhF,EACrC,IAAID,EAAqBiF,GACzBhD,EAA4BgD,IAI7B9E,GAA4B,mBAAVwB,GAAsBzB,EAAE,CAAEpI,QAAQ,EAAM3B,YAAY,EAAM+O,QAAQ,GAAQ,CAE/FtD,MAAO,SAAeuD,GACpB,OAAOnE,EAAeS,EAAoBE,EAAOyD,MAAMtN,EAAQ6G,gBAKrEuB,EAAE,CAAEpI,QAAQ,EAAMuN,MAAM,EAAMH,OAAQ5C,GAAU,CAC9CgD,QAAS7D,IAGXnB,EAAemB,EAAoBF,GAAS,GAAO,GACnDhB,EAAWgB,GAEXtB,EAAiBG,EAAY,QAG7BF,EAAE,CAAE3G,OAAQgI,EAASgE,MAAM,EAAML,OAAQ5C,GAAU,CAGjDsB,OAAQ,SAAgBvN,GACtB,IAAImP,EAAazD,EAAqB1I,MAEtC,OADAmM,EAAW5B,OAAOlO,UAAKiE,EAAWtD,GAC3BmP,EAAWjD,WAItBrC,EAAE,CAAE3G,OAAQgI,EAASgE,MAAM,EAAML,OAAQ/E,GAAWmC,GAAU,CAG5DE,QAAS,SAAiBiD,GACxB,OAAOzE,EAAeb,GAAW9G,OAAS4G,EAAiBwB,EAAqBpI,KAAMoM,MAI1FvF,EAAE,CAAE3G,OAAQgI,EAASgE,MAAM,EAAML,OAAQpC,GAAuB,CAG9DE,IAAK,SAAaD,GAChB,IAAIkC,EAAI5L,KACJmM,EAAazD,EAAqBkD,GAClCzC,EAAUgD,EAAWhD,QACrBoB,EAAS4B,EAAW5B,OACpBnF,EAAS0C,EAAQ,WACnB,IAAIuE,EAAkBlF,EAAUyE,EAAEzC,SAC9B9C,EAAS,GACTiG,EAAU,EACVC,EAAY,EAChBjF,EAAQoC,EAAU,SAAUR,GAC1B,IAAI/I,EAAQmM,IACRE,GAAgB,EACpBnG,EAAOsF,UAAKrL,GACZiM,IACAF,EAAgBhQ,KAAKuP,EAAG1C,GAASK,KAAK,SAAUpM,GAC1CqP,IACJA,GAAgB,EAChBnG,EAAOlG,GAAShD,IACdoP,GAAapD,EAAQ9C,KACtBkE,OAEHgC,GAAapD,EAAQ9C,KAGzB,OADIjB,EAAOpG,OAAOuL,EAAOnF,EAAOjI,OACzBgP,EAAWjD,SAIpBuD,KAAM,SAAc/C,GAClB,IAAIkC,EAAI5L,KACJmM,EAAazD,EAAqBkD,GAClCrB,EAAS4B,EAAW5B,OACpBnF,EAAS0C,EAAQ,WACnB,IAAIuE,EAAkBlF,EAAUyE,EAAEzC,SAClC7B,EAAQoC,EAAU,SAAUR,GAC1BmD,EAAgBhQ,KAAKuP,EAAG1C,GAASK,KAAK4C,EAAWhD,QAASoB,OAI9D,OADInF,EAAOpG,OAAOuL,EAAOnF,EAAOjI,OACzBgP,EAAWjD,Y,gBClWtB,IAAIwD,EAAQ,EAAQ,GAGpBzQ,EAAOD,SAAW0Q,EAAM,WACtB,OAA+E,GAAxE9P,OAAOC,eAAe,GAAI,IAAK,CAAEE,IAAK,WAAc,OAAO,KAAQyI,K,cCJ5EvJ,EAAOD,QAAU,SAAUmC,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,I,gBCDvD,IAAIwO,EAAc,EAAQ,IACtBC,EAAuB,EAAQ,IAC/BC,EAA2B,EAAQ,IAEvC5Q,EAAOD,QAAU2Q,EAAc,SAAU/O,EAAQH,EAAKN,GACpD,OAAOyP,EAAqBjE,EAAE/K,EAAQH,EAAKoP,EAAyB,EAAG1P,KACrE,SAAUS,EAAQH,EAAKN,GAEzB,OADAS,EAAOH,GAAON,EACPS,I,gBCRT,IAAIa,EAAS,EAAQ,GACjBqO,EAA2B,EAAQ,IAAmDnE,EACtF3C,EAAO,EAAQ,IACf+G,EAAW,EAAQ,IACnBC,EAAY,EAAQ,IACpBC,EAA4B,EAAQ,IACpCjF,EAAW,EAAQ,IAgBvB/L,EAAOD,QAAU,SAAUkR,EAASC,GAClC,IAGYjN,EAAQzC,EAAK2P,EAAgBC,EAAgBC,EAHrDC,EAASL,EAAQhN,OACjBsN,EAASN,EAAQzO,OACjBgP,EAASP,EAAQhB,KASrB,GANEhM,EADEsN,EACO/O,EACAgP,EACAhP,EAAO8O,IAAWP,EAAUO,EAAQ,KAEnC9O,EAAO8O,IAAW,IAAIzP,UAEtB,IAAKL,KAAO0P,EAAQ,CAQ9B,GAPAE,EAAiBF,EAAO1P,GAGtB2P,EAFEF,EAAQQ,aACVJ,EAAaR,EAAyB5M,EAAQzC,KACf6P,EAAWnQ,MACpB+C,EAAOzC,IACtBuK,EAASwF,EAAS/P,EAAM8P,GAAUE,EAAS,IAAM,KAAOhQ,EAAKyP,EAAQrB,cAE5CvL,IAAnB8M,EAA8B,CAC3C,UAAWC,UAA0BD,EAAgB,SACrDH,EAA0BI,EAAgBD,IAGxCF,EAAQS,MAASP,GAAkBA,EAAeO,OACpD3H,EAAKqH,EAAgB,QAAQ,GAG/BN,EAAS7M,EAAQzC,EAAK4P,EAAgBH,M,gBCnD1C,IAAIP,EAAc,EAAQ,IACtBiB,EAAiB,EAAQ,IACzBC,EAAW,EAAQ,GACnBC,EAAc,EAAQ,IAEtBC,EAAuBnR,OAAOC,eAIlCb,EAAQ2M,EAAIgE,EAAcoB,EAAuB,SAAwBzP,EAAG0P,EAAGC,GAI7E,GAHAJ,EAASvP,GACT0P,EAAIF,EAAYE,GAAG,GACnBH,EAASI,GACLL,EAAgB,IAClB,OAAOG,EAAqBzP,EAAG0P,EAAGC,GAClC,MAAOjP,IACT,GAAI,QAASiP,GAAc,QAASA,EAAY,MAAM/O,UAAU,2BAEhE,MADI,UAAW+O,IAAY3P,EAAE0P,GAAKC,EAAW9Q,OACtCmB,I,cClBT,IAAIiD,EAAW,GAAGA,SAElBtF,EAAOD,QAAU,SAAUmC,GACzB,OAAOoD,EAASlF,KAAK8B,GAAI+P,MAAM,GAAI,K,gBCHrC,IAAIzP,EAAS,EAAQ,GACjBE,EAAS,EAAQ,IACjBqH,EAAO,EAAQ,IACfmI,EAAM,EAAQ,GACdnB,EAAY,EAAQ,IACpBoB,EAAyB,EAAQ,IACjC7O,EAAsB,EAAQ,IAE9BI,EAAmBJ,EAAoBxC,IACvCsR,EAAuB9O,EAAoB+O,QAC3CC,EAAWpP,OAAOiP,GAAwBI,MAAM,YAEpD7P,EAAO,gBAAiB,SAAUR,GAChC,OAAOiQ,EAAuB/R,KAAK8B,MAGpClC,EAAOD,QAAU,SAAUsC,EAAGb,EAAKN,EAAO+P,GACzC,IAAIuB,IAASvB,KAAYA,EAAQuB,OAC7BC,IAASxB,KAAYA,EAAQpQ,WAC7B4Q,IAAcR,KAAYA,EAAQQ,YAClB,mBAATvQ,IACS,iBAAPM,GAAoB0Q,EAAIhR,EAAO,SAAS6I,EAAK7I,EAAO,OAAQM,GACvE4Q,EAAqBlR,GAAOgQ,OAASoB,EAASI,KAAmB,iBAAPlR,EAAkBA,EAAM,KAEhFa,IAAMG,GAIEgQ,GAEAf,GAAepP,EAAEb,KAC3BiR,GAAS,UAFFpQ,EAAEb,GAIPiR,EAAQpQ,EAAEb,GAAON,EAChB6I,EAAK1H,EAAGb,EAAKN,IATZuR,EAAQpQ,EAAEb,GAAON,EAChB6P,EAAUvP,EAAKN,KAUrBuB,SAASZ,UAAW,WAAY,WACjC,MAAsB,mBAARkC,MAAsBL,EAAiBK,MAAMmN,QAAUiB,EAAuB/R,KAAK2D,S,gBCrCnG,IASIN,EAAK3C,EAAKoR,EATVS,EAAkB,EAAQ,IAC1BnQ,EAAS,EAAQ,GACjBQ,EAAW,EAAQ,IACnB+G,EAAO,EAAQ,IACf6I,EAAY,EAAQ,GACpBC,EAAY,EAAQ,IACpBC,EAAa,EAAQ,IAErBC,EAAUvQ,EAAOuQ,QAgBrB,GAAIJ,EAAiB,CACnB,IAAI9P,EAAQ,IAAIkQ,EACZC,EAAQnQ,EAAM/B,IACdmS,EAAQpQ,EAAMqP,IACdgB,EAAQrQ,EAAMY,IAClBA,EAAM,SAAUvB,EAAIiR,GAElB,OADAD,EAAM9S,KAAKyC,EAAOX,EAAIiR,GACfA,GAETrS,EAAM,SAAUoB,GACd,OAAO8Q,EAAM5S,KAAKyC,EAAOX,IAAO,IAElCgQ,EAAM,SAAUhQ,GACd,OAAO+Q,EAAM7S,KAAKyC,EAAOX,QAEtB,CACL,IAAIkR,EAAQP,EAAU,SACtBC,EAAWM,IAAS,EACpB3P,EAAM,SAAUvB,EAAIiR,GAElB,OADApJ,EAAK7H,EAAIkR,EAAOD,GACTA,GAETrS,EAAM,SAAUoB,GACd,OAAO0Q,EAAU1Q,EAAIkR,GAASlR,EAAGkR,GAAS,IAE5ClB,EAAM,SAAUhQ,GACd,OAAO0Q,EAAU1Q,EAAIkR,IAIzBpT,EAAOD,QAAU,CACf0D,IAAKA,EACL3C,IAAKA,EACLoR,IAAKA,EACLG,QA/CY,SAAUnQ,GACtB,OAAOgQ,EAAIhQ,GAAMpB,EAAIoB,GAAMuB,EAAIvB,EAAI,KA+CnCyB,UA5Cc,SAAU0P,GACxB,OAAO,SAAUnR,GACf,IAAIiC,EACJ,IAAKnB,EAASd,KAAQiC,EAAQrD,EAAIoB,IAAK8B,OAASqP,EAC9C,MAAMpQ,UAAU,0BAA4BoQ,EAAO,aACnD,OAAOlP,M,4BCVb,MACI,MAAM4D,EAAWtD,EAAQ,MACnB,YACF2C,GACA3C,EAAQ,GACN5B,EAAQ4B,EAAQ,KAChBE,EAASF,EAAQ,IAunBvB,MAAMoC,EAAc,IArnBpB,MACI/B,cACI,MAAMwO,EAAQ7O,EAAQ,KACtB6O,EAAMC,SAASC,iBAAkB,EACjCF,EAAMC,SAASE,eAAiB,cAChCH,EAAMC,SAASG,eAAiB,YAEhC,IAAIC,EAAQ9Q,EAAM/B,IAAI,SA6KtB8S,eAAeC,EAASC,EAAS,IAC7B,MAAM,WAAEC,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,WAAoBD,IAAU,CACxDG,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,oCACAC,GAKR,OADA2M,EAASI,KAAKC,QAAQC,MAAQN,EAASI,KAAKE,MACrCN,EAASI,KAAKC,QAsBzBT,eAAeW,EAAWC,GACtB,MAAM,WAAET,GAAepP,EAEvB,UACU2O,EAAMmB,UAAUV,WAAoBS,KAC5C,MAAON,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,4CACAC,IA5NRsM,IACAL,EAAMC,SAASmB,QAAQC,OAAOC,uBAAyBjB,KA8iB3DhT,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CACxCS,OAAQ,CACJ5F,MAAOP,OAAO0F,OAAO,CACjBwO,MA9iBZjB,iBACI,MAAM,WAAEG,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,iBAA2B,CACrDE,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,oDACAC,GAIR,OAAO2M,EAASI,MA+hBRU,MA5hBZlB,eAAqBmB,GACjB,MAAM,WAAEhB,GAAepP,EACvBoQ,EAAYC,mBAAmBD,GAE/B,IAAIf,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,4BAAqCgB,IAAa,CAC5Ed,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,oDACAC,GAIR,OAAO2M,EAASI,MA4gBRa,QAtfZrB,iBACI,MAAM,WAAEG,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,8BAAwC,CAClEE,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,mDACAC,GAIR,OAAO2M,EAASI,MAueRrN,UA1gBZ6M,eAAyBrN,GACrB,MAAM,WAAEwN,GAAepP,EAEvB,UACU2O,EAAM4B,QAAQnB,qBAA+BoB,KAAKC,UAAU7O,GAAkB,CAChF0N,MAAOtP,EAAOsP,MACdS,QAAS,CACL,eAAgB,sBAG1B,MAAOR,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,4CACAC,KA6fAgO,MA5cZzB,eAAqB0B,EAAUC,GAC3B,MAAMC,EAAsB,IACrBR,mBAAmB,eAAeA,mBAAmBM,QACrDN,mBAAmB,eAAeA,mBAAmBO,MACzD7C,KAAK,KAAK9I,QAAQ,OAAQ,KAE7B,IAAI6L,EAAyB,KAC7B,IACIA,QAA+BnC,EAAM4B,QAC9BvQ,EAAOoP,wBACVyB,EAAoB,CAChBvB,MAAOtP,EAAOsP,QAGxB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SACjBE,EAAUF,SAASG,OAASD,EAAU7M,KAC5C,MAAM,IAAID,EACN,8BACAC,GAIR,GAAIoO,EAAuBf,QAAQ,cAAe,CAG9C,MAAMgB,EAAUD,EAAuBf,QAAQ,cAAchC,KAAK,KAClEY,EAAMC,SAASmB,QAAQC,OAAOgB,OAASD,EAG3C/B,EAAQ8B,EAAuBrB,KAAK5S,IACpCqB,EAAMY,IAAI,QAASkQ,GACnBL,EAAMC,SAASmB,QAAQC,OAAOC,uBAAyBjB,KA6a/CiC,OA1aZhC,iBACI,UACUN,EAAM4B,QAAQvQ,EAAOoP,yBAA0B,CACjDE,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,mCACAC,GAIRxE,EAAMgT,OAAO,SACbvC,EAAMC,SAASmB,QAAQC,OAAOC,cAAgB,IA6ZtCkB,WA1ZZlC,iBACI,UACU5T,EAAOD,QAAQgW,MAAMC,UAC7B,MAAOC,GACL,GAAyB,MAArBA,EAAY5O,KACZ,OAAO,EAGX,MAAM4O,EAGV,OAAO,GAgZCC,SAxeZtC,eAAwB0B,EAAUa,EAAWC,EAAUC,EAAOC,EAAWC,GACrE,IAAIvC,EAAW,KACf,IACI,MAAMI,EAAOe,KAAKC,UAAU,CACxBE,WACAkB,WAAYL,EACZM,UAAWL,EACXC,QACAC,YACAC,cAEJvC,QAAiBV,EAAM4B,QAAQvQ,EAAOoP,2BAA4BK,EAAM,CACpEH,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,yBACiBkO,wBACvBjO,GAIR,OAAO2M,EAASI,QAodZsC,UAAU,GAGdC,MAAO,CACHzV,MAAOP,OAAO0F,OAAO,CACjBwN,WACA+C,SAjYZhD,eAAwBY,EAAIqC,GACxB,MAAM,WAAE9C,GAAepP,EAEvB,UACU2O,EAAMwD,SAAS/C,WAAoBS,IAAMW,KAAKC,UAAUyB,GAAW,CACrE5C,MAAOtP,EAAOsP,MACdS,QAAS,CACL,eAAgB,sBAG1B,MAAOR,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,wCACAC,KAoXA0P,WAjWZnD,eAA0BiD,EAAUG,EAAOC,GACvC,MAAM,WAAElD,GAAepP,EA4CjBuS,EAAe,IAAInP,EACzB,IAAK,MAAMvG,KAAOwV,EACd,GAAIrW,OAAOkB,UAAUC,eAAe1B,KAAK4W,EAAOxV,GAC5C,IAAK,IAAIvB,EAAI,EAAGA,EAAI+W,EAAMxV,GAAK4C,OAAQnE,IACnCiX,EAAaC,UAAU3V,KAAOvB,KAAM+W,EAAMxV,GAAKvB,IAK3D,IAAI+T,EAAW,KAEfiD,EAAS,6CACT,IACIjD,QAAiBV,EAAM4B,QAAQnB,UAAoBoB,KAAKC,UAAUyB,GAAW,CACzE5C,MAAOtP,EAAOsP,MACdS,QAAS,CACL,eAAgB,sBAG1B,MAAOR,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,mCACAC,GAIR4P,EAAS,8CACT,UACU3D,EAAM4B,QAAQnB,WAAoBC,EAASI,KAAKI,UAAW0C,EAAc,CAC3EjD,MAAOtP,EAAOsP,QAEpB,MAAOC,SACCK,EAAWP,EAASI,KAAKI,IAC/B,MAAMnN,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,mCACAC,GAIR,UAnFAuM,eAAoBY,GAChB,OAAO,IAAIxE,QAAQ,CAAC9C,EAASoB,KAqCzB8I,WApCAxD,eAAeyD,IACX,IACI,MAAMrD,QAAiBV,EAAMxS,OAAOiT,WAAoBS,YACpD,CAAC,SAAU,WAAW8C,SAAStD,EAASI,KAAKjQ,QACf,KAA1B6P,EAASI,KAAKrP,SACdkS,EAASjD,EAASI,KAAKrP,SAE3BqS,WAAWC,EAAa,MACO,aAAxBrD,EAASI,KAAKjQ,MACrB+I,IAC+B,WAAxB8G,EAASI,KAAKjQ,MAGrBmK,EAAO,IAAIlH,EACP,0CACA,MAKJkH,EAAO,IAAIlH,2CACkC4M,EAASI,KAAKjQ,QACvD,MAGV,MAAO+P,GACL,MAAM7M,EAAO6M,EAAUF,SACjBE,EAAUF,SAASG,OAASD,EAAU7M,KAE5CiH,EAAO,IAAIlH,EACP,gCACAC,MAKY,OA8CtBkQ,CAAKvD,EAASI,KAAKI,IAC3B,MAAOgD,GAEL,YADMjD,EAAWP,EAASI,KAAKI,IACzBgD,EAKV,aAD0B3D,SAAgBG,EAASQ,OAChC,IAmQXD,eAEJmC,UAAU,GAGde,KAAM,CACFvW,MAAOP,OAAO0F,OAAO,CACjBqR,OAvQZ9D,eAAsB3N,GAClB,MAAM,WAAE8N,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,UAAmB9N,IAAS,CACtDgO,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,mCACAC,GAIR,OAAO2M,EAASI,MAwPRuD,QArPZ/D,eAAuBY,EAAIoD,GACvB,MAAM,WAAE7D,GAAepP,EAEvB,UACU2O,EAAMwD,SAAS/C,UAAmBS,IAAMW,KAAKC,UAAUwC,GAAU,CACnE3D,MAAOtP,EAAOsP,MACdS,QAAS,CACL,eAAgB,sBAG1B,MAAOR,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,uCACAC,OAyOJqP,UAAU,GAGdX,MAAO,CACH7U,MAAOP,OAAO0F,OAAO,CACjBwR,SAzOZjE,iBACI,MAAM,WAAEG,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,UAAoB,CAC9CE,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,sCACAC,GAIR,OAAO2M,EAASI,KAAKC,SA0Nb2B,QAvNZpC,iBACI,MAAM,WAAEG,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,eAAyB,CACnDE,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,EACN,0CACAC,GAIR,OAAO2M,EAASI,QAyMZsC,UAAU,GAGdoB,OAAQ,CACJ5W,MAAOP,OAAO0F,OAAO,CACjB0R,QA3MZnE,eAAuBoE,EAAKC,GACxB,MAAM,WAAElE,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,WAAoBiE,YAAcC,IAAS,CACrEhE,MAAOtP,EAAOsP,MACdiE,aAAc,SAEpB,MAAOhE,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,yBACiB6Q,kBAAsBD,oBAC7C3Q,GAIR,OAAO2M,EAASI,MA2LR+D,QAxLZvE,eAAuBoE,GACnB,MAAM,WAAEjE,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,WAAoBiE,gBAAmB,CACjE/D,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,gDACwC4Q,oBAC9C3Q,GAIR,OAAO2M,EAASI,QA0KZsC,UAAU,GAGd0B,YAAa,CACTlX,MAAOP,OAAO0F,OAAO,CACjBgS,kBAvJZzE,eAAiC0E,EAAS9D,EAAIJ,EAAMmE,GAChD,MAAM,WAAExE,GAAepP,EACvB,IAAI6T,EAAc,KACdC,EAAM,KACmB,QAAzBF,EAAOG,eACPF,EAAclF,EAAMqF,IAAIlX,KAAK6R,GAC7BmF,KAAS1E,KAAcuE,MAAY9D,kBAEnCgE,EAAclF,EAAMwD,MAAMrV,KAAK6R,GAC/BmF,KAAS1E,KAAcuE,MAAY9D,wBAAyB+D,KAGhE,IAAIvE,EAAW,KACf,IACIA,QAAiBwE,EAAYC,EAAKtD,KAAKC,UAAUhB,GAAO,CACpDH,MAAOtP,EAAOsP,MACdS,QAAS,CACL,eAAgB,sBAG1B,MAAOR,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,2CACmCkR,KAAW9D,kBACpDnN,GAIR,OAAO2M,EAASI,MA4HRwE,eA5KZhF,eAA8B0E,EAAS9D,GACnC,MAAM,WAAET,GAAepP,EAEvB,IAAIqP,EAAW,KACf,IACIA,QAAiBV,EAAMxS,OAAOiT,KAAcuE,MAAY9D,gBAAkB,CACtEP,MAAOtP,EAAOsP,QAEpB,MAAOC,GACL,MAAM7M,EAAO6M,EAAUF,SAAWE,EAAUF,SAASG,OAASD,EAAU7M,KACxE,MAAM,IAAID,uCAC+BkR,KAAW9D,oBAChDnN,GAIR,OAAO2M,EAASI,MA6JRyE,gBAtFZjF,eAA+BY,EAAIhU,EAAMsY,GACrC,MAAM,WAAE/E,GAAepP,EACjBgB,EAAWnF,EAAKoJ,QAAQ,MAAO,KACrC,IAAI6O,KAAS1E,WAAoBS,iBAAkB7O,YAAmBmT,IAEtE,OAAO,IAAI9I,QAAQ,CAAC9C,EAASoB,KAwBzB8I,WAvBAxD,eAAemF,IACX,IAK4B,aAJDzF,EAClBxS,OAAO2X,IAAO,CACXxE,MAAOtP,EAAOsP,SAETE,OACTiD,WAAW2B,EAAS,KAGpB7L,EADAuL,KAASA,qBAGf,MAAOvE,GACL,MAAM7M,EAAO6M,EAAUF,SACjBE,EAAUF,SAASG,OAASD,EAAU7M,KACtCtE,EAAQ,IAAIqE,6CAC6BoN,oBAC3CnN,GAEJiH,EAAOvL,SA8DXiW,kBA1HZpF,eAAiC0E,EAAS9D,EAAIyE,EAAMH,GAChD,MAAM,WAAE/E,GAAepP,EAEvB,IAAIuU,EAAiB,IAAInR,EAGzB,OAFAmR,EAAe/B,OAAO,kBAAmB8B,GAElC,IAAIjJ,QAAQ,CAAC9C,EAASoB,KAwBzB8I,WAvBAxD,eAAemF,IACX,IAK4B,aAJDzF,EAClBqF,OAAO5E,KAAcuE,MAAY9D,wBAAyBsE,IAAUI,EAAgB,CACjFjF,MAAOtP,EAAOsP,SAETE,QACT+E,EAAiB,IAAInR,EACrBqP,WAAW2B,EAAS,MAEpB7L,IAEN,MAAOgH,GACL,MAAM7M,EAAO6M,EAAUF,SACjBE,EAAUF,SAASG,OAASD,EAAU7M,KACtCtE,EAAQ,IAAIqE,0CAC0BkR,KAAW9D,IACnDnN,GAEJiH,EAAOvL,WAkGf2T,UAAU,QAO1B1W,EAAOD,QAAU8G,GA9nBrB,I,iBCVA,kBAqBKlG,OAAOwY,OACHxY,OAAOwY,OAEP,SAAoBxR,EAAKyR,EAAQC,EAAQC,GAC/C,IAAK,IAAIrZ,EAAI,EAAGA,EAAIoJ,UAAUjF,OAAQnE,IACrCsZ,EAAK5Y,OAAO0I,UAAUpJ,IAAK,SAASuH,EAAKhG,GACxCmG,EAAInG,GAAOgG,IAGb,OAAOG,GA7BNpG,EAkCJ,WACC,GAAIZ,OAAOY,OACV,OAAO,SAAgBoG,EAAK6R,EAAcC,EAAcH,GACvD,IAAII,EAAiBzH,EAAM5I,UAAW,GACtC,OAAO8P,EAAOrJ,MAAM/L,KAAM,CAACpD,OAAOY,OAAOoG,IAAMgS,OAAOD,KAEjD,CACN,SAASE,KACT,OAAO,SAAgBjS,EAAK6R,EAAcC,EAAcH,GACvD,IAAII,EAAiBzH,EAAM5I,UAAW,GAEtC,OADAuQ,EAAE/X,UAAY8F,EACPwR,EAAOrJ,MAAM/L,KAAM,CAAC,IAAI6V,GAAKD,OAAOD,MA7CjCG,GACTnQ,EAkDCxG,OAAOrB,UAAU6H,KACb,SAAcC,GACpB,OAAOzG,OAAOrB,UAAU6H,KAAKtJ,KAAKuJ,IAG5B,SAAcA,GACpB,OAAOA,EAAIC,QAAQ,qCAAsC,KAvDxDkQ,EAA4B,oBAAXxX,OAAyBA,OAASE,EAkEvD,SAASyP,EAAM8H,EAAK7V,GACnB,OAAON,MAAM/B,UAAUoQ,MAAM7R,KAAK2Z,EAAK7V,GAAS,GAGjD,SAASqV,EAAK5R,EAAKC,GAClBoS,EAAMrS,EAAK,SAASH,EAAKhG,GAExB,OADAoG,EAAGJ,EAAKhG,IACD,IAaT,SAASwY,EAAMrS,EAAKC,GACnB,GAAIqS,EAAOtS,IACV,IAAK,IAAI1H,EAAE,EAAGA,EAAE0H,EAAIvD,OAAQnE,IAC3B,GAAI2H,EAAGD,EAAI1H,GAAIA,GACd,OAAO0H,EAAI1H,QAIb,IAAK,IAAIuB,KAAOmG,EACf,GAAIA,EAAI7F,eAAeN,IAClBoG,EAAGD,EAAInG,GAAMA,GAChB,OAAOmG,EAAInG,GAOhB,SAASyY,EAAOzS,GACf,OAAe,MAAPA,GAA6B,mBAAPA,GAA0C,iBAAdA,EAAIpD,OAvG/DpE,EAAOD,QAAU,CAChBoZ,OAAQA,EACR5X,OAAQA,EACRmI,KAAMA,EACNjI,KAsDD,SAAckG,EAAKC,GAClB,OAAO,WACN,OAAOA,EAAGkI,MAAMnI,EAAK/D,MAAM/B,UAAUoQ,MAAM7R,KAAKiJ,UAAW,MAvD5D4I,MAAOA,EACPsH,KAAMA,EACNW,IAoED,SAAavS,EAAKC,GACjB,IAAIuS,EAAOF,EAAOtS,GAAO,GAAK,GAK9B,OAJAqS,EAAMrS,EAAK,SAASyS,EAAGC,GAEtB,OADAF,EAAIE,GAAKzS,EAAGwS,EAAGC,IACR,IAEDF,GAzEPH,MAAOA,EACPC,OAAQA,EACRxS,WAgGD,SAAoBD,GACnB,OAAOA,GAAiC,sBAA1B,GAAGlC,SAASlF,KAAKoH,IAhG/BxE,SAmGD,SAAkBwE,GACjB,OAAOA,GAAiC,oBAA1B,GAAGlC,SAASlF,KAAKoH,IAnG/BsS,OAAQA,K,gCCZT,MAUI,MAAMQ,EAAgB3Z,OAAO0F,OAAO,CAChCkU,IAAK,MACLC,IAAK,QAaHC,EAAa9Z,OAAO0F,OAAO,CAC7BqU,WAAY,aACZC,WAAY,aACZC,UAAW,cAYTC,EAAWla,OAAO0F,OAAO,CAC3BqU,WAAY,aACZI,cAAe,kBAebC,EAAgBpa,OAAO0F,OAAO,CAChC2U,SAAU,WACVC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SAaJC,EAAa1a,OAAO0F,OAAO,CAC7BiV,IAAK,MACLC,MAAO,QACPC,MAAO,UAcLC,EAAc9a,OAAO0F,OAAO,CAC9BqV,UAAW,YACXC,QAAS,UACTC,SAAU,WACVC,OAAQ,WA2ENC,EAAYnb,OAAO0F,OAAO,CAC5B0V,gBAAiB,IAGrB/b,EAAOD,QAAU,CACbua,gBACAG,aACAI,WACAE,gBACAM,aACAI,cACAO,QAjDY,CACZC,YAAa,EACbC,gBAAiB,EACjBC,WAAY,EACZC,aAAc,EACdC,cAAe,EACfC,aAAc,EACdC,SAAU,EACV5E,QAAS,EACT6E,UAAW,EACXC,WAAY,EACZC,YAAa,GACbC,aAAc,GACdC,QAAS,GACTC,UAAW,GACXC,UAAW,GACXC,WAAY,GACZC,aAAc,GACdC,WAAY,GACZC,gBAAiB,GACjBC,WAAY,GACZC,WAAY,GACZC,iBAAkB,GAClBC,cAAe,GACfC,YAAa,GACbC,UAAW,GACXC,SAAU,GACVC,YAAa,IAuBb5B,cAvLR,I,cCHA9b,EAAOD,QAAU,SAAUmC,GACzB,GAAUmC,MAANnC,EAAiB,MAAMe,UAAU,wBAA0Bf,GAC/D,OAAOA,I,cCJTlC,EAAOD,SAAU,G,gBCAjB,IAAIa,EAAiB,EAAQ,IAAuC8L,EAChEwF,EAAM,EAAQ,GAGdhI,EAFkB,EAAQ,EAEVF,CAAgB,eAEpChK,EAAOD,QAAU,SAAUmC,EAAIoZ,EAAK9J,GAC9BtP,IAAOgQ,EAAIhQ,EAAKsP,EAAStP,EAAKA,EAAGL,UAAWqI,IAC9CtJ,EAAesB,EAAIgI,EAAe,CAAEyT,cAAc,EAAMzc,MAAOoa,M,cCRnEtb,EAAOD,QAAU,SAAUmC,GACzB,GAAiB,mBAANA,EACT,MAAMe,UAAUC,OAAOhB,GAAM,sBAC7B,OAAOA,I,cCHXlC,EAAOD,QAAU,I,sCCSjB,MACI,MAAM,YAAEoH,GAAgB1C,EAAQ,GAE1BmZ,EAAU,GAChB,MAAMC,EACF,wBAAwBC,KAAgBC,GAEpC,MAAMC,QAAmBH,EAAeI,OACxC,IAAK,MAAMC,KAAUF,EAAY,CAC7B,MAAMG,EAAmBD,EAAOE,UAC3BtK,OAAOnM,GAAOA,EAAI0W,WAAaP,GAAa,GACjD,GAAIK,GAAoBA,EAAiBzP,MACrC,UACUyP,EAAiBzP,MAAMtO,KAAK2D,KAAMma,KAAWH,GACrD,MAAOhX,GACL,MAAIA,aAAqBI,EACfJ,EAEA,IAAII,yBAAmC+W,EAAO1d,SAASuG,EAAUzB,eAMvF,IAAI6D,QAAe2U,EAAYQ,eAAele,KAAK2D,QAASga,GAE5D,IAAK,MAAMG,KAAUF,EAAY,CAC7B,MAAMG,EAAmBD,EAAOE,UAC3BtK,OAAOnM,GAAOA,EAAI0W,WAAaP,GAAa,GACjD,GAAIK,GAAoBA,EAAiBI,MACrC,IACIpV,QAAegV,EAAiBI,MAAMne,KAAK2D,KAAMma,EAAQ/U,KAAW4U,GACtE,MAAOhX,GACL,MAAIA,aAAqBI,EACfJ,EAEA,IAAII,yBAAmC+W,EAAO1d,SAASuG,EAAUzB,eAMvF,OAAO6D,EAIX,sBAAsBqV,GAClB,MAAMJ,EAAY,GAElB,GAAsB,iBAAVI,EACR,MAAM,IAAIrX,iDAA4DqX,MAG1E,KAAM,SAAUA,IAAgC,iBAAfA,EAAKhe,KAClC,MAAM,IAAI2G,EAAY,8DAG1B,KAAM,gBAAiBqX,IAAuC,iBAAtBA,EAAKC,YACzC,MAAM,IAAItX,EAAY,qEAG1B,GAAI,cAAeqX,EACf,MAAM,IAAIrX,EAAY,gDAGzB,SAASuX,EAASR,EAAQS,GACvB,MAAMC,EAAY,GAClB,IAAK,MAAMpd,KAAO0c,EACVvd,OAAOkB,UAAUC,eAAe1B,KAAK8d,EAAQ1c,KAChB,iBAAjB0c,EAAO1c,GACXb,OAAOkB,UAAUC,eAAe1B,KAAKue,EAAKnd,IAC1Ckd,EAASR,EAAO1c,GAAMmd,EAAInd,IAEvB,CAAC,QAAS,SAAS8V,SAAS9V,IACf,mBAATmd,IACAT,EAAO1c,GAAf,KACHod,EAAUP,SAAWM,EACrBC,EAAUpd,GAAO0c,EAAO1c,KAKhCb,OAAOke,KAAKD,GAAWxa,QACvBga,EAAU1O,KAAKkP,GAlBtB,CAoBCJ,EAAM,CACJM,KAAM/a,OAGVpD,OAAOC,eAAe4d,EAAM,YAAa,CACrCtd,MAAOkd,EACP1H,UAAU,IAGdkH,EAAQlO,KAAK8O,GAGjB,oBACI,OAAOZ,GAIf5d,EAAOD,QAAU8d,GAtGrB,I,gBCTA,IAAIkB,EAAyB,EAAQ,IAIrC/e,EAAOD,QAAU,SAAUif,GACzB,OAAOre,OAAOoe,EAAuBC,M,cCLvC,IAAIC,EAGJA,EAAI,WACH,OAAOlb,KADJ,GAIJ,IAECkb,EAAIA,GAAK,IAAIxc,SAAS,cAAb,GACR,MAAOyc,GAEc,iBAAX5c,SAAqB2c,EAAI3c,QAOrCtC,EAAOD,QAAUkf,G,cCnBjBjf,EAAOD,QAAU,SAAUof,EAAQje,GACjC,MAAO,CACLL,aAAuB,EAATse,GACdxB,eAAyB,EAATwB,GAChBzI,WAAqB,EAATyI,GACZje,MAAOA,K,gBCJX,IAAIke,EAAgB,EAAQ,IACxBL,EAAyB,EAAQ,IAErC/e,EAAOD,QAAU,SAAUmC,GACzB,OAAOkd,EAAcL,EAAuB7c,M,gBCL9C,IAAIM,EAAS,EAAQ,GACjBuO,EAAY,EAAQ,IACpBlG,EAAU,EAAQ,IAGlBhI,EAAQL,EADC,uBACiBuO,EADjB,qBACmC,KAE/C/Q,EAAOD,QAAU,SAAUyB,EAAKN,GAC/B,OAAO2B,EAAMrB,KAASqB,EAAMrB,QAAiB6C,IAAVnD,EAAsBA,EAAQ,MAChE,WAAY,IAAIwO,KAAK,CACtBlK,QAAS,QACTpE,KAAMyJ,EAAU,OAAS,SACzBwU,UAAW,0C,gBCZb,IAAIvU,EAAO,EAAQ,IACftI,EAAS,EAAQ,GAEjB0I,EAAY,SAAUoU,GACxB,MAA0B,mBAAZA,EAAyBA,OAAWjb,GAGpDrE,EAAOD,QAAU,SAAUwf,EAAWC,GACpC,OAAOnW,UAAUjF,OAAS,EAAI8G,EAAUJ,EAAKyU,KAAerU,EAAU1I,EAAO+c,IACzEzU,EAAKyU,IAAczU,EAAKyU,GAAWC,IAAWhd,EAAO+c,IAAc/c,EAAO+c,GAAWC,K,gBCT3F,IAAIC,EAAY,EAAQ,IAEpBC,EAAMvd,KAAKud,IAIf1f,EAAOD,QAAU,SAAUif,GACzB,OAAOA,EAAW,EAAIU,EAAID,EAAUT,GAAW,kBAAoB,I,cCPrE,IAAIW,EAAOxd,KAAKwd,KACZC,EAAQzd,KAAKyd,MAIjB5f,EAAOD,QAAU,SAAUif,GACzB,OAAOa,MAAMb,GAAYA,GAAY,GAAKA,EAAW,EAAIY,EAAQD,GAAMX,K,gBCNzE,IAAI9T,EAAY,EAAQ,IAGxBlL,EAAOD,QAAU,SAAU6H,EAAIkY,EAAM1b,GAEnC,GADA8G,EAAUtD,QACGvD,IAATyb,EAAoB,OAAOlY,EAC/B,OAAQxD,GACN,KAAK,EAAG,OAAO,WACb,OAAOwD,EAAGxH,KAAK0f,IAEjB,KAAK,EAAG,OAAO,SAAUvW,GACvB,OAAO3B,EAAGxH,KAAK0f,EAAMvW,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAO5B,EAAGxH,KAAK0f,EAAMvW,EAAGC,IAE1B,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAGlJ,GAC7B,OAAOsH,EAAGxH,KAAK0f,EAAMvW,EAAGC,EAAGlJ,IAG/B,OAAO,WACL,OAAOsH,EAAGkI,MAAMgQ,EAAMzW,c,gBCrB1B,IAAI+B,EAAU,EAAQ,IAClB/H,EAAY,EAAQ,IAGpB4G,EAFkB,EAAQ,EAEfD,CAAgB,YAE/BhK,EAAOD,QAAU,SAAUmC,GACzB,GAAUmC,MAANnC,EAAiB,OAAOA,EAAG+H,IAC1B/H,EAAG,eACHmB,EAAU+H,EAAQlJ,M,4CCAzB,MACI,MAAM2b,EAAiBpZ,EAAQ,IACzBoC,EAAcpC,EAAQ,KACtB,SAAEsb,GAAatb,EAAQ,MACvB,cAAEuC,GAAkBvC,EAAQ,IAC5B,WAAEgW,GAAehW,EAAQ,KACzB,MAAEub,GAAUvb,EAAQ,IAE1B,SAASwb,EAAmBpe,GACxBlB,OAAOyF,iBAAiBvE,EAAW,CAC/BuW,YAAazX,OAAO0F,OAAO,CACvBnF,MAAO,CACH,aAAa+X,EAAMiH,GAGf,aAFqBrC,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYgI,OAAQnH,EAAMiH,IAInE,aAGI,aAFqBrC,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYiI,OAIrD,YAAYC,GAAS,GAGjB,aAFqBzC,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYmI,MAAOD,IAI5D,WAAW9f,EAAMggB,GAGb,aAFqB3C,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYqI,KAAMjgB,EAAMggB,IAIjE,mBAGI,aAFqB3C,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYsI,aAIrD,UAAUC,EAAiB,IAGvB,aAFqB9C,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYO,IAAKgI,IAI1D,UAAU1I,EAAOnE,EAAS,IAGtB,aAFqB+J,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYtX,IAAKmX,EAAOnE,IAIjE,aAAaA,EAAQ8M,EAAWC,GAI5B,aAHqBhD,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAY0I,OACzChN,EAAQ8M,EAAWC,IAI/B,aAAaE,EAAc5Q,EAAG6Q,GAI1B,aAHqBnD,EAChBsC,WAAW/f,KAAK2D,KACblC,EAAUuW,YAAY6I,OAAQF,EAAc5Q,EAAG6Q,IAI3D,0BAGI,aAFqBnD,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAY8I,oBAIrD,YAAYH,GAGR,aAFqBlD,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYlP,MAAO6X,IAI5D,YAAYI,EAAalJ,GAGrB,aAFqB4F,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAY7F,MAAO4O,EAAalJ,IAIzE,YAAY8I,EAAcK,GAAQ,GAI9B,aAHqBvD,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUuW,YAAYiJ,MACzCN,EAAcK,KAI9B1K,UAAU,IAEdoB,OAAQnX,OAAO0F,OAAO,CAClBnF,MAAO,CACH,UAAU+W,GAGN,aAFqB4F,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUiW,OAAOhX,IAAKmX,KAIzDvB,UAAU,IAEd4K,KAAM3gB,OAAO0F,OAAO,CAChBnF,MAAO,CACH,UAAUqgB,EAASC,GAGf,aAFqB3D,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUyf,KAAK3I,IAAK4I,EAASC,IAG5D,WAAWvK,GAGP,aAFqB4G,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAUyf,KAAKjB,KAAMpJ,KAIxDP,UAAU,IAEd+K,QAAS9gB,OAAO0F,OAAO,CACnBnF,MAAO,CACH,WAAWoT,GAGP,aAFqBuJ,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAU4f,QAAQC,KAAMpN,IAGvD,WAAWA,GAGP,aAFqBuJ,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAU4f,QAAQE,KAAMrN,IAGvD,cAGI,aAFqBuJ,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAU4f,QAAQlB,SAIrD7J,UAAU,IAEdkL,OAAQjhB,OAAO0F,OAAO,CAClBnF,MAAO,CACH,gBAAgB2gB,EAAQxD,GAGpB,aAFqBR,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAU+f,OAAOE,UAAWD,EAAQxD,IAGnE,kBAAkBwD,EAAQxD,EAAW,MAGjC,aAFqBR,EAChBsC,WAAW/f,KAAK2D,KAAMlC,EAAU+f,OAAOG,YAAaF,EAAQxD,KAIzE3H,UAAU,MAUtB,MAAMsL,EACFld,gBAuTJ,MAAMmd,UAAYD,EACdld,YAAYod,GACRld,QACA,MAAMoP,EAAO,CACTI,QAAInQ,EACJ8d,cAAU9d,EACV8P,YAAQ9P,EACR+d,iBAAa/d,EACbge,gBAAYhe,EACZmH,UAAMnH,GAGV,IAAK,MAAMzC,KAAYwS,EACnB,GAAIzT,OAAOkB,UAAUC,eAAe1B,KAAKgU,EAAMxS,KACvCA,KAAYsgB,IACZ9N,EAAKxS,GAAYsgB,EAAYtgB,SAGVyC,IAAnB+P,EAAKxS,IACL,MAAM,IAAIoF,gBACQpF,0BAM9BjB,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCmO,GAAI,CACA1T,IAAK,IAAMsT,EAAKI,IAUpB2N,SAAU,CACNrhB,IAAK,IAAMsT,EAAK+N,SAChB1e,IAAK,IAAO0e,IACR,IAAKG,OAAOC,UAAUJ,IAAaA,EAAW,EAC1C,MAAM,IAAInb,EACN,wCAGRoN,EAAK+N,SAAWA,IAUxBhO,OAAQ,CACJrT,IAAK,IAAMsT,EAAKD,OAChB1Q,IAAM0Q,IACF,MAAMnQ,EAAOyW,EACb,IAAI+H,GAAc,EAClB,IAAK,MAAMthB,KAAS8C,EAChB,GAAIA,EAAK9C,KAAWiT,EAAQ,CACxBqO,GAAc,EACd,MAIR,IAAKA,EACD,MAAM,IAAIxb,EACN,oEAIRoN,EAAKD,OAASA,IAUtBsO,WAAY,CACR3hB,IAAK,IAAMsT,EAAKgO,aASpBM,UAAW,CACP5hB,IAAK,IAAMsT,EAAKiO,YASpB7W,KAAM,CACF1K,IAAK,IAAMsT,EAAK5I,SAOxBzH,KAAKqU,YAAc,CACftX,IAAKH,OAAOgiB,eAAe5e,MAAMqU,YAAYtX,IAAIW,KAAKsC,MACtD4U,IAAKhY,OAAOgiB,eAAe5e,MAAMqU,YAAYO,IAAIlX,KAAKsC,MACtDsc,KAAM1f,OAAOgiB,eAAe5e,MAAMqU,YAAYiI,KAAK5e,KAAKsC,MACxD0c,KAAM9f,OAAOgiB,eAAe5e,MAAMqU,YAAYqI,KAAKhf,KAAKsC,MACxDmF,MAAOvI,OAAOgiB,eAAe5e,MAAMqU,YAAYlP,MAAMzH,KAAKsC,MAC1DwO,MAAO5R,OAAOgiB,eAAe5e,MAAMqU,YAAY7F,MAAM9Q,KAAKsC,MAC1Dsd,MAAO1gB,OAAOgiB,eAAe5e,MAAMqU,YAAYiJ,MAAM5f,KAAKsC,MAC1Dwc,MAAO5f,OAAOgiB,eAAe5e,MAAMqU,YAAYmI,MAAM9e,KAAKsC,MAC1Dqc,OAAQzf,OAAOgiB,eAAe5e,MAAMqU,YAAYgI,OAAO3e,KAAKsC,MAC5Dkd,OAAQtgB,OAAOgiB,eAAe5e,MAAMqU,YAAY6I,OAAOxf,KAAKsC,MAC5D2c,WAAY/f,OAAOgiB,eAAe5e,MAAMqU,YAAYsI,WAAWjf,KAAKsC,MACpEmd,kBAAmBvgB,OAAOgiB,eAAe5e,MACpCqU,YAAY8I,kBAAkBzf,KAAKsC,OAG5CA,KAAK+T,OAAS,CACVhX,IAAKH,OAAOgiB,eAAe5e,MAAM+T,OAAOhX,IAAIW,KAAKsC,OAczD,aAGI,aAFqB8Z,EAChBsC,WAAW/f,KAAK2D,KAAMke,EAAIpgB,UAAUwe,OAUjD,MAAMuC,UAAaZ,EAafld,YAAYod,GACRld,QACA,MAAMoP,EAAO,CACTI,QAAInQ,EACJ7D,UAAM6D,EACN8P,YAAQ9P,EACRwe,UAAMxe,EACNjD,UAAMiD,EACNye,WAAOze,EACP8d,cAAU9d,EACV0e,kBAAc1e,EACd2e,kBAAc3e,EACd4e,iBAAa5e,EACb6e,aAAS7e,EACT8e,kBAAc9e,EACd+e,aAAS/e,EACTgf,mBAAehf,EACf+d,iBAAa/d,EACbge,gBAAYhe,EACZif,kBAAcjf,GAGlB,IAAK,MAAMzC,KAAYwS,EACfzT,OAAOkB,UAAUC,eAAe1B,KAAKgU,EAAMxS,IACxCA,KAAYsgB,IACf9N,EAAKxS,GAAYsgB,EAAYtgB,IAYrC,GARAwS,EAAKmP,OAAS,GACdnP,EAAKqD,KAAO,GACZrD,EAAK4C,MAAQrW,OAAO0F,OAAO,CACvBmd,aAAc,GACdC,aAAc,GACdC,aAAc,KAGd9f,MAAM2D,QAAQ2a,EAAYyB,UAC1B,IAAK,MAAMC,KAAW1B,EAAYyB,SAC9B,GAAI/f,MAAM2D,QAAQqc,EAAQnM,MACtB,IAAK,MAAMoM,KAAOD,EAAQnM,KAAM,CAC5B,MAAMqM,EAAc,IAAI7B,EAAI,CACxBxJ,IAAKoL,EAAIpL,IACTjE,GAAIqP,EAAIrP,GACR2N,SAAU0B,EAAI1B,SACdhO,OAAQ0P,EAAI1P,OACZiO,YAAawB,EAAQxB,YACrBC,WAAYuB,EAAQvB,WACpB7W,KAAMzH,OAEVqQ,EAAKqD,KAAK/H,KAAKoU,GAM/B,GAAIlgB,MAAM2D,QAAQ2a,EAAYqB,QAC1B,IAAK,MAAMQ,KAAS7B,EAAYqB,OAAQ,CACpC,MAAMS,EAAgB,IAAIhE,EAAM+D,GAChC3P,EAAKmP,OAAO7T,KAAKsU,GAIzBrjB,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCmO,GAAI,CACA1T,IAAK,IAAMsT,EAAKI,IASpBhU,KAAM,CACFM,IAAK,IAAMsT,EAAK5T,KAChBiD,IAAMvC,IACF,IAAKA,EAAMwI,OAAOtF,OACd,MAAM,IAAI4C,EACN,2BAGRoN,EAAK5T,KAAOU,IAUpBiT,OAAQ,CACJrT,IAAK,IAAMsT,EAAKD,QASpB0O,KAAM,CACF/hB,IAAK,IAAMsT,EAAKyO,MASpBzhB,KAAM,CACFN,IAAK,IAAMsT,EAAKhT,MAUpB0hB,MAAO,CACHhiB,IAAK,IAAMsT,EAAK0O,OAUpBX,SAAU,CACNrhB,IAAK,IAAMsT,EAAK+N,SAChB1e,IAAK,IAAO0e,IACR,IAAKG,OAAOC,UAAUJ,IAAaA,EAAW,EAC1C,MAAM,IAAInb,EACN,wCAGRoN,EAAK+N,SAAWA,IAUxB8B,YAAa,CACTnjB,IAAK,IAAMsT,EAAK2O,cASpBmB,YAAa,CACTpjB,IAAK,IAAMsT,EAAK4O,cASpBmB,WAAY,CACRrjB,IAAK,IAAMsT,EAAK6O,YAChBxf,IAAM2gB,IACFhQ,EAAK6O,YAAcmB,IAU3BlB,QAAS,CACLpiB,IAAK,IAAMsT,EAAK8O,QAChBzf,IAAMyf,IACF,IAAKZ,OAAOC,UAAUW,IAAYA,EAAU,EACxC,MAAM,IAAIlc,EACN,wCAGRoN,EAAK8O,QAAUA,IAUvBmB,YAAa,CACTvjB,IAAK,IAAMsT,EAAK+O,aAChB1f,IAAMmgB,IACF,IAAKtB,OAAOC,UAAUqB,IAAYA,EAAU,EACxC,MAAM,IAAI5c,EACN,oCAGRoN,EAAK+O,aAAeS,IAU5BU,OAAQ,CACJxjB,IAAK,IAAMsT,EAAKgP,QAChB3f,IAAM6gB,IACF,GAAwB,kBAAZA,EACR,MAAM,IAAItd,EACN,2BAGRoN,EAAKgP,QAAUkB,IAUvBC,aAAc,CACVzjB,IAAK,IAAMsT,EAAKiP,cAChB5f,IAAM+gB,IACF,IAAKlC,OAAOC,UAAUiC,IAAYA,EAAU,EACxC,MAAM,IAAIxd,EACN,oCAGRoN,EAAKiP,cAAgBmB,IAW7BjB,OAAQ,CACJziB,IAAK,IAAM,IAAIsT,EAAKmP,QACpB9f,IAAM8f,IACF,IAAK3f,MAAM2D,QAAQgc,GACf,MAAM,IAAIvc,EACN,oCAIR,IAAK,MAAM+c,KAASR,EAChB,KAAMQ,aAAiB/D,GACnB,MAAM,IAAIhZ,EACN,4DACiB+c,oBAKJ,IAAb3P,EAAKI,GACbJ,EAAKmP,OAAS,IAAIA,GAElBnP,EAAKmP,OAASnP,EAAKmP,OAAO5J,OAAO,IAAI4J,MAWjD9L,KAAM,CACF3W,IAAK,IAAM,IAAIsT,EAAKqD,OAUxBgN,YAAa,CACT3jB,IAAK,IAAM,IAAIsT,EAAK4C,MAAMwM,cAC1B/f,IAAMghB,IACF,IAAK7gB,MAAM2D,QAAQkd,GACf,MAAM,IAAIzd,wCACiCyd,mBAI/C,IAAK,MAAMvjB,KAASujB,EAChB,GAAuB,iBAAXvjB,EACR,MAAM,IAAI8F,+CACwC9F,mBAK1D0C,MAAM/B,UAAU6N,KAAKI,MAAMsE,EAAK4C,MAAMwM,aAAciB,KAW5DC,YAAa,CACT5jB,IAAK,IAAM,IAAIsT,EAAK4C,MAAMyM,cAC1BhgB,IAAMihB,IACF,IAAK9gB,MAAM2D,QAAQmd,GACf,MAAM,IAAI1d,wCACiC0d,mBAI/C,IAAK,MAAMxjB,KAASwjB,EAChB,KAAMxjB,aAAiByjB,MACnB,MAAM,IAAI3d,sCAC8B9F,EAAM4D,YAAYtE,sBAKlEoD,MAAM/B,UAAU6N,KAAKI,MAAMsE,EAAK4C,MAAMyM,aAAciB,KAW5DE,YAAa,CACT9jB,IAAK,IAAM,IAAIsT,EAAK4C,MAAM0M,cAC1BjgB,IAAMmhB,IACF,IAAKhhB,MAAM2D,QAAQqd,GACf,MAAM,IAAI5d,wCACiC4d,mBAI/C,IAAK,MAAM1jB,KAAS0jB,EAChB,GAAuB,iBAAX1jB,EACR,MAAM,IAAI8F,+CACwC9F,mBAK1D0C,MAAM/B,UAAU6N,KAAKI,MAAMsE,EAAK4C,MAAM0M,aAAckB,KAW5DnC,WAAY,CACR3hB,IAAK,IAAMsT,EAAKgO,YAChB3e,IAAMwU,IACF,IAAKqK,OAAOC,UAAUtK,IAAUA,EAAQ,EACpC,MAAM,IAAIjR,EACN,wCAGRoN,EAAKgO,YAAcnK,IAW3ByK,UAAW,CACP5hB,IAAK,IAAMsT,EAAKiO,WAChB5e,IAAMwU,IACF,IAAKqK,OAAOC,UAAUtK,IAAUA,EAAQ,EACpC,MAAM,IAAIjR,EACN,wCAGRoN,EAAKiO,WAAapK,IAW1B4M,YAAa,CACT/jB,IAAK,IAAMsT,EAAKkP,aAChB7f,IAAMqQ,IACF,GAAwB,iBAAZA,EACR,MAAM,IAAI9M,+CACwC8M,mBAItDM,EAAKkP,aAAexP,OAQhC/P,KAAKqU,YAAc,CACftX,IAAKH,OAAOgiB,eAAe5e,MAAMqU,YAAYtX,IAAIW,KAAKsC,MACtD4U,IAAKhY,OAAOgiB,eAAe5e,MAAMqU,YAAYO,IAAIlX,KAAKsC,MACtDsc,KAAM1f,OAAOgiB,eAAe5e,MAAMqU,YAAYiI,KAAK5e,KAAKsC,MACxD0c,KAAM9f,OAAOgiB,eAAe5e,MAAMqU,YAAYqI,KAAKhf,KAAKsC,MACxDmF,MAAOvI,OAAOgiB,eAAe5e,MAAMqU,YAAYlP,MAAMzH,KAAKsC,MAC1DwO,MAAO5R,OAAOgiB,eAAe5e,MAAMqU,YAAY7F,MAAM9Q,KAAKsC,MAC1Dsd,MAAO1gB,OAAOgiB,eAAe5e,MAAMqU,YAAYiJ,MAAM5f,KAAKsC,MAC1Dwc,MAAO5f,OAAOgiB,eAAe5e,MAAMqU,YAAYmI,MAAM9e,KAAKsC,MAC1Dqc,OAAQzf,OAAOgiB,eAAe5e,MAAMqU,YAAYgI,OAAO3e,KAAKsC,MAC5Dkd,OAAQtgB,OAAOgiB,eAAe5e,MAAMqU,YAAY6I,OAAOxf,KAAKsC,MAC5D2c,WAAY/f,OAAOgiB,eAAe5e,MAAMqU,YAAYsI,WAAWjf,KAAKsC,MACpEmd,kBAAmBvgB,OAAOgiB,eAAe5e,MACpCqU,YAAY8I,kBAAkBzf,KAAKsC,OAG5CA,KAAK+T,OAAS,CACVhX,IAAKH,OAAOgiB,eAAe5e,MAAM+T,OAAOhX,IAAIW,KAAKsC,OAkBzD,WAAWkT,EAAW,UAGlB,aAFqB4G,EAChBsC,WAAW/f,KAAK2D,KAAM6e,EAAK/gB,UAAUwe,KAAMpJ,GAcpD,eAGI,aAFqB4G,EAChBsC,WAAW/f,KAAK2D,KAAM6e,EAAK/gB,UAAU4S,SAKlDzU,EAAOD,QAAU,CACbkiB,MACAW,QAGJ,MAAM,eACFhK,EADE,eAEFkM,EAFE,gBAGFC,EAHE,kBAIF7D,EAJE,iBAKF8D,EALE,iBAMFC,EANE,iBAOFC,EAPE,iBAQFC,EARE,aASFC,EATE,sBAUFC,EAVE,kBAWFrM,EAXE,gBAYFH,GACApU,EAAQ,KAEZwb,EAAmBgC,EAAIpgB,WACvBoe,EAAmB2C,EAAK/gB,WAExBogB,EAAIpgB,UAAUwe,KAAK/B,eAAiB1K,iBAEhC,GAAI7P,KAAKyQ,GAAI,CACT,MAAMoD,EAAU,CACZzD,OAAQpQ,KAAKoQ,QAIjB,aADMtN,EAAY4Q,KAAKE,QAAQ5T,KAAKyQ,GAAIoD,GACjC7T,KAGX,MAAM,IAAIiD,EACN,oCAIRib,EAAIpgB,UAAUiW,OAAOhX,IAAIwd,eAAiB1K,eAAgBqE,GACtD,IAAKqK,OAAOC,UAAUtK,IAAUA,EAAQ,EACpC,MAAM,IAAIjR,6CACqCiR,MAInD,GAAIA,EAAQlU,KAAK0e,YAAcxK,EAAQlU,KAAK2e,UACxC,MAAM,IAAI1b,2BACmBiR,uBAKjC,aADwB8H,EAAShc,KAAKyH,KAAKgJ,GAAIzQ,KAAKyH,KAAKpK,KAAM6W,IAKnEgK,EAAIpgB,UAAUuW,YAAYtX,IAAIwd,eAAiB1K,eAAgBqE,EAAOnE,GAClE,GAAImE,EAAQlU,KAAK0e,YAAcxK,EAAQlU,KAAK2e,UACxC,MAAM,IAAI1b,WACGiR,+BAKjB,aAD8BW,EAAe7U,KAAMkU,EAAOnE,IAI9DmO,EAAIpgB,UAAUuW,YAAYiI,KAAK/B,eAAiB1K,eAAgBqD,GAE5D,aADqB8N,EAAgBhhB,KAAMkT,IAI/CgL,EAAIpgB,UAAUuW,YAAYlP,MAAMoV,eAAiB1K,eAAgBmN,GAE7D,aADqBiE,EAAiBjhB,KAAMgd,IAIhDkB,EAAIpgB,UAAUuW,YAAY7F,MAAM+L,eAAiB1K,eAAgBuN,EAAalJ,GAE1E,aADqBgN,EAAiBlhB,KAAMod,EAAalJ,IAI7DgK,EAAIpgB,UAAUuW,YAAYiJ,MAAM/C,eAAiB1K,eAAgBmN,EAAcK,GAE3E,aADqB8D,EAAiBnhB,KAAMgd,EAAcK,IAI9Da,EAAIpgB,UAAUuW,YAAY8I,kBAAkB5C,eAAiB,WAEzD,OADe4C,EAAkBnd,OAIrCke,EAAIpgB,UAAUuW,YAAYmI,MAAMjC,eAAiB1K,eAAgB0M,GAE7D,aADqB6E,EAAiBphB,KAAMuc,IAIhD2B,EAAIpgB,UAAUuW,YAAY6I,OAAO3C,eAAiB,SAAUrG,EAAO9H,EAAG6Q,GAElE,OADeoE,EAAarhB,KAAMkU,EAAO9H,EAAG6Q,IAIhDiB,EAAIpgB,UAAUuW,YAAYsI,WAAWpC,eAAiB,WAElD,OADe+G,EAAsBthB,OAIzCke,EAAIpgB,UAAUuW,YAAYO,IAAI2F,eAAiB,SAAUyC,GAErD,OADe+D,EAAe/gB,KAAMgd,IAIxCkB,EAAIpgB,UAAUuW,YAAYgI,OAAO9B,eAAiB1K,eAAgBqF,EAAMiH,GAEpE,aADqBlH,EAAkBjV,KAAMkV,EAAMiH,IAIvD+B,EAAIpgB,UAAUuW,YAAYqI,KAAKnC,eAAiB1K,eAAgBpT,EAAMggB,GAElE,aADqB3H,EAAgB9U,KAAMvD,EAAMggB,IAIrDoC,EAAK/gB,UAAUwe,KAAK/B,eAAiB1K,eAAsCqD,GAEvE,QAAyB,IAAblT,KAAKyQ,GAAqB,CAElC,MAAMqC,EAAW,CACbrW,KAAMuD,KAAKvD,KACXyiB,YAAalf,KAAKogB,WAClBf,QAASrf,KAAKugB,OACdf,OAAQ,IAAIxf,KAAKwf,OAAOrJ,IAAIoL,GAAMA,EAAGC,YAIzC,aADM1e,EAAY8P,MAAMC,SAAS7S,KAAKyQ,GAAIqC,GACnC9S,KAGX,MAAM8S,EAAW,CACbrW,KAAMuD,KAAKvD,KACX+iB,OAAQxf,KAAKwf,OAAOrJ,IAAIoL,GAAMA,EAAGC,UACjClC,cAAetf,KAAKwgB,aACpBnB,QAASoC,QAAQzhB,KAAKugB,SAGtBvgB,KAAKogB,aACLtN,EAASoM,YAAclf,KAAKogB,YAE5BpgB,KAAKsgB,cACLxN,EAASsM,aAAepf,KAAKsgB,aAE7BtgB,KAAKmf,UACLrM,EAASqM,QAAUnf,KAAKmf,SAExBnf,KAAK0e,aACL5L,EAASuL,YAAcre,KAAK0e,YAE5B1e,KAAK2e,YACL7L,EAASwL,WAAate,KAAK2e,WAE3B3e,KAAK8gB,cACLhO,EAASyM,aAAevf,KAAK8gB,aAGjC,MAAMY,EAAY,CACdhC,aAAc1f,KAAK2gB,YACnBlB,aAAczf,KAAK0gB,YACnBf,aAAc3f,KAAK6gB,aAGjBpZ,QAAa3E,EAAY8P,MAAMI,WAAWF,EAAU4O,EAAWxO,GACrE,OAAO,IAAI2L,EAAKpX,IAGpBoX,EAAK/gB,UAAU4S,OAAO6J,eAAiB1K,iBAEnC,aADqB/M,EAAY8P,MAAMpC,WAAWxQ,KAAKyQ,KAI3DoO,EAAK/gB,UAAUiW,OAAOhX,IAAIwd,eAAiB1K,eAAgBqE,GACvD,IAAKqK,OAAOC,UAAUtK,IAAUA,EAAQ,EACpC,MAAM,IAAIjR,6CACqCiR,MAInD,GAAIA,GAASlU,KAAK8e,KACd,MAAM,IAAI7b,2BACmBiR,wBAKjC,aADqB8H,EAAShc,KAAKyQ,GAAIzQ,KAAK3C,KAAM6W,IAKtD2K,EAAK/gB,UAAUuW,YAAYtX,IAAIwd,eAAiB1K,eAAgBqE,EAAOnE,GACnE,IAAKwO,OAAOC,UAAUtK,IAAUA,EAAQ,EACpC,MAAM,IAAIjR,6CACqCiR,MAInD,GAAIA,GAASlU,KAAK8e,KACd,MAAM,IAAI7b,WACGiR,gCAKjB,aADqBW,EAAe7U,KAAMkU,EAAOnE,IAIrD8O,EAAK/gB,UAAUuW,YAAYiI,KAAK/B,eAAiB1K,eAAgBqD,GAE7D,aADqB8N,EAAgBhhB,KAAMkT,IAI/C2L,EAAK/gB,UAAUuW,YAAYlP,MAAMoV,eAAiB1K,eAAgBmN,GAE9D,aADqBiE,EAAiBjhB,KAAMgd,IAIhD6B,EAAK/gB,UAAUuW,YAAY7F,MAAM+L,eAAiB1K,eAAgBuN,EAAalJ,GAE3E,aADqBgN,EAAiBlhB,KAAMod,EAAalJ,IAI7D2K,EAAK/gB,UAAUuW,YAAYiJ,MAAM/C,eAAiB1K,eAAgBmN,EAAcK,GAE5E,aADqB8D,EAAiBnhB,KAAMgd,EAAcK,IAI9DwB,EAAK/gB,UAAUuW,YAAY8I,kBAAkB5C,eAAiB,WAE1D,OADe4C,EAAkBnd,OAIrC6e,EAAK/gB,UAAUuW,YAAYmI,MAAMjC,eAAiB1K,eAAgB0M,GAE9D,aADqB6E,EAAiBphB,KAAMuc,IAIhDsC,EAAK/gB,UAAUuW,YAAY6I,OAAO3C,eAAiB,SAAUrG,EAAO9H,EAAG6Q,GAEnE,OADeoE,EAAarhB,KAAMkU,EAAO9H,EAAG6Q,IAIhD4B,EAAK/gB,UAAUuW,YAAYsI,WAAWpC,eAAiB,WAEnD,OADe+G,EAAsBthB,OAIzC6e,EAAK/gB,UAAUuW,YAAYO,IAAI2F,eAAiB,SAAUyC,GAEtD,OADe+D,EAAe/gB,KAAMgd,IAIxC6B,EAAK/gB,UAAUuW,YAAYgI,OAAO9B,eAAiB1K,eAAgBqF,EAAMiH,GAErE,aADqBlH,EAAkBjV,KAAMkV,EAAMiH,IAIvD0C,EAAK/gB,UAAUuW,YAAYqI,KAAKnC,eAAiB1K,eAAgBpT,EAAMggB,GAEnE,aADqB3H,EAAgB9U,KAAMvD,EAAMggB,KA54CzD,I,gCCAA,MACI,MAAM,cAAEzF,GAAkBtW,EAAQ,KAC5B,cAAEuC,GAAkBvC,EAAQ,GAOlC,MAAMihB,EACF5gB,YAAYod,GACR,MAAM9N,EAAO,CACTI,QAAInQ,EACJshB,mBAAethB,EACfuhB,gBAAYvhB,EACZwhB,aAASxhB,EACT7D,UAAM6D,EACN+F,YAAQ/F,GAGZ,IAAK,MAAM7C,KAAO4S,EACVzT,OAAOkB,UAAUC,eAAe1B,KAAKgU,EAAM5S,IACvCb,OAAOkB,UAAUC,eAAe1B,KAAK8hB,EAAa1gB,KAC9CoC,MAAM2D,QAAQ2a,EAAY1gB,IAC1B4S,EAAK5S,GAAO,IAAI0gB,EAAY1gB,IAE5B4S,EAAK5S,GAAO0gB,EAAY1gB,IAMxC,IAAKb,OAAOyJ,OAAO2Q,GAAezD,SAASlD,EAAKwR,YAC5C,MAAM,IAAI5e,gCACwBoN,EAAKwR,cAI3CjlB,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCmO,GAAI,CACA1T,IAAK,IAAMsT,EAAKI,IASpBsR,aAAc,CACVhlB,IAAK,IAAMsT,EAAKuR,eASpBI,UAAW,CACPjlB,IAAK,IAAMsT,EAAKwR,YASpBC,QAAS,CACL/kB,IAAK,IAAMsT,EAAKyR,SASpBrlB,KAAM,CACFM,IAAK,IAAMsT,EAAK5T,MASpB4J,OAAQ,CACJtJ,IAAK,IAAM,IAAIsT,EAAKhK,YAKhCmb,SACI,MAAM5jB,EAAS,CACXnB,KAAMuD,KAAKvD,KACXqlB,QAAS9hB,KAAK8hB,QACdD,WAAY7hB,KAAKgiB,UACjBJ,cAAe5hB,KAAK+hB,aACpB1b,OAAQrG,KAAKqG,QAOjB,YAJyB,IAAbrG,KAAKyQ,KACb7S,EAAO6S,GAAKzQ,KAAKyQ,IAGd7S,GAiFf3B,EAAOD,QAAU,CACb2lB,YACA1F,MA1EJ,MACIlb,YAAYod,GACR,MAAM9N,EAAO,CACTI,QAAInQ,EACJ7D,UAAM6D,GAGV,IAAK,MAAM7C,KAAO4S,EACVzT,OAAOkB,UAAUC,eAAe1B,KAAKgU,EAAM5S,IACvCb,OAAOkB,UAAUC,eAAe1B,KAAK8hB,EAAa1gB,KAClD4S,EAAK5S,GAAO0gB,EAAY1gB,IAOpC,GAFA4S,EAAK4R,WAAa,GAEdrlB,OAAOkB,UAAUC,eAAe1B,KAAK8hB,EAAa,eAC/Cte,MAAM2D,QAAQ2a,EAAY8D,YAC7B,IAAK,MAAMC,KAAY/D,EAAY8D,WAC/B5R,EAAK4R,WAAWtW,KAAK,IAAIgW,EAAUO,IAI3CtlB,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCmO,GAAI,CACA1T,IAAK,IAAMsT,EAAKI,IASpBhU,KAAM,CACFM,IAAK,IAAMsT,EAAK5T,MASpBwlB,WAAY,CACRllB,IAAK,IAAM,IAAIsT,EAAK4R,gBAKhCT,SACI,MAAM5jB,EAAS,CACXnB,KAAMuD,KAAKvD,KACXwlB,WAAY,IAAIjiB,KAAKiiB,WAAW9L,IAAIoL,GAAMA,EAAGC,YAOjD,YAJyB,IAAbxhB,KAAKyQ,KACb7S,EAAO6S,GAAKzQ,KAAKyQ,IAGd7S,MAhMnB,I,gBCAA,MACI,MAAM,cAAEqF,GAAkBvC,EAAQ,GAuElCzE,EAAOD,QAAU,CACbmmB,UAtEJ,SAAmBhlB,GACf,MAA0B,kBAAXA,GAsEfqhB,UAnEJ,SAAmBrhB,GACf,MAA0B,iBAAXA,GAAuBohB,OAAOC,UAAUrhB,IAmEvDilB,OA/DJ,SAAgBjlB,GACZ,IAAK,MAAMM,KAAOuC,KACd,GAAIpD,OAAOkB,UAAUC,eAAe1B,KAAK2D,KAAMvC,IACvCuC,KAAKvC,KAASN,EACd,OAAO,EAKnB,OAAO,GAuDPkH,SApDJ,SAAkBlH,GACd,MAA0B,iBAAXA,GAoDfklB,YAjDJ,SAAqBtS,EAAQuS,GACzB,IAAK,MAAMC,KAAQxS,EACf,GAAInT,OAAOkB,UAAUC,eAAe1B,KAAK0T,EAAQwS,GAAO,CACpD,KAAMA,KAAQD,GACV,MAAM,IAAIrf,qDAC6Csf,MAEpD,IAAKD,EAAOC,GAAMxS,EAAOwS,IAC5B,MAAM,IAAItf,+BACuBsf,qCAyC7CC,gBAlCJ,SAAyB/lB,EAAMU,EAAO8C,EAAMwiB,GACxC,GAAIxiB,GACA,UAAY9C,IAAW8C,EAAM,CAEzB,GAAa,YAATA,GAAsBse,OAAOC,UAAUrhB,GACvC,OAGJ,MAAM,IAAI8F,MACFxG,yBAA4BwD,mBAAuB9C,0BAG5D,GAAIslB,KACDtlB,aAAiBslB,GAAW,CAC9B,QAAcniB,IAAVnD,EACA,MAAM,IAAI8F,MACFxG,wBAA2BgmB,EAAShmB,iBAC9BU,EAAM4D,YAAYtE,sBAIpC,MAAM,IAAIwG,MACFxG,wBAA2BgmB,EAAShmB,2CAlE5D,I,gBCTA,IAAIkQ,EAAc,EAAQ,IACtB+V,EAA6B,EAAQ,IACrC7V,EAA2B,EAAQ,IACnCzN,EAAkB,EAAQ,IAC1B0O,EAAc,EAAQ,IACtBK,EAAM,EAAQ,GACdP,EAAiB,EAAQ,IAEzB+U,EAAiC/lB,OAAOkQ,yBAI5C9Q,EAAQ2M,EAAIgE,EAAcgW,EAAiC,SAAkCrkB,EAAG0P,GAG9F,GAFA1P,EAAIc,EAAgBd,GACpB0P,EAAIF,EAAYE,GAAG,GACfJ,EAAgB,IAClB,OAAO+U,EAA+BrkB,EAAG0P,GACzC,MAAOhP,IACT,GAAImP,EAAI7P,EAAG0P,GAAI,OAAOnB,GAA0B6V,EAA2B/Z,EAAEtM,KAAKiC,EAAG0P,GAAI1P,EAAE0P,M,gBClB7F,IAAI/O,EAAW,EAAQ,IAMvBhD,EAAOD,QAAU,SAAU8P,EAAO8W,GAChC,IAAK3jB,EAAS6M,GAAQ,OAAOA,EAC7B,IAAIjI,EAAIJ,EACR,GAAImf,GAAoD,mBAAxB/e,EAAKiI,EAAMvK,YAA4BtC,EAASwE,EAAMI,EAAGxH,KAAKyP,IAAS,OAAOrI,EAC9G,GAAmC,mBAAvBI,EAAKiI,EAAM+W,WAA2B5jB,EAASwE,EAAMI,EAAGxH,KAAKyP,IAAS,OAAOrI,EACzF,IAAKmf,GAAoD,mBAAxB/e,EAAKiI,EAAMvK,YAA4BtC,EAASwE,EAAMI,EAAGxH,KAAKyP,IAAS,OAAOrI,EAC/G,MAAMvE,UAAU,6C,gBCZlB,IAAIT,EAAS,EAAQ,GACjBQ,EAAW,EAAQ,IAEnBiG,EAAWzG,EAAOyG,SAElB4d,EAAS7jB,EAASiG,IAAajG,EAASiG,EAAS6d,eAErD9mB,EAAOD,QAAU,SAAUmC,GACzB,OAAO2kB,EAAS5d,EAAS6d,cAAc5kB,GAAM,K,gBCR/C,IAAIM,EAAS,EAAQ,GACjBuH,EAAO,EAAQ,IAEnB/J,EAAOD,QAAU,SAAUyB,EAAKN,GAC9B,IACE6I,EAAKvH,EAAQhB,EAAKN,GAClB,MAAO6B,GACPP,EAAOhB,GAAON,EACd,OAAOA,I,gBCRX,IAAIwB,EAAS,EAAQ,IACjBC,EAAM,EAAQ,IAEdkc,EAAOnc,EAAO,QAElB1C,EAAOD,QAAU,SAAUyB,GACzB,OAAOqd,EAAKrd,KAASqd,EAAKrd,GAAOmB,EAAInB,M,cCNvCxB,EAAOD,QAAU,I,cCCjBC,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,cCRFC,EAAOD,QAAU,SAAUmC,EAAI6kB,EAAavmB,GAC1C,KAAM0B,aAAc6kB,GAClB,MAAM9jB,UAAU,cAAgBzC,EAAOA,EAAO,IAAM,IAAM,cAC1D,OAAO0B,I,cCEXlC,EAAOD,QAAU,CACbgU,WAAY,+BACZE,OAAO,EACP/N,YAAQ7B,EACR4B,WAAO5B,EACP8B,UAAWjB,KAAK8hB,MAAM1hB,WAAW2hB,QAAQ,K,gBCV7C,IAAIxH,EAAY,EAAQ,IACpBV,EAAyB,EAAQ,IAGjCmI,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOC,GACtB,IAGIC,EAAOC,EAHPC,EAAItkB,OAAO6b,EAAuBqI,IAClCK,EAAWhI,EAAU4H,GACrBxE,EAAO2E,EAAEpjB,OAEb,OAAIqjB,EAAW,GAAKA,GAAY5E,EAAasE,EAAoB,QAAK9iB,GACtEijB,EAAQE,EAAEE,WAAWD,IACN,OAAUH,EAAQ,OAAUG,EAAW,IAAM5E,IACtD0E,EAASC,EAAEE,WAAWD,EAAW,IAAM,OAAUF,EAAS,MAC1DJ,EAAoBK,EAAEG,OAAOF,GAAYH,EACzCH,EAAoBK,EAAEvV,MAAMwV,EAAUA,EAAW,GAA+BF,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,QAI7GtnB,EAAOD,QAAU,CAGf6nB,OAAQV,GAAa,GAGrBS,OAAQT,GAAa,K,8BCzBvB,YAEA,IAAIW,EAAQ,EAAQ,GAChBC,EAAsB,EAAQ,KAE9BC,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBtT,EAASxT,IACjC2mB,EAAMvf,YAAYoM,IAAYmT,EAAMvf,YAAYoM,EAAQ,mBAC3DA,EAAQ,gBAAkBxT,GAgB9B,IAXM+mB,EAWF1U,EAAW,CACb0U,SAX8B,oBAAnBC,eAETD,EAAU,EAAQ,SACU,IAAZ7b,IAEhB6b,EAAU,EAAQ,KAEbA,GAMPE,iBAAkB,CAAC,SAA0B/T,EAAMM,GAEjD,OADAoT,EAAoBpT,EAAS,gBACzBmT,EAAM/f,WAAWsM,IACnByT,EAAMhgB,cAAcuM,IACpByT,EAAMvgB,SAAS8M,IACfyT,EAAMnf,SAAS0L,IACfyT,EAAMrf,OAAO4L,IACbyT,EAAMpf,OAAO2L,GAENA,EAELyT,EAAM7f,kBAAkBoM,GACnBA,EAAKjM,OAEV0f,EAAMjf,kBAAkBwL,IAC1B4T,EAAsBtT,EAAS,mDACxBN,EAAK9O,YAEVuiB,EAAM7kB,SAASoR,IACjB4T,EAAsBtT,EAAS,kCACxBS,KAAKC,UAAUhB,IAEjBA,IAGTgU,kBAAmB,CAAC,SAA2BhU,GAE7C,GAAoB,iBAATA,EACT,IACEA,EAAOe,KAAKzP,MAAM0O,GAClB,MAAO8K,IAEX,OAAO9K,IAOTiU,QAAS,EAET3U,eAAgB,aAChBD,eAAgB,eAEhB6U,kBAAmB,EAEnBC,eAAgB,SAAwBpU,GACtC,OAAOA,GAAU,KAAOA,EAAS,MAIrCZ,EAASmB,QAAU,CACjBC,OAAQ,CACN,OAAU,sCAIdkT,EAAMngB,QAAQ,CAAC,SAAU,MAAO,QAAS,SAA6B8X,GACpEjM,EAASmB,QAAQ8K,GAAU,KAG7BqI,EAAMngB,QAAQ,CAAC,OAAQ,MAAO,SAAU,SAA+B8X,GACrEjM,EAASmB,QAAQ8K,GAAUqI,EAAM3e,MAAM6e,KAGzC/nB,EAAOD,QAAUwT,I,iDCtFjB,MACI,MAAMsK,EAAiBpZ,EAAQ,KACzB,cAAEuC,GAAkBvC,EAAQ,GAMlC,MAAM+jB,EAUF1jB,YAAY2jB,GACR,MAAMrU,EAAO,CACT2P,MAAO,KACPiC,WAAY,GAEZ0C,OAAQ,KACRC,QAAS,KACTC,SAAU,KACVC,SAAU,KAEVxH,MAAO,KACPiD,OAAQ,KACRwE,KAAM,KACNC,MAAO,KAEP5iB,SAAUsiB,EAAWtiB,SACrB6iB,SAAUP,EAAWO,SAErB/Q,MAAOwQ,EAAWxQ,MAClBgR,WAAYR,EAAWQ,WACvBC,UAAWT,EAAWS,UACtBC,YAAa,IAIjBxoB,OAAOC,eAAewT,EAAK+U,YAAa,QAAS,CAC7CjoB,MAAO,WACH6C,KAAKggB,OAAQ,EACbhgB,KAAKiiB,YAAa,EAElBjiB,KAAK2kB,QAAS,EACd3kB,KAAK4kB,SAAU,EACf5kB,KAAK6kB,UAAW,EAChB7kB,KAAK8kB,UAAW,EAEhB9kB,KAAKsd,OAAQ,EACbtd,KAAKugB,QAAS,EACdvgB,KAAK+kB,MAAO,EACZ/kB,KAAKglB,OAAQ,GAEjBrS,UAAU,IAGd/V,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAExC8iB,YAAa,CACTroB,IAAK,IAAMsT,EAAK+U,aAEpBlR,MAAO,CAQHnX,IAAK,IAAMsT,EAAK6D,OAEpBgR,WAAY,CAQRnoB,IAAK,IAAMsT,EAAK6U,YAEpBC,UAAW,CAQPpoB,IAAK,IAAMsT,EAAK8U,WAEpB/iB,SAAU,CAQNrF,IAAK,IAAMsT,EAAKjO,UAEpB6iB,SAAU,CAQNloB,IAAK,IAAMsT,EAAK4U,UAEpBjF,MAAO,CAOHjjB,IAAK,IAAMsT,EAAK2P,MAChBtgB,IAAM2lB,IACFhV,EAAK+U,YAAYpF,OAAQ,EACzB3P,EAAK2P,MAAQqF,IAGrBL,MAAO,CAOHjoB,IAAK,IAAMsT,EAAK2U,MAChBtlB,IAAMslB,IACF3U,EAAK+U,YAAYJ,OAAQ,EACzB3U,EAAK2U,MAAQA,IAGrBL,OAAQ,CAQJ5nB,IAAK,IAAMsT,EAAKsU,OAChBjlB,IAAMilB,IACF,IAAI9kB,MAAM2D,QAAQmhB,GAId,MAAM,IAAI1hB,EACN,iDACqC,iBAAZ0hB,EACfA,EAAO5jB,YAAYtE,YAAekoB,KANhDtU,EAAK+U,YAAYT,QAAS,EAC1BtU,EAAKsU,OAAS,IAAIA,KAU9BrH,MAAO,CAOHvgB,IAAK,IAAMsT,EAAKiN,MAChB5d,IAAM4d,IACFjN,EAAK+U,YAAY9H,OAAQ,EACzBjN,EAAKiN,MAAQA,IAGrBiD,OAAQ,CAOJxjB,IAAK,IAAMsT,EAAKkQ,OAChB7gB,IAAM6gB,IACFlQ,EAAK+U,YAAY7E,QAAS,EAC1BlQ,EAAKkQ,OAASA,IAGtBqE,QAAS,CAOL7nB,IAAK,IAAMsT,EAAKuU,QAChBllB,IAAMklB,IACFvU,EAAK+U,YAAYR,SAAU,EAC3BvU,EAAKuU,QAAUA,IAGvBE,SAAU,CAON/nB,IAAK,IAAMsT,EAAKyU,SAChBplB,IAAMolB,IACFzU,EAAK+U,YAAYN,UAAW,EAC5BzU,EAAKyU,SAAWA,IAGxBD,SAAU,CAON9nB,IAAK,IAAMsT,EAAKwU,SAChBnlB,IAAMmlB,IACFxU,EAAK+U,YAAYP,UAAW,EAC5BxU,EAAKwU,SAAWA,IAGxBE,KAAM,CAOFhoB,IAAK,IAAMsT,EAAK0U,KAChBrlB,IAAMqlB,IACF1U,EAAK+U,YAAYL,MAAO,EACxB1U,EAAK0U,KAAOA,IAGpB9C,WAAY,CAURllB,IAAK,IAAMsT,EAAK4R,WAChBviB,IAAMuiB,IACF,GAA4B,iBAAhBA,EACR,MAAM,IAAIhf,EACN,sDACyC,iBAAhBgf,EACfA,EAAWlhB,YAAYtE,YAAewlB,KAIxD,IAAK,MAAMqD,KAAU1oB,OAAOke,KAAKmH,GAC7B5R,EAAK+U,YAAYnD,YAAa,EAC9B5R,EAAK4R,WAAWqD,GAAUrD,EAAWqD,QAMrDtlB,KAAKggB,MAAQ0E,EAAW1E,MACxBhgB,KAAKsd,MAAQoH,EAAWpH,MACxBtd,KAAKugB,OAASmE,EAAWnE,OACzBvgB,KAAK4kB,QAAUF,EAAWE,QAC1B5kB,KAAK8kB,SAAWJ,EAAWI,SAC3B9kB,KAAK6kB,SAAWH,EAAWG,SAC3B7kB,KAAKglB,MAAQN,EAAWM,MACxBhlB,KAAK+kB,KAAOL,EAAWK,UAGY,IAAvBL,EAAWC,SACnB3kB,KAAK2kB,OAASD,EAAWC,aAEU,IAA3BD,EAAWzC,aACnBjiB,KAAKiiB,WAAayC,EAAWzC,YAGjC5R,EAAK+U,YAAY/H,QAcrB,aAGI,aAFqBvD,EAChBsC,WAAW/f,KAAK2D,KAAMykB,EAAY3mB,UAAUwe,MAerD,aAAaiJ,GAAQ,GAGjB,aAFqBzL,EAChBsC,WAAW/f,KAAK2D,KAAMykB,EAAY3mB,UAAU4S,OAAQ6U,GAa7D,WAGI,aAFqBzL,EAChBsC,WAAW/f,KAAK2D,KAAMykB,EAAY3mB,UAAU0nB,IAarD,aAGI,aAFqB1L,EAChBsC,WAAW/f,KAAK2D,KAAMykB,EAAY3mB,UAAU2nB,OAMzDhB,EAAY3mB,UAAUwe,KAAK/B,eAAiB1K,iBACxC,OAAI7P,KAAK0lB,QAAU1lB,KAAK0lB,OAAOpJ,KACpBtc,KAAK0lB,OAAOpJ,OAGhBtc,MAIXykB,EAAY3mB,UAAU4S,OAAO6J,eAAiB1K,eAAgB0V,GAC1D,SAAIvlB,KAAK0lB,SAAU1lB,KAAK0lB,OAAOhV,SACpB1Q,KAAK0lB,OAAOhV,OAAO6U,IAMlCd,EAAY3mB,UAAU0nB,GAAGjL,eAAiB1K,iBACtC,SAAI7P,KAAK0lB,SAAU1lB,KAAK0lB,OAAOF,KACpBxlB,KAAK0lB,OAAOF,MAM3Bf,EAAY3mB,UAAU2nB,KAAKlL,eAAiB1K,iBACxC,SAAI7P,KAAK0lB,SAAU1lB,KAAK0lB,OAAOD,OACpBzlB,KAAK0lB,OAAOD,QAO3BxpB,EAAOD,QAAUyoB,GAtYrB,I,6BCRQ,EAAQ,GAIhB5d,CAAE,CAAE3G,OAAQ,MAAOylB,OAAO,EAAM7oB,YAAY,GAAQ,CAClD0kB,OAAQ,WACN,OAAOoE,IAAI9nB,UAAUyD,SAASlF,KAAK2D,U,6BCNvC,IAAI6lB,EAA6B,GAAGC,qBAChChZ,EAA2BlQ,OAAOkQ,yBAGlCiZ,EAAcjZ,IAA6B+Y,EAA2BxpB,KAAK,CAAE2pB,EAAG,GAAK,GAIzFhqB,EAAQ2M,EAAIod,EAAc,SAA8BE,GACtD,IAAI3Y,EAAaR,EAAyB9M,KAAMimB,GAChD,QAAS3Y,GAAcA,EAAWxQ,YAChC+oB,G,gBCZJ,IAAInZ,EAAQ,EAAQ,GAChBrF,EAAU,EAAQ,IAElBmH,EAAQ,GAAGA,MAGfvS,EAAOD,QAAU0Q,EAAM,WAGrB,OAAQ9P,OAAO,KAAKkpB,qBAAqB,KACtC,SAAU3nB,GACb,MAAsB,UAAfkJ,EAAQlJ,GAAkBqQ,EAAMnS,KAAK8B,EAAI,IAAMvB,OAAOuB,IAC3DvB,Q,gBCZJ,IAAI+P,EAAc,EAAQ,IACtBD,EAAQ,EAAQ,GAChBqW,EAAgB,EAAQ,IAG5B9mB,EAAOD,SAAW2Q,IAAgBD,EAAM,WACtC,OAEQ,GAFD9P,OAAOC,eAAekmB,EAAc,OAAQ,IAAK,CACtDhmB,IAAK,WAAc,OAAO,KACzByI,K,gBCRL,IAAI7G,EAAS,EAAQ,IAErB1C,EAAOD,QAAU2C,EAAO,4BAA6BD,SAAS6C,W,cCF9D,IAAIkP,EAAK,EACLyV,EAAU9nB,KAAK+nB,SAEnBlqB,EAAOD,QAAU,SAAUyB,GACzB,MAAO,UAAY0B,YAAemB,IAAR7C,EAAoB,GAAKA,GAAO,QAAUgT,EAAKyV,GAAS3kB,SAAS,M,gBCJ7F,IAAI4M,EAAM,EAAQ,GACdiY,EAAU,EAAQ,IAClBC,EAAiC,EAAQ,IACzCzZ,EAAuB,EAAQ,IAEnC3Q,EAAOD,QAAU,SAAUkE,EAAQiN,GAIjC,IAHA,IAAI2N,EAAOsL,EAAQjZ,GACftQ,EAAiB+P,EAAqBjE,EACtCmE,EAA2BuZ,EAA+B1d,EACrDzM,EAAI,EAAGA,EAAI4e,EAAKza,OAAQnE,IAAK,CACpC,IAAIuB,EAAMqd,EAAK5e,GACViS,EAAIjO,EAAQzC,IAAMZ,EAAeqD,EAAQzC,EAAKqP,EAAyBK,EAAQ1P,O,gBCXxFxB,EAAOD,QAAU,EAAQ,I,gBCAzB,IAAImS,EAAM,EAAQ,GACd/O,EAAkB,EAAQ,IAC1BoK,EAAU,EAAQ,IAA+BA,QACjDuF,EAAa,EAAQ,IAEzB9S,EAAOD,QAAU,SAAU4B,EAAQ0oB,GACjC,IAGI7oB,EAHAa,EAAIc,EAAgBxB,GACpB1B,EAAI,EACJkJ,EAAS,GAEb,IAAK3H,KAAOa,GAAI6P,EAAIY,EAAYtR,IAAQ0Q,EAAI7P,EAAGb,IAAQ2H,EAAOuG,KAAKlO,GAEnE,KAAO6oB,EAAMjmB,OAASnE,GAAOiS,EAAI7P,EAAGb,EAAM6oB,EAAMpqB,SAC7CsN,EAAQpE,EAAQ3H,IAAQ2H,EAAOuG,KAAKlO,IAEvC,OAAO2H,I,cCfTpJ,EAAQ2M,EAAI/L,OAAO2pB,uB,gBCAnB,IAAI7Z,EAAQ,EAAQ,GAEhB8Z,EAAc,kBAEdxe,EAAW,SAAUye,EAASC,GAChC,IAAIvpB,EAAQkT,EAAKsW,EAAUF,IAC3B,OAAOtpB,GAASypB,GACZzpB,GAAS0pB,IACW,mBAAbH,EAA0Bha,EAAMga,KACrCA,IAGJC,EAAY3e,EAAS2e,UAAY,SAAUG,GAC7C,OAAO3nB,OAAO2nB,GAAQjhB,QAAQ2gB,EAAa,KAAKO,eAG9C1W,EAAOrI,EAASqI,KAAO,GACvBwW,EAAS7e,EAAS6e,OAAS,IAC3BD,EAAW5e,EAAS4e,SAAW,IAEnC3qB,EAAOD,QAAUgM,G,gBCpBjB,IAAI+E,EAAW,EAAQ,IAEvB9Q,EAAOD,QAAU,SAAUkE,EAAQ8mB,EAAK9Z,GACtC,IAAK,IAAIzP,KAAOupB,EAAKja,EAAS7M,EAAQzC,EAAKupB,EAAIvpB,GAAMyP,GACrD,OAAOhN,I,gBCJT,IAAI+F,EAAkB,EAAQ,GAC1B3G,EAAY,EAAQ,IAEpB4G,EAAWD,EAAgB,YAC3BghB,EAAiBpnB,MAAM/B,UAG3B7B,EAAOD,QAAU,SAAUmC,GACzB,YAAcmC,IAAPnC,IAAqBmB,EAAUO,QAAU1B,GAAM8oB,EAAe/gB,KAAc/H,K,gBCRrF,IAAI0P,EAAW,EAAQ,GAGvB5R,EAAOD,QAAU,SAAUkrB,EAAUrjB,EAAI1G,EAAOgqB,GAC9C,IACE,OAAOA,EAAUtjB,EAAGgK,EAAS1Q,GAAO,GAAIA,EAAM,IAAM0G,EAAG1G,GAEvD,MAAO6B,GACP,IAAIooB,EAAeF,EAAiB,OAEpC,WADqB5mB,IAAjB8mB,GAA4BvZ,EAASuZ,EAAa/qB,KAAK6qB,IACrDloB,K,gBCVV,IAgBIqoB,EAAOC,EAASC,EAhBhB9oB,EAAS,EAAQ,GACjBiO,EAAQ,EAAQ,GAChBrF,EAAU,EAAQ,IAClB3J,EAAO,EAAQ,IACf8pB,EAAO,EAAQ,IACfzE,EAAgB,EAAQ,IAExB0E,EAAWhpB,EAAOgpB,SAClB/nB,EAAMjB,EAAOipB,aACblL,EAAQ/d,EAAOkpB,eACftf,EAAU5J,EAAO4J,QACjBuf,EAAiBnpB,EAAOmpB,eACxBC,EAAWppB,EAAOopB,SAClBvb,EAAU,EACVwb,EAAQ,GAIRC,EAAM,SAAUtX,GAElB,GAAIqX,EAAM/pB,eAAe0S,GAAK,CAC5B,IAAI5M,EAAKikB,EAAMrX,UACRqX,EAAMrX,GACb5M,MAIAmkB,EAAS,SAAUvX,GACrB,OAAO,WACLsX,EAAItX,KAIJwX,EAAW,SAAUld,GACvBgd,EAAIhd,EAAMsF,OAGRc,EAAO,SAAUV,GAEnBhS,EAAOypB,YAAYzX,EAAK,GAAIgX,EAASU,SAAW,KAAOV,EAASW,OAI7D1oB,GAAQ8c,IACX9c,EAAM,SAAsBmE,GAG1B,IAFA,IAAImW,EAAO,GACP9d,EAAI,EACDoJ,UAAUjF,OAASnE,GAAG8d,EAAKrO,KAAKrG,UAAUpJ,MAMjD,OALA4rB,IAAQxb,GAAW,YAEH,mBAANzI,EAAmBA,EAAKnF,SAASmF,IAAKkI,WAAMzL,EAAW0Z,IAEjEqN,EAAM/a,GACCA,GAETkQ,EAAQ,SAAwB/L,UACvBqX,EAAMrX,IAGS,WAApBpJ,EAAQgB,GACVgf,EAAQ,SAAU5W,GAChBpI,EAAQggB,SAASL,EAAOvX,KAGjBoX,GAAYA,EAAS5E,IAC9BoE,EAAQ,SAAU5W,GAChBoX,EAAS5E,IAAI+E,EAAOvX,KAGbmX,GAETL,GADAD,EAAU,IAAIM,GACCU,MACfhB,EAAQiB,MAAMC,UAAYP,EAC1BZ,EAAQ3pB,EAAK6pB,EAAKW,YAAaX,EAAM,KAG5B9oB,EAAOgqB,kBAA0C,mBAAfP,aAA8BzpB,EAAOiqB,eAAkBhc,EAAMyE,GAKxGkW,EAlEqB,uBAiEUtE,EAAc,UACrC,SAAUtS,GAChB+W,EAAKmB,YAAY5F,EAAc,WAA6B,mBAAI,WAC9DyE,EAAKoB,YAAY5oB,MACjB+nB,EAAItX,KAKA,SAAUA,GAChB4C,WAAW2U,EAAOvX,GAAK,KAbzB4W,EAAQlW,EACR1S,EAAOgqB,iBAAiB,UAAWR,GAAU,KAiBjDhsB,EAAOD,QAAU,CACf0D,IAAKA,EACL8c,MAAOA,I,gBCjGT,IAAIqM,EAAa,EAAQ,IAEzB5sB,EAAOD,QAAU6sB,EAAW,WAAY,oB,gBCFxC,IAAIA,EAAa,EAAQ,IAEzB5sB,EAAOD,QAAU6sB,EAAW,YAAa,cAAgB,I,6BCDzD,IAAI1hB,EAAY,EAAQ,IAEpB2hB,EAAoB,SAAUld,GAChC,IAAIzC,EAASoB,EACbvK,KAAKkJ,QAAU,IAAI0C,EAAE,SAAUmd,EAAWC,GACxC,QAAgB1oB,IAAZ6I,QAAoC7I,IAAXiK,EAAsB,MAAMrL,UAAU,2BACnEiK,EAAU4f,EACVxe,EAASye,IAEXhpB,KAAKmJ,QAAUhC,EAAUgC,GACzBnJ,KAAKuK,OAASpD,EAAUoD,IAI1BtO,EAAOD,QAAQ2M,EAAI,SAAUiD,GAC3B,OAAO,IAAIkd,EAAkBld,K,gBChB/B,IAAIiC,EAAW,EAAQ,GACnBxL,EAAmB,EAAQ,IAC3B4mB,EAAc,EAAQ,IACtBla,EAAa,EAAQ,IACrByY,EAAO,EAAQ,IACf0B,EAAwB,EAAQ,IAEhCC,EADY,EAAQ,GACTra,CAAU,YAGrBsa,EAAQ,aAGRC,EAAa,WAEf,IAMIC,EANAC,EAASL,EAAsB,UAC/B7oB,EAAS4oB,EAAY5oB,OAczB,IARAkpB,EAAOC,MAAMC,QAAU,OACvBjC,EAAKmB,YAAYY,GACjBA,EAAOvC,IAAM7nB,OAJJ,gBAKTmqB,EAAiBC,EAAOG,cAAcxkB,UACvBykB,OACfL,EAAeM,MAAMC,uCACrBP,EAAeQ,QACfT,EAAaC,EAAezT,EACrBxV,YAAiBgpB,EAAoB,UAAEJ,EAAY5oB,IAC1D,OAAOgpB,KAKTptB,EAAOD,QAAUY,OAAOY,QAAU,SAAgBc,EAAGyrB,GACnD,IAAI3kB,EAQJ,OAPU,OAAN9G,GACF8qB,EAAe,UAAIvb,EAASvP,GAC5B8G,EAAS,IAAIgkB,EACbA,EAAe,UAAI,KAEnBhkB,EAAO+jB,GAAY7qB,GACd8G,EAASikB,SACM/oB,IAAfypB,EAA2B3kB,EAAS/C,EAAiB+C,EAAQ2kB,IAGtEhb,EAAWoa,IAAY,G,gBChDvB,IAAIxc,EAAc,EAAQ,IACtBC,EAAuB,EAAQ,IAC/BiB,EAAW,EAAQ,GACnBmc,EAAa,EAAQ,IAIzB/tB,EAAOD,QAAU2Q,EAAc/P,OAAOyF,iBAAmB,SAA0B/D,EAAGyrB,GACpFlc,EAASvP,GAKT,IAJA,IAGIb,EAHAqd,EAAOkP,EAAWD,GAClB1pB,EAASya,EAAKza,OACdF,EAAQ,EAELE,EAASF,GAAOyM,EAAqBjE,EAAErK,EAAGb,EAAMqd,EAAK3a,KAAU4pB,EAAWtsB,IACjF,OAAOa,I,gBCdT,IAAI2rB,EAAqB,EAAQ,IAC7BhB,EAAc,EAAQ,IAI1BhtB,EAAOD,QAAUY,OAAOke,MAAQ,SAAcxc,GAC5C,OAAO2rB,EAAmB3rB,EAAG2qB,K,6BCL/B,IAAIpiB,EAAI,EAAQ,IACZqjB,EAA4B,EAAQ,IACpCtL,EAAiB,EAAQ,IACzBuL,EAAiB,EAAQ,KACzBljB,EAAiB,EAAQ,IACzBjB,EAAO,EAAQ,IACf+G,EAAW,EAAQ,IACnB9G,EAAkB,EAAQ,GAC1Ba,EAAU,EAAQ,IAClBxH,EAAY,EAAQ,IACpB8qB,EAAgB,EAAQ,IAExBC,EAAoBD,EAAcC,kBAClCC,EAAyBF,EAAcE,uBACvCpkB,EAAWD,EAAgB,YAK3BskB,EAAa,WAAc,OAAOvqB,MAEtC/D,EAAOD,QAAU,SAAUwuB,EAAUC,EAAMC,EAAqBC,EAAMC,EAASC,EAAQ5hB,GACrFihB,EAA0BQ,EAAqBD,EAAME,GAErD,IAkBIG,EAA0BC,EAASC,EAlBnCC,EAAqB,SAAUC,GACjC,GAAIA,IAASN,GAAWO,EAAiB,OAAOA,EAChD,IAAKb,GAA0BY,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,IAbK,OAcL,IAbO,SAcP,IAbQ,UAaM,OAAO,WAAqB,OAAO,IAAIR,EAAoB1qB,KAAMkrB,IAC/E,OAAO,WAAc,OAAO,IAAIR,EAAoB1qB,QAGpDmG,EAAgBskB,EAAO,YACvBY,GAAwB,EACxBD,EAAoBZ,EAAS1sB,UAC7BwtB,EAAiBF,EAAkBllB,IAClCklB,EAAkB,eAClBR,GAAWQ,EAAkBR,GAC9BO,GAAmBb,GAA0BgB,GAAkBL,EAAmBL,GAClFW,EAA4B,SAARd,GAAkBW,EAAkBI,SAA4BF,EAiCxF,GA7BIC,IACFT,EAA2BlM,EAAe2M,EAAkBlvB,KAAK,IAAImuB,IACjEH,IAAsBztB,OAAOkB,WAAagtB,EAAyBH,OAChE7jB,GAAW8X,EAAekM,KAA8BT,IACvDF,EACFA,EAAeW,EAA0BT,GACa,mBAAtCS,EAAyB5kB,IACzCF,EAAK8kB,EAA0B5kB,EAAUqkB,IAI7CtjB,EAAe6jB,EAA0B3kB,GAAe,GAAM,GAC1DW,IAASxH,EAAU6G,GAAiBokB,KAzCjC,UA8CPK,GAAqBU,GA9Cd,WA8CgCA,EAAe7uB,OACxD4uB,GAAwB,EACxBF,EAAkB,WAAoB,OAAOG,EAAejvB,KAAK2D,QAI7D8G,IAAWmC,GAAWmiB,EAAkBllB,KAAcilB,GAC1DnlB,EAAKolB,EAAmBllB,EAAUilB,GAEpC7rB,EAAUmrB,GAAQU,EAGdP,EAMF,GALAG,EAAU,CACR1kB,OAAQ4kB,EA5DD,UA6DPnQ,KAAM+P,EAASM,EAAkBF,EA9D5B,QA+DLO,QAASP,EA7DD,YA+DNhiB,EAAQ,IAAK+hB,KAAOD,GAClBT,IAA0Be,GAA2BL,KAAOI,GAC9Dre,EAASqe,EAAmBJ,EAAKD,EAAQC,SAEtCnkB,EAAE,CAAE3G,OAAQuqB,EAAM9E,OAAO,EAAM9Z,OAAQye,GAA0Be,GAAyBN,GAGnG,OAAOA,I,6BCvFT,IAAIV,EAAoB,EAAQ,IAA+BA,kBAC3D7sB,EAAS,EAAQ,IACjBqP,EAA2B,EAAQ,IACnC5F,EAAiB,EAAQ,IACzB3H,EAAY,EAAQ,IAEpBirB,EAAa,WAAc,OAAOvqB,MAEtC/D,EAAOD,QAAU,SAAU0uB,EAAqBD,EAAME,GACpD,IAAIxkB,EAAgBskB,EAAO,YAI3B,OAHAC,EAAoB5sB,UAAYN,EAAO6sB,EAAmB,CAAEM,KAAM9d,EAAyB,EAAG8d,KAC9F1jB,EAAeyjB,EAAqBvkB,GAAe,GAAO,GAC1D7G,EAAU6G,GAAiBokB,EACpBG,I,6BCbT,IAaIL,EAAmBoB,EAAmCC,EAbtD9M,EAAiB,EAAQ,IACzB5Y,EAAO,EAAQ,IACfmI,EAAM,EAAQ,GACdlI,EAAkB,EAAQ,GAC1Ba,EAAU,EAAQ,IAElBZ,EAAWD,EAAgB,YAC3BqkB,GAAyB,EAQzB,GAAGxP,OAGC,SAFN4Q,EAAgB,GAAG5Q,SAIjB2Q,EAAoC7M,EAAeA,EAAe8M,OACxB9uB,OAAOkB,YAAWusB,EAAoBoB,GAHlDnB,GAAyB,GAOlChqB,MAArB+pB,IAAgCA,EAAoB,IAGnDvjB,GAAYqH,EAAIkc,EAAmBnkB,IAAWF,EAAKqkB,EAAmBnkB,EAnB1D,WAAc,OAAOlG,OAqBtC/D,EAAOD,QAAU,CACfquB,kBAAmBA,EACnBC,uBAAwBA,I,gBCjC1B,IAAInc,EAAM,EAAQ,GACdwd,EAAW,EAAQ,IACnB7c,EAAY,EAAQ,IACpB8c,EAA2B,EAAQ,KAEnCzC,EAAWra,EAAU,YACrB+c,EAAkBjvB,OAAOkB,UAI7B7B,EAAOD,QAAU4vB,EAA2BhvB,OAAOgiB,eAAiB,SAAUtgB,GAE5E,OADAA,EAAIqtB,EAASrtB,GACT6P,EAAI7P,EAAG6qB,GAAkB7qB,EAAE6qB,GACH,mBAAjB7qB,EAAEyC,aAA6BzC,aAAaA,EAAEyC,YAChDzC,EAAEyC,YAAYjD,UACdQ,aAAa1B,OAASivB,EAAkB,O,6BCdnD,IAWMC,EACAC,EAZFC,EAAc,EAAQ,KAEtBC,EAAaC,OAAOpuB,UAAUiB,KAI9BotB,EAAgBhtB,OAAOrB,UAAU+H,QAEjCumB,EAAcH,EAEdI,GACEP,EAAM,IACNC,EAAM,MACVE,EAAW5vB,KAAKyvB,EAAK,KACrBG,EAAW5vB,KAAK0vB,EAAK,KACI,IAAlBD,EAAIQ,WAAqC,IAAlBP,EAAIO,WAIhCC,OAAuCjsB,IAAvB,OAAOvB,KAAK,IAAI,IAExBstB,GAA4BE,KAGtCH,EAAc,SAAcxmB,GAC1B,IACI0mB,EAAWE,EAAQC,EAAOvwB,EAD1BwwB,EAAK1sB,KAuBT,OApBIusB,IACFC,EAAS,IAAIN,OAAO,IAAMQ,EAAGvf,OAAS,WAAY6e,EAAY3vB,KAAKqwB,KAEjEL,IAA0BC,EAAYI,EAAGJ,WAE7CG,EAAQR,EAAW5vB,KAAKqwB,EAAI9mB,GAExBymB,GAA4BI,IAC9BC,EAAGJ,UAAYI,EAAGjuB,OAASguB,EAAMtsB,MAAQssB,EAAM,GAAGpsB,OAASisB,GAEzDC,GAAiBE,GAASA,EAAMpsB,OAAS,GAG3C8rB,EAAc9vB,KAAKowB,EAAM,GAAID,EAAQ,WACnC,IAAKtwB,EAAI,EAAGA,EAAIoJ,UAAUjF,OAAS,EAAGnE,SACfoE,IAAjBgF,UAAUpJ,KAAkBuwB,EAAMvwB,QAAKoE,KAK1CmsB,IAIXxwB,EAAOD,QAAUowB,G,6BCnDjBnwB,EAAOD,QAAU,SAAc6H,EAAI6B,GACjC,OAAO,WAEL,IADA,IAAIsU,EAAO,IAAIna,MAAMyF,UAAUjF,QACtBnE,EAAI,EAAGA,EAAI8d,EAAK3Z,OAAQnE,IAC/B8d,EAAK9d,GAAKoJ,UAAUpJ,GAEtB,OAAO2H,EAAGkI,MAAMrG,EAASsU,M,cCP7B,IAOI2S,EACAC,EARAvkB,EAAUpM,EAAOD,QAAU,GAU/B,SAAS6wB,IACL,MAAM,IAAI/rB,MAAM,mCAEpB,SAASgsB,IACL,MAAM,IAAIhsB,MAAM,qCAsBpB,SAASisB,EAAWC,GAChB,GAAIL,IAAqBtZ,WAErB,OAAOA,WAAW2Z,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBtZ,WAEhE,OADAsZ,EAAmBtZ,WACZA,WAAW2Z,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAM7R,GACJ,IAEI,OAAOwR,EAAiBtwB,KAAK,KAAM2wB,EAAK,GAC1C,MAAM7R,GAEJ,OAAOwR,EAAiBtwB,KAAK2D,KAAMgtB,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAftZ,WACYA,WAEAwZ,EAEzB,MAAO1R,GACLwR,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBK,aACcA,aAEAH,EAE3B,MAAO3R,GACLyR,EAAqBE,GAjB7B,GAwEA,IAEII,EAFApF,EAAQ,GACRqF,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAa7sB,OACbynB,EAAQoF,EAAatX,OAAOkS,GAE5BsF,GAAc,EAEdtF,EAAMznB,QACNitB,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAI7I,EAAUyI,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAII,EAAMzF,EAAMznB,OACVktB,GAAK,CAGP,IAFAL,EAAepF,EACfA,EAAQ,KACCsF,EAAaG,GACdL,GACAA,EAAaE,GAAYrF,MAGjCqF,GAAc,EACdG,EAAMzF,EAAMznB,OAEhB6sB,EAAe,KACfC,GAAW,EAnEf,SAAyBK,GACrB,GAAIZ,IAAuBK,aAEvB,OAAOA,aAAaO,GAGxB,IAAKZ,IAAuBE,IAAwBF,IAAuBK,aAEvE,OADAL,EAAqBK,aACdA,aAAaO,GAExB,IAEWZ,EAAmBY,GAC5B,MAAOrS,GACL,IAEI,OAAOyR,EAAmBvwB,KAAK,KAAMmxB,GACvC,MAAOrS,GAGL,OAAOyR,EAAmBvwB,KAAK2D,KAAMwtB,KAgD7CC,CAAgBnJ,IAiBpB,SAASoJ,EAAKV,EAAKW,GACf3tB,KAAKgtB,IAAMA,EACXhtB,KAAK2tB,MAAQA,EAYjB,SAASC,KA5BTvlB,EAAQggB,SAAW,SAAU2E,GACzB,IAAIhT,EAAO,IAAIna,MAAMyF,UAAUjF,OAAS,GACxC,GAAIiF,UAAUjF,OAAS,EACnB,IAAK,IAAInE,EAAI,EAAGA,EAAIoJ,UAAUjF,OAAQnE,IAClC8d,EAAK9d,EAAI,GAAKoJ,UAAUpJ,GAGhC4rB,EAAMnc,KAAK,IAAI+hB,EAAKV,EAAKhT,IACJ,IAAjB8N,EAAMznB,QAAiB8sB,GACvBJ,EAAWO,IASnBI,EAAK5vB,UAAUiqB,IAAM,WACjB/nB,KAAKgtB,IAAIjhB,MAAM,KAAM/L,KAAK2tB,QAE9BtlB,EAAQwlB,MAAQ,UAChBxlB,EAAQylB,SAAU,EAClBzlB,EAAQ0lB,IAAM,GACd1lB,EAAQ2lB,KAAO,GACf3lB,EAAQ5G,QAAU,GAClB4G,EAAQG,SAAW,GAInBH,EAAQ4lB,GAAKL,EACbvlB,EAAQ6lB,YAAcN,EACtBvlB,EAAQ8lB,KAAOP,EACfvlB,EAAQ+lB,IAAMR,EACdvlB,EAAQgmB,eAAiBT,EACzBvlB,EAAQimB,mBAAqBV,EAC7BvlB,EAAQ6C,KAAO0iB,EACfvlB,EAAQkmB,gBAAkBX,EAC1BvlB,EAAQmmB,oBAAsBZ,EAE9BvlB,EAAQomB,UAAY,SAAUhyB,GAAQ,MAAO,IAE7C4L,EAAQqmB,QAAU,SAAUjyB,GACxB,MAAM,IAAIqE,MAAM,qCAGpBuH,EAAQsmB,IAAM,WAAc,MAAO,KACnCtmB,EAAQumB,MAAQ,SAAUC,GACtB,MAAM,IAAI/tB,MAAM,mCAEpBuH,EAAQymB,MAAQ,WAAa,OAAO,I,6BCrLpC,IAAIhL,EAAQ,EAAQ,GAChBiL,EAAS,EAAQ,KACjBC,EAAW,EAAQ,KACnBC,EAAe,EAAQ,KACvBC,EAAkB,EAAQ,KAC1BC,EAAc,EAAQ,IAE1BlzB,EAAOD,QAAU,SAAoB4E,GACnC,OAAO,IAAIqL,QAAQ,SAA4B9C,EAASoB,GACtD,IAAI6kB,EAAcxuB,EAAOyP,KACrBgf,EAAiBzuB,EAAO+P,QAExBmT,EAAM/f,WAAWqrB,WACZC,EAAe,gBAGxB,IAAIra,EAAU,IAAImP,eAGlB,GAAIvjB,EAAO0uB,KAAM,CACf,IAAI/d,EAAW3Q,EAAO0uB,KAAK/d,UAAY,GACnCC,EAAW5Q,EAAO0uB,KAAK9d,UAAY,GACvC6d,EAAexe,cAAgB,SAAW0e,KAAKhe,EAAW,IAAMC,GA8DlE,GA3DAwD,EAAQ2U,KAAK/oB,EAAO6a,OAAO9G,cAAeqa,EAASpuB,EAAO8T,IAAK9T,EAAO4uB,OAAQ5uB,EAAO6uB,mBAAmB,GAGxGza,EAAQsP,QAAU1jB,EAAO0jB,QAGzBtP,EAAQ0a,mBAAqB,WAC3B,GAAK1a,GAAkC,IAAvBA,EAAQ2a,aAQD,IAAnB3a,EAAQ5E,QAAkB4E,EAAQ4a,aAAwD,IAAzC5a,EAAQ4a,YAAYpmB,QAAQ,UAAjF,CAKA,IAAIqmB,EAAkB,0BAA2B7a,EAAUia,EAAaja,EAAQ8a,yBAA2B,KAEvG7f,EAAW,CACbI,KAFkBzP,EAAOuT,cAAwC,SAAxBvT,EAAOuT,aAAiDa,EAAQ/E,SAA/B+E,EAAQ+a,aAGlF3f,OAAQ4E,EAAQ5E,OAChB4f,WAAYhb,EAAQgb,WACpBrf,QAASkf,EACTjvB,OAAQA,EACRoU,QAASA,GAGX+Z,EAAO5lB,EAASoB,EAAQ0F,GAGxB+E,EAAU,OAIZA,EAAQib,QAAU,WAGhB1lB,EAAO4kB,EAAY,gBAAiBvuB,EAAQ,KAAMoU,IAGlDA,EAAU,MAIZA,EAAQkb,UAAY,WAClB3lB,EAAO4kB,EAAY,cAAgBvuB,EAAO0jB,QAAU,cAAe1jB,EAAQ,eACzEoU,IAGFA,EAAU,MAMR8O,EAAM/e,uBAAwB,CAChC,IAAI4M,EAAU,EAAQ,KAGlBwe,GAAavvB,EAAO6O,iBAAmByf,EAAgBtuB,EAAO8T,OAAS9T,EAAO+O,eAC9EgC,EAAQye,KAAKxvB,EAAO+O,qBACpBrP,EAEA6vB,IACFd,EAAezuB,EAAO8O,gBAAkBygB,GAuB5C,GAlBI,qBAAsBnb,GACxB8O,EAAMngB,QAAQ0rB,EAAgB,SAA0B5rB,EAAKhG,QAChC,IAAhB2xB,GAAqD,iBAAtB3xB,EAAIspB,qBAErCsI,EAAe5xB,GAGtBuX,EAAQqb,iBAAiB5yB,EAAKgG,KAMhC7C,EAAO6O,kBACTuF,EAAQvF,iBAAkB,GAIxB7O,EAAOuT,aACT,IACEa,EAAQb,aAAevT,EAAOuT,aAC9B,MAAOgH,GAGP,GAA4B,SAAxBva,EAAOuT,aACT,MAAMgH,EAM6B,mBAA9Bva,EAAO0vB,oBAChBtb,EAAQyT,iBAAiB,WAAY7nB,EAAO0vB,oBAIP,mBAA5B1vB,EAAO2vB,kBAAmCvb,EAAQqH,QAC3DrH,EAAQqH,OAAOoM,iBAAiB,WAAY7nB,EAAO2vB,kBAGjD3vB,EAAO4vB,aAET5vB,EAAO4vB,YAAYtnB,QAAQK,KAAK,SAAoBknB,GAC7Czb,IAILA,EAAQ0b,QACRnmB,EAAOkmB,GAEPzb,EAAU,aAIM1U,IAAhB8uB,IACFA,EAAc,MAIhBpa,EAAQ2b,KAAKvB,O,6BC7JjB,IAAIwB,EAAe,EAAQ,KAY3B30B,EAAOD,QAAU,SAAqBgF,EAASJ,EAAQ0C,EAAM0R,EAAS/E,GACpE,IAAIjR,EAAQ,IAAI8B,MAAME,GACtB,OAAO4vB,EAAa5xB,EAAO4B,EAAQ0C,EAAM0R,EAAS/E,K,6BCdpDhU,EAAOD,QAAU,SAAkBmB,GACjC,SAAUA,IAASA,EAAM0zB,c,6BCK3B,SAASC,EAAO9vB,GACdhB,KAAKgB,QAAUA,EAGjB8vB,EAAOhzB,UAAUyD,SAAW,WAC1B,MAAO,UAAYvB,KAAKgB,QAAU,KAAOhB,KAAKgB,QAAU,KAG1D8vB,EAAOhzB,UAAU+yB,YAAa,EAE9B50B,EAAOD,QAAU80B,G,cCmIb70B,EAAOD,QA1IP,MACI+E,YAAYod,GACR,MAAM9N,EAAO,CACTI,GAAI,KACJc,SAAU,KACVe,MAAO,KACPG,WAAY,KACZC,UAAW,KACXqe,OAAQ,KACRC,WAAY,KACZC,YAAa,KACbC,SAAU,KACVC,aAAc,KACdC,UAAW,MAGf,IAAK,MAAMvzB,KAAYwS,EACfzT,OAAOkB,UAAUC,eAAe1B,KAAKgU,EAAMxS,IACxCA,KAAYsgB,IACf9N,EAAKxS,GAAYsgB,EAAYtgB,IAIrCjB,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CACxCmO,GAAI,CAQA1T,IAAK,IAAMsT,EAAKI,IAEpBc,SAAU,CAQNxU,IAAK,IAAMsT,EAAKkB,UAEpBe,MAAO,CAQHvV,IAAK,IAAMsT,EAAKiC,OAEpBF,UAAW,CAQPrV,IAAK,IAAMsT,EAAKoC,YAEpBJ,SAAU,CAQNtV,IAAK,IAAMsT,EAAKqC,WAEpBqe,OAAQ,CAQJh0B,IAAK,IAAMqU,KAAKzP,MAAMyP,KAAKC,UAAUhB,EAAK0gB,UAE9CM,UAAW,CAQPt0B,IAAK,IAAMsT,EAAK2gB,YAEpBM,WAAY,CAQRv0B,IAAK,IAAMsT,EAAK4gB,aAEpBM,QAAS,CAQLx0B,IAAK,IAAMsT,EAAK6gB,UAEpBM,YAAa,CAQTz0B,IAAK,IAAMsT,EAAK8gB,cAEpBM,SAAU,CAQN10B,IAAK,IAAMsT,EAAK+gB,iB,cCtDhCn1B,EAAOD,QA7EP,MACI+E,YAAYif,EAAO0R,GACf90B,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAkCxC0d,MAAO,CACHjjB,IAAK,IAAMqU,KAAKzP,MAAMyP,KAAKC,UAAU2O,KAiCzC0R,MAAO,CACH30B,IAAK,IAAMqU,KAAKzP,MAAMyP,KAAKC,UAAUqgB,W,cCjFzDz1B,EAAOD,QAAU,iD,6BCDjB,IAAI6K,EAAI,EAAQ,IACZM,EAAY,EAAQ,IACpBwkB,EAAW,EAAQ,IACnBjf,EAAQ,EAAQ,GAChBilB,EAAoB,EAAQ,KAE5BC,EAAa,GAAGC,KAChBC,EAAO,CAAC,EAAG,EAAG,GAGdC,EAAqBrlB,EAAM,WAC7BolB,EAAKD,UAAKvxB,KAGR0xB,EAAgBtlB,EAAM,WACxBolB,EAAKD,KAAK,QAGRI,EAAgBN,EAAkB,QAMtC9qB,EAAE,CAAE3G,OAAQ,QAASylB,OAAO,EAAM9Z,OAJrBkmB,IAAuBC,GAAiBC,GAID,CAClDJ,KAAM,SAAcK,GAClB,YAAqB5xB,IAAd4xB,EACHN,EAAWv1B,KAAKsvB,EAAS3rB,OACzB4xB,EAAWv1B,KAAKsvB,EAAS3rB,MAAOmH,EAAU+qB,Q,0BCxBlD,MAMI,MAAMC,EACFpxB,YAAYod,GACR,MAAM9N,EACY8N,EAAYiU,aADxB/hB,EAEM8N,EAAYpJ,OAFlB1E,EAGO8N,EAAY9T,QAHnBgG,EAIO8N,EAAY1c,QAGzB7E,OAAOyF,iBAAiBrC,KAAM,CAC1BvD,KAAM,CAQFM,IAAK,IAAMsT,GAEf0E,OAAQ,CAQJhY,IAAK,IAAMsT,GAEfhG,QAAS,CAQLtN,IAAK,IAAMsT,GAEf5O,QAAS,CAQL1E,IAAK,IAAMsT,MAW3B,MAAMgiB,EACFtxB,YAAYod,GACR,MAAM9N,EACY8N,EAAYiU,aADxB/hB,EAEM8N,EAAYpJ,OAFlB1E,EAGO8N,EAAY9T,QAHnBgG,EAIO8N,EAAY1c,QAGzB7E,OAAOyF,iBAAiBrC,KAAM,CAC1BvD,KAAM,CAQFM,IAAK,IAAMsT,GAEf0E,OAAQ,CAQJhY,IAAK,IAAMsT,GAEfhG,QAAS,CAQLtN,IAAK,IAAMsT,GAEf5O,QAAS,CAQL1E,IAAK,IAAMsT,MA+G3BpU,EAAOD,QAAU,CACbs2B,iBArGJ,MACIvxB,YAAYod,GACR,MAAM9N,EAAO,CACT2O,aAAcb,EAAYa,aAC1BC,aAAcd,EAAYc,aAC1BxO,GAAI0N,EAAY1N,GAChBsO,MAAOZ,EAAYY,MACnBtiB,KAAM0hB,EAAY1hB,KAClB81B,aAAcpU,EAAYoU,cAG9BliB,EAAKmiB,QAAUrU,EAAYqU,QAAQrc,IAAIoL,GAAM,IAAI8Q,EAAO9Q,IACxDlR,EAAKoiB,QAAUtU,EAAYsU,QAAQtc,IAAIoL,GAAM,IAAI4Q,EAAO5Q,IAGxD3kB,OAAOyF,iBAAiBrC,KAAM,CAC1ByQ,GAAI,CAQA1T,IAAK,IAAMsT,EAAKI,IAEpBsO,MAAO,CAQHhiB,IAAK,IAAMsT,EAAK0O,OAEpBtiB,KAAM,CAQFM,IAAK,IAAMsT,EAAK5T,MAEpByjB,YAAa,CAQTnjB,IAAK,IAAMsT,EAAK2O,cAEpBmB,YAAa,CAQTpjB,IAAK,IAAMsT,EAAK4O,cAEpByT,YAAa,CAQT31B,IAAK,IAAMsT,EAAKkiB,cAEpBE,QAAS,CAQL11B,IAAK,IAAM,IAAIsT,EAAKoiB,UAExBD,QAAS,CAQLz1B,IAAK,IAAM,IAAIsT,EAAKmiB,cAQhCL,SACAE,WAnOR,I,gBCLA,IAAI3lB,EAAQ,EAAQ,GAChBzG,EAAkB,EAAQ,GAC1Ba,EAAU,EAAQ,IAElBZ,EAAWD,EAAgB,YAE/BhK,EAAOD,SAAW0Q,EAAM,WACtB,IAAIgI,EAAM,IAAIkR,IAAI,QAAS,YACvB+M,EAAeje,EAAIie,aAEvB,OADAje,EAAIke,SAAW,QACP9rB,IAAY4N,EAAI8M,SAClBmR,EAAad,MACD,uBAAbnd,EAAIme,MACsB,MAA1BF,EAAa51B,IAAI,MACuB,QAAxCoC,OAAO,IAAI2F,gBAAgB,WAC1B6tB,EAAazsB,IAEsB,MAApC,IAAI0f,IAAI,eAAerU,UACsC,MAA7D,IAAIzM,gBAAgB,IAAIA,gBAAgB,QAAQ/H,IAAI,MAEpB,eAAhC,IAAI6oB,IAAI,eAAewC,MAEQ,YAA/B,IAAIxC,IAAI,cAAckN,Q,qBCif7B72B,EAAOD,QAzfP,WACI,MAAM8d,EAAiBpZ,EAAQ,IACzBqyB,EAAOryB,EAAQ,IACf+jB,EAAc/jB,EAAQ,IACtBsyB,EAAatyB,EAAQ,KACrB,IAAEwd,EAAF,KAAOW,GAASne,EAAQ,KACxB,UAAEihB,EAAF,MAAa1F,GAAUvb,EAAQ,KAE/B,cACF6V,EADE,WAEFG,EAFE,SAGFI,EAHE,cAIFE,EAJE,WAKFM,EALE,YAMFI,EANE,QAOFO,EAPE,UAQFF,GACArX,EAAQ,KAEN,UACFG,EADE,cAEFoC,EAFE,UAGFC,EAHE,eAIFC,EAJE,YAKFC,EALE,YAMFC,GACA3C,EAAQ,GAENuyB,EAAQvyB,EAAQ,KAChBE,EAASF,EAAQ,IAOjBqa,EAAO,CAOThY,OAAQ,CAkBJ,qBACyB+W,EAChBsC,WAAWrB,EAAKhY,OAAO+N,OAqBhC,YAAYE,EAAY,YACC8I,EAChBsC,WAAWrB,EAAKhY,OAAOgO,MAAOC,GAYvC,uBACyB8I,EAChBsC,WAAWrB,EAAKhY,OAAOmO,SAiBhC,eAAeK,EAAUa,EAAWC,EAAUC,EAAOC,EAAWC,UACvCsH,EAChBsC,WAAWrB,EAAKhY,OAAOoP,SAAUZ,EAAUa,EACxCC,EAAUC,EAAOC,EAAWC,GAaxC,YAAYjB,EAAUC,UACGsI,EAChBsC,WAAWrB,EAAKhY,OAAOuO,MAAOC,EAAUC,GAWjD,sBACyBsI,EAChBsC,WAAWrB,EAAKhY,OAAO8O,QAYhC,0BACyBiI,EAChBsC,WAAWrB,EAAKhY,OAAOgP,aASpCa,MAAO,CA4BH,UAAU7C,EAAS,WACM+J,EAChBsC,WAAWrB,EAAKnI,MAAM7V,IAAKgT,IASxC2D,KAAM,CAmBF,UAAU3D,EAAS,WACM+J,EAChBsC,WAAWrB,EAAKrH,KAAK3W,IAAKgT,IASvCiC,MAAO,CAiBH,UAAUjC,EAAS,WACM+J,EAChBsC,WAAWrB,EAAK/I,MAAMjV,IAAKgT,IASxC8J,QAAS,CAyFL,oBACyBC,EAChBsC,WAAWrB,EAAKlB,QAAQK,MAWjC,eAAeC,SACUL,EAChBsC,WAAWrB,EAAKlB,QAAQ1H,SAAUgI,IAS/CvZ,OAAQ,CAgBJ,iBACI,OAAOA,EAAOoP,YAElB,eAAe7S,GACXyD,EAAOoP,WAAa7S,GAExB,YACI,OAAOyD,EAAOsP,OAElB,UAAU/S,GACNyD,EAAOsP,MAAQ/S,GAEnB,aACI,OAAOyD,EAAOuB,QAElB,WAAWhF,GACPyD,EAAOuB,OAAShF,GAEpB,YACI,OAAOyD,EAAOsB,OAElB,UAAU/E,GACNyD,EAAOsB,MAAQ/E,GAEnB,eACI,OAAOyD,EAAOwB,WAQtBZ,OAAQ,CAWJC,WAAYwxB,EAAMxxB,WAOtByxB,MAAO,CACH3c,gBACAG,aACAI,WACAE,gBACAM,aACAI,cACAO,UACAF,aAOJob,WAAY,CACRtyB,YACAoC,gBACAC,YACAC,iBACAC,cACAC,eAOJ+vB,QAAS,CACLvU,OACAkU,OACA7U,MACAyD,YACA1F,QACA+W,aACAvO,gBAIR1J,EAAKhY,OAASnG,OAAO0F,OAAOyY,EAAKhY,QACjCgY,EAAKnI,MAAQhW,OAAO0F,OAAOyY,EAAKnI,OAChCmI,EAAKrH,KAAO9W,OAAO0F,OAAOyY,EAAKrH,MAC/BqH,EAAK/I,MAAQpV,OAAO0F,OAAOyY,EAAK/I,OAChC+I,EAAKlB,QAAUjd,OAAO0F,OAAOyY,EAAKlB,SAClCkB,EAAKvZ,OAAS5E,OAAO0F,OAAOyY,EAAKvZ,QACjCuZ,EAAKmY,MAAQt2B,OAAO0F,OAAOyY,EAAKmY,OAEhC,MAAMG,EAAe3yB,EAAQ,KAO7B,OALAtC,KAAKk1B,MAAQ,SAAUn2B,EAAOwe,EAAK4X,GAC/B,OAAOn1B,KAAKud,IAAIvd,KAAKm1B,IAAIp2B,EAAOwe,GAAM4X,IAGtB32B,OAAO0F,OAAO+wB,EAAatY,IAIlCyY,I,gBCvgBjB,IAAI/0B,EAAS,EAAQ,GACjB2P,EAAyB,EAAQ,IAEjCY,EAAUvQ,EAAOuQ,QAErB/S,EAAOD,QAA6B,mBAAZgT,GAA0B,cAAc8iB,KAAK1jB,EAAuB/R,KAAK2S,K,gBCLjG,IAAI6Z,EAAa,EAAQ,IACrB4K,EAA4B,EAAQ,IACpCC,EAA8B,EAAQ,IACtC7lB,EAAW,EAAQ,GAGvB5R,EAAOD,QAAU6sB,EAAW,UAAW,YAAc,SAAiB1qB,GACpE,IAAI2c,EAAO2Y,EAA0B9qB,EAAEkF,EAAS1P,IAC5CooB,EAAwBmN,EAA4B/qB,EACxD,OAAO4d,EAAwBzL,EAAKlF,OAAO2Q,EAAsBpoB,IAAO2c,I,gBCT1E,IAAImP,EAAqB,EAAQ,IAG7Blb,EAFc,EAAQ,IAEG6G,OAAO,SAAU,aAI9C5Z,EAAQ2M,EAAI/L,OAAO+2B,qBAAuB,SAA6Br1B,GACrE,OAAO2rB,EAAmB3rB,EAAGyQ,K,gBCR/B,IAAI3P,EAAkB,EAAQ,IAC1Bw0B,EAAW,EAAQ,IACnBC,EAAkB,EAAQ,IAG1B1Q,EAAe,SAAU2Q,GAC3B,OAAO,SAAUzQ,EAAO9B,EAAIwS,GAC1B,IAGI52B,EAHAmB,EAAIc,EAAgBikB,GACpBhjB,EAASuzB,EAASt1B,EAAE+B,QACpBF,EAAQ0zB,EAAgBE,EAAW1zB,GAIvC,GAAIyzB,GAAevS,GAAMA,GAAI,KAAOlhB,EAASF,GAG3C,IAFAhD,EAAQmB,EAAE6B,OAEGhD,EAAO,OAAO,OAEtB,KAAMkD,EAASF,EAAOA,IAC3B,IAAK2zB,GAAe3zB,KAAS7B,IAAMA,EAAE6B,KAAWohB,EAAI,OAAOuS,GAAe3zB,GAAS,EACnF,OAAQ2zB,IAAgB,IAI9B73B,EAAOD,QAAU,CAGfuX,SAAU4P,GAAa,GAGvB3Z,QAAS2Z,GAAa,K,gBC9BxB,IAAIzH,EAAY,EAAQ,IAEpB6X,EAAMn1B,KAAKm1B,IACX5X,EAAMvd,KAAKud,IAKf1f,EAAOD,QAAU,SAAUmE,EAAOE,GAChC,IAAI2zB,EAAUtY,EAAUvb,GACxB,OAAO6zB,EAAU,EAAIT,EAAIS,EAAU3zB,EAAQ,GAAKsb,EAAIqY,EAAS3zB,K,gBCV/D,IAAIqM,EAAQ,EAAQ,GAEpBzQ,EAAOD,UAAYY,OAAO2pB,wBAA0B7Z,EAAM,WAGxD,OAAQvN,OAAOlC,a,6BCJjB,IAAI4rB,EAAa,EAAQ,IACrBjc,EAAuB,EAAQ,IAC/B3G,EAAkB,EAAQ,GAC1B0G,EAAc,EAAQ,IAEtB1E,EAAUhC,EAAgB,WAE9BhK,EAAOD,QAAU,SAAUi4B,GACzB,IAAIjR,EAAc6F,EAAWoL,GACzBp3B,EAAiB+P,EAAqBjE,EAEtCgE,GAAeqW,IAAgBA,EAAY/a,IAC7CpL,EAAemmB,EAAa/a,EAAS,CACnC2R,cAAc,EACd7c,IAAK,WAAc,OAAOiD,U,gBCfhC,IAAI6N,EAAW,EAAQ,GACnBqmB,EAAwB,EAAQ,IAChCN,EAAW,EAAQ,IACnBl2B,EAAO,EAAQ,IACfy2B,EAAoB,EAAQ,IAC5BC,EAA+B,EAAQ,IAEvCC,EAAS,SAAUC,EAASlvB,GAC9BpF,KAAKs0B,QAAUA,EACft0B,KAAKoF,OAASA,IAGFnJ,EAAOD,QAAU,SAAU0N,EAAU7F,EAAIkY,EAAMwY,EAAYC,GACvE,IACItN,EAAUuN,EAAQt0B,EAAOE,EAAQ+E,EAAQsvB,EADzCC,EAAgBj3B,EAAKmG,EAAIkY,EAAMwY,EAAa,EAAI,GAGpD,GAAIC,EACFtN,EAAWxd,MACN,CAEL,GAAqB,mBADrB+qB,EAASN,EAAkBzqB,IACM,MAAMxK,UAAU,0BAEjD,GAAIg1B,EAAsBO,GAAS,CACjC,IAAKt0B,EAAQ,EAAGE,EAASuzB,EAASlqB,EAASrJ,QAASA,EAASF,EAAOA,IAIlE,IAHAiF,EAASmvB,EACLI,EAAc9mB,EAAS6mB,EAAOhrB,EAASvJ,IAAQ,GAAIu0B,EAAK,IACxDC,EAAcjrB,EAASvJ,MACbiF,aAAkBivB,EAAQ,OAAOjvB,EAC/C,OAAO,IAAIivB,GAAO,GAEtBnN,EAAWuN,EAAOp4B,KAAKqN,GAGzB,OAASgrB,EAAOxN,EAASyD,QAAQpqB,MAE/B,IADA6E,EAASgvB,EAA6BlN,EAAUyN,EAAeD,EAAKv3B,MAAOo3B,KAC7DnvB,aAAkBivB,EAAQ,OAAOjvB,EAC/C,OAAO,IAAIivB,GAAO,KAGdO,KAAO,SAAUxvB,GACvB,OAAO,IAAIivB,GAAO,EAAMjvB,K,gBCxC1B,IAAIyvB,EAAa,EAAQ,IAGrB1uB,EAFkB,EAAQ,EAEVF,CAAgB,eAEhC6uB,EAAuE,aAAnDD,EAAW,WAAc,OAAOvvB,UAArB,IAUnCrJ,EAAOD,QAAU,SAAUmC,GACzB,IAAIG,EAAGy2B,EAAK3vB,EACZ,YAAc9E,IAAPnC,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhD42B,EAXD,SAAU52B,EAAIV,GACzB,IACE,OAAOU,EAAGV,GACV,MAAOuB,KAQSg2B,CAAO12B,EAAI1B,OAAOuB,GAAKgI,IAA8B4uB,EAEnED,EAAoBD,EAAWv2B,GAEH,WAA3B8G,EAASyvB,EAAWv2B,KAAsC,mBAAZA,EAAE22B,OAAuB,YAAc7vB,I,gBCvB5F,IAEIc,EAFkB,EAAQ,EAEfD,CAAgB,YAC3BivB,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvBzK,KAAM,WACJ,MAAO,CAAEpqB,OAAQ40B,MAEnB,OAAU,WACRD,GAAe,IAGnBE,EAAmBlvB,GAAY,WAC7B,OAAOlG,MAGTH,MAAMw1B,KAAKD,EAAoB,WAAc,MAAM,IACnD,MAAOp2B,IAET/C,EAAOD,QAAU,SAAU+C,EAAMu2B,GAC/B,IAAKA,IAAiBJ,EAAc,OAAO,EAC3C,IAAIK,GAAoB,EACxB,IACE,IAAI33B,EAAS,GACbA,EAAOsI,GAAY,WACjB,MAAO,CACLykB,KAAM,WACJ,MAAO,CAAEpqB,KAAMg1B,GAAoB,MAIzCx2B,EAAKnB,GACL,MAAOoB,IACT,OAAOu2B,I,gBCpCT,IAAI1nB,EAAW,EAAQ,GACnB1G,EAAY,EAAQ,IAGpBc,EAFkB,EAAQ,EAEhBhC,CAAgB,WAI9BhK,EAAOD,QAAU,SAAUsC,EAAGk3B,GAC5B,IACI/R,EADA7X,EAAIiC,EAASvP,GAAGyC,YAEpB,YAAaT,IAANsL,GAAiDtL,OAA7BmjB,EAAI5V,EAASjC,GAAG3D,IAAyButB,EAAqBruB,EAAUsc,K,gBCXrG,IAcIgS,EAAOC,EAAMC,EAAM9rB,EAAQ+rB,EAAQC,EAAM3sB,EAdzCzK,EAAS,EAAQ,GACjBqO,EAA2B,EAAQ,IAAmDnE,EACtFtB,EAAU,EAAQ,IAClByuB,EAAY,EAAQ,IAAqBp2B,IACzCqI,EAAY,EAAQ,IAEpBguB,EAAmBt3B,EAAOs3B,kBAAoBt3B,EAAOu3B,uBACrD3tB,EAAU5J,EAAO4J,QACjB4D,EAAUxN,EAAOwN,QACjBpD,EAA8B,WAApBxB,EAAQgB,GAElB4tB,EAA2BnpB,EAAyBrO,EAAQ,kBAC5Dy3B,EAAiBD,GAA4BA,EAAyB94B,MAKrE+4B,IACHT,EAAQ,WACN,IAAItqB,EAAQtH,EAEZ,IADIgF,IAAYsC,EAAS9C,EAAQmC,SAASW,EAAOP,OAC1C8qB,GAAM,CACX7xB,EAAK6xB,EAAK7xB,GACV6xB,EAAOA,EAAK/K,KACZ,IACE9mB,IACA,MAAO7E,GAGP,MAFI02B,EAAM7rB,IACL8rB,OAAOr1B,EACNtB,GAER22B,OAAOr1B,EACL6K,GAAQA,EAAOR,SAIjB9B,EACFgB,EAAS,WACPxB,EAAQggB,SAASoN,IAGVM,IAAqB,mCAAmCjE,KAAK/pB,IACtE6tB,GAAS,EACTC,EAAO3wB,SAASixB,eAAe,IAC/B,IAAIJ,EAAiBN,GAAOW,QAAQP,EAAM,CAAEQ,eAAe,IAC3DxsB,EAAS,WACPgsB,EAAKxlB,KAAOulB,GAAUA,IAGf3pB,GAAWA,EAAQ9C,SAE5BD,EAAU+C,EAAQ9C,aAAQ7I,GAC1BuJ,EAAS,WACPX,EAAQK,KAAKksB,KASf5rB,EAAS,WAEPisB,EAAUz5B,KAAKoC,EAAQg3B,KAK7Bx5B,EAAOD,QAAUk6B,GAAkB,SAAUryB,GAC3C,IAAI4D,EAAO,CAAE5D,GAAIA,EAAI8mB,UAAMrqB,GACvBq1B,IAAMA,EAAKhL,KAAOljB,GACjBiuB,IACHA,EAAOjuB,EACPoC,KACA8rB,EAAOluB,I,gBC3EX,IAAIoG,EAAW,EAAQ,GACnB5O,EAAW,EAAQ,IACnByJ,EAAuB,EAAQ,IAEnCzM,EAAOD,QAAU,SAAU4P,EAAGQ,GAE5B,GADAyB,EAASjC,GACL3M,EAASmN,IAAMA,EAAErL,cAAgB6K,EAAG,OAAOQ,EAC/C,IAAIkqB,EAAoB5tB,EAAqBC,EAAEiD,GAG/C,OADAzC,EADcmtB,EAAkBntB,SACxBiD,GACDkqB,EAAkBptB,U,gBCV3B,IAAIzK,EAAS,EAAQ,GAErBxC,EAAOD,QAAU,SAAUwJ,EAAGC,GAC5B,IAAI8wB,EAAU93B,EAAO83B,QACjBA,GAAWA,EAAQv3B,QACA,IAArBsG,UAAUjF,OAAek2B,EAAQv3B,MAAMwG,GAAK+wB,EAAQv3B,MAAMwG,EAAGC,M,cCLjExJ,EAAOD,QAAU,SAAU+C,GACzB,IACE,MAAO,CAAEC,OAAO,EAAO7B,MAAO4B,KAC9B,MAAOC,GACP,MAAO,CAAEA,OAAO,EAAM7B,MAAO6B,M,6BCDjC,IAAI6H,EAAI,EAAQ,IACZ8F,EAAc,EAAQ,IACtBlO,EAAS,EAAQ,GACjB0P,EAAM,EAAQ,GACdlP,EAAW,EAAQ,IACnBpC,EAAiB,EAAQ,IAAuC8L,EAChEsE,EAA4B,EAAQ,IAEpCupB,EAAe/3B,EAAOxB,OAE1B,GAAI0P,GAAsC,mBAAhB6pB,MAAiC,gBAAiBA,EAAa14B,iBAExDwC,IAA/Bk2B,IAAe9b,aACd,CACD,IAAI+b,EAA8B,GAE9BC,EAAgB,WAClB,IAAIhc,EAAcpV,UAAUjF,OAAS,QAAsBC,IAAjBgF,UAAU,QAAmBhF,EAAYnB,OAAOmG,UAAU,IAChGF,EAASpF,gBAAgB02B,EACzB,IAAIF,EAAa9b,QAEDpa,IAAhBoa,EAA4B8b,IAAiBA,EAAa9b,GAE9D,MADoB,KAAhBA,IAAoB+b,EAA4BrxB,IAAU,GACvDA,GAET6H,EAA0BypB,EAAeF,GACzC,IAAIG,EAAkBD,EAAc54B,UAAY04B,EAAa14B,UAC7D64B,EAAgB51B,YAAc21B,EAE9B,IAAIE,EAAiBD,EAAgBp1B,SACjCs1B,EAAyC,gBAAhC13B,OAAOq3B,EAAa,SAC7BM,EAAS,wBACbj6B,EAAe85B,EAAiB,cAAe,CAC7C/c,cAAc,EACd7c,IAAK,WACH,IAAIg6B,EAAS93B,EAASe,MAAQA,KAAK6iB,UAAY7iB,KAC3C8mB,EAAS8P,EAAev6B,KAAK06B,GACjC,GAAI5oB,EAAIsoB,EAA6BM,GAAS,MAAO,GACrD,IAAIC,EAAOH,EAAS/P,EAAO5Y,MAAM,GAAI,GAAK4Y,EAAOjhB,QAAQixB,EAAQ,MACjE,MAAgB,KAATE,OAAc12B,EAAY02B,KAIrCnwB,EAAE,CAAEpI,QAAQ,EAAMoN,QAAQ,GAAQ,CAChC5O,OAAQy5B,M,gBC/CZ,IAAIzwB,EAAkB,EAAQ,GAC1BzI,EAAS,EAAQ,IACjBwI,EAAO,EAAQ,IAEfixB,EAAchxB,EAAgB,eAC9BghB,EAAiBpnB,MAAM/B,UAIQwC,MAA/B2mB,EAAegQ,IACjBjxB,EAAKihB,EAAgBgQ,EAAaz5B,EAAO,OAI3CvB,EAAOD,QAAU,SAAUyB,GACzBwpB,EAAegQ,GAAax5B,IAAO,I,gBCfrC,IAAIiP,EAAQ,EAAQ,GAEpBzQ,EAAOD,SAAW0Q,EAAM,WACtB,SAASmJ,KAET,OADAA,EAAE/X,UAAUiD,YAAc,KACnBnE,OAAOgiB,eAAe,IAAI/I,KAASA,EAAE/X,a,gBCL9C,IAAI+P,EAAW,EAAQ,GACnBqpB,EAAqB,EAAQ,KAMjCj7B,EAAOD,QAAUY,OAAOutB,iBAAmB,aAAe,GAAK,WAC7D,IAEIgN,EAFAC,GAAiB,EACjBtF,EAAO,GAEX,KACEqF,EAASv6B,OAAOkQ,yBAAyBlQ,OAAOkB,UAAW,aAAa4B,KACjErD,KAAKy1B,EAAM,IAClBsF,EAAiBtF,aAAgBjyB,MACjC,MAAOb,IACT,OAAO,SAAwBV,EAAGqnB,GAKhC,OAJA9X,EAASvP,GACT44B,EAAmBvR,GACfyR,EAAgBD,EAAO96B,KAAKiC,EAAGqnB,GAC9BrnB,EAAE+4B,UAAY1R,EACZrnB,GAdoD,QAgBzDgC,I,gBCvBN,IAAIrB,EAAW,EAAQ,IAEvBhD,EAAOD,QAAU,SAAUmC,GACzB,IAAKc,EAASd,IAAc,OAAPA,EACnB,MAAMe,UAAU,aAAeC,OAAOhB,GAAM,mBAC5C,OAAOA,I,cCHXlC,EAAOD,QAAU,CACfs7B,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,I,iBCjCb;;;;;;IAME,WACA,aAGA,IAAIC,EAAc,CAChB,UAAY,EACZ,QAAU,GAIRC,EAAQD,SAAmB96B,SAAWA,QAAWyB,KAMjDu5B,EAAcF,SAAmBr9B,IAAYA,EAG7Cw9B,EAAaH,SAAmBp9B,IAAWA,IAAWA,EAAOw9B,UAAYx9B,EAGzEy9B,EAAaH,GAAeC,GAA+B,iBAAV/6B,GAAsBA,GACvEi7B,GAAeA,EAAWj7B,SAAWi7B,GAAcA,EAAWn7B,SAAWm7B,GAAcA,EAAWl7B,OAASk7B,IAC7GJ,EAAOI,GAQT,IAAIC,EAAiBv7B,KAAKw7B,IAAI,EAAG,IAAM,EAGnCC,EAAU,UAMVC,EAAcl9B,OAAOkB,UAGrBC,EAAiB+7B,EAAY/7B,eAG7BwD,EAAWu4B,EAAYv4B,SAW3B,SAASw4B,EAAWjT,GAElB,OADAA,EAAS3nB,OAAO2nB,IACFlD,OAAO,GAAGjP,cAAgBmS,EAAO5Y,MAAM,GAuFvD,SAAS6G,EAAO+R,GAEd,OADAA,EAASnhB,EAAKmhB,GACP,uBAAuBgL,KAAKhL,GAC/BA,EACAiT,EAAWjT,GAUjB,SAASkT,EAAOp8B,EAAQ0c,GACtB,IAAK,IAAI7c,KAAOG,EACVG,EAAe1B,KAAKuB,EAAQH,IAC9B6c,EAAS1c,EAAOH,GAAMA,EAAKG,GAYjC,SAASq8B,EAAW98B,GAClB,OAAgB,MAATA,EACH48B,EAAW58B,GACXoE,EAASlF,KAAKc,GAAO+Q,MAAM,GAAI,GA0BrC,SAASgsB,EAAQpT,GACf,OAAO3nB,OAAO2nB,GAAQjhB,QAAQ,eAAgB,OAWhD,SAASs0B,EAAOxM,EAAOrT,GACrB,IAAI8f,EAAc,KAIlB,OA/FF,SAAcx8B,EAAQ0c,GACpB,IAAIna,GAAS,EACTE,EAASzC,EAASA,EAAOyC,OAAS,EAEtC,GAAqB,iBAAVA,GAAsBA,GAAU,GAAKA,GAAUs5B,EACxD,OAASx5B,EAAQE,GACfia,EAAS1c,EAAOuC,GAAQA,EAAOvC,QAGjCo8B,EAAOp8B,EAAQ0c,GAmFjB9E,CAAKmY,EAAO,SAASxwB,EAAOgD,GAC1Bi6B,EAAc9f,EAAS8f,EAAaj9B,EAAOgD,EAAOwtB,KAE7CyM,EAUT,SAASz0B,EAAKmhB,GACZ,OAAO3nB,OAAO2nB,GAAQjhB,QAAQ,WAAY,IAw7B5C,IAAIw0B,EA36BJ,SAAS14B,EAAM24B,GAGb,IAAIC,EAAUjB,EAGVkB,EAAkBF,GAAmB,iBAANA,GAAoC,UAAlBL,EAAWK,GAG5DE,IACFD,EAAUD,EACVA,EAAK,MAIP,IAAIG,EAAMF,EAAQv1B,WAAa,GAG3B+C,EAAY0yB,EAAI1yB,WAAa,GAEjCuyB,IAAOA,EAAKvyB,GAGZ,IA4CIsI,EAkBAqqB,EA3Ic98B,EAAQC,EACtBoC,EA+EA06B,EAAaH,IACXC,EAAIE,WACN,aAAa7I,KAAKwI,KAAQ,eAAexI,KAAKvwB,EAASA,YAIvDq5B,EAAkBJ,EADJ,SACoC,4BAClDK,EAAcL,EAFA,SAEgC,cAC9CM,EAAaN,GAAmBD,EAAQQ,KAAQ,cAAgBd,EAAWM,EAAQQ,MACnFC,EAAeR,EAJD,SAIiC,gBAG/CO,EAAO,SAASjJ,KAAKgJ,IAAcP,EAAQQ,KAG3CE,EAAQF,GAAQd,EAAWM,EAAQW,cAAgBL,EAGnDM,EAAQJ,EAAO,IAAM,IAGrBK,EAAOL,EAAO,IAAM,IAGpBM,EAAMd,EAAQr1B,UAAY,GAO1Bo2B,EAAQf,EAAQgB,WAAahB,EAAQe,MAGrCE,EAAa3B,EAAQ/H,KAAK0J,EAAchB,GAAmBc,EAASA,EAAM,aAAerB,EAAWqB,IACpGE,EACCF,EAAQ,KAQTG,EAAOnB,EAGP5f,EAAc,GAGdghB,EAAa,KAGbC,EAAcrB,GAAMvyB,EAGpBtG,EAAUk6B,GAAeL,GAAiC,mBAAjBA,EAAM75B,SAAyB65B,EAAM75B,UAM9Em6B,EA+JKzB,EA/Jc,CACrB,CAAE,MAAS,WAAY,QAAW,QAClC,UACA,CAAE,MAAS,SAAU,QAAW,eAChC,OACA,SACA,WACA,SACA,QACA,SAsJuB,SAAS/0B,EAAQy2B,GACtC,OAAOz2B,GAAU8mB,OAAO,OACtB2P,EAAMC,SAAW5B,EAAQ2B,IACvB,MAAO,KAAK98B,KAAKu7B,KAAQuB,EAAM7b,OAAS6b,KArJ5Cp/B,EAkLJ,SAAiBs/B,GACf,OAAO5B,EAAO4B,EAAS,SAAS32B,EAAQy2B,GACtC,OAAOz2B,GAAU8mB,OAAO,OACtB2P,EAAMC,SAAW5B,EAAQ2B,IACvB,MAAO,KAAK98B,KAAKu7B,KAAQuB,EAAM7b,OAAS6b,KAtLrCG,CAAQ,CACjB,YACA,QACA,gBACA,SACA,SACA,WACA,WACA,SACA,QACA,SACA,eACA,OACA,YACA,WACA,YACA,YACA,UACA,CAAE,MAAS,iBAAkB,QAAW,QACxC,SACA,eACA,WACA,YACA,QACA,SACA,WACA,CAAE,MAAS,mBAAoB,QAAW,kBAC1C,YACA,CAAE,MAAS,OAAQ,QAAW,+BAC9B,WACA,cACA,CAAE,MAAS,cAAe,QAAW,QACrC,UACA,WACA,WACA,cACA,aACA,CAAE,MAAS,aAAc,QAAW,SACpC,QACA,CAAE,MAAS,QAAS,QAAW,OAC/B,SACA,CAAE,MAAS,gBAAiB,QAAW,kBACvC,CAAE,MAAS,UAAW,QAAW,yBACjC,CAAE,MAAS,kBAAmB,QAAW,SACzC,CAAE,MAAS,KAAM,QAAW,YAC5B,CAAE,MAAS,KAAM,QAAW,QAC5B,WAIE/2B,EAAUg3B,EAAW,CACvB,CAAE,MAAS,aAAc,QAAW,QACpC,aACA,CAAE,MAAS,WAAY,QAAW,YAClC,CAAE,MAAS,YAAa,QAAW,YACnC,CAAE,MAAS,YAAa,QAAW,YACnC,CAAE,MAAS,YAAa,QAAW,YACnC,CAAE,MAAS,YAAa,QAAW,WACnC,CAAE,MAAS,YAAa,QAAW,WACnC,CAAE,MAAS,iBAAkB,QAAW,WACxC,CAAE,MAAS,YAAa,QAAW,WACnC,CAAE,MAAS,iBAAkB,QAAW,WACxC,YACA,QACA,OACA,OACA,SACA,SACA,CAAE,MAAS,cAAe,QAAW,+BACrC,QACA,OACA,WACA,mBACA,cACA,WACA,cACA,CAAE,MAAS,QAAS,QAAW,QAC/B,MACA,WACA,CAAE,MAAS,WAAY,QAAW,QAClC,SAIEC,EA4EJ,SAAyBH,GACvB,OAAO5B,EAAO4B,EAAS,SAAS32B,EAAQjI,EAAOM,GAE7C,OAAO2H,IACLjI,EAAM8H,IACN9H,EAAM,0BAA0B4B,KAAKkG,KACrCinB,OAAO,MAAQgO,EAAQz8B,GAAO,kBAAmB,KAAKsB,KAAKu7B,KACxD78B,IAnFU0+B,CAAgB,CACjC,MAAS,CAAE,KAAQ,EAAG,OAAU,EAAG,KAAQ,GAC3C,OAAU,GACV,OAAU,CAAE,OAAU,EAAG,cAAe,GACxC,KAAQ,CAAE,YAAe,GACzB,iBAAkB,CAAE,KAAQ,GAC5B,WAAc,CAAE,SAAY,GAC5B,OAAU,CAAE,YAAa,EAAG,MAAS,GACrC,GAAM,CAAE,SAAY,GACpB,IAAO,GACP,GAAM,GACN,UAAa,CAAE,KAAQ,EAAG,WAAY,GACtC,SAAY,CAAE,KAAQ,GACtB,SAAY,CAAE,QAAS,EAAI,IAAO,GAClC,MAAS,CAAE,MAAS,GACpB,QAAW,CAAE,WAAY,EAAG,YAAa,EAAG,YAAa,EAAG,YAAa,GACzE,KAAQ,CAAE,YAAe,EAAG,mBAAoB,KAI9C76B,EAyFJ,SAAey6B,GACb,OAAO5B,EAAO4B,EAAS,SAAS32B,EAAQy2B,GACtC,IAAIC,EAAUD,EAAMC,SAAW5B,EAAQ2B,GAMvC,OALKz2B,IAAWA,EACV8mB,OAAO,MAAQ4P,EAAU,wBAAyB,KAAK/8B,KAAKu7B,MAEhEl1B,EA3dR,SAAmB9D,EAAIw6B,EAAS9b,GAI9B,IAAI3P,EAAO,CACT,OAAQ,KACR,IAAQ,uBACR,IAAQ,MACR,IAAQ,IACR,IAAQ,qBACR,MAAQ,sBACR,IAAQ,0BACR,IAAQ,KACR,KAAQ,WACR,MAAQ,OACR,MAAQ,KACR,OAAQ,MA8BV,OA3BIyrB,GAAW9b,GAAS,QAAQ8R,KAAKxwB,KAAQ,mBAAmBwwB,KAAKxwB,KAChE+O,EAAOA,EAAK,UAAUtR,KAAKuC,OAC9BA,EAAK,WAAa+O,GAGpB/O,EAAKnC,OAAOmC,GAERw6B,GAAW9b,IACb1e,EAAKA,EAAGuE,QAAQqmB,OAAO4P,EAAS,KAAM9b,IAGxC1e,EAAKyT,EACHzT,EAAGuE,QAAQ,QAAS,OACjBA,QAAQ,SAAU,OAClBA,QAAQ,gBAAiB,UACzBA,QAAQ,cAAe,OACvBA,QAAQ,oBAAqB,MAC7BA,QAAQ,iBAAkB,MAC1BA,QAAQ,SAAU,OAClBA,QAAQ,KAAM,KACdA,QAAQ,6BAA8B,IACtCA,QAAQ,gBAAiB,UACzBA,QAAQ,yBAA0B,MAClCA,QAAQ,6BAA8B,MACtC2I,MAAM,QAAQ,IAgbJ4tB,CAAUh3B,EAAQ02B,EAASD,EAAM7b,OAAS6b,IAE9Cz2B,IAjGFi3B,CAAM,CACb,gBACA,UACA,SACA,CAAE,MAAS,YAAa,QAAW,QACnC,SACA,SACA,UACA,SACA,QACA,UACA,aACA,UACA,UACA,OACA,SACA,UACA,SACA,aACA,QACA,SACA,QACA,YACA,QACA,QACA,WACA,YACA,MACA,cACA,aA+EF,SAASJ,EAAWF,GAClB,OAAO5B,EAAO4B,EAAS,SAAS32B,EAAQy2B,GACtC,IAAIC,EAAUD,EAAMC,SAAW5B,EAAQ2B,GAiBvC,OAhBKz2B,IAAWA,EACV8mB,OAAO,MAAQ4P,EAAU,iBAAkB,KAAK/8B,KAAKu7B,IACrDpO,OAAO,MAAQ4P,EAAU,gBAAiB,KAAK/8B,KAAKu7B,IACpDpO,OAAO,MAAQ4P,EAAU,6CAA8C,KAAK/8B,KAAKu7B,OAGhFl1B,EAASjG,OAAQ08B,EAAM7b,QAAUkM,OAAO4P,EAAS,KAAKhK,KAAK+J,EAAM7b,OAAU6b,EAAM7b,MAAQ5a,GAAQoJ,MAAM,MAAM,KAAO,SAASsjB,KAAK1sB,EAAO,MAC5IA,EAAO,IAAM,IAAMA,EAAO,IAG5By2B,EAAQA,EAAM7b,OAAS6b,EACvBz2B,EAAS2P,EAAO3P,EAAO,GACpBS,QAAQqmB,OAAO4P,EAAS,KAAMD,GAC9Bh2B,QAAQqmB,OAAO,SAAW2P,EAAQ,SAAU,KAAM,KAClDh2B,QAAQqmB,OAAO,IAAM2P,EAAQ,eAAgB,KAAM,WAEjDz2B,IAuJX,GAvHAw2B,IAAWA,EAAS,CAACA,IAGjBM,IAAiBj3B,IACnBA,EAAUg3B,EAAW,CAACC,MAGnB7rB,EAAO,gBAAgBtR,KAAKkG,MAC/BA,EAAUoL,EAAK,IAGb,iBAAiByhB,KAAKwI,KACxBr1B,GAAWA,EAAUA,EAAU,IAAM,IAAM,aAGjC,cAARxI,GAAwB,YAAYq1B,KAAKwI,IAC3C5f,EAAY/O,KAAK,sCAGP,MAARlP,GAAgB,qBAAqBq1B,KAAKwI,IAE5C4B,GADA7rB,EAAO1O,EAAM24B,EAAGz0B,QAAQ,iBAAkB,MACtBq2B,aACpBj3B,EAAUoL,EAAKpL,SAGR,MAAM6sB,KAAK7sB,IAClBxI,IAASA,EAAO,UAChB6E,EAAK,QAAU+O,EAAO,gBAAgBtR,KAAKu7B,IACvC,IAAMjqB,EAAK,GAAGxK,QAAQ,KAAM,KAC5B,KAGW,aAARpJ,GAAwB,SAASq1B,KAAKxwB,GAIrC46B,GAAgC,UAAhBA,IACpB,SAASpK,KAAKr1B,KAAU,qBAAqBq1B,KAAKwI,IAAQ,WAAWxI,KAAK7sB,KAC3E,cAAc6sB,KAAKxwB,IAAO,UAAUwwB,KAAKr1B,IAAS,eAAeq1B,KAAKwI,IACzE79B,EAAO,kBACP6E,EAAK,cAAcwwB,KAAKxwB,GAAMA,EAAK,WAGpB,QAAR7E,GACF,UAAUq1B,KAAKwI,KAClBh5B,EAAK,UACLoZ,EAAY4hB,QAAQ,iBAElB,wBAAwBxK,KAAKwI,IAC/B5f,EAAY4hB,QAAQ,gBAIP,YAAR7/B,IAAuB4T,EAAO,wBAAwBtR,KAAKu7B,IAClE5f,EAAY/O,KAAK,0BAA4B0E,EAAK,IAGnC,WAAR5T,IAAsB4T,EAAO,0BAA0BtR,KAAKu7B,KACnEh5B,IAAOA,EAAK,cACZ2D,IAAYA,EAAUoL,EAAK,MAGnB5T,IAAS4T,GAAQ,iBAAiByhB,KAAKwI,IAAO,yBAAyBv7B,KAAKtC,KAEhFA,IAASwI,GAAW,kBAAkB6sB,KAAKwI,EAAGpsB,MAAMosB,EAAG9wB,QAAQ6G,EAAO,KAAO,MAE/E5T,EAAO,OAGJ4T,EAAOpL,GAAWi3B,GAAgB56B,KAClC2D,GAAWi3B,GAAgB,6CAA6CpK,KAAKxwB,MAChF7E,EAAO,mBAAmBsC,KAAK,cAAc+yB,KAAKxwB,GAAMA,EAAK+O,GAAQ,aAIxD,YAAR5T,IAAuB4T,GAAQ,uBAAuBtR,KAAKu7B,IAAO,GAAG,KAC5E5f,EAAY/O,KAAK,YAAc0E,GA3C/B/O,EAAK,UA8CFG,IACHA,EApGO04B,EAoGc,CACnB,8GACA,UACAD,EAAQz9B,GACR,kCAxGsB,SAAS2I,EAAQ02B,GACvC,OAAO12B,IAAW8mB,OAAO4P,EACvB,2DAA4D,KAAK/8B,KAAKu7B,IAAO,GAAG,IAAM,SA0GvFjqB,GACW,QAAVurB,GAAoBW,WAAW96B,GAAW,EAAK,SAC/C,YAAYqwB,KAAKr1B,KAAU,UAAUq1B,KAAKwI,GAAM,QAAU,YAC1D,8BAA8BxI,KAAKwI,KAAQ,yBAAyBxI,KAAK8J,IAAW,WACnFA,GAAU,YAAY9J,KAAKwI,KAAc,UAANh5B,EAAiB,SAAW,YACtD,UAAVs6B,GAAsB,8BAA8B9J,KAAKr1B,IAAS,cAEtEm/B,EAAS,CAACvrB,IAGA,MAAR5T,IAAiB4T,GAAQ,4BAA4BtR,KAAKu7B,IAAO,GAAG,KACtE79B,GAAQ,UACR6E,EAAK,kBAAoB,MAAMwwB,KAAKzhB,GAAQA,EAAOA,EAAO,MAC1DqK,EAAY4hB,QAAQ,iBAGb,iBAAiBxK,KAAKwI,IAC7B79B,EAAO,YACP6E,EAAK,oBACLoZ,EAAY4hB,QAAQ,gBACpB76B,IAAYA,GAAW,gBAAgB1C,KAAKu7B,IAAO,GAAG,KAGvC,MAAR79B,GAA0B,WAAVm/B,IAAwBvrB,EAAO,gBAAgBtR,KAAKu7B,MACvE79B,GACFie,EAAY/O,KAAK,kBAAoBlP,GAAQgF,EAAU,IAAMA,EAAU,KAEzEhF,EAAO,KACPgF,EAAU4O,EAAK,IAGbsrB,EAAa,CAGf,GA5hBwB99B,EA4hBA,SA3hBtBoC,EAAiB,OADHrC,EA4hBD28B,UA3hBkB38B,EAAOC,GAAY,SAC9C,wCAAwCi0B,KAAK7xB,IAC1C,UAARA,IAAqBrC,EAAOC,GAskBpBo8B,EAAY5pB,EAAOkqB,EAAQiC,UAAa5B,GAC/Cn+B,EAAO,YACP6E,EAAK+O,EAAKosB,MAAMp7B,OAAOq7B,aAAap7B,IAG7B24B,EAAY5pB,EAAOkqB,EAAQoC,UAAa3B,GAC/Cv+B,EAAO,YACPgF,GAAW4O,EAAOA,EAAK5O,SAAW,OAAU4O,EAAKusB,MAAQ,IAAMvsB,EAAKwsB,MAAQ,IAAMxsB,EAAK0C,OAGrD,iBAApBsoB,EAAIyB,eAA6BzsB,EAAO,oBAAoBtR,KAAKu7B,KAG/E74B,EAAU,CAACA,EAAS45B,EAAIyB,eACnBzsB,GAAQA,EAAK,GAAK,IAAM5O,EAAQ,KACnCiZ,EAAY/O,KAAK,MAAQlK,EAAQ,GAAK,SACtCm6B,IAAWA,EAAO,GAAK,IACvBn6B,EAAQ,GAAK4O,GAEf5O,EAAkB,MAARhF,EAAe0C,OAAOsC,EAAQ,GAAGs7B,QAAQ,IAAMt7B,EAAQ,IAG/B,iBAApB45B,EAAIyB,cAA4B,wBAAwBhL,KAAKr1B,KAC3Eie,EAAY/O,KAAK,cAAgBlP,EAAO,IAAMgF,GAC9ChF,EAAO,KACPgF,EAAU,OACVm6B,EAAS,CAAC,WACVt6B,EAAK,gBAlEL,GALIy5B,IAEFU,GADAprB,EAAO0qB,EAAKiC,KAAKC,QACLC,YAAY,WACxB57B,EAAKA,GAAM+O,EAAK6sB,YAAY,WAAa,IAAM7sB,EAAK6sB,YAAY,eAE9DjC,EAAO,CACT,IACEx5B,EAAU84B,EAAQ75B,QAAQ,gBAAgBe,QAAQkN,KAAK,KACvDlS,EAAO,UACP,MAAM0e,IACD9K,EAAOkqB,EAAQl5B,SAAWgP,EAAK5R,OAAO4C,QAAUk5B,EAAQl5B,SAC3D5E,EAAO,UACP6E,IAAOA,EAAK+O,EAAK,GAAG/O,IAAM,OAGzB7E,IACHA,EAAO,aAIiB,iBAAnB89B,EAAQlyB,UAAwBkyB,EAAQlyB,QAAQylB,UACtDzd,EAAOkqB,EAAQlyB,WAEY,iBAAjBgI,EAAK7H,WACuB,iBAA1B6H,EAAK7H,SAAS20B,UACvBziB,EAAY/O,KAAK,QAAU0E,EAAK7H,SAASqtB,MACzCp5B,EAAO,WACPgF,EAAU4O,EAAK7H,SAAS20B,UACY,iBAApB9sB,EAAK7H,SAAS40B,KAC9B1iB,EAAY/O,KAAK,YAAclK,EAAS,QAAU4O,EAAK7H,SAASqtB,MAChEp5B,EAAO,QACPgF,EAAU4O,EAAK7H,SAAS40B,KAGvB3gC,IACHA,EAAO,UACPg/B,EAAOprB,EAAKorB,KACZn6B,EAAK+O,EAAKgqB,SAEV54B,GADAA,EAAU,SAAS1C,KAAKsR,EAAK5O,UACTA,EAAQ,GAAK,OAkCvCH,EAAKA,GAAMyT,EAAOzT,GAapB,GAVIG,IAAY4O,EACV,0CAA0CtR,KAAK0C,IAC/C,2BAA2B1C,KAAKu7B,EAAK,KAAOqB,GAAelB,EAAI4C,mBAC/D,iBAAiBvL,KAAKwI,IAAO,OAEjCoB,EAAa,KAAK5J,KAAKzhB,GAAQ,OAAS,QACxC5O,EAAUA,EAAQoE,QAAQqmB,OAAO7b,EAAO,SAAU,KACjC,QAAdqrB,EAAuBN,EAAOD,IAAU,SAASp8B,KAAKsR,IAAS,KAGxD,UAAR5T,GAA4B,WAARA,GAAqB,6BAA6Bq1B,KAAKxwB,GAC7E7E,EAAO,sBAGJ,GAAY,WAARA,GAAqBgF,EAC5BA,EAAUA,EAAQoE,QAAQ,WAAY,WAGnC,GAAI,YAAYisB,KAAK7sB,GACT,YAAXA,IACF3D,EAAK,MAEQ,YAAX2D,GAAyB,eAAe6sB,KAAKwI,IAC/C5f,EAAY4hB,QAAQ,oBAInB,IAAK,wBAAwBxK,KAAKr1B,MAASA,GAASwI,GAAY,eAAe6sB,KAAKr1B,KAC9E,cAAN6E,IAAsB,QAAQwwB,KAAKwI,GAInC,GAAY,MAAR79B,GAAgBk/B,EACvB,IAC2B,OAArBpB,EAAQ+C,UACV5iB,EAAY4hB,QAAQ,oBAEtB,MAAMnhB,GACNT,EAAY4hB,QAAQ,iBAKd,iBAAiBxK,KAAK7sB,IAAY,WAAW6sB,KAAKwI,MAASjqB,GAC9D6b,OAAOjnB,EAAQY,QAAQ,MAAO,MAAQ,aAAc,KAAK9G,KAAKu7B,IAAO,GAAG,IACzE74B,IAGJH,IADA+O,EAAO,CAACA,EAAM,OAAOyhB,KAAKwI,KACf,IAAMr1B,EAAU,KAAMi3B,EAAe,cAAgB,mBAAqB,IAAM7rB,EAAK,GAChG5O,EAAU,MAIHzB,MAAQg6B,GAAqB,OAAX/0B,IACpB02B,GAAeL,GACf,QAAQxJ,KAAKr1B,IAAS,wBAAwBq1B,KAAKwI,IAC3C,WAAR79B,GAAqB,uBAAuBq1B,KAAKxwB,IACzC,MAAR7E,IACE6E,IAAO,OAAOwwB,KAAKxwB,IAAOG,EAAU,KACrC,iBAAiBqwB,KAAKxwB,IAAOG,EAAU,GAC5B,GAAXA,IAAiB,cAAcqwB,KAAKwI,OAElCT,EAAQ/H,KAAMzhB,EAAO1O,EAAMtF,KAAK29B,EAAQM,EAAGz0B,QAAQg0B,EAAS,IAAM,OAAUxpB,EAAK5T,OAEzF4T,EAAO,UAAYA,EAAK5T,OAAS4T,EAAOA,EAAK5O,SAAW,IAAM4O,EAAO,IACjEwpB,EAAQ/H,KAAKr1B,IACX,SAASq1B,KAAKzhB,IAAe,UAAN/O,IACzBA,EAAK,MAEP+O,EAAO,WAAaA,IAIpBA,EAAO,OAASA,EAEd5T,EADE++B,EACKzmB,EAAOymB,EAAW31B,QAAQ,kBAAmB,UAE7C,QAEL,SAASisB,KAAKzhB,KAChB/O,EAAK,MAEFq6B,IACHl6B,EAAU,OAGdm6B,EAAS,CAAC,UACVlhB,EAAY/O,KAAK0E,SA1DjB5T,GAAQ,WA6DL4T,GAAQ,8BAA8BtR,KAAKu7B,IAAO,GAAG,MAGxDjqB,EAAO,CAACksB,WAAWlsB,EAAKxK,QAAQ,UAAW,SAAUwK,GAEzC,UAAR5T,GAAyC,KAArB4T,EAAK,GAAGnC,OAAO,IACrCzR,EAAO,iBACPi/B,EAAa,QACbj6B,EAAU4O,EAAK,GAAGnC,MAAM,GAAI,IAGrBzM,GAAW4O,EAAK,IACrB5O,IAAY4O,EAAK,IAAM,yBAAyBtR,KAAKu7B,IAAO,GAAG,MACjE74B,EAAU,MAGZ4O,EAAK,IAAM,sBAAsBtR,KAAKu7B,IAAO,GAAG,GAEjC,QAAXjqB,EAAK,IAA2B,QAAXA,EAAK,IAAgBksB,WAAWlsB,EAAK,KAAO,IAAgB,UAAVurB,IACzEA,EAAS,CAAC,UAIPD,IAAiBhB,GAAetqB,EAAK,KAIxCurB,IAAWA,EAAO,GAAK,eACvBvrB,EAAOA,EAAK,MAAOA,EAAOA,EAAK,IAAW,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,OAAS,EAAIA,EAAO,IAAM,EAAIA,EAAO,OAAS,EAAIA,EAAO,OAAS,EAAIA,EAAO,MAAS,EAAIA,EAAO,OAAS,EAAIA,EAAO,OAAS,EAAIA,EAAO,OAAS,GAAKA,EAAO,MAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,MAAQA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,MAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,MAAQA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAKA,EAAO,OAAS,GAAe,SAAVurB,EAAoB,KAAO,QAJ1iBA,IAAWA,EAAO,GAAK,eACvBvrB,GAAQA,EAAOA,EAAK,IAAW,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,IAAM,KAAOA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAIA,EAAO,IAAM,EAAI,KAMtLurB,IAAWA,EAAO,IAAM,KAAOvrB,GAAuB,iBAARA,EAAmB,KAAO,OAAOyhB,KAAKzhB,GAAQ,GAAK,MAErF,UAAR5T,KAAsBgF,GAAW87B,SAAS97B,GAAW,MACvDA,EAAU4O,IAIF,SAAR5T,IAAqB4T,EAAO,eAAetR,KAAKuC,KAClD7E,GAAQ,IACRie,EAAY4hB,QAAQ,gBACR,QAARjsB,GACF5T,GAAQ,OACRgF,EAAU,MAEVhF,GAAQ,SAEV6E,EAAKA,EAAGuE,QAAQqmB,OAAO,KAAO7b,EAAO,KAAM,KAG5B,UAAR5T,GAAoB,aAAasC,KAAK68B,GAAUA,EAAO,MAC9DlhB,EAAY4hB,QAAQ,gBACpB7/B,EAAO,gBACPgF,EAAU,KAEN,WAAWqwB,KAAKxwB,IAClB46B,EAAe,QACf56B,EAAK,YAELA,EAAK,MAILG,GAA2D,GAAhDA,EAAQ+H,QAAS6G,EAAO,UAAUtR,KAAKuC,KAClDg5B,EAAG9wB,QAAQ,IAAM6G,EAAO,MAAQ,IAClC/O,EAAKqE,EAAKrE,EAAGuE,QAAQwK,EAAM,MAGzBurB,IAAW,qBAAqB9J,KAAKr1B,KACrC,4BAA4Bq1B,KAAKr1B,IACzB,UAARA,GAAoB,OAAOq1B,KAAKxwB,IAAO,aAAawwB,KAAK8J,EAAO,KAChE,yFAAyF9J,KAAKr1B,IAASm/B,EAAO,MAE/GvrB,EAAOurB,EAAOA,EAAOv7B,OAAS,KAAOqa,EAAY/O,KAAK0E,GAGrDqK,EAAYra,SACdqa,EAAc,CAAC,IAAMA,EAAY/L,KAAK,MAAQ,MAG5CutB,GAAgBj3B,GAAWA,EAAQuE,QAAQ0yB,GAAgB,GAC7DxhB,EAAY/O,KAAK,MAAQuwB,GAGvBj3B,GACFyV,EAAY/O,MAAM,OAAOmmB,KAAKpX,EAAYA,EAAYra,OAAS,IAAM,GAAK,OAAS4E,GAGjF3D,IACF+O,EAAO,cAActR,KAAKuC,GAC1Bo5B,EAAmBrqB,GAAqD,KAA7C/O,EAAGsiB,OAAOtiB,EAAGjB,OAASgQ,EAAK,GAAGhQ,OAAS,GAClEiB,EAAK,CACH,aAAgB,GAChB,OAAW+O,IAASqqB,EAAoBp5B,EAAGuE,QAAQwK,EAAK,GAAI,IAAM/O,EAClE,QAAW+O,EAAOA,EAAK,GAAK,KAC5B,SAAY,WACV,IAAI5O,EAAUzB,KAAKyB,QACnB,OAAOzB,KAAKw9B,QAAW/7B,IAAYi5B,EAAoB,IAAMj5B,EAAU,KAA4B,IAArBzB,KAAKy9B,aAAqB,UAAY,QAKrHptB,EAAO,mCAAmCtR,KAAK08B,MAAW,YAAY3J,KAAK2J,IAC1En6B,IACFA,EAAGm8B,aAAe,GAClBn8B,EAAGk8B,OAASl8B,EAAGk8B,OAAO33B,QAAQqmB,OAAO,KAAO7b,GAAO,KAGjD5T,IAAS,aAAaq1B,KAAKwI,IAC1BqB,GAAe,eAAe7J,KAAK2I,EAAIiD,UAAYjD,EAAIJ,YAAc,kBAAkBvI,KAAKwI,KAE/F5f,EAAY4hB,QAAQ,WAKpBh7B,GAAM,QAAQwwB,KAAKxwB,EAAGk8B,SACd,UAAR/gC,GAAoB8/B,WAAW96B,IAAY,KAE7CH,EAAGm8B,aAAe,IAGpBnD,IAAOA,EAAK,MAUZ,IAAID,EAAW,GAoJf,OA5IAA,EAAS3f,YAAc4f,EAWvBD,EAASuB,OAASA,GAAUA,EAAO,GAanCvB,EAAS6B,aAAeA,EAgBxB7B,EAAS59B,KAAOA,EAQhB49B,EAASqB,WAAaA,EAatBrB,EAASp1B,QAAUA,EAQnBo1B,EAASC,GAAKA,EAQdD,EAAS54B,QAAUhF,GAAQgF,EAQ3B44B,EAAS/4B,GAAKA,GAAM,CAQlB,aAAgB,KAahB,OAAU,KAQV,QAAW,KAQX,SAAY,WAAa,MAAO,SAGlC+4B,EAAS14B,MAAQA,EACjB04B,EAAS94B,SAljBT,WACE,OAAOvB,KAAK0a,aAAe,IAmjBzB2f,EAAS54B,SACXiZ,EAAY4hB,QAAQ76B,GAElB44B,EAAS59B,MACXie,EAAY4hB,QAAQ7/B,GAElB6E,GAAM7E,IAAU6E,GAAMnC,OAAOmC,GAAIkN,MAAM,KAAK,IAAOlN,GAAM7E,EAAK+R,MAAM,KAAK,KAAMvJ,IACjFyV,EAAY/O,KAAK1G,EAAU,IAAM3D,EAAK,IAAM,MAAQA,GAElDoZ,EAAYra,SACdg6B,EAAS3f,YAAcA,EAAY/L,KAAK,MAEnC0rB,EAMM14B,GAOb23B,EAAKe,SAAWA,OAKf,KAFD,aACE,OAAOA,GACR,gCAaHh+B,KAAK2D,Q,0CChsCP/D,EAAOD,QAAU,SAASC,GAoBzB,OAnBKA,EAAO0hC,kBACX1hC,EAAO2hC,UAAY,aACnB3hC,EAAO4hC,MAAQ,GAEV5hC,EAAO6hC,WAAU7hC,EAAO6hC,SAAW,IACxClhC,OAAOC,eAAeZ,EAAQ,SAAU,CACvCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOE,KAGhBS,OAAOC,eAAeZ,EAAQ,KAAM,CACnCa,YAAY,EACZC,IAAK,WACJ,OAAOd,EAAOC,KAGhBD,EAAO0hC,gBAAkB,GAEnB1hC,I,gBCpBR,yBACI,aAKI,EAA6B,CAAC,aAAsB,0BAAP,EAM7C,SAA0B8hC,GAG9B,IAAIC,EAA8B,gBAC9BC,EAAyB,kCACzBC,EAA4B,+BAEhC,MAAO,CAOHv8B,MAAO,SAAiC3C,GACpC,QAAgC,IAArBA,EAAMm/B,iBAAkE,IAA7Bn/B,EAAM,mBACxD,OAAOgB,KAAKo+B,WAAWp/B,GACpB,GAAIA,EAAM6D,OAAS7D,EAAM6D,MAAM4pB,MAAMwR,GACxC,OAAOj+B,KAAKq+B,YAAYr/B,GACrB,GAAIA,EAAM6D,MACb,OAAO7C,KAAKs+B,gBAAgBt/B,GAE5B,MAAM,IAAI8B,MAAM,oCAKxBy9B,gBAAiB,SAA2CC,GAExD,IAA8B,IAA1BA,EAAQh1B,QAAQ,KAChB,MAAO,CAACg1B,GAGZ,IACIC,EADS,iCACM1/B,KAAKy/B,EAAQ34B,QAAQ,UAAW,KACnD,MAAO,CAAC44B,EAAM,GAAIA,EAAM,SAAMn+B,EAAWm+B,EAAM,SAAMn+B,IAGzD+9B,YAAa,SAAuCr/B,GAKhD,OAJeA,EAAM6D,MAAM2L,MAAM,MAAMuB,OAAO,SAASjO,GACnD,QAASA,EAAK2qB,MAAMwR,IACrBj+B,MAEamW,IAAI,SAASrU,GACrBA,EAAK0H,QAAQ,WAAa,IAE1B1H,EAAOA,EAAK+D,QAAQ,aAAc,QAAQA,QAAQ,iCAAkC,KAExF,IAAI64B,EAAS58B,EAAK+D,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KAAK2I,MAAM,OAAON,MAAM,GAClFywB,EAAgB3+B,KAAKu+B,gBAAgBG,EAAOE,OAC5CC,EAAeH,EAAO/vB,KAAK,WAAQrO,EACnCuB,EAAW,CAAC,OAAQ,eAAe2H,QAAQm1B,EAAc,KAAO,OAAIr+B,EAAYq+B,EAAc,GAElG,OAAO,IAAIZ,EAAW,CAClBc,aAAcA,EACdh9B,SAAUA,EACVE,WAAY48B,EAAc,GAC1B18B,aAAc08B,EAAc,GAC5BxxB,OAAQrL,KAEb9B,OAGPs+B,gBAAiB,SAA2Ct/B,GAKxD,OAJeA,EAAM6D,MAAM2L,MAAM,MAAMuB,OAAO,SAASjO,GACnD,OAAQA,EAAK2qB,MAAMyR,IACpBl+B,MAEamW,IAAI,SAASrU,GAMzB,GAJIA,EAAK0H,QAAQ,YAAc,IAC3B1H,EAAOA,EAAK+D,QAAQ,qDAAsD,SAGnD,IAAvB/D,EAAK0H,QAAQ,OAAsC,IAAvB1H,EAAK0H,QAAQ,KAEzC,OAAO,IAAIu0B,EAAW,CAClBc,aAAc/8B,IAGlB,IAAIg9B,EAAoB,6BACpBC,EAAUj9B,EAAK2qB,MAAMqS,GACrBD,EAAeE,GAAWA,EAAQ,GAAKA,EAAQ,QAAKz+B,EACpDq+B,EAAgB3+B,KAAKu+B,gBAAgBz8B,EAAK+D,QAAQi5B,EAAmB,KAEzE,OAAO,IAAIf,EAAW,CAClBc,aAAcA,EACdh9B,SAAU88B,EAAc,GACxB58B,WAAY48B,EAAc,GAC1B18B,aAAc08B,EAAc,GAC5BxxB,OAAQrL,KAGjB9B,OAGPo+B,WAAY,SAAsCjjB,GAC9C,OAAKA,EAAEgjB,YAAehjB,EAAEna,QAAQwI,QAAQ,OAAS,GAC7C2R,EAAEna,QAAQwN,MAAM,MAAMnO,OAAS8a,EAAEgjB,WAAW3vB,MAAM,MAAMnO,OACjDL,KAAKg/B,YAAY7jB,GAChBA,EAAEtY,MAGH7C,KAAKi/B,aAAa9jB,GAFlBnb,KAAKk/B,aAAa/jB,IAMjC6jB,YAAa,SAAuC7jB,GAKhD,IAJA,IAAIgkB,EAAS,oCACTC,EAAQjkB,EAAEna,QAAQwN,MAAM,MACxBpJ,EAAS,GAEJlJ,EAAI,EAAGqxB,EAAM6R,EAAM/+B,OAAQnE,EAAIqxB,EAAKrxB,GAAK,EAAG,CACjD,IAAIuwB,EAAQ0S,EAAOpgC,KAAKqgC,EAAMljC,IAC1BuwB,GACArnB,EAAOuG,KAAK,IAAIoyB,EAAW,CACvBl8B,SAAU4qB,EAAM,GAChB1qB,WAAY0qB,EAAM,GAClBtf,OAAQiyB,EAAMljC,MAK1B,OAAOkJ,GAGX85B,aAAc,SAAwC/jB,GAKlD,IAJA,IAAIgkB,EAAS,6DACTC,EAAQjkB,EAAEgjB,WAAW3vB,MAAM,MAC3BpJ,EAAS,GAEJlJ,EAAI,EAAGqxB,EAAM6R,EAAM/+B,OAAQnE,EAAIqxB,EAAKrxB,GAAK,EAAG,CACjD,IAAIuwB,EAAQ0S,EAAOpgC,KAAKqgC,EAAMljC,IAC1BuwB,GACArnB,EAAOuG,KACH,IAAIoyB,EAAW,CACXc,aAAcpS,EAAM,SAAMnsB,EAC1BuB,SAAU4qB,EAAM,GAChB1qB,WAAY0qB,EAAM,GAClBtf,OAAQiyB,EAAMljC,MAM9B,OAAOkJ,GAIX65B,aAAc,SAAwCjgC,GAKlD,OAJeA,EAAM6D,MAAM2L,MAAM,MAAMuB,OAAO,SAASjO,GACnD,QAASA,EAAK2qB,MAAMuR,KAAiCl8B,EAAK2qB,MAAM,sBACjEzsB,MAEamW,IAAI,SAASrU,GACzB,IAMIu9B,EANAX,EAAS58B,EAAK0M,MAAM,KACpBmwB,EAAgB3+B,KAAKu+B,gBAAgBG,EAAOE,OAC5CU,EAAgBZ,EAAOa,SAAW,GAClCV,EAAeS,EACVz5B,QAAQ,iCAAkC,MAC1CA,QAAQ,cAAe,UAAOvF,EAEnCg/B,EAAa7S,MAAM,kBACnB4S,EAAUC,EAAaz5B,QAAQ,uBAAwB,OAE3D,IAAImU,OAAoB1Z,IAAZ++B,GAAqC,8BAAZA,OACjC/+B,EAAY++B,EAAQ7wB,MAAM,KAE9B,OAAO,IAAIuvB,EAAW,CAClBc,aAAcA,EACd7kB,KAAMA,EACNnY,SAAU88B,EAAc,GACxB58B,WAAY48B,EAAc,GAC1B18B,aAAc08B,EAAc,GAC5BxxB,OAAQrL,KAEb9B,UAtL6C,+BAN5D,I,gBCAA,yBACI,aAKI,EAAqB,QAAW,0BAAP,EAMzB,WAEJ,SAASw/B,EAAU7hC,GACf,OAAQme,MAAMygB,WAAW5+B,KAAO8hC,SAAS9hC,GAG7C,SAAS+hC,EAAY95B,GACjB,OAAOA,EAAIge,OAAO,GAAGjP,cAAgB/O,EAAI+5B,UAAU,GAGvD,SAASC,EAAQ5hC,GACb,OAAO,WACH,OAAOgC,KAAKhC,IAIpB,IAAI6hC,EAAe,CAAC,gBAAiB,SAAU,WAAY,cACvDC,EAAe,CAAC,eAAgB,cAChCC,EAAc,CAAC,WAAY,eAAgB,UAG3CC,EAAQH,EAAajqB,OAAOkqB,EAAcC,EAF7B,CAAC,SAIlB,SAAShC,EAAWn6B,GAChB,GAAIA,aAAehH,OACf,IAAK,IAAIV,EAAI,EAAGA,EAAI8jC,EAAM3/B,OAAQnE,IAC1B0H,EAAI7F,eAAeiiC,EAAM9jC,UAAyBoE,IAAlBsD,EAAIo8B,EAAM9jC,KAC1C8D,KAAK,MAAQ0/B,EAAYM,EAAM9jC,KAAK0H,EAAIo8B,EAAM9jC,KAM9D6hC,EAAWjgC,UAAY,CACnBmiC,QAAS,WACL,OAAOjgC,KAAKga,MAEhBkmB,QAAS,SAAS7pB,GACd,GAA0C,mBAAtCzZ,OAAOkB,UAAUyD,SAASlF,KAAKga,GAC/B,MAAM,IAAInX,UAAU,yBAExBc,KAAKga,KAAO3D,GAGhB8pB,cAAe,WACX,OAAOngC,KAAKogC,YAEhBC,cAAe,SAAShqB,GACpB,GAAIA,aAAa0nB,EACb/9B,KAAKogC,WAAa/pB,MACf,MAAIA,aAAazZ,QAGpB,MAAM,IAAIsC,UAAU,+CAFpBc,KAAKogC,WAAa,IAAIrC,EAAW1nB,KAMzC9U,SAAU,WAMN,OALmBvB,KAAKsgC,mBAAqB,gBAClC,KAAOtgC,KAAKigC,WAAa,IAAItxB,KAAK,KAAO,MACrC3O,KAAKugC,cAAiB,IAAMvgC,KAAKugC,cAAiB,KAChDf,EAAUx/B,KAAKwgC,iBAAoB,IAAMxgC,KAAKwgC,gBAAmB,KAC/DhB,EAAUx/B,KAAKygC,mBAAsB,IAAMzgC,KAAKygC,kBAAqB,MAKhG,IAAK,IAAIvkC,EAAI,EAAGA,EAAI2jC,EAAax/B,OAAQnE,IACrC6hC,EAAWjgC,UAAU,MAAQ4hC,EAAYG,EAAa3jC,KAAO0jC,EAAQC,EAAa3jC,IAClF6hC,EAAWjgC,UAAU,MAAQ4hC,EAAYG,EAAa3jC,KAAO,SAAU8B,GACnE,OAAO,SAASqY,GACZrW,KAAKhC,GAAKyjB,QAAQpL,IAFmC,CAI1DwpB,EAAa3jC,IAGpB,IAAK,IAAIwkC,EAAI,EAAGA,EAAIZ,EAAaz/B,OAAQqgC,IACrC3C,EAAWjgC,UAAU,MAAQ4hC,EAAYI,EAAaY,KAAOd,EAAQE,EAAaY,IAClF3C,EAAWjgC,UAAU,MAAQ4hC,EAAYI,EAAaY,KAAO,SAAU1iC,GACnE,OAAO,SAASqY,GACZ,IAAKmpB,EAAUnpB,GACX,MAAM,IAAInX,UAAUlB,EAAI,qBAE5BgC,KAAKhC,GAAKugB,OAAOlI,IALoC,CAO1DypB,EAAaY,IAGpB,IAAK,IAAIpqB,EAAI,EAAGA,EAAIypB,EAAY1/B,OAAQiW,IACpCynB,EAAWjgC,UAAU,MAAQ4hC,EAAYK,EAAYzpB,KAAOspB,EAAQG,EAAYzpB,IAChFynB,EAAWjgC,UAAU,MAAQ4hC,EAAYK,EAAYzpB,KAAO,SAAUtY,GAClE,OAAO,SAASqY,GACZrW,KAAKhC,GAAKmB,OAAOkX,IAFmC,CAIzD0pB,EAAYzpB,IAGnB,OAAOynB,IAvG6B,+BANxC,I,6BCCA,IAAI4C,EAAgC,EAAQ,KACxC9yB,EAAW,EAAQ,GACnB8d,EAAW,EAAQ,IACnBiI,EAAW,EAAQ,IACnBlY,EAAY,EAAQ,IACpBV,EAAyB,EAAQ,IACjC4lB,EAAqB,EAAQ,KAC7BC,EAAa,EAAQ,KAErBtN,EAAMn1B,KAAKm1B,IACX5X,EAAMvd,KAAKud,IACXE,EAAQzd,KAAKyd,MACbilB,EAAuB,4BACvBC,EAAgC,oBAOpCJ,EAA8B,UAAW,EAAG,SAAUK,EAAS7U,EAAe8U,GAC5E,MAAO,CAGL,SAAiBC,EAAaC,GAC5B,IAAI7iC,EAAI0c,EAAuBhb,MAC3BohC,EAA0B9gC,MAAf4gC,OAA2B5gC,EAAY4gC,EAAYF,GAClE,YAAoB1gC,IAAb8gC,EACHA,EAAS/kC,KAAK6kC,EAAa5iC,EAAG6iC,GAC9BhV,EAAc9vB,KAAK8C,OAAOb,GAAI4iC,EAAaC,IAIjD,SAAUrK,EAAQqK,GAChB,IAAI/qB,EAAM6qB,EAAgB9U,EAAe2K,EAAQ92B,KAAMmhC,GACvD,GAAI/qB,EAAI7V,KAAM,OAAO6V,EAAIjZ,MAEzB,IAAIkkC,EAAKxzB,EAASipB,GACdrT,EAAItkB,OAAOa,MAEXshC,EAA4C,mBAAjBH,EAC1BG,IAAmBH,EAAehiC,OAAOgiC,IAE9C,IAAI1iC,EAAS4iC,EAAG5iC,OAChB,GAAIA,EAAQ,CACV,IAAI8iC,EAAcF,EAAGG,QACrBH,EAAG/U,UAAY,EAGjB,IADA,IAAIhc,EAAU,KACD,CACX,IAAIlL,EAASy7B,EAAWQ,EAAI5d,GAC5B,GAAe,OAAXre,EAAiB,MAGrB,GADAkL,EAAQ3E,KAAKvG,IACR3G,EAAQ,MAGI,KADFU,OAAOiG,EAAO,MACRi8B,EAAG/U,UAAYsU,EAAmBnd,EAAGmQ,EAASyN,EAAG/U,WAAYiV,IAKpF,IAFA,IA7CwBpjC,EA6CpBsjC,EAAoB,GACpBC,EAAqB,EAChBxlC,EAAI,EAAGA,EAAIoU,EAAQjQ,OAAQnE,IAAK,CACvCkJ,EAASkL,EAAQpU,GAUjB,IARA,IAAIylC,EAAUxiC,OAAOiG,EAAO,IACxBse,EAAW6P,EAAI5X,EAAID,EAAUtW,EAAOjF,OAAQsjB,EAAEpjB,QAAS,GACvDuhC,EAAW,GAMNlB,EAAI,EAAGA,EAAIt7B,EAAO/E,OAAQqgC,IAAKkB,EAASj2B,UAzDzCrL,KADcnC,EA0D8CiH,EAAOs7B,IAzDvDviC,EAAKgB,OAAOhB,IA0DhC,IAAI0jC,EAAgBz8B,EAAO2rB,OAC3B,GAAIuQ,EAAmB,CACrB,IAAIQ,EAAe,CAACH,GAAS/rB,OAAOgsB,EAAUle,EAAUD,QAClCnjB,IAAlBuhC,GAA6BC,EAAan2B,KAAKk2B,GACnD,IAAIrb,EAAcrnB,OAAOgiC,EAAap1B,WAAMzL,EAAWwhC,SAEvDtb,EAAcub,EAAgBJ,EAASle,EAAGC,EAAUke,EAAUC,EAAeV,GAE3Ezd,GAAYge,IACdD,GAAqBhe,EAAEvV,MAAMwzB,EAAoBhe,GAAY8C,EAC7Dkb,EAAqBhe,EAAWie,EAAQthC,QAG5C,OAAOohC,EAAoBhe,EAAEvV,MAAMwzB,KAKvC,SAASK,EAAgBJ,EAAS/7B,EAAK8d,EAAUke,EAAUC,EAAerb,GACxE,IAAIwb,EAAUte,EAAWie,EAAQthC,OAC7B/D,EAAIslC,EAASvhC,OACb4hC,EAAUlB,EAKd,YAJsBzgC,IAAlBuhC,IACFA,EAAgBlW,EAASkW,GACzBI,EAAUnB,GAEL3U,EAAc9vB,KAAKmqB,EAAayb,EAAS,SAAUxV,EAAOyV,GAC/D,IAAIC,EACJ,OAAQD,EAAGte,OAAO,IAChB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAO+d,EACjB,IAAK,IAAK,OAAO/7B,EAAIsI,MAAM,EAAGwV,GAC9B,IAAK,IAAK,OAAO9d,EAAIsI,MAAM8zB,GAC3B,IAAK,IACHG,EAAUN,EAAcK,EAAGh0B,MAAM,GAAI,IACrC,MACF,QACE,IAAIvQ,GAAKukC,EACT,GAAU,IAANvkC,EAAS,OAAO8uB,EACpB,GAAI9uB,EAAIrB,EAAG,CACT,IAAIqM,EAAIkT,EAAMle,EAAI,IAClB,OAAU,IAANgL,EAAgB8jB,EAChB9jB,GAAKrM,OAA8BgE,IAApBshC,EAASj5B,EAAI,GAAmBu5B,EAAGte,OAAO,GAAKge,EAASj5B,EAAI,GAAKu5B,EAAGte,OAAO,GACvF6I,EAET0V,EAAUP,EAASjkC,EAAI,GAE3B,YAAmB2C,IAAZ6hC,EAAwB,GAAKA,Q,6BCzH1C,IAAIn8B,EAAO,EAAQ,IACf+G,EAAW,EAAQ,IACnBL,EAAQ,EAAQ,GAChBzG,EAAkB,EAAQ,GAC1Bm8B,EAAa,EAAQ,IAErBn6B,EAAUhC,EAAgB,WAE1Bo8B,GAAiC31B,EAAM,WAIzC,IAAIggB,EAAK,IAMT,OALAA,EAAG3tB,KAAO,WACR,IAAIqG,EAAS,GAEb,OADAA,EAAO2rB,OAAS,CAAEvrB,EAAG,KACdJ,GAEyB,MAA3B,GAAGS,QAAQ6mB,EAAI,UAKpB4V,GAAqC51B,EAAM,WAC7C,IAAIggB,EAAK,OACL6V,EAAe7V,EAAG3tB,KACtB2tB,EAAG3tB,KAAO,WAAc,OAAOwjC,EAAax2B,MAAM/L,KAAMsF,YACxD,IAAIF,EAAS,KAAKoJ,MAAMke,GACxB,OAAyB,IAAlBtnB,EAAO/E,QAA8B,MAAd+E,EAAO,IAA4B,MAAdA,EAAO,KAG5DnJ,EAAOD,QAAU,SAAUgvB,EAAK3qB,EAAQtB,EAAM4O,GAC5C,IAAI60B,EAASv8B,EAAgB+kB,GAEzByX,GAAuB/1B,EAAM,WAE/B,IAAIpO,EAAI,GAER,OADAA,EAAEkkC,GAAU,WAAc,OAAO,GACZ,GAAd,GAAGxX,GAAK1sB,KAGbokC,EAAoBD,IAAwB/1B,EAAM,WAEpD,IAAIi2B,GAAa,EACbjW,EAAK,IAWT,OAVAA,EAAG3tB,KAAO,WAAiC,OAAnB4jC,GAAa,EAAa,MAEtC,UAAR3X,IAGF0B,EAAG3rB,YAAc,GACjB2rB,EAAG3rB,YAAYkH,GAAW,WAAc,OAAOykB,IAGjDA,EAAG8V,GAAQ,KACHG,IAGV,IACGF,IACAC,GACQ,YAAR1X,IAAsBqX,GACd,UAARrX,IAAoBsX,EACrB,CACA,IAAIM,EAAqB,IAAIJ,GACzBzX,EAAUhsB,EAAKyjC,EAAQ,GAAGxX,GAAM,SAAU6X,EAAc/L,EAAQlxB,EAAKk9B,EAAMC,GAC7E,OAAIjM,EAAO/3B,OAASqjC,EACdK,IAAwBM,EAInB,CAAExiC,MAAM,EAAMpD,MAAOylC,EAAmBvmC,KAAKy6B,EAAQlxB,EAAKk9B,IAE5D,CAAEviC,MAAM,EAAMpD,MAAO0lC,EAAaxmC,KAAKuJ,EAAKkxB,EAAQgM,IAEtD,CAAEviC,MAAM,KAEbyiC,EAAejY,EAAQ,GACvBkY,EAAclY,EAAQ,GAE1Bhe,EAAS5N,OAAOrB,UAAWktB,EAAKgY,GAChCj2B,EAASmf,OAAOpuB,UAAW0kC,EAAkB,GAAVniC,EAG/B,SAAUymB,EAAQoc,GAAO,OAAOD,EAAY5mC,KAAKyqB,EAAQ9mB,KAAMkjC,IAG/D,SAAUpc,GAAU,OAAOmc,EAAY5mC,KAAKyqB,EAAQ9mB,QAEpD2N,GAAM3H,EAAKkmB,OAAOpuB,UAAU0kC,GAAS,QAAQ,M,6BCzFrD,IAAI30B,EAAW,EAAQ,GAIvB5R,EAAOD,QAAU,WACf,IAAI+f,EAAOlO,EAAS7N,MAChBoF,EAAS,GAOb,OANI2W,EAAKtd,SAAQ2G,GAAU,KACvB2W,EAAKonB,aAAY/9B,GAAU,KAC3B2W,EAAKqnB,YAAWh+B,GAAU,KAC1B2W,EAAKsnB,SAAQj+B,GAAU,KACvB2W,EAAKylB,UAASp8B,GAAU,KACxB2W,EAAKunB,SAAQl+B,GAAU,KACpBA,I,6BCbT,IAAIwe,EAAS,EAAQ,IAAiCA,OAItD3nB,EAAOD,QAAU,SAAUynB,EAAGtjB,EAAOqhC,GACnC,OAAOrhC,GAASqhC,EAAU5d,EAAOH,EAAGtjB,GAAOE,OAAS,K,gBCNtD,IAAIgH,EAAU,EAAQ,IAClB+6B,EAAa,EAAQ,IAIzBnmC,EAAOD,QAAU,SAAUunC,EAAG9f,GAC5B,IAAI1kB,EAAOwkC,EAAExkC,KACb,GAAoB,mBAATA,EAAqB,CAC9B,IAAIqG,EAASrG,EAAK1C,KAAKknC,EAAG9f,GAC1B,GAAsB,iBAAXre,EACT,MAAMlG,UAAU,sEAElB,OAAOkG,EAGT,GAAmB,WAAfiC,EAAQk8B,GACV,MAAMrkC,UAAU,+CAGlB,OAAOkjC,EAAW/lC,KAAKknC,EAAG9f,K,cClB5BxnB,EAAOD,QAAyB,iBAARwC,KAAmBA,KAAKwF,SAAWzF,OAAOyF,U,gBCDlE,IAAIw/B,EAAS,EAAQ,KAEjBC,EAAW,EAAQ,KACnB5pB,EAAU,CAAC,EAAQ,MAEvB5d,EAAOD,QAAUwnC,EAAOE,YAAYD,EAAU5pB,I,gBCL9C,IAAI8pB,EAAO,EAAQ,IACfz1B,EAAQy1B,EAAKz1B,MACb+H,EAAQ0tB,EAAK1tB,MACbT,EAAOmuB,EAAKnuB,KACZ9X,EAAOimC,EAAKjmC,KACZF,EAASmmC,EAAKnmC,OACd0Y,EAASytB,EAAKztB,OACdxS,EAAaigC,EAAKjgC,WAClBzE,EAAW0kC,EAAK1kC,SAEpBhD,EAAOD,QAAU,CAChB0nC,YAAaA,GAGd,IAAIE,EAAW,CACdniC,QAAS,SACToiC,SAAS,EAIT9mC,IAAK,SAASU,EAAKqmC,GAClB,IAAIzzB,EAAOrQ,KAAK+jC,QAAQ3T,KAAKpwB,KAAKgkC,iBAAmBvmC,GACrD,OAAOuC,KAAKikC,aAAa5zB,EAAMyzB,IAKhCpkC,IAAK,SAASjC,EAAKN,GAClB,YAAcmD,IAAVnD,EACI6C,KAAK8R,OAAOrU,IAEpBuC,KAAK+jC,QAAQna,MAAM5pB,KAAKgkC,iBAAmBvmC,EAAKuC,KAAKkkC,WAAW/mC,IACzDA,IAIR2U,OAAQ,SAASrU,GAChBuC,KAAK+jC,QAAQjyB,OAAO9R,KAAKgkC,iBAAmBvmC,IAK7C+X,KAAM,SAAS8E,GACd,IAAI9b,EAAOwB,KACXA,KAAK+jC,QAAQvuB,KAAK,SAAS/R,EAAK0gC,GAC/B7pB,EAASje,KAAKmC,EAAMA,EAAKylC,aAAaxgC,IAAO0gC,GAAiB,IAAIt+B,QAAQrH,EAAK4lC,iBAAkB,QAKnGC,SAAU,WACTrkC,KAAK+jC,QAAQM,YAOdC,aAAc,SAAS9oB,GACtB,OAAQxb,KAAKgkC,kBAAoB,aAAaxoB,EAAU,KAMzDkoB,YAAa,WACZ,OAAOA,EAAY33B,MAAM/L,KAAMsF,YAGhCi/B,UAAW,SAASpqB,GACnBna,KAAKwkC,WAAWrqB,IAGjBqB,UAAW,SAASA,GACnB,OAAOkoB,EAAY1jC,KAAK+jC,QAAS/jC,KAAK6Z,QAAS2B,KAWjD,SAASkoB,EAAYD,EAAU5pB,EAAS2B,GAClCA,IACJA,EAAY,IAETioB,IAAavtB,EAAOutB,KACvBA,EAAW,CAACA,IAET5pB,IAAY3D,EAAO2D,KACtBA,EAAU,CAACA,IAGZ,IAAI4qB,EAAmBjpB,EAAY,aAAaA,EAAU,IAAM,GAC5DkpB,EAAmBlpB,EAAY,IAAI0Q,OAAO,IAAIuY,GAAmB,KAErE,IADsB,oBACD3S,KAAKtW,GACzB,MAAM,IAAI1a,MAAM,4EAGjB,IAqHIhC,EAAQtB,EArHa,CACxBwmC,iBAAkBS,EAClBL,iBAAkBM,EAElBC,aAAc,SAASZ,GACtB,IACC,IAAIa,EAAU,oBACdb,EAAQna,MAAMgb,EAASA,GACvB,IAAI16B,EAAM65B,EAAQ3T,KAAKwU,KAAaA,EAEpC,OADAb,EAAQjyB,OAAO8yB,GACR16B,EACN,MAAMiR,GACP,OAAO,IAIT0pB,oBAAqB,SAASC,EAAcC,GAC3C,IAAIC,EAAQhlC,KAAK+kC,GACjB/kC,KAAK+kC,GAAY,WAChB,IAAI/qB,EAAO9L,EAAM5I,UAAW,GACxB9G,EAAOwB,KAIX,SAASilC,IACR,GAAKD,EAIL,OAHAxvB,EAAKlQ,UAAW,SAAS49B,EAAKhnC,GAC7B8d,EAAK9d,GAAKgnC,IAEJ8B,EAAMj5B,MAAMvN,EAAMwb,GAK1B,IAAIkrB,EAAY,CAACD,GAAUrvB,OAAOoE,GAElC,OAAO8qB,EAAa/4B,MAAMvN,EAAM0mC,KAIlChB,WAAY,SAAStgC,GACpB,OAAOwN,KAAKC,UAAUzN,IAGvBqgC,aAAc,SAASkB,EAAQC,GAC9B,IAAKD,EAAU,OAAOC,EAMtB,IAAI3hC,EAAM,GACV,IAAMA,EAAM2N,KAAKzP,MAAMwjC,GACvB,MAAMhqB,GAAK1X,EAAM0hC,EAEjB,YAAgB7kC,IAARmD,EAAoBA,EAAM2hC,GAGnCC,YAAa,SAAStB,GACjB/jC,KAAK6jC,SACL7jC,KAAK2kC,aAAaZ,KACrB/jC,KAAK+jC,QAAUA,EACf/jC,KAAK6jC,SAAU,IAIjBW,WAAY,SAASrqB,GACpB,IAAI3b,EAAOwB,KAIX,GAAIkW,EAAOiE,GACV3E,EAAK2E,EAAQ,SAASA,GACrB3b,EAAKgmC,WAAWrqB,UAUlB,IAHiBlE,EAAMjW,KAAK6Z,QAAS,SAASyrB,GAC7C,OAAQnrB,IAAWmrB,IAEpB,CAMA,GAHAtlC,KAAK6Z,QAAQlO,KAAKwO,IAGbzW,EAAWyW,GACf,MAAM,IAAIrZ,MAAM,uDAGjB,IAAIykC,EAAmBprB,EAAO9d,KAAK2D,MACnC,IAAKf,EAASsmC,GACb,MAAM,IAAIzkC,MAAM,wDAIjB0U,EAAK+vB,EAAkB,SAAST,EAAcC,GAC7C,IAAKrhC,EAAWohC,GACf,MAAM,IAAIhkC,MAAM,wBAAwBikC,EAAS,gBAAgB5qB,EAAO1d,KAAK,2CAE9E+B,EAAKqmC,oBAAoBC,EAAcC,OAQzCS,WAAY,SAASzB,IAxIvB,WACC,IAAI0B,EAA8B,oBAAXlP,QAAyB,KAAOA,QAClDkP,IACKA,EAASC,KAAOD,EAASC,KAAOD,EAASE,KAChD55B,MAAM05B,EAAUngC,WAqIjBsgC,CAAM,wEACN5lC,KAAKqlC,YAAYtB,KAIoBH,EAAU,CAChD/pB,QAAS,KAcV,OAZA/a,EAAM+mC,IAAM,GACZrwB,EAAK1W,EAAO,SAASyjB,EAAMwiB,GACtBrhC,EAAW6e,KACdzjB,EAAM+mC,IAAId,GAAYrnC,EAAKoB,EAAOyjB,MAGpC/M,EAAKiuB,EAAU,SAASM,GACvBjlC,EAAMumC,YAAYtB,KAEnBvuB,EAAKqE,EAAS,SAASM,GACtBrb,EAAM0lC,WAAWrqB,KAEXrb,I,gBC3OR7C,EAAOD,QAAU,CAEhB,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,O,gBCPT,IACI+Z,EADO,EAAQ,IACDA,OAWlB,SAAS+vB,IACR,OAAO/vB,EAAO+vB,aAGf,SAAS1V,EAAK3yB,GACb,OAAOqoC,IAAeC,QAAQtoC,GAd/BxB,EAAOD,QAAU,CAChBS,KAAM,eACN2zB,KAAMA,EACNxG,MAcD,SAAensB,EAAK4S,GACnB,OAAOy1B,IAAeE,QAAQvoC,EAAK4S,IAdnCmF,KAiBD,SAAc3R,GACb,IAAK,IAAI3H,EAAI4pC,IAAezlC,OAAS,EAAGnE,GAAK,EAAGA,IAAK,CACpD,IAAIuB,EAAMqoC,IAAeroC,IAAIvB,GAC7B2H,EAAGusB,EAAK3yB,GAAMA,KAnBfqU,OAuBD,SAAgBrU,GACf,OAAOqoC,IAAeG,WAAWxoC,IAvBjC4mC,SA0BD,WACC,OAAOyB,IAAetpB,W,gBChCvB,IACIzG,EADO,EAAQ,IACDA,OAElB9Z,EAAOD,QAAU,CAChBS,KAAM,sBACN2zB,KASD,SAAc3yB,GACb,OAAOyoC,EAAczoC,IATrBmsB,MAYD,SAAensB,EAAK4S,GACnB61B,EAAczoC,GAAO4S,GAZrBmF,KAAMA,EACN1D,OAqBD,SAAgBrU,GACf,OAAOyoC,EAAcD,WAAWxoC,IArBhC4mC,SAwBD,WACC7uB,EAAK,SAAS/X,EAAK0oC,UACXD,EAAczoC,OAvBvB,IAAIyoC,EAAgBnwB,EAAOmwB,cAU3B,SAAS1wB,EAAK3R,GACb,IAAK,IAAI3H,EAAIgqC,EAAc7lC,OAAS,EAAGnE,GAAK,EAAGA,IAAK,CACnD,IAAIuB,EAAMyoC,EAAczoC,IAAIvB,GAC5B2H,EAAGqiC,EAAczoC,GAAMA,M,gBCzBzB,IACIsY,EADO,EAAQ,IACDA,OAElB9Z,EAAOD,QAAU,CAChBS,KAAM,wBACNmtB,MAYD,SAAewc,EAAY/1B,GAC1B,GAAIg2B,EAAW,OACf,IAAIC,EAAWC,EAAOH,GACtBI,EAAe,SAASC,GACvBA,EAAUC,aAAaJ,EAAUj2B,GACjCo2B,EAAUnqB,KAAKqqB,MAhBhBvW,KAoBD,SAAcgW,GACb,GAAIC,EAAW,OACf,IAAIC,EAAWC,EAAOH,GAClBhwB,EAAM,KAIV,OAHAowB,EAAe,SAASC,GACvBrwB,EAAMqwB,EAAUG,aAAaN,KAEvBlwB,GA1BPZ,KA6BD,SAAc8E,GACbksB,EAAe,SAASC,GAEvB,IADA,IAAIxkB,EAAawkB,EAAUI,YAAYC,gBAAgB7kB,WAC9C/lB,EAAE+lB,EAAW5hB,OAAO,EAAGnE,GAAG,EAAGA,IAAK,CAC1C,IAAI6qC,EAAO9kB,EAAW/lB,GACtBoe,EAASmsB,EAAUG,aAAaG,EAAKtqC,MAAOsqC,EAAKtqC,UAjCnDqV,OAsCD,SAAgBs0B,GACf,IAAIE,EAAWC,EAAOH,GACtBI,EAAe,SAASC,GACvBA,EAAUO,gBAAgBV,GAC1BG,EAAUnqB,KAAKqqB,MAzChBtC,SA6CD,WACCmC,EAAe,SAASC,GACvB,IAAIxkB,EAAawkB,EAAUI,YAAYC,gBAAgB7kB,WACvDwkB,EAAUQ,KAAKN,GACf,IAAK,IAAIzqC,EAAE+lB,EAAW5hB,OAAO,EAAGnE,GAAG,EAAGA,IACrCuqC,EAAUO,gBAAgB/kB,EAAW/lB,GAAGO,MAEzCgqC,EAAUnqB,KAAKqqB,OAjDjB,IAAIA,EAAc,UACdtL,EAAMtlB,EAAO7Q,SACbshC,EA8DJ,WACC,IAAKnL,IAAQA,EAAIyL,kBAAoBzL,EAAIyL,gBAAgBI,YACxD,OAAO,KAER,IACCC,EACAC,EACAX,EAYD,KAECW,EAAmB,IAAIC,cAAc,aACpB1d,OACjByd,EAAiBxd,MAAM,2EACvBwd,EAAiBtd,QACjBqd,EAAeC,EAAiBE,EAAEvzB,OAAO,GAAG7O,SAC5CuhC,EAAYU,EAAapkB,cAAc,OACtC,MAAM5H,GAGPsrB,EAAYpL,EAAItY,cAAc,OAC9BokB,EAAe9L,EAAIkM,KAGpB,OAAO,SAASC,GACf,IAAIxtB,EAAO,GAAG9L,MAAM7R,KAAKiJ,UAAW,GACpC0U,EAAKsiB,QAAQmK,GAGbU,EAAaxe,YAAY8d,GACzBA,EAAUS,YAAY,qBACtBT,EAAUQ,KAAKN,GACfa,EAAcz7B,MAAM/L,KAAMga,GAC1BmtB,EAAave,YAAY6d,IAzGNgB,GACjBpB,GAAWtwB,EAAO/Q,UAAY+Q,EAAO/Q,UAAU+C,UAAY,IAAI0kB,MAAM,8BAwDzE,IAAIib,EAAsB,IAAIxb,OAAO,wCAAyC,KAC9E,SAASqa,EAAO9oC,GACf,OAAOA,EAAIoI,QAAQ,MAAO,SAASA,QAAQ6hC,EAAqB,S,gBCzEjE,IAAI/D,EAAO,EAAQ,IACf5tB,EAAS4tB,EAAK5tB,OACdpQ,EAAOg+B,EAAKh+B,KAEhB1J,EAAOD,QAAU,CAChBS,KAAM,gBACN2zB,KASD,SAAc3yB,GACb,IAAKA,IAAQkqC,EAAKlqC,GAAQ,OAAO,KACjC,IAAImqC,EAAY,gBACfC,OAAOpqC,GAAKoI,QAAQ,cAAe,QACnC,qCACD,OAAOiiC,SAASzM,EAAI0M,OAAOliC,QAAQ,IAAIqmB,OAAO0b,GAAY,QAb1Dhe,MA6BD,SAAensB,EAAK4S,GACnB,IAAI5S,EAAO,OACX49B,EAAI0M,OAASF,OAAOpqC,GAAO,IAAMoqC,OAAOx3B,GAAQ,mDA9BhDmF,KAAMA,EACN1D,OAAQA,EACRuyB,SAsCD,WACC7uB,EAAK,SAAS2wB,EAAG1oC,GAChBqU,EAAOrU,OArCT,IAAI49B,EAAMtlB,EAAO7Q,SAUjB,SAASsQ,EAAK8E,GAEb,IADA,IAAI3I,EAAU0pB,EAAI0M,OAAOv5B,MAAM,QACtBtS,EAAIyV,EAAQtR,OAAS,EAAGnE,GAAK,EAAGA,IACxC,GAAKyJ,EAAKgM,EAAQzV,IAAlB,CAGA,IAAI8rC,EAAMr2B,EAAQzV,GAAGsS,MAAM,KACvB/Q,EAAMqqC,SAASE,EAAI,IAEvB1tB,EADUwtB,SAASE,EAAI,IACTvqC,IAShB,SAASqU,EAAOrU,GACVA,GAAQkqC,EAAKlqC,KAGlB49B,EAAI0M,OAASF,OAAOpqC,GAAO,oDAS5B,SAASkqC,EAAKlqC,GACb,OAAO,IAAKyuB,OAAO,cAAgB2b,OAAOpqC,GAAKoI,QAAQ,cAAe,QAAU,WAAYisB,KAAKuJ,EAAI0M,U,gBC3DtG,IACIhyB,EADO,EAAQ,IACDA,OAWlB,SAASkyB,IACR,OAAOlyB,EAAOkyB,eAGf,SAAS7X,EAAK3yB,GACb,OAAOwqC,IAAiBlC,QAAQtoC,GAdjCxB,EAAOD,QAAU,CAChBS,KAAM,iBACN2zB,KAAMA,EACNxG,MAcD,SAAensB,EAAK4S,GACnB,OAAO43B,IAAiBjC,QAAQvoC,EAAK4S,IAdrCmF,KAiBD,SAAc3R,GACb,IAAK,IAAI3H,EAAI+rC,IAAiB5nC,OAAS,EAAGnE,GAAK,EAAGA,IAAK,CACtD,IAAIuB,EAAMwqC,IAAiBxqC,IAAIvB,GAC/B2H,EAAGusB,EAAK3yB,GAAMA,KAnBfqU,OAuBD,SAAgBrU,GACf,OAAOwqC,IAAiBhC,WAAWxoC,IAvBnC4mC,SA0BD,WACC,OAAO4D,IAAiBzrB,W,cC/BzBvgB,EAAOD,QAAU,CAChBS,KAAM,gBACN2zB,KASD,SAAc3yB,GACb,OAAOyqC,EAAczqC,IATrBmsB,MAYD,SAAensB,EAAK4S,GACnB63B,EAAczqC,GAAO4S,GAZrBmF,KAeD,SAAc8E,GACb,IAAK,IAAI7c,KAAOyqC,EACXA,EAAcnqC,eAAeN,IAChC6c,EAAS4tB,EAAczqC,GAAMA,IAjB/BqU,OAsBD,SAAgBrU,UACRyqC,EAAczqC,IAtBrB4mC,SAyBD,SAAkB5mC,GACjByqC,EAAgB,KAvBjB,IAAIA,EAAgB,I,gBCdpBjsC,EAAOD,QAEP,WAEC,OADA,EAAQ,KACD,K,yBCuJY,iBAAToV,OACPA,KAAO,IAGV,WACG,aAEA,IAAI+2B,OAAS,gBACTC,OAAS,sCACTC,SAAW,mEACXC,QAAU,uBACVC,aAAe,kIACfC,aAAe,2GAgCfC,IACAC,OACAC,KACAC,IAjCJ,SAASjgC,EAAEhL,GAEP,OAAOA,EAAI,GACL,IAAMA,EACNA,EAGV,SAASkrC,aACL,OAAO7oC,KAAK6iB,UA4BhB,SAASimB,MAAMhiB,GAQX,OADAyhB,aAAajc,UAAY,EAClBic,aAAazW,KAAKhL,GACnB,IAAOA,EAAOjhB,QAAQ0iC,aAAc,SAAU/iC,GAC5C,IAAIjJ,EAAIosC,KAAKnjC,GACb,MAAoB,iBAANjJ,EACRA,EACA,OAAS,OAASiJ,EAAEme,WAAW,GAAGpiB,SAAS,KAAK2M,OAAO,KAC5D,IACH,IAAO4Y,EAAS,IAI1B,SAASlhB,IAAInI,EAAKsrC,GAId,IAAI7sC,EACAoa,EACAD,EACAhW,EAEA2oC,EADAC,EAAOR,IAEPtrC,EAAQ4rC,EAAOtrC,GAkBnB,OAdIN,GAA0B,iBAAVA,GACY,mBAAjBA,EAAMqkB,SACjBrkB,EAAQA,EAAMqkB,OAAO/jB,IAMN,mBAARmrC,MACPzrC,EAAQyrC,IAAIvsC,KAAK0sC,EAAQtrC,EAAKN,WAKnBA,GACf,IAAK,SACD,OAAO2rC,MAAM3rC,GAEjB,IAAK,SAID,OAAOsiC,SAAStiC,GACVgC,OAAOhC,GACP,OAEV,IAAK,UACL,IAAK,OAMD,OAAOgC,OAAOhC,GAKlB,IAAK,SAKD,IAAKA,EACD,MAAO,OAUX,GALAsrC,KAAOC,OACPM,EAAU,GAIqC,mBAA3CpsC,OAAOkB,UAAUyD,SAASwK,MAAM5O,GAA6B,CAM7D,IADAkD,EAASlD,EAAMkD,OACVnE,EAAI,EAAGA,EAAImE,EAAQnE,GAAK,EACzB8sC,EAAQ9sC,GAAK0J,IAAI1J,EAAGiB,IAAU,OAYlC,OANAkZ,EAAuB,IAAnB2yB,EAAQ3oC,OACN,KACAooC,IACI,MAAQA,IAAMO,EAAQr6B,KAAK,MAAQ85B,KAAO,KAAOQ,EAAO,IACxD,IAAMD,EAAQr6B,KAAK,KAAO,IACpC85B,IAAMQ,EACC5yB,EAKX,GAAIuyB,KAAsB,iBAARA,IAEd,IADAvoC,EAASuoC,IAAIvoC,OACRnE,EAAI,EAAGA,EAAImE,EAAQnE,GAAK,EACH,iBAAX0sC,IAAI1sC,KAEXma,EAAIzQ,IADJ0Q,EAAIsyB,IAAI1sC,GACGiB,KAEP6rC,EAAQr9B,KAAKm9B,MAAMxyB,IACfmyB,IACM,KACA,KACNpyB,QAQhB,IAAKC,KAAKnZ,EACFP,OAAOkB,UAAUC,eAAe1B,KAAKc,EAAOmZ,KAC5CD,EAAIzQ,IAAI0Q,EAAGnZ,KAEP6rC,EAAQr9B,KAAKm9B,MAAMxyB,IACfmyB,IACM,KACA,KACNpyB,GAepB,OANAA,EAAuB,IAAnB2yB,EAAQ3oC,OACN,KACAooC,IACI,MAAQA,IAAMO,EAAQr6B,KAAK,MAAQ85B,KAAO,KAAOQ,EAAO,IACxD,IAAMD,EAAQr6B,KAAK,KAAO,IACpC85B,IAAMQ,EACC5yB,GAlLsB,mBAA1BlV,KAAKrD,UAAU0jB,SAEtBrgB,KAAKrD,UAAU0jB,OAAS,WAEpB,OAAOie,SAASz/B,KAAK6iB,WACf7iB,KAAKkpC,iBAAmB,IAClBvgC,EAAE3I,KAAKmpC,cAAgB,GAAK,IAC5BxgC,EAAE3I,KAAKopC,cAAgB,IACvBzgC,EAAE3I,KAAKqpC,eAAiB,IACxB1gC,EAAE3I,KAAKspC,iBAAmB,IAC1B3gC,EAAE3I,KAAKupC,iBAAmB,IAChC,MAGV9nB,QAAQ3jB,UAAU0jB,OAASqnB,WAC3BtqB,OAAOzgB,UAAU0jB,OAASqnB,WAC1B1pC,OAAOrB,UAAU0jB,OAASqnB,YAwKA,mBAAnBz3B,KAAKC,YACZs3B,KAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACNa,IAAM,MACN,KAAM,QAEVp4B,KAAKC,UAAY,SAAUlU,EAAOikC,EAAUqI,GAQxC,IAAIvtC,EAOJ,GANAusC,IAAM,GACNC,OAAS,GAKY,iBAAVe,EACP,IAAKvtC,EAAI,EAAGA,EAAIutC,EAAOvtC,GAAK,EACxBwsC,QAAU,QAKU,iBAAVe,IACdf,OAASe,GAOb,GADAb,IAAMxH,EACFA,GAAgC,mBAAbA,IACM,iBAAbA,GACmB,iBAApBA,EAAS/gC,QACpB,MAAM,IAAIS,MAAM,kBAMpB,OAAO8E,IAAI,GAAI,CAAC,GAAIzI,MAOF,mBAAfiU,KAAKzP,QACZyP,KAAKzP,MAAQ,SAAU+nC,KAAMC,SAKzB,IAAIjJ,EAEJ,SAASkJ,KAAKb,EAAQtrC,GAKlB,IAAI6Y,EACAD,EACAlZ,EAAQ4rC,EAAOtrC,GACnB,GAAIN,GAA0B,iBAAVA,EAChB,IAAKmZ,KAAKnZ,EACFP,OAAOkB,UAAUC,eAAe1B,KAAKc,EAAOmZ,UAElChW,KADV+V,EAAIuzB,KAAKzsC,EAAOmZ,IAEZnZ,EAAMmZ,GAAKD,SAEJlZ,EAAMmZ,IAK7B,OAAOqzB,QAAQttC,KAAK0sC,EAAQtrC,EAAKN,GA8BrC,GAtBAusC,KAAOvqC,OAAOuqC,MACdlB,aAAalc,UAAY,EACrBkc,aAAa1W,KAAK4X,QAClBA,KAAOA,KAAK7jC,QAAQ2iC,aAAc,SAAUhjC,GACxC,MAAO,OACE,OAASA,EAAEme,WAAW,GAAGpiB,SAAS,KAAK2M,OAAO,MAkB3Di6B,OAAOrW,KACH4X,KACK7jC,QAAQuiC,OAAQ,KAChBviC,QAAQwiC,SAAU,KAClBxiC,QAAQyiC,QAAS,KAc1B,OALA5H,EAAImJ,KAAK,IAAMH,KAAO,KAKK,mBAAZC,QACTC,KAAK,CAAC,GAAIlJ,GAAI,IACdA,EAKV,MAAM,IAAIoJ,YAAY,gBAzVlC,I,gBC/JA7tC,EAAOD,QAAU,EAAQ,M,6BCEzB,IAAI8nB,EAAQ,EAAQ,GAChBpmB,EAAO,EAAQ,IACf6R,EAAQ,EAAQ,KAChBC,EAAW,EAAQ,IAQvB,SAASu6B,EAAeC,GACtB,IAAIzP,EAAU,IAAIhrB,EAAMy6B,GACpBvnB,EAAW/kB,EAAK6R,EAAMzR,UAAUkX,QAASulB,GAQ7C,OALAzW,EAAMve,OAAOkd,EAAUlT,EAAMzR,UAAWy8B,GAGxCzW,EAAMve,OAAOkd,EAAU8X,GAEhB9X,EAIT,IAAIwnB,EAAQF,EAAev6B,GAG3By6B,EAAM16B,MAAQA,EAGd06B,EAAMzsC,OAAS,SAAgB0sC,GAC7B,OAAOH,EAAejmB,EAAM3e,MAAMqK,EAAU06B,KAI9CD,EAAMnZ,OAAS,EAAQ,IACvBmZ,EAAME,YAAc,EAAQ,KAC5BF,EAAMG,SAAW,EAAQ,IAGzBH,EAAMtgC,IAAM,SAAa0gC,GACvB,OAAOp+B,QAAQtC,IAAI0gC,IAErBJ,EAAMK,OAAS,EAAQ,KAEvBruC,EAAOD,QAAUiuC,EAGjBhuC,EAAOD,QAAQuuC,QAAUN,G;;;;;;;AC5CzBhuC,EAAOD,QAAU,SAAmB4H,GAClC,OAAc,MAAPA,GAAkC,MAAnBA,EAAI7C,aACY,mBAA7B6C,EAAI7C,YAAYwC,UAA2BK,EAAI7C,YAAYwC,SAASK,K,6BCP/E,IAAI4L,EAAW,EAAQ,IACnBsU,EAAQ,EAAQ,GAChB0mB,EAAqB,EAAQ,KAC7BC,EAAkB,EAAQ,KAO9B,SAASl7B,EAAM26B,GACblqC,KAAKwP,SAAW06B,EAChBlqC,KAAK0qC,aAAe,CAClB11B,QAAS,IAAIw1B,EACbv6B,SAAU,IAAIu6B,GASlBj7B,EAAMzR,UAAUkX,QAAU,SAAiBpU,GAGnB,iBAAXA,IACTA,EAASkjB,EAAM3e,MAAM,CACnBuP,IAAKpP,UAAU,IACdA,UAAU,MAGf1E,EAASkjB,EAAM3e,MAAMqK,EAAU,CAACiM,OAAQ,OAAQzb,KAAKwP,SAAU5O,IACxD6a,OAAS7a,EAAO6a,OAAOsL,cAG9B,IAAI/c,EAAQ,CAACygC,OAAiBnqC,GAC1B4I,EAAU+C,QAAQ9C,QAAQvI,GAU9B,IARAZ,KAAK0qC,aAAa11B,QAAQrR,QAAQ,SAAoCgnC,GACpE3gC,EAAMsyB,QAAQqO,EAAYC,UAAWD,EAAYE,YAGnD7qC,KAAK0qC,aAAaz6B,SAAStM,QAAQ,SAAkCgnC,GACnE3gC,EAAM2B,KAAKg/B,EAAYC,UAAWD,EAAYE,YAGzC7gC,EAAM3J,QACX6I,EAAUA,EAAQK,KAAKS,EAAMu1B,QAASv1B,EAAMu1B,SAG9C,OAAOr2B,GAIT4a,EAAMngB,QAAQ,CAAC,SAAU,MAAO,OAAQ,WAAY,SAA6B8X,GAE/ElM,EAAMzR,UAAU2d,GAAU,SAAS/G,EAAK9T,GACtC,OAAOZ,KAAKgV,QAAQ8O,EAAM3e,MAAMvE,GAAU,GAAI,CAC5C6a,OAAQA,EACR/G,IAAKA,QAKXoP,EAAMngB,QAAQ,CAAC,OAAQ,MAAO,SAAU,SAA+B8X,GAErElM,EAAMzR,UAAU2d,GAAU,SAAS/G,EAAKrE,EAAMzP,GAC5C,OAAOZ,KAAKgV,QAAQ8O,EAAM3e,MAAMvE,GAAU,GAAI,CAC5C6a,OAAQA,EACR/G,IAAKA,EACLrE,KAAMA,QAKZpU,EAAOD,QAAUuT,G,6BC5EjB,IAAIuU,EAAQ,EAAQ,GAEpB7nB,EAAOD,QAAU,SAA6B2U,EAASm6B,GACrDhnB,EAAMngB,QAAQgN,EAAS,SAAuBxT,EAAOV,GAC/CA,IAASquC,GAAkBruC,EAAKkY,gBAAkBm2B,EAAen2B,gBACnEhE,EAAQm6B,GAAkB3tC,SACnBwT,EAAQlU,Q,6BCNrB,IAAI0yB,EAAc,EAAQ,IAS1BlzB,EAAOD,QAAU,SAAgBmN,EAASoB,EAAQ0F,GAChD,IAAIuU,EAAiBvU,EAASrP,OAAO4jB,eAEhCvU,EAASG,QAAWoU,IAAkBA,EAAevU,EAASG,QAGjE7F,EAAO4kB,EACL,mCAAqClf,EAASG,OAC9CH,EAASrP,OACT,KACAqP,EAAS+E,QACT/E,IAPF9G,EAAQ8G,K,6BCHZhU,EAAOD,QAAU,SAAsBgD,EAAO4B,EAAQ0C,EAAM0R,EAAS/E,GAOnE,OANAjR,EAAM4B,OAASA,EACX0C,IACFtE,EAAMsE,KAAOA,GAEftE,EAAMgW,QAAUA,EAChBhW,EAAMiR,SAAWA,EACVjR,I,6BCjBT,IAAI8kB,EAAQ,EAAQ,GAEpB,SAASinB,EAAOtnC,GACd,OAAOwN,mBAAmBxN,GACxBoC,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrB5J,EAAOD,QAAU,SAAkB0Y,EAAK8a,EAAQC,GAE9C,IAAKD,EACH,OAAO9a,EAGT,IAAIs2B,EACJ,GAAIvb,EACFub,EAAmBvb,EAAiBD,QAC/B,GAAI1L,EAAMjf,kBAAkB2qB,GACjCwb,EAAmBxb,EAAOjuB,eACrB,CACL,IAAIk9B,EAAQ,GAEZ3a,EAAMngB,QAAQ6rB,EAAQ,SAAmB/rB,EAAKhG,GACxCgG,UAIAqgB,EAAMtgB,QAAQC,GAChBhG,GAAY,KAEZgG,EAAM,CAACA,GAGTqgB,EAAMngB,QAAQF,EAAK,SAAoB4S,GACjCyN,EAAMtf,OAAO6R,GACfA,EAAIA,EAAEjV,cACG0iB,EAAM7kB,SAASoX,KACxBA,EAAIjF,KAAKC,UAAUgF,IAErBooB,EAAM9yB,KAAKo/B,EAAOttC,GAAO,IAAMstC,EAAO10B,SAI1C20B,EAAmBvM,EAAM9vB,KAAK,KAOhC,OAJIq8B,IACFt2B,KAA8B,IAAtBA,EAAIlL,QAAQ,KAAc,IAAM,KAAOwhC,GAG1Ct2B,I,6BC9DT,IAAIoP,EAAQ,EAAQ,GAIhBmnB,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BhvC,EAAOD,QAAU,SAAsB2U,GACrC,IACIlT,EACAgG,EACAvH,EAHAgvC,EAAS,GAKb,OAAKv6B,GAELmT,EAAMngB,QAAQgN,EAAQnC,MAAM,MAAO,SAAgB1M,GAKjD,GAJA5F,EAAI4F,EAAK0H,QAAQ,KACjB/L,EAAMqmB,EAAMne,KAAK7D,EAAKohB,OAAO,EAAGhnB,IAAI6qB,cACpCtjB,EAAMqgB,EAAMne,KAAK7D,EAAKohB,OAAOhnB,EAAI,IAE7BuB,EAAK,CACP,GAAIytC,EAAOztC,IAAQwtC,EAAkBzhC,QAAQ/L,IAAQ,EACnD,OAGAytC,EAAOztC,GADG,eAARA,GACaytC,EAAOztC,GAAOytC,EAAOztC,GAAO,IAAImY,OAAO,CAACnS,IAEzCynC,EAAOztC,GAAOytC,EAAOztC,GAAO,KAAOgG,EAAMA,KAKtDynC,GAnBgBA,I,6BC9BzB,IAAIpnB,EAAQ,EAAQ,GAEpB7nB,EAAOD,QACL8nB,EAAM/e,uBAIN,WACE,IAEIomC,EAFAC,EAAO,kBAAkBtZ,KAAK9sB,UAAU+C,WACxCsjC,EAAiBnmC,SAAS6d,cAAc,KAS5C,SAASuoB,EAAW52B,GAClB,IAAIme,EAAOne,EAWX,OATI02B,IAEFC,EAAe3E,aAAa,OAAQ7T,GACpCA,EAAOwY,EAAexY,MAGxBwY,EAAe3E,aAAa,OAAQ7T,GAG7B,CACLA,KAAMwY,EAAexY,KACrB1K,SAAUkjB,EAAeljB,SAAWkjB,EAAeljB,SAAStiB,QAAQ,KAAM,IAAM,GAChFuiB,KAAMijB,EAAejjB,KACrBrL,OAAQsuB,EAAetuB,OAASsuB,EAAetuB,OAAOlX,QAAQ,MAAO,IAAM,GAC3EitB,KAAMuY,EAAevY,KAAOuY,EAAevY,KAAKjtB,QAAQ,KAAM,IAAM,GACpE0lC,SAAUF,EAAeE,SACzBhkB,KAAM8jB,EAAe9jB,KACrBqL,SAAiD,MAAtCyY,EAAezY,SAAShP,OAAO,GAChCynB,EAAezY,SACf,IAAMyY,EAAezY,UAYnC,OARAuY,EAAYG,EAAW/sC,OAAOkpB,SAASoL,MAQhC,SAAyB2Y,GAC9B,IAAIN,EAAUpnB,EAAMzf,SAASmnC,GAAeF,EAAWE,GAAcA,EACrE,OAAQN,EAAO/iB,WAAagjB,EAAUhjB,UAChC+iB,EAAO9iB,OAAS+iB,EAAU/iB,MAhDpC,GAsDS,WACL,OAAO,I,6BC9Db,IAAItE,EAAQ,EAAQ,GAEpB7nB,EAAOD,QACL8nB,EAAM/e,uBAIG,CACL6kB,MAAO,SAAentB,EAAMU,EAAOsuC,EAAS1kC,EAAMyD,EAAQkhC,GACxD,IAAI3D,EAAS,GACbA,EAAOp8B,KAAKlP,EAAO,IAAMwU,mBAAmB9T,IAExC2mB,EAAMxf,SAASmnC,IACjB1D,EAAOp8B,KAAK,WAAa,IAAIxK,KAAKsqC,GAASE,eAGzC7nB,EAAMzf,SAAS0C,IACjBghC,EAAOp8B,KAAK,QAAU5E,GAGpB+c,EAAMzf,SAASmG,IACjBu9B,EAAOp8B,KAAK,UAAYnB,IAGX,IAAXkhC,GACF3D,EAAOp8B,KAAK,UAGdzG,SAAS6iC,OAASA,EAAOp5B,KAAK,OAGhCyhB,KAAM,SAAc3zB,GAClB,IAAIgwB,EAAQvnB,SAAS6iC,OAAOtb,MAAM,IAAIP,OAAO,aAAezvB,EAAO,cACnE,OAAQgwB,EAAQmf,mBAAmBnf,EAAM,IAAM,MAGjD3a,OAAQ,SAAgBrV,GACtBuD,KAAK4pB,MAAMntB,EAAM,GAAI0E,KAAK8hB,MAAQ,SAO/B,CACL2G,MAAO,aACPwG,KAAM,WAAkB,OAAO,MAC/Bte,OAAQ,e,6BC/Cd,IAAIgS,EAAQ,EAAQ,GAEpB,SAAS0mB,IACPxqC,KAAK6rC,SAAW,GAWlBrB,EAAmB1sC,UAAUguC,IAAM,SAAalB,EAAWC,GAKzD,OAJA7qC,KAAK6rC,SAASlgC,KAAK,CACjBi/B,UAAWA,EACXC,SAAUA,IAEL7qC,KAAK6rC,SAASxrC,OAAS,GAQhCmqC,EAAmB1sC,UAAUiuC,MAAQ,SAAet7B,GAC9CzQ,KAAK6rC,SAASp7B,KAChBzQ,KAAK6rC,SAASp7B,GAAM,OAYxB+5B,EAAmB1sC,UAAU6F,QAAU,SAAiBE,GACtDigB,EAAMngB,QAAQ3D,KAAK6rC,SAAU,SAAwBG,GACzC,OAANA,GACFnoC,EAAGmoC,MAKT/vC,EAAOD,QAAUwuC,G,6BCjDjB,IAAI1mB,EAAQ,EAAQ,GAChBmoB,EAAgB,EAAQ,KACxB7B,EAAW,EAAQ,IACnB56B,EAAW,EAAQ,IACnB08B,EAAgB,EAAQ,KACxBC,EAAc,EAAQ,KAK1B,SAASC,EAA6BxrC,GAChCA,EAAO4vB,aACT5vB,EAAO4vB,YAAY6b,mBAUvBpwC,EAAOD,QAAU,SAAyB4E,GAkCxC,OAjCAwrC,EAA6BxrC,GAGzBA,EAAO0rC,UAAYJ,EAActrC,EAAO8T,OAC1C9T,EAAO8T,IAAMy3B,EAAYvrC,EAAO0rC,QAAS1rC,EAAO8T,MAIlD9T,EAAO+P,QAAU/P,EAAO+P,SAAW,GAGnC/P,EAAOyP,KAAO47B,EACZrrC,EAAOyP,KACPzP,EAAO+P,QACP/P,EAAOwjB,kBAITxjB,EAAO+P,QAAUmT,EAAM3e,MACrBvE,EAAO+P,QAAQC,QAAU,GACzBhQ,EAAO+P,QAAQ/P,EAAO6a,SAAW,GACjC7a,EAAO+P,SAAW,IAGpBmT,EAAMngB,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAClD,SAA2B8X,UAClB7a,EAAO+P,QAAQ8K,MAIZ7a,EAAOsjB,SAAW1U,EAAS0U,SAE1BtjB,GAAQ2I,KAAK,SAA6B0G,GAUvD,OATAm8B,EAA6BxrC,GAG7BqP,EAASI,KAAO47B,EACdh8B,EAASI,KACTJ,EAASU,QACT/P,EAAOyjB,mBAGFpU,GACN,SAA4BnF,GAc7B,OAbKs/B,EAASt/B,KACZshC,EAA6BxrC,GAGzBkK,GAAUA,EAAOmF,WACnBnF,EAAOmF,SAASI,KAAO47B,EACrBnhC,EAAOmF,SAASI,KAChBvF,EAAOmF,SAASU,QAChB/P,EAAOyjB,qBAKNpY,QAAQ1B,OAAOO,O,6BCjF1B,IAAIgZ,EAAQ,EAAQ,GAUpB7nB,EAAOD,QAAU,SAAuBqU,EAAMM,EAAS47B,GAMrD,OAJAzoB,EAAMngB,QAAQ4oC,EAAK,SAAmB1oC,GACpCwM,EAAOxM,EAAGwM,EAAMM,KAGXN,I,6BCVTpU,EAAOD,QAAU,SAAuB0Y,GAItC,MAAO,gCAAgCod,KAAKpd,K,6BCH9CzY,EAAOD,QAAU,SAAqBswC,EAASE,GAC7C,OAAOA,EACHF,EAAQzmC,QAAQ,OAAQ,IAAM,IAAM2mC,EAAY3mC,QAAQ,OAAQ,IAChEymC,I,6BCVN,IAAIxb,EAAS,EAAQ,IAQrB,SAASqZ,EAAY3+B,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAItM,UAAU,gCAGtB,IAAIutC,EACJzsC,KAAKkJ,QAAU,IAAI+C,QAAQ,SAAyB9C,GAClDsjC,EAAiBtjC,IAGnB,IAAIyG,EAAQ5P,KACZwL,EAAS,SAAgBxK,GACnB4O,EAAM9E,SAKV8E,EAAM9E,OAAS,IAAIgmB,EAAO9vB,GAC1ByrC,EAAe78B,EAAM9E,WAOzBq/B,EAAYrsC,UAAUuuC,iBAAmB,WACvC,GAAIrsC,KAAK8K,OACP,MAAM9K,KAAK8K,QAQfq/B,EAAYh9B,OAAS,WACnB,IAAIsjB,EAIJ,MAAO,CACL7gB,MAJU,IAAIu6B,EAAY,SAAkB5tC,GAC5Ck0B,EAASl0B,IAITk0B,OAAQA,IAIZx0B,EAAOD,QAAUmuC,G,6BClCjBluC,EAAOD,QAAU,SAAgBse,GAC/B,OAAO,SAActE,GACnB,OAAOsE,EAASvO,MAAM,KAAMiK,M,6BCvBhC,IAAInP,EAAI,EAAQ,IACZ6lC,EAAQ,EAAQ,KAA4B/mC,KAKhDkB,EAAE,CAAE3G,OAAQ,SAAUylB,OAAO,EAAM9Z,OAJN,EAAQ,IAIM8gC,CAAuB,SAAW,CAC3EhnC,KAAM,WACJ,OAAO+mC,EAAM1sC,U,gBCTjB,IAAIgb,EAAyB,EAAQ,IAGjC4xB,EAAa,IAFC,EAAQ,IAEW,IACjCC,EAAQ3gB,OAAO,IAAM0gB,EAAaA,EAAa,KAC/CE,EAAQ5gB,OAAO0gB,EAAaA,EAAa,MAGzCzpB,EAAe,SAAU7T,GAC3B,OAAO,SAAU+T,GACf,IAAIyD,EAAS3nB,OAAO6b,EAAuBqI,IAG3C,OAFW,EAAP/T,IAAUwX,EAASA,EAAOjhB,QAAQgnC,EAAO,KAClC,EAAPv9B,IAAUwX,EAASA,EAAOjhB,QAAQinC,EAAO,KACtChmB,IAIX7qB,EAAOD,QAAU,CAGf+wC,MAAO5pB,EAAa,GAGpB6pB,IAAK7pB,EAAa,GAGlBxd,KAAMwd,EAAa,K,gBC1BrB,IAAIzW,EAAQ,EAAQ,GAChBugC,EAAc,EAAQ,IAM1BhxC,EAAOD,QAAU,SAAUyK,GACzB,OAAOiG,EAAM,WACX,QAASugC,EAAYxmC,MANf,aAMqCA,MAAyBwmC,EAAYxmC,GAAahK,OAASgK,M,4CCC1G,MACI,MAAMqT,EAAiBpZ,EAAQ,IACzBoC,EAAcpC,EAAQ,KACtB,cAAEuC,GAAkBvC,EAAQ,IAC5B,UAAEwsC,EAAF,OAAaC,GAAWzsC,EAAQ,KAGhC0sC,EAAiB,GACjBC,EAAa,GAOnB,MAAMC,EACFvsC,YAAYwsC,EAAOC,EAAQv5B,EAAKw5B,GAC5B7wC,OAAOyF,iBAAiBrC,KAAMpD,OAAO0F,OAAO,CAQxCirC,MAAO,CACHpwC,MAAOowC,EACP56B,UAAU,GASd66B,OAAQ,CACJrwC,MAAOqwC,EACP76B,UAAU,GAEdsB,IAAK,CACD9W,MAAO8W,EACPtB,UAAU,GAEd86B,OAAQ,CACJtwC,MAAOswC,EACP96B,UAAU,MAiBtB,WAAW+6B,EAAkB,UAGzB,aAFqB5zB,EAChBsC,WAAW/f,KAAK2D,KAAMstC,EAAUxvC,UAAUuS,KAAMq9B,IAK7DJ,EAAUxvC,UAAUuS,KAAKkK,eAAiB1K,eAAgB69B,GACtD,OAAO,IAAIzhC,QAAQ4D,MAAO1G,EAASoB,KAC/B,IACI,GAAIvK,KAAKytC,UAAUJ,EAAWrtC,KAAKiU,KAC/B9K,EAAQkkC,EAAWrtC,KAAKiU,KAAKjU,KAAKytC,aAC/B,CACHC,IACA,MAAMx5B,QAAcpR,EAAYiR,OAAOC,QAAQhU,KAAKiU,IAAKjU,KAAKytC,QAE9D,GAAIN,EACAE,EAAWrtC,KAAKiU,KAAKjU,KAAKytC,QAAUhvC,EAAOkvC,OAAOtY,KAAKnhB,EAAO,UAAU3S,SAAS,UACjF4H,EAAQkkC,EAAWrtC,KAAKiU,KAAKjU,KAAKytC,cAC/B,GAAIP,EAAW,CAClB,MAAMU,EAAS,IAAIC,WACnBD,EAAOE,OAAS,KACZT,EAAWrtC,KAAKiU,KAAKjU,KAAKytC,QAAUG,EAAOxoC,OAC3C+D,EAAQkkC,EAAWrtC,KAAKiU,KAAKjU,KAAKytC,UAEtCG,EAAOG,cAAc75B,KAG/B,MAAOlR,GACLuH,EAAOvH,OAqCnB/G,EAAOD,QAAU,CACbsxC,YACAtxB,SAlCJnM,eAAwB1N,EAAQ9E,EAAM6W,GAQlC,GAPM/R,KAAUirC,IACZA,EAAejrC,GAAU,GACzBirC,EAAejrC,GAAQwmC,WAAa7lC,EAAYiR,OAAOK,QAAQjS,GAE/DkrC,EAAWlrC,GAAU,MAGnB+R,KAASk5B,EAAejrC,IAAU,CACpC,IAAI2c,EAAO,KACX,GAAa,kBAATzhB,GACCyhB,GAAQsuB,EAAejrC,GAAQwmC,SAC7B,IAAa,eAATtrC,EASP,MAAM,IAAI4F,+BACuB5F,KATjC,GAAI6W,GAASk5B,EAAejrC,GAAQwmC,KAAKtoC,OACrC,MAAM,IAAI4C,kCAC0BiR,uCAGpC4K,EAAOsuB,EAAejrC,GAAQwmC,KAAKz0B,GAQ3Ck5B,EAAejrC,GAAQ+R,GAAS,IAAIo5B,EAAUxuB,EAAKyuB,MAAOzuB,EAAK0uB,OAAQrrC,EAAQ+R,GAGnF,OAAOk5B,EAAejrC,GAAQ+R,MA9HtC,K,gDCVA,YAEAtX,OAAOC,eAAeb,EAAS,aAAc,CAC3CmB,OAAO,IAGT,IAAI6wC,EAA4B,mBAAX/wC,QAAoD,iBAApBA,OAAOiqB,SAAwB,SAAUtjB,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAX3G,QAAyB2G,EAAI7C,cAAgB9D,QAAU2G,IAAQ3G,OAAOa,UAAY,gBAAkB8F,GAIlQspC,EAA8B,oBAAX3uC,aAAqD,IAApBA,OAAO2G,SAG3D+oC,EAA8E,YAA/C,oBAATzvC,KAAuB,YAAcwvC,EAAQxvC,QAAuBA,KAAKuC,aAAyC,+BAA1BvC,KAAKuC,YAAYtE,KAG/H0wC,OAA4B,IAAZ9kC,GAA+C,MAApBA,EAAQG,UAA6C,MAAzBH,EAAQG,SAASqtB,KAE5F75B,EAAQkxC,UAAYA,EACpBlxC,EAAQiyC,YAAcA,EACtBjyC,EAAQmxC,OAASA,I,iDCXjB,MACI,MAAMrqC,EAAcpC,EAAQ,IACtB6F,EAAa7F,EAAQ,KACrBwtC,EAAmBxtC,EAAQ,MAC3B,gBAAE8hB,GAAoB9hB,EAAQ,KAC9B,KAAEme,GAASne,EAAQ,KACnB,OACFyxB,EADE,OAEFE,GACA3xB,EAAQ,KACN,eACFyC,EADE,UAEFD,EAFE,cAGFD,GACAvC,EAAQ,GAENytC,EAAW,IAAIn/B,QACfo/B,EAAY,IAAIp/B,QAEtB,SAASq/B,EAASC,GACd,GAAoB,SAAhBA,EACA,OAAOF,EAGX,GAAoB,QAAhBE,EACA,OAAOH,EAGX,MAAM,IAAIhrC,uCAC+BmrC,KAI7Cz+B,eAAe0+B,EAAyBh6B,GACpC,MAAM+5B,EAAc/5B,aAAmBsK,EAAO,OAAS,MACjD2vB,EAAQH,EAASC,GAEvB,IAAKE,EAAMrgC,IAAIoG,GAAU,CACrB,MAAMk6B,QAAuB3rC,EAAYuR,YACpCQ,eAAey5B,EAAa/5B,EAAQ9D,IAGnCiO,EAA6B,QAAhB4vB,EAAwB/5B,EAAQmK,WAAa,EAC1DC,EAA4B,QAAhB2vB,EAAwB/5B,EAAQoK,UAAYpK,EAAQuK,KAAO,EACvE4vB,EAAY,GAClB,IAAK,IAAIxyC,EAAIwiB,EAAYxiB,GAAKyiB,EAAWziB,IACrCwyC,EAAUxyC,SAAWqY,EAAQR,OAAOhX,IAAIb,GAG5C,MAAMyyC,EAAa,IAAIpoC,EAAW,CAC9BiZ,OAAQjL,EAAQiL,QAAUjL,EAAQ9M,KAAK+X,OACvCd,aACAC,YACA+vB,cACDE,OAAOH,GAEJI,EAAQ,IAAIX,EAAiBO,EAAehtC,QAASktC,EAAYp6B,GAEvEi6B,EAAM9uC,IAAI6U,EAAS,CACfo6B,aACAE,WA8JZ5yC,EAAOD,QAAU,CACb6Y,eAzJJhF,eAA8B0E,EAASL,EAAOnE,GAI1C,aAHMw+B,EAAyBh6B,GAEjB85B,EADM95B,aAAmBsK,EAAO,OAAS,OAE1C9hB,IAAIwX,GAASo6B,WAAW5xC,IAAImX,EAAOnE,IAsJhDgR,eA1DJ,SAAwBxM,EAASyI,GAC7B,MACMwxB,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAW/5B,IAAIoI,GAG7C,MAAM,IAAI9Z,EACN,sGAkDJ8d,gBApJJnR,eAA+B0E,EAASrB,GACpC,MACMs7B,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGnD2vB,EAAMrgC,IAAIoG,UACJi6B,EAAMzxC,IAAIwX,GAASs6B,MAAMvyB,KAAKpJ,IAgJxCiK,kBAnGJ,SAA2B5I,GACvB,MACMi6B,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,QAAI2vB,EAAMrgC,IAAIoG,IACHi6B,EAAMzxC,IAAIwX,GAASs6B,MAAM1xB,qBA+FpC8D,iBA3IJ,SAA0B1M,EAASyI,GAC/B,MACMwxB,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWxpC,MAAM6X,GAG/C,MAAM,IAAI9Z,EACN,sGAmIJge,iBA/HJ,SAA0B3M,EAAS6I,EAAalJ,GAC5C,MACMs6B,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWngC,MAAM4O,EAAalJ,GAG5D,MAAM,IAAIhR,EACN,sGAuHJie,iBAnHJ,SAA0B5M,EAASyI,EAAcK,GAC7C,MACMmxB,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWrxB,MAAMN,EAAcK,GAG7D,MAAM,IAAIna,EACN,sGA2GJke,iBA5FJvR,eAAgC0E,EAASgI,GACrCiG,EAAgB,SAAUjG,EAAQ,UAAW,MAC7C,MACMiyB,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGnD2vB,EAAMrgC,IAAIoG,IACVi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWnyB,QAG9BD,IACAiyB,EAAM99B,OAAO6D,SACPg6B,EAAyBh6B,KAkFnC+M,sBA9EJ,SAA+B/M,GAC3B,MACMi6B,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWhyB,aAGzC,MAAM,IAAIzZ,EACN,sGAsEJme,aArDJ,SAAsB9M,EAASyI,EAAc5Q,EAAG6Q,GAC5C,MACMuxB,EAAQH,EADM95B,aAAmBsK,EAAO,OAAS,OAGvD,GAAI2vB,EAAMrgC,IAAIoG,GACV,OAAOi6B,EAAMzxC,IAAIwX,GAASo6B,WAAWzxB,OAAOF,EAAc5Q,EAAG6Q,GAGjE,MAAM,IAAI/Z,EACN,sGA6CJ+R,kBAzCJpF,eAAiC0E,EAASW,EAAMiH,GAC5C,MAAMmyB,EAAc/5B,aAAmBsK,EAAO,OAAS,MACvD,KAAM1C,aAAkBgW,GACpB,MAAM,IAAIlvB,EACN,mDAGFH,EAAYuR,YAAYY,kBAAkBq5B,EAAa/5B,EAAQ9D,GAAIyE,EAAMiH,EAAO1f,OAmCtFqY,gBAhCJjF,eAA+B0E,EAAS9X,EAAMggB,GAC1C,KAAMA,aAAkB4V,GACpB,MAAM,IAAIpvB,EACN,6CAIR,IAAImC,EAAS,KAUb,OAPIA,EADgB,SADAmP,aAAmBsK,EAAO,OAAS,aAEpC/b,EAAYuR,YACtBS,gBAAgBP,EAAQ9M,KAAKgJ,GAAIhU,EAAMggB,EAAOhgB,YAEpCqG,EAAYuR,YACtBS,gBAAgBP,EAAQ9D,GAAIhU,EAAMggB,EAAOhgB,SApN1D,I,sCCAA,MACI,MAAM,eACFqyC,EADE,aAEFC,EAFE,cAGFC,EAHE,YAIFC,EAJE,eAKFC,EALE,aAMFC,EANE,cAOFC,EAPE,YAQFC,EARE,MASFC,EATE,MAUFC,EAVE,IAWFC,EAXE,mBAYFC,GACA/uC,EAAQ,MACN,gBAAE8hB,GAAoB9hB,EAAQ,IAC9BsyB,EAAatyB,EAAQ,KACrB,MAAEub,GAAUvb,EAAQ,KACpB,UACFwC,EADE,cAEFD,EAFE,eAGFE,GACAzC,EAAQ,IAEN,YACFgX,EADE,WAEFJ,GACA5W,EAAQ,IACN+jB,EAAc/jB,EAAQ,IAEtBgvC,EAAS,CACX,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,WAGrC,SAASC,EAAaC,EAAWxtC,EAAUytC,GACvC,MAAM,KAAE5vC,GAAS2vC,EACX5qB,EAAQ0qB,EAAOttC,EAAWstC,EAAOrvC,QAEvC,IAAIyvC,EAAa,KACjB,OAAQ7vC,GACR,IAAK,YACD6vC,EAAa,IAAIhB,EAAec,EAAWxtC,EAAU4iB,EAAO6qB,GAC5D,MACJ,IAAK,UACDC,EAAa,IAAIf,EAAaa,EAAWxtC,EAAU4iB,EAAO6qB,GAC1D,MACJ,IAAK,WACDC,EAAa,IAAId,EAAcY,EAAWxtC,EAAU4iB,EAAO6qB,GAC3D,MACJ,IAAK,SACDC,EAAa,IAAIb,EAAYW,EAAWxtC,EAAU4iB,EAAO6qB,GACzD,MACJ,QACI,MAAM,IAAI3sC,kCAC0BjD,MAIxC,OAAO6vC,EAIX,SAASC,EAAaC,EAAW5tC,EAAUytC,GACvC,GAAIG,EAAUC,OAAO5vC,OAAQ,CACzB,MAAM,KAAEJ,GAAS+vC,EAAUC,OAAO,GAC5BjrB,EAAQ0qB,EAAOttC,EAAWstC,EAAOrvC,QAEvC,IAAI6vC,EAAa,KACjB,OAAQjwC,GACR,IAAK,YACDiwC,EAAa,IAAIhB,EAAec,EAAW5tC,EAAU4iB,EAAO6qB,GAC5D,MACJ,IAAK,UACDK,EAAa,IAAIf,EAAaa,EAAW5tC,EAAU4iB,EAAO6qB,GAC1D,MACJ,IAAK,WACDK,EAAa,IAAId,EAAcY,EAAW5tC,EAAU4iB,EAAO6qB,GAC3D,MACJ,IAAK,SACDK,EAAa,IAAIb,EAAYW,EAAW5tC,EAAU4iB,EAAO6qB,GACzD,MACJ,QACI,MAAM,IAAI3sC,kCAC0BjD,MAIxC,OAAOiwC,EAIX,OADA3Z,QAAQmP,KAAK,gEACN,KAuoBXzpC,EAAOD,QApoBP,MACI+E,YAAYsP,GACRrQ,KAAK0e,WAAarO,EAAKqO,WACvB1e,KAAK2e,UAAYtO,EAAKsO,UACtB3e,KAAK0uC,UAAYr+B,EAAKq+B,UAEtB1uC,KAAKwf,OAASnP,EAAKmP,OAAO2a,OAAO,CAACgW,EAAkBnwB,KAChDmwB,EAAiBnwB,EAAMvP,IAAMuP,EACtBmwB,GACR,IAEHnwC,KAAKiwC,OAAS,GACdjwC,KAAKowC,KAAO,GACZpwC,KAAKqwC,OAAS,GACdrwC,KAAKswC,QAAU,GACftwC,KAAKuQ,MAAQ,EACbvQ,KAAKy1B,OAAQ,EACbz1B,KAAKuwC,YAAc,GACnBvwC,KAAK+wB,OAAS,CACVwC,IAAK,GAETvzB,KAAK6vC,UAAY,CACbrwB,OAAQxf,KAAKwf,OACb+wB,YAAavwC,KAAKuwC,YAClBxf,OAAQ/wB,KAAK+wB,OACb2d,UAAW1uC,KAAK0uC,WAIxBE,OAAOv+B,GACH,IAAK,MAAM0kB,KAAO1kB,EAAK+/B,KAAM,CACzB,MAAMhuC,IAAapC,KAAKuQ,MAClBigC,EAAW,IAAIhB,EAAIza,EAAK3yB,EAAUpC,KAAK6vC,WAC7C7vC,KAAKowC,KAAKI,EAASt8B,OAASlU,KAAKowC,KAAKI,EAASt8B,QAAU,GACzDlU,KAAKowC,KAAKI,EAASt8B,OAAOvI,KAAK6kC,GAC/BxwC,KAAKswC,QAAQluC,GAAYouC,EAG7B,IAAK,MAAMC,KAASpgC,EAAK4/B,OAAQ,CAC7B,MAAM7tC,IAAapC,KAAKuQ,MAClBu/B,EAAaH,EAAac,EAAOruC,EAAUpC,KAAK6vC,WACtD7vC,KAAKiwC,OAAOH,EAAW57B,OAASlU,KAAKiwC,OAAOH,EAAW57B,QAAU,GACjElU,KAAKiwC,OAAOH,EAAW57B,OAAOvI,KAAKmkC,GACnC9vC,KAAKswC,QAAQluC,GAAY0tC,EAG7B,IAAK,MAAMY,KAASrgC,EAAKggC,OAAQ,CAC7B,MAAMjuC,IAAapC,KAAKuQ,MAClB2/B,EAAaH,EAAaW,EAAOtuC,EAAUpC,KAAK6vC,WAGlDK,IACAlwC,KAAKqwC,OAAO1kC,KAAKukC,GACjBlwC,KAAKswC,QAAQluC,GAAY8tC,GAIjC,OAAOlwC,KAGX2wC,SAiBI,MAhBa,CACTN,OAAQrwC,KAAKqwC,OAAOtgC,OAAO2gC,IAAUA,EAAME,SACtCz6B,IAAIu6B,GAASA,EAAMlvB,UACxByuB,OAAQrzC,OAAOyJ,OAAOrG,KAAKiwC,QACtB9V,OAAO,CAACC,EAAaj9B,KAClBi9B,EAAYzuB,QAAQxO,GACbi9B,GACR,IAAIrqB,OAAO0gC,IAAUA,EAAMG,SAC7Bz6B,IAAIs6B,GAASA,EAAMjvB,UACxB4uB,KAAMxzC,OAAOyJ,OAAOrG,KAAKowC,MAAMjW,OAAO,CAACC,EAAaj9B,KAChDi9B,EAAYzuB,QAAQxO,GACbi9B,GACR,IAAIrqB,OAAOglB,IAAQA,EAAI6b,SACrBz6B,IAAI4e,GAAOA,EAAIvT,WAM5BzkB,IAAImX,GACA,MAAM,OAAEm8B,GAAWrwC,KACbiwC,EAASjwC,KAAKiwC,OAAO/7B,IAAU,GAC/Bk8B,EAAOpwC,KAAKowC,KAAKl8B,IAAU,GAE3Bo8B,EAAUD,EAAOz6B,OAAOq6B,GAAQr6B,OAAOw6B,GAAMrgC,OAAOnS,IAAWA,EAAOgzC,SAGtE5zB,EAAe,GACrB,IAAK,MAAMpf,KAAU0yC,EAAS,CAC1B,MAAMO,EAAYjzC,EAAOb,IAAImX,GAC7B,GAAI28B,EAAUjsB,UAAYisB,EAAU/rB,SAChC,SAGJ,MAAM1H,EAAcqyB,EAAmBpzC,KAAKuB,EAAQsW,EAAO28B,GAC3D7zB,EAAarR,KAAKyR,GAGtB,OAAOJ,EAGX7X,MAAM6X,GAEF,GADAwF,EAAgB,mBAAoBxF,EAAc,KAAMnd,QACnDmd,EAAa3c,OAAQ,OAC1B,MAAMywC,EAAkB9zB,EAAa7G,IAAK/V,IACtCoiB,EAAgB,eAAgBpiB,EAAO,KAAMqkB,GAC7C,MAAM7mB,EAASoC,KAAKswC,QAAQlwC,EAAMgC,UAClC,QAAwB,IAAZxE,EACR,MAAM,IAAIqF,EACN,4FAGR,OAAOrF,IAGLmzC,EAAY,IACZ,MAAE/wB,EAAF,UAASmF,GAAcnI,EAAa,GAC1C,KAAMgD,EAAMvP,MAAMzQ,KAAKwf,QACnB,MAAM,IAAIvc,iCACyB+c,EAAMvP,MAI7C,IAAK7T,OAAOyJ,OAAOqR,GAAanE,SAAS4R,GACrC,MAAM,IAAIliB,4BACoBkiB,MAIlC,MAAM6rB,EAAkBhxB,EAAMiC,WAAWkY,OAAO,CAACC,EAAa6W,KAC1D7W,EAAY6W,EAAUxgC,IAAMwgC,EACrB7W,GACR,IAEH,IAAK,IAAIl+B,EAAI,EAAGA,EAAI40C,EAAgBzwC,OAAQnE,IAAK,CAE7C,MAAM0B,EAASkzC,EAAgB50C,GACzBkE,EAAQ4c,EAAa9gB,GAC3B,GAAIkE,EAAM4f,MAAMvP,KAAOuP,EAAMvP,GACzB,MAAM,IAAIxN,yCACiC+c,EAAMvjB,iBAAiB2D,EAAM4f,MAAMvjB,QAIlF,GAAI2D,EAAM+kB,YAAcA,EACpB,MAAM,IAAIliB,mCAC2BkiB,cAAsB/kB,EAAM+kB,aAKrE,GAAIvnB,aAAkB2xC,EAAO,CAEzB,GAAI3xC,EAAOsW,SAAS68B,IAAcA,EAAUnzC,EAAOsW,OAAO0Q,QACtD,MAAM,IAAI3hB,EACN,6CAIR8tC,EAAUnzC,EAAOsW,OAAS,CACtBjU,KAAMklB,EACNjR,MAAOtW,EAAOsW,MACdyQ,OAAQ,IAAI/mB,EAAO+mB,QACnBE,SAAUjnB,EAAOinB,SACjBtE,OAAQ3iB,EAAO2iB,OACfqE,SAAS,EACT3C,WAAYrlB,OAAOke,KAAKld,EAAOqkB,YAAYkY,OAAO,CAACC,EAAa9U,KAExDA,KAAU0rB,GAAmBA,EAAgB1rB,GAAQxD,SACrDsY,EAAYzuB,KAAK,CACbulC,SAAU5rB,EACVnoB,MAAOS,EAAOqkB,WAAWqD,KAG1B8U,GACR,KAKAx8B,EAAOsW,MAAQ,KAAM68B,IACxBA,EAAUnzC,EAAOsW,MAAQ,GAAK9C,KACzBzP,MAAMyP,KAAKC,UAAU0/B,EAAUnzC,EAAOsW,SAC3C68B,EAAUnzC,EAAOsW,MAAQ,GAAG0Q,SAAU,EACtCmsB,EAAUnzC,EAAOsW,MAAQ,GAAGA,aAE7B,MAAItW,aAAkB0xC,GAgDzB,MAAM,IAAIrsC,0CACkCrF,EAAOmD,YAAYtE,SACrD,wCAlDsB,CAGhC,MAAMwlB,EAAa,GACnB,IAAK,MAAM6C,KAAYloB,OAAOke,KAAKld,EAAOqyC,QAAS,CAC/C,MAAMQ,EAAQ7yC,EAAOqyC,OAAOnrB,GAE5B,GAAIA,KAAYisB,IAAcA,EAAUjsB,GAAUF,QAAS,CAEvD,GAAI6rB,EAAM7rB,QACN,SAGJ,MAAM,IAAI3hB,EACN,6CAMR,IAAIkuC,GAAoB,EACxB,IAAK,MAAM7rB,KAAUmrB,EAAMxuB,WACjBqD,KAAUrD,GACTA,EAAWqD,KAAYmrB,EAAMxuB,WAAWqD,KAC3C6rB,GAAoB,EACpBlvB,EAAWqD,GAAUmrB,EAAMxuB,WAAWqD,IAI9CyrB,EAAUjsB,GAAY,CAClB7kB,KAAMklB,EACNjR,OAAQ4Q,EACRH,OAAQ,IAAI8rB,EAAM9rB,QAClBE,SAAU4rB,EAAM5rB,SAChBD,QAAS6rB,EAAM7rB,QACfrE,OAAQkwB,EAAMlwB,OACd0B,WAAYkvB,EAAoBv0C,OAAOke,KAAKmH,GACvCkY,OAAO,CAACC,EAAa9U,KAClB8U,EAAYzuB,KAAK,CACbulC,SAAU5rB,EACVnoB,MAAO8kB,EAAWqD,KAGf8U,GACR,IAAM,OAW7B,IAAIgX,GAAkB,EACtB,IAAK,MAAMl9B,KAAStX,OAAOke,KAAKi2B,GAAWlf,KAAK,CAACrsB,EAAGC,KAAOD,GAAKC,GAAI,CAGhE,IADA2rC,EAAkBA,GAAmBL,EAAU78B,GAAO0Q,WAC9BmsB,EAAU78B,GAAO0Q,QAGrC,aAFOmsB,EAAU78B,GAMzB,MAAM9R,IAAapC,KAAKuQ,MAmBlB2/B,EAAaH,EAlBL,CACV77B,MAAO9V,KAAKud,IAAI5P,MAAM,KAAMnP,OAAOke,KAAKi2B,GAAW56B,IAAIjC,IAAUA,IACjE+7B,OAAQrzC,OAAOyJ,OAAO0qC,GACtBzzB,MAAO,EACP+zB,SAAUrxB,EAAMvP,GAChBwR,WAAYrlB,OAAOke,KAAKkC,EAAa,GAAGiF,YACnCkY,OAAO,CAACC,EAAa9U,KACb0rB,EAAgB1rB,GAAQxD,SACzBsY,EAAYzuB,KAAK,CACbulC,SAAU5rB,EACVnoB,MAAO6f,EAAa,GAAGiF,WAAWqD,KAInC8U,GACR,KAG4Bh4B,EAAUpC,KAAK6vC,WACtD7vC,KAAKqwC,OAAO1kC,KAAKukC,GACjBlwC,KAAKswC,QAAQluC,GAAY8tC,EAGzB,IAAK,MAAMtyC,KAAUkzC,EACjBlzC,EAAOgzC,SAAU,EACkB,mBAAvBhzC,EAAO0zC,YACf1zC,EAAO0zC,aAKnB9iC,MAAM4O,EAAalJ,GACfsO,EAAgB,eAAgBpF,EAAa,KAAMqH,GACnDjC,EAAgB,QAAStO,EAAO,UAAW,MAE3C,MAAMtW,EAASoC,KAAKswC,QAAQlzB,EAAYhb,UACxC,QAAwB,IAAZxE,EACR,MAAM,IAAIqF,EACN,2EAIR,GAAIma,EAAY8H,aAAe5N,EAAWG,MACtC,OAGJ,MAAMs5B,EAAYn0C,OAAOke,KAAKld,EAAOqyC,QAAQpe,KAAK,CAACrsB,EAAGC,KAAOD,GAAKC,GAClE,GAAIyO,IAAU68B,EAAU,IAAM78B,EAAQ68B,EAAUA,EAAU1wC,OAAS,GAC/D,OAGJ,MAAM2wC,EAAkBpzC,EAAOoiB,MAAMiC,WAAWkY,OAAO,CAACC,EAAa6W,KACjE7W,EAAY6W,EAAUxgC,IAAMwgC,EACrB7W,GACR,IAEGmX,EAAW3zC,EAAO4jB,SAClBkC,EAAW,CACbzjB,KAAMmd,EAAY+H,UAClBR,OAAQ,IAAIvH,EAAYuH,QACxBE,SAAUzH,EAAYyH,SACtBD,QAASxH,EAAYwH,QACrBrE,OAAQ,EACR0B,WAAYrlB,OAAOke,KAAKsC,EAAY6E,YAC/BkY,OAAO,CAACC,EAAa9U,KACb0rB,EAAgB1rB,GAAQxD,SACzBsY,EAAYzuB,KAAK,CACbulC,SAAU5rB,EACVnoB,MAAOigB,EAAY6E,WAAWqD,KAI/B8U,GACR,IACPlmB,SAGEs9B,EAAO,CACTt9B,MAAOq9B,EAASr9B,MAChBoJ,MAAO,EACP+zB,SAAUE,EAASF,SACnBpvB,WAAYsvB,EAAStvB,WACrBguB,OAAQ,IAGNtlB,EAAOvZ,KAAKzP,MAAMyP,KAAKC,UAAUmgC,IACvC7mB,EAAKzW,MAAQA,EAEbyW,EAAKslB,OAAOtkC,KAAKyF,KAAKzP,MAAMyP,KAAKC,UAAUqS,KAC3C6tB,EAAStB,OAAO95B,IAAKs6B,WACVA,EAAMhgC,GACTggC,EAAMv8B,MAAQA,EACds9B,EAAKvB,OAAOtkC,KAAKyF,KAAKzP,MAAMyP,KAAKC,UAAUo/B,KACpCA,EAAMv8B,MAAQA,GACrByW,EAAKslB,OAAOtkC,KAAKyF,KAAKzP,MAAMyP,KAAKC,UAAUo/B,KAGxCA,IAEXe,EAAKvB,OAAOtkC,KAAK+X,GACjB8tB,EAAKvB,OAAOuB,EAAKvB,OAAO5vC,OAAS,GAAGukB,SAAU,EAE9C,IAAIxiB,IAAapC,KAAKuQ,MACtB,MAAMkhC,EAAY1B,EAAayB,EAAMpvC,EAAUpC,KAAK6vC,WACpD7vC,KAAKqwC,OAAO1kC,KAAK8lC,GACjBzxC,KAAKswC,QAAQluC,GAAYqvC,EAEzBrvC,IAAapC,KAAKuQ,MAClB,MAAMmhC,EAAY3B,EAAaplB,EAAMvoB,EAAUpC,KAAK6vC,WACpD7vC,KAAKqwC,OAAO1kC,KAAK+lC,GACjB1xC,KAAKswC,QAAQluC,GAAYsvC,EAGzB9zC,EAAOgzC,SAAU,EACjBhzC,EAAO0zC,aAGXh0B,MAAMN,EAAcK,GAChBmF,EAAgB,mBAAoBxF,EAAc,KAAMnd,OAExD,MAAM8xC,EAAkB30B,EAAa7G,IAAK/V,IACtCoiB,EAAgB,eAAgBpiB,EAAO,KAAMqkB,GAC7C,MAAM7mB,EAASoC,KAAKswC,QAAQlwC,EAAMgC,UAClC,QAAwB,IAAZxE,EACR,MAAM,IAAIqF,EACN,2EAGR,OAAOrF,IAGLg0C,EAAWv0B,EAAQ,IAAMrd,KAAK+wB,OAAOwC,IAC3C,IAAK,MAAM31B,KAAU+zC,EACjB/zC,EAAO0f,MAAQs0B,EACoB,mBAAvBh0C,EAAO0zC,YACf1zC,EAAO0zC,aAIf,OAAOM,EAGXp1B,QACIxc,KAAKiwC,OAAS,GACdjwC,KAAKowC,KAAO,GACZpwC,KAAKqwC,OAAS,GACdrwC,KAAKswC,QAAU,GACftwC,KAAKuQ,MAAQ,EAEbvQ,KAAKy1B,OAAQ,EAGjB9Y,aACI,MAAM6C,EAAS,GACTqyB,EAAW,CACbC,UAAW,CACPrB,MAAO,EACPC,MAAO,GAEXqB,QAAS,CACLtB,MAAO,EACPC,MAAO,GAEXsB,SAAU,CACNvB,MAAO,EACPC,MAAO,GAEX/rB,OAAQ,CACJ8rB,MAAO,EACPC,MAAO,GAEXN,KAAM,EACN6B,SAAU,EACVC,aAAc,EACdxgB,MAAO,GAGLA,EAAQtgB,KAAKzP,MAAMyP,KAAKC,UAAUwgC,IACxC,IAAK,MAAM7xB,KAASpjB,OAAOyJ,OAAOrG,KAAKwf,QAAS,CAC5C,MAAM,KAAE/iB,GAASujB,EACjBR,EAAO/iB,GAAQ2U,KAAKzP,MAAMyP,KAAKC,UAAUwgC,IAG7C,IAAK,MAAMj0C,KAAUhB,OAAOyJ,OAAOrG,KAAKswC,SAAU,CAC9C,IAAIprB,EAAa,KACjB,GAAItnB,aAAkB2xC,EAClBrqB,EAAa,aACV,GAAItnB,aAAkB0xC,EACzBpqB,EAAa,YACV,MAAItnB,aAAkB4xC,GAGzB,MAAM,IAAIrsC,8BACsB+hB,MAHhCA,EAAa,MAOjB,MAAMlF,EAAQpiB,EAAOoiB,MAAMvjB,KAC3B,GAAmB,QAAfyoB,EACA1F,EAAOQ,GAAOowB,OACd5wB,EAAOQ,GAAOiyB,WACdzyB,EAAOQ,GAAO0R,YACX,CACH,MAAM,UAAEvM,GAAcvnB,EAGtB,GAFA4hB,EAAOQ,GAAOmF,GAAWD,KAEN,UAAfA,EAAwB,CACxB,MAAM6rB,EAAYn0C,OAAOke,KAAKld,EAAOqyC,QAChCpe,KAAK,CAACrsB,EAAGC,KAAOD,GAAKC,GAAG0Q,IAAIoL,IAAOA,GAExC,IAAI4wB,EAAepB,EAAU,GACzBqB,GAAU,EAEd,IAAK,MAAMttB,KAAYisB,EAAW,CAC9B,GAAIqB,EAAS,CACT,MAAMF,EAAeptB,EAAWqtB,EAAe,EAC/C3yB,EAAOQ,GAAOkyB,cAAgBA,EAC9B1yB,EAAOQ,GAAO0R,OAASwgB,EAE3BE,GAAWx0C,EAAOqyC,OAAOnrB,GAAUF,QACnCutB,EAAertB,EAEXstB,IACA5yB,EAAOQ,GAAOiyB,WACdzyB,EAAOQ,GAAO0R,SAItB,MAAM2gB,EAAUtB,EAAUA,EAAU1wC,OAAS,GAC7C,GAAIgyC,IAAYryC,KAAK2e,YAAc/gB,EAAOqyC,OAAOoC,GAASztB,QAAS,CAC/D,MAAMstB,EAAelyC,KAAK2e,UAAY0zB,EACtC7yB,EAAOQ,GAAOkyB,cAAgBA,EAC9B1yB,EAAOQ,GAAO0R,OAASwgB,QAG3B1yB,EAAOQ,GAAOiyB,WACdzyB,EAAOQ,GAAO0R,SAK1B,IAAK,MAAM1R,KAASpjB,OAAOke,KAAK0E,GAC5B,IAAK,MAAM/hB,KAAOb,OAAOke,KAAK0E,EAAOQ,IACjC,GAAoC,iBAAxBR,EAAOQ,GAAOviB,GACtB,IAAK,MAAMynB,KAActoB,OAAOke,KAAK0E,EAAOQ,GAAOviB,IAC/Ci0B,EAAMj0B,GAAKynB,IAAe1F,EAAOQ,GAAOviB,GAAKynB,QAGjDwM,EAAMj0B,IAAQ+hB,EAAOQ,GAAOviB,GAKxC,OAAO,IAAIu1B,EAAWxT,EAAQkS,GAGlC9c,IAAIoI,GACAwF,EAAgB,iBAAkBxF,EAAc,KAAMnd,OACtD,MAAMyyC,EAAc,CAChBrC,OAAQ,GACRI,OAAQ,GACRD,KAAM,IAGV,SAASmC,EAAkBnY,EAAa9U,GACpC,MAAMktB,GAAUltB,EACVnoB,EAAQ6C,KAAKiiB,WAAWqD,GAU9B,OARA9C,EAAgB,eAAgBgwB,EAAQ,UAAW,MACnDhwB,EAAgB,kBAAmBrlB,EAAO,SAAU,MAEpDi9B,EAAYzuB,KAAK,CACbulC,QAASsB,EACTr1C,UAGGi9B,EAGX,IAAK,MAAMh6B,KAAS4c,EAAc,CAC9BwF,EAAgB,eAAgBpiB,EAAO,KAAMqkB,GAC7CjC,EAAgB,kBAAmBpiB,EAAMgC,SAAU,YAAa,MAChEogB,EAAgB,cAAepiB,EAAM8T,MAAO,UAAW,MACvDsO,EAAgB,mBAAoBpiB,EAAM6hB,WAAY,KAAMrlB,QAC5D4lB,EAAgB,cAAepiB,EAAM4f,MAAO,KAAM/D,GAElD,MAAMgG,EAAarlB,OAAOke,KAAK1a,EAAM6hB,YAChCkY,OAAOoY,EAAkB70C,KAAK0C,GAAQ,IACrC4wC,EAAkB5wC,EAAM4f,MAAMiC,WAAWkY,OAAO,CAACC,EAAa6W,KAChE7W,EAAY6W,EAAUxgC,IAAMwgC,EACrB7W,GACR,IAGH,GAAyB,QAArBh6B,EAAM8kB,WACNotB,EAAYlC,KAAKzkC,KAAK,CAClBsW,aACA/N,MAAO9T,EAAM8T,MACbm9B,SAAUjxC,EAAM4f,MAAMvP,GACtB6M,MAAO,QAER,CACHkF,EAAgB,iBAAkBpiB,EAAMykB,SAAU,UAAW,MAC7DrC,EAAgB,eAAgBpiB,EAAMukB,OAAQ,KAAM9kB,OAEpD,IAAK,MAAM4yC,KAASryC,EAAMukB,OACtBnC,EAAgB,mBAAoBiwB,EAAO,SAAU,MAGzD,IAAK71C,OAAOyJ,OAAOqR,GAAanE,SAASnT,EAAM+kB,WAC3C,MAAM,IAAIliB,EACN,mCACSmO,KAAKC,UAAUzU,OAAOyJ,OAAOqR,OAI9C,GAAyB,UAArBtX,EAAM8kB,WACNotB,EAAYrC,OAAOtkC,KAAK,CACpBsW,aACA/N,MAAO9T,EAAM8T,MACboJ,MAAO,EACP+zB,SAAUjxC,EAAM4f,MAAMvP,GACtBoU,SAAUzkB,EAAMykB,WAAY,EAC5BF,OAAQ,IAAIvkB,EAAMukB,QAClB1kB,KAAMG,EAAM+kB,UACZ9F,QAAS,QAEV,IAAyB,UAArBjf,EAAM8kB,WAmBb,MAAM,IAAIjiB,EACN,kCACSmO,KAAKC,UAAUzU,OAAOyJ,OAAOiR,OApB1Cg7B,EAAYjC,OAAO1kC,KAAK,CACpBsW,WAAYA,EACPlS,OAAOg3B,IAASiK,EAAgBjK,EAAKmK,SAASpvB,SACnD5N,MAAO9T,EAAM8T,MACboJ,MAAO,EACP+zB,SAAUjxC,EAAM4f,MAAMvP,GACtBw/B,OAAQ,CAAC,CACLhuB,WAAYA,EACPlS,OAAOg3B,GAAQiK,EAAgBjK,EAAKmK,SAASpvB,SAClD5N,MAAO9T,EAAM8T,MACb2Q,SAAUzkB,EAAMykB,WAAY,EAC5BD,SAAS,EACTD,OAAQ,IAAIvkB,EAAMukB,QAClB1kB,KAAMG,EAAM+kB,UACZ9F,QAAS,QAa7Brf,KAAK4uC,OAAO0D,GAGhBp1B,OAAOF,EAAc5Q,EAAG6Q,GACpBuF,EAAgB,oBAAqBxF,EAAc,KAAMnd,OACzD2iB,EAAgB,eAAgBpW,EAAG,SAAU,MAC7CoW,EAAgB,eAAgBvF,EAAG,SAAU,MAE7C,IAAIy1B,EAAkB,KAClBC,EAAe,KACnB,IAAK,MAAMvyC,KAAS4c,EAAc,CAE9B,GADAwF,EAAgB,eAAgBpiB,EAAO,KAAMqkB,GACzCrkB,EAAMwkB,QAAS,SAEnB,MAAMhnB,EAASoC,KAAKswC,QAAQlwC,EAAMgC,UAClC,QAAwB,IAAZxE,EACR,MAAM,IAAIqF,EACN,2EAIR,MAAM2vC,EAAWh1C,EAAOmD,YAAY6xC,SAASxyC,EAAMukB,OAAQvY,EAAG6Q,GAC7C,OAAb21B,IAA0C,OAApBF,GAA4BE,EAAWF,KAC7DA,EAAkBE,EAClBD,EAAevyC,GAIvB,MAAO,CACHA,MAAOuyC,EACPC,SAAUF,MA3uB1B,I,6BCRA,IAAIhmC,EAAQ,EAAQ,GAEpBzQ,EAAOD,QAAU,SAAUyK,EAAawU,GACtC,IAAIQ,EAAS,GAAGhV,GAChB,OAAQgV,IAAW/O,EAAM,WAEvB+O,EAAOpf,KAAK,KAAM4e,GAAY,WAAc,MAAM,GAAM,O,gCCE5D,MACI,MAAMwJ,EAAc/jB,EAAQ,KACtB,gBAAE8hB,GAAoB9hB,EAAQ,KAC9B,YACFgX,EADE,WAEFJ,EAFE,cAGFN,GACAtW,EAAQ,KAEN,UACFwC,EADE,cAEFD,EAFE,eAGFE,GACAzC,EAAQ,IAEN,MAAEub,GAAUvb,EAAQ,IAG1B,SAAS+uC,EAAmBv7B,EAAO7D,GAC/B,MAAM+M,EAAc,IAAIqH,EAAYpU,GASpC,OAPA+M,EAAYsI,OAAS,CACjBpJ,KAAMtc,KAAKsc,KAAK5e,KAAKsC,KAAMkU,EAAOkJ,GAClC1M,OAAQ1Q,KAAK0Q,OAAOhT,KAAKsC,MACzBwlB,GAAIxlB,KAAKwlB,GAAG9nB,KAAKsC,KAAMkU,EAAOkJ,GAC9BqI,KAAMzlB,KAAKylB,KAAK/nB,KAAKsC,KAAMkU,EAAOkJ,IAG/BA,EAGX,SAASy1B,EAAoB1tB,EAAWR,GACpC,GAAIQ,IAAczN,EAAYC,WAC1B,GAAIgN,EAAOtkB,OAAS,GAAM,EACtB,MAAM,IAAI6C,2CACmCyhB,EAAOtkB,OAAS,UAG9D,GAAI8kB,IAAczN,EAAYE,SACjC,GAAI+M,EAAOtkB,OAAS,EAAI,EACpB,MAAM,IAAI6C,kDAC0CyhB,EAAOtkB,OAAS,UAGrE,GAAI8kB,IAAczN,EAAYG,UACjC,GAAI8M,EAAOtkB,OAAS,EAAI,EACpB,MAAM,IAAI6C,mDAC2CyhB,EAAOtkB,OAAS,SAGtE,IAAI8kB,IAAczN,EAAYI,OAOjC,MAAM,IAAI7U,kDAC0CkiB,KAPpD,GAAIR,EAAOtkB,OAAS,EAAI,EACpB,MAAM,IAAI6C,iDACyCyhB,EAAOtkB,OAAS,MAU/E,SAASyyC,EAAe3tB,EAAWR,GAI/B,GAAIQ,IAAczN,EAAYI,OAC1B,OAAO,EAGX,IAAIi7B,EAAOx0B,OAAOy0B,iBACdC,EAAO10B,OAAO20B,iBACdC,EAAO50B,OAAOy0B,iBACdI,EAAO70B,OAAO20B,iBAElB,IAAK,IAAIh3C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAS,EAAGnE,GAAK,EACxC62C,EAAO30C,KAAKud,IAAIo3B,EAAMpuB,EAAOzoB,IAC7B+2C,EAAO70C,KAAKm1B,IAAI0f,EAAMtuB,EAAOzoB,IAC7Bi3C,EAAO/0C,KAAKud,IAAIw3B,EAAMxuB,EAAOzoB,EAAI,IACjCk3C,EAAOh1C,KAAKm1B,IAAI6f,EAAMzuB,EAAOzoB,EAAI,IAGrC,GAAIipB,IAAczN,EAAYG,SAAU,CAMpC,OALezZ,KAAKm1B,IAChB0f,EAAOF,EACPK,EAAOD,IAtBU,EA6BzB,OADcF,EAAOF,IAASK,EAAOD,IA3Bd,EA+B3B,SAASE,EAAuBl2C,EAAO4pC,GACnC,MAAM,OAAE1gC,GAAW0gC,EACb9mC,EAAO8mC,EAAK/kB,UAElB,GAAuB,iBAAX7kB,EACR,MAAM,IAAI8F,8DACuD9F,KAIrE,OAAI8C,IAAS+W,EAAcI,QACfja,IAAUkJ,EAAO,KACjBlJ,IAAUkJ,EAAO,QACdlJ,GAASkJ,EAAO,KAAOA,EAAO,IAGzCpG,IAAS+W,EAAcC,SAChB,CAAC,OAAQ,SAAS1D,SAASpW,EAAM4pB,eAGrC1gB,EAAOkN,SAASpW,GAG3B,MAAMm2C,EACFvyC,YAAYsP,EAAMjO,EAAUytC,GACxB7vC,KAAKuzC,WAAa1D,EAAUrwB,OAC5Bxf,KAAKoC,SAAWA,EAChBpC,KAAKilB,SAAW5U,EAAKI,GACrBzQ,KAAKsd,MAAQjN,EAAKiN,MAClBtd,KAAKggB,MAAQhgB,KAAKuzC,WAAWljC,EAAKghC,UAClCrxC,KAAKkU,MAAQ7D,EAAK6D,MAClBlU,KAAK4wC,SAAU,EACf5wC,KAAK+kB,MAAO,EACZ/kB,KAAKiiB,WAAa5R,EAAK4R,WAAWkY,OAAO,CAACqZ,EAAsBzM,KAC5DyM,EAAqBzM,EAAKmK,SAAWnK,EAAK5pC,MACnCq2C,GACR,IACHxzC,KAAKyzC,wBAAwBzzC,KAAKggB,OAElC6vB,EAAU9e,OAAOwC,IAAMn1B,KAAKm1B,IAAIsc,EAAU9e,OAAOwC,IAAKvzB,KAAKsd,OAG/Dm2B,wBAAwBzzB,GACpB,MAAMgxB,EAAkBhxB,EAAMiC,WAC9B,IAAK,MAAMgvB,KAAaD,EACdC,EAAUxgC,MAAMzQ,KAAKiiB,aACvBjiB,KAAKiiB,WAAWgvB,EAAUxgC,IAAMwgC,EAAUlvB,cAKtDrR,OAAO6U,GAKH,OAJKvlB,KAAK+kB,OAAQQ,IACdvlB,KAAK4wC,SAAU,IAGZ,GAIf,MAAM8C,UAAcJ,EAChBvyC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAUytC,GAEtB7vC,KAAK0uC,UAAYmB,EAAUnB,UAC3B1uC,KAAKuwC,YAAcV,EAAUU,YAE7BvwC,KAAKglB,MAAQA,EACbhlB,KAAKmlB,UAAY,KAGrBwuB,MAAMz/B,GAMF,OALAlU,KAAKuwC,YAAYr8B,GAASlU,KAAKuwC,YAAYr8B,IAAU,CACjDqf,IAAK,EACL5X,IAAK,GAGF3b,KAAKuwC,YAAYr8B,GAG5BoI,OACI,MAAM,IAAInZ,EACN,sBAIRpG,MACI,MAAM,IAAIoG,EACN,sBAIRqe,SACI,MAAM,IAAIre,EACN,sBAKRqiB,GAAGtR,EAAOkJ,GACN,MAAMw2B,EAAI5zC,KAAK2zC,MAAMz/B,GACrB0/B,EAAErgB,MACFnW,EAAYmD,OAASqzB,EAAErgB,IAI3B9N,KAAKvR,EAAOkJ,GACR,MAAMw2B,EAAI5zC,KAAK2zC,MAAMz/B,GACrB0/B,EAAEj4B,MACFyB,EAAYmD,OAASqzB,EAAEj4B,KAI/B,MAAM4zB,UAAcmE,EAChB3yC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAK2kB,OAAStU,EAAKsU,OACnB3kB,KAAK6kB,SAAWxU,EAAKwU,SACrB7kB,KAAKugB,OAASlQ,EAAKgP,QAEnB,MAAMu0B,EAAI5zC,KAAK2zC,MAAM3zC,KAAKkU,OAC1B0/B,EAAErgB,IAAMn1B,KAAKm1B,IAAIqgB,EAAErgB,IAAKvzB,KAAKugB,QAAU,GACvCqzB,EAAEj4B,IAAMvd,KAAKud,IAAIi4B,EAAEj4B,IAAK3b,KAAKugB,QAAU,GAI3CiB,SACI,MAAO,CACHvhB,KAAMD,KAAKmlB,UACX/iB,SAAUpC,KAAKoC,SACfyiB,SAAU7kB,KAAK6kB,SACfxF,QAASrf,KAAKugB,OACdoE,OAAQ,IAAI3kB,KAAK2kB,QACjB1C,WAAYrlB,OAAOke,KAAK9a,KAAKiiB,YAAYkY,OAAO,CAACqZ,EAAsBK,KACnEL,EAAqB7nC,KAAK,CACtBulC,QAAS2C,EACT12C,MAAO6C,KAAKiiB,WAAW4xB,KAGpBL,GACR,IACH/iC,GAAIzQ,KAAKilB,SACT/Q,MAAOlU,KAAKkU,MACZm9B,SAAUrxC,KAAKggB,MAAMvP,GACrB6M,MAAOtd,KAAKsd,OAKpBvgB,IAAImX,GACA,GAAIA,IAAUlU,KAAKkU,MACf,MAAM,IAAI/Q,EACN,oDAIR,MAAO,CACH+hB,WAAY5N,EAAWE,MACvB2N,UAAWnlB,KAAKmlB,UAChB/iB,SAAUpC,KAAKoC,SACf6iB,SAAUjlB,KAAKilB,SACfJ,SAAU7kB,KAAK6kB,SACfE,KAAM/kB,KAAK+kB,KACXxE,OAAQvgB,KAAKugB,OACboE,OAAQ,IAAI3kB,KAAK2kB,QACjB1C,WAAYrlB,OAAOwY,OAAO,GAAIpV,KAAKiiB,YACnCjC,MAAOhgB,KAAKggB,MACZ1C,MAAOtd,KAAKsd,MACZ0H,MAAOhlB,KAAKglB,OAIpB1I,KAAKpI,EAAO7D,GACR,GAAI6D,IAAUlU,KAAKkU,MACf,MAAM,IAAI/Q,EACN,oDAIR,GAAInD,KAAK+kB,MAAQ1U,EAAK0U,KAClB,OAAO0qB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,IAIzD,MAAM4/B,EAAO9zC,KAAKjD,IAAImX,GAChB6/B,EAAU1jC,EAAK+U,YASrB,GAPI2uB,EAAQ/zB,QACRwC,EAAgB,QAASnS,EAAK2P,MAAO,KAAM/D,GAC3C63B,EAAK9zB,MAAQ3P,EAAK2P,MAClB8zB,EAAK7xB,WAAa,GAClBjiB,KAAKyzC,wBAAwBp3C,KAAKy3C,EAAMA,EAAK9zB,QAG7C+zB,EAAQ9xB,WAAY,CACpB,MAAM+uB,EAAkB8C,EAAK9zB,MAAMiC,WAC9BkY,OAAO,CAACC,EAAaj9B,KAClBi9B,EAAYj9B,EAAMsT,IAAMtT,EACjBi9B,GACR,IAEP,IAAK,MAAM9U,KAAU1oB,OAAOke,KAAKzK,EAAK4R,YAAa,CAC/C,MAAM9kB,EAAQkT,EAAK4R,WAAWqD,GAC9B,KAAIA,KAAU0rB,GACPqC,EAAuBl2C,EAAO6zC,EAAgB1rB,KAGjD,MAAM,IAAIriB,8CACsCqiB,eAAoBnoB,KAHpE22C,EAAK7xB,WAAWqD,GAAUnoB,GAStC,GAAI42C,EAAQpvB,OAAQ,CAChBnC,EAAgB,SAAUnS,EAAKsU,OAAQ,KAAM9kB,OAC7CgzC,EAAoB7yC,KAAKmlB,UAAW9U,EAAKsU,QAGzC,MAAM,MAAE4oB,EAAF,OAASC,GAAWxtC,KAAK0uC,UAAUx6B,GACnC8/B,EAAY,GAClB,IAAK,IAAI93C,EAAI,EAAGA,EAAImU,EAAKsU,OAAOtkB,OAAS,EAAGnE,GAAK,EAAG,CAChD,MAAMkQ,EAAIiE,EAAKsU,OAAOzoB,GAChB+gB,EAAI5M,EAAKsU,OAAOzoB,EAAI,GAE1BsmB,EAAgB,aAAcpW,EAAG,SAAU,MAC3CoW,EAAgB,aAAcvF,EAAG,SAAU,MAE3C+2B,EAAUroC,KACNvN,KAAKk1B,MAAMlnB,EAAG,EAAGmhC,GACjBnvC,KAAKk1B,MAAMrW,EAAG,EAAGuwB,IAIrBsF,EAAe9yC,KAAKmlB,UAAW6uB,KAC/BF,EAAKnvB,OAASqvB,GAwBtB,GApBID,EAAQlvB,WACRrC,EAAgB,WAAYnS,EAAKwU,SAAU,UAAW,MACtDivB,EAAKjvB,SAAWxU,EAAKwU,UAGrBkvB,EAAQz2B,QACRkF,EAAgB,QAASnS,EAAKiN,MAAO,UAAW,MAChDw2B,EAAKx2B,MAAQjN,EAAKiN,OAGlBy2B,EAAQxzB,SACRiC,EAAgB,SAAUnS,EAAKkQ,OAAQ,UAAW,MAClDuzB,EAAKvzB,OAASlQ,EAAKkQ,QAGnBwzB,EAAQhvB,OACRvC,EAAgB,OAAQnS,EAAK0U,KAAM,UAAW,MAC9C+uB,EAAK/uB,KAAO1U,EAAK0U,MAGjBgvB,EAAQ/uB,MAAO,CAEf,GADAxC,EAAgB,QAASnS,EAAK2U,MAAO,SAAU,MAC3C,kBAAkB8M,KAAKzhB,EAAK2U,OAC5B,MAAM,IAAI/hB,+BACuBoN,EAAK2U,UAI1C8uB,EAAK9uB,MAAQ3U,EAAK2U,MAItB+uB,EAAQ12B,QACR,IAAK,MAAMkF,KAAQ3lB,OAAOke,KAAKg5B,GACvBvxB,KAAQviB,OACRA,KAAKuiB,GAAQuxB,EAAKvxB,IAI1B,OAAOktB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,KAI7D,MAAMo7B,UAAcoE,EAChB3yC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKiwC,OAAS5/B,EAAK4/B,OAAO9V,OAAO,CAAC8Z,EAAkB92C,KAChD82C,EAAiB92C,EAAM+W,OAAS,CAC5B+Q,SAAU9nB,EAAMsT,GAChBoU,SAAU1nB,EAAM0nB,SAChBtE,OAAQpjB,EAAMkiB,QACdsF,OAAQxnB,EAAMwnB,OACdC,QAASznB,EAAMynB,QACf3C,WAAY9kB,EAAM8kB,WAAWkY,OAAO,CAACqZ,EAAsBzM,KACvDyM,EAAqBzM,EAAKmK,SAAWnK,EAAK5pC,MACnCq2C,GACR,KAGP,MAAMI,EAAI5zC,KAAK2zC,MAAMx2C,EAAM+W,OAI3B,OAHA0/B,EAAErgB,IAAMn1B,KAAKm1B,IAAIqgB,EAAErgB,IAAKp2B,EAAMkiB,SAC9Bu0B,EAAEj4B,IAAMvd,KAAKud,IAAIi4B,EAAEj4B,IAAKxe,EAAMkiB,SAEvB40B,GACR,IAEHj0C,KAAKwuC,MAAQ,GAIjBhtB,SACI,MAAMwvB,EAAkBhxC,KAAKggB,MAAMiC,WAAWkY,OAAO,CAACC,EAAa6W,KAC/D7W,EAAY6W,EAAUxgC,IAAMwgC,EACrB7W,GACR,IAEH,MAAO,CACHh4B,SAAUpC,KAAKoC,SACfqO,GAAIzQ,KAAKilB,SACT/Q,MAAOlU,KAAKkU,MACZm9B,SAAUrxC,KAAKggB,MAAMvP,GACrB6M,MAAOtd,KAAKsd,MACZ2E,WAAYrlB,OAAOke,KAAK9a,KAAKiiB,YAAYkY,OAAO,CAACqZ,EAAsBK,KAC9D7C,EAAgB6C,GAAQ/xB,SACzB0xB,EAAqB7nC,KAAK,CACtBulC,QAAS2C,EACT12C,MAAO6C,KAAKiiB,WAAW4xB,KAIxBL,GACR,IACHvD,OAAQrzC,OAAOke,KAAK9a,KAAKiwC,QAAQ9V,OAAO,CAAC+Z,EAAmBhgC,KACxDggC,EAAkBvoC,KAAK,CACnB1L,KAAMD,KAAKmlB,UACXN,SAAU7kB,KAAKiwC,OAAO/7B,GAAO2Q,SAC7BxF,QAASrf,KAAKiwC,OAAO/7B,GAAOqM,OAC5BoE,OAAQ,IAAI3kB,KAAKiwC,OAAO/7B,GAAOyQ,QAC/BC,QAAS5kB,KAAKiwC,OAAO/7B,GAAO0Q,QAC5B3C,WAAYrlB,OAAOke,KAAK9a,KAAKiwC,OAAO/7B,GAAO+N,YACtCkY,OAAO,CAACqZ,EAAsBK,KACvB7C,EAAgB6C,GAAQ/xB,SACxB0xB,EAAqB7nC,KAAK,CACtBulC,QAAS2C,EACT12C,MAAO6C,KAAKiwC,OAAO/7B,GAAO+N,WAAW4xB,KAItCL,GACR,IACP/iC,GAAIzQ,KAAKiwC,OAAO/7B,GAAO+Q,SACvB/Q,OAAQA,IAGLggC,GACR,KAKXn3C,IAAImX,GACA,KAAMA,KAASlU,KAAKwuC,OAAQ,CACxB,MAAM2F,EAAgBv3C,OAAOwY,OACzB,GAAIpV,KAAKo0C,YAAYlgC,GACrB,CACI+N,WAAYjiB,KAAKq0C,cAAcngC,GAC/BoJ,MAAOtd,KAAKsd,MACZ4H,WAAY5N,EAAWG,MACvB0N,UAAWnlB,KAAKmlB,UAChB/iB,SAAUpC,KAAKoC,SACf6iB,SAAUjlB,KAAKilB,SACfF,KAAM/kB,KAAK+kB,KACXC,MAAOhlB,KAAKglB,QAIpBhlB,KAAKwuC,MAAMt6B,GAASigC,EAGxB,MAAM/uC,EAASgM,KAAKzP,MAAMyP,KAAKC,UAAUrR,KAAKwuC,MAAMt6B,KAEpD,OADA9O,EAAO4a,MAAQhgB,KAAKggB,MACb5a,EAGXkvC,gBAAgBC,GACZ,MAAMxgC,EAASnX,OAAOke,KAAK9a,KAAKiwC,QAAQ95B,IAAIjC,IAAUA,GACtD,IAAIsgC,EAAQj2B,OAAOy0B,iBACfyB,EAAQl2B,OAAOy0B,iBAEnB,IAAK,MAAM9+B,KAASH,EAAQ,CACxB,MAAM2gC,EAAOt2C,KAAKu2C,IAAIJ,EAAcrgC,GAChCA,GAASqgC,GAAeG,EAAOF,EAC/BA,EAAQE,EACDA,EAAOD,IACdA,EAAQC,GAOhB,MAAO,CACHE,UAJcJ,IAAUj2B,OAAOy0B,iBAAmB,KAAOuB,EAAcC,EAKvEK,WAJeJ,IAAUl2B,OAAOy0B,iBAAmB,KAAOuB,EAAcE,GAQhFJ,cAAcE,GACV,MAAMnvC,EAAS,GAGf,IAAK,MAAMkgB,KAAUtlB,KAAKiiB,WAClBrlB,OAAOkB,UAAUC,eAAe1B,KAAK2D,KAAKiiB,WAAYqD,KACtDlgB,EAAOkgB,GAAUtlB,KAAKiiB,WAAWqD,IAKzC,MAAMvR,EAASnX,OAAOke,KAAK9a,KAAKiwC,QAAQpe,KAAK,CAACrsB,EAAGC,KAAOD,GAAKC,GAC7D,IAAK,MAAMyO,KAASH,EAChB,GAAIG,GAASqgC,EAAa,CACtB,MAAM,WAAEtyB,GAAejiB,KAAKiwC,OAAO/7B,GAEnC,IAAK,MAAMoR,KAAUrD,EACbrlB,OAAOkB,UAAUC,eAAe1B,KAAK4lB,EAAYqD,KACjDlgB,EAAOkgB,GAAUrD,EAAWqD,IAM5C,OAAOlgB,EAGXkX,KAAKpI,EAAO7D,GACR,GAAIrQ,KAAK+kB,MAAQ1U,EAAK0U,KAClB,OAAO0qB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,IAIzD,MAAM4/B,EAAOl3C,OAAOwY,OAAOpV,KAAKjD,IAAImX,IACpC4/B,EAAK7xB,WAAarlB,OAAOwY,OAAO0+B,EAAK7xB,YACrC6xB,EAAKnvB,OAAS,IAAImvB,EAAKnvB,QAEvB,MAAMovB,EAAU1jC,EAAK+U,YACrB,IAAI0vB,GAAkB,EAElBf,EAAQ/zB,QACRwC,EAAgB,QAASnS,EAAK2P,MAAO,KAAM/D,GAC3C63B,EAAK9zB,MAAQ3P,EAAK2P,MAClB8zB,EAAK7xB,WAAa,GAGlBjiB,KAAKyzC,wBAAwBp3C,KAAKy3C,EAAMA,EAAK9zB,QAGjD,MAAMgxB,EAAkB8C,EAAK9zB,MAAMiC,WAC9BkY,OAAO,CAACC,EAAaj9B,KAClBi9B,EAAYj9B,EAAMsT,IAAMtT,EACjBi9B,GACR,IAEP,GAAI2Z,EAAQ9xB,WACR,IAAK,MAAMqD,KAAU1oB,OAAOke,KAAKzK,EAAK4R,YAAa,CAC/C,MAAM9kB,EAAQkT,EAAK4R,WAAWqD,GAC9B,KAAIA,KAAU0rB,GACPqC,EAAuBl2C,EAAO6zC,EAAgB1rB,KAGjD,MAAM,IAAIriB,8CACsCqiB,eAAoBnoB,KAHpE22C,EAAK7xB,WAAWqD,GAAUnoB,EAStC,GAAI42C,EAAQpvB,OAAQ,CAChBnC,EAAgB,SAAUnS,EAAKsU,OAAQ,KAAM9kB,OAC7CgzC,EAAoB7yC,KAAKmlB,UAAW9U,EAAKsU,QAGzC,MAAM,MAAE4oB,EAAF,OAASC,GAAWxtC,KAAK0uC,UAAUx6B,GACnC8/B,EAAY,GAClB,IAAK,IAAI93C,EAAI,EAAGA,EAAImU,EAAKsU,OAAOtkB,OAAS,EAAGnE,GAAK,EAAG,CAChD,MAAMkQ,EAAIiE,EAAKsU,OAAOzoB,GAChB+gB,EAAI5M,EAAKsU,OAAOzoB,EAAI,GAE1BsmB,EAAgB,aAAcpW,EAAG,SAAU,MAC3CoW,EAAgB,aAAcvF,EAAG,SAAU,MAE3C+2B,EAAUroC,KACNvN,KAAKk1B,MAAMlnB,EAAG,EAAGmhC,GACjBnvC,KAAKk1B,MAAMrW,EAAG,EAAGuwB,IAIrBsF,EAAe9yC,KAAKmlB,UAAW6uB,KAC/BF,EAAKnvB,OAASqvB,EACdc,GAAkB,GAgC1B,GA5BIf,EAAQlvB,WACRrC,EAAgB,WAAYnS,EAAKwU,SAAU,UAAW,MACtDivB,EAAKjvB,SAAWxU,EAAKwU,SACrBiwB,GAAkB,GAGlBf,EAAQnvB,UACRpC,EAAgB,UAAWnS,EAAKuU,QAAS,UAAW,MACpDkvB,EAAKlvB,QAAUvU,EAAKuU,QACpBkwB,GAAkB,GAGlBf,EAAQz2B,QACRkF,EAAgB,QAASnS,EAAKiN,MAAO,UAAW,MAChDw2B,EAAKx2B,MAAQjN,EAAKiN,OAGlBy2B,EAAQxzB,SACRiC,EAAgB,SAAUnS,EAAKkQ,OAAQ,UAAW,MAClDuzB,EAAKvzB,OAASlQ,EAAKkQ,OACnBu0B,GAAkB,GAGlBf,EAAQhvB,OACRvC,EAAgB,OAAQnS,EAAK0U,KAAM,UAAW,MAC9C+uB,EAAK/uB,KAAO1U,EAAK0U,MAGjBgvB,EAAQ/uB,MAAO,CAEf,GADAxC,EAAgB,QAASnS,EAAK2U,MAAO,SAAU,MAC3C,kBAAkB8M,KAAKzhB,EAAK2U,OAC5B,MAAM,IAAI/hB,+BACuBoN,EAAK2U,UAI1C8uB,EAAK9uB,MAAQ3U,EAAK2U,MAGlB+uB,EAAQjvB,UAERtC,EAAgB,WAAYnS,EAAKyU,SAAU,UAAW,MAI1D,IAAK,MAAMvC,KAAQ3lB,OAAOke,KAAKg5B,GACvBvxB,KAAQviB,OACRA,KAAKuiB,GAAQuxB,EAAKvxB,IAGtBviB,KAAKwuC,MAAMt6B,GAAOqO,GAAQuxB,EAAKvxB,GAGnC,GAAIwxB,EAAQ9xB,WAER,IAAK,MAAMqD,KAAU1oB,OAAOke,KAAKg5B,EAAK7xB,YAC7B+uB,EAAgB1rB,GAAQxD,UACzB9hB,KAAKiwC,OAAO/7B,GAAO+N,WAAWqD,GAAUjV,EAAK4R,WAAWqD,GACxDtlB,KAAKiwC,OAAO/7B,GAAO+N,WAAWqD,GAAUjV,EAAK4R,WAAWqD,IAKpE,GAAIyuB,EAAQ/zB,MACR,IAAK,MAAMywB,KAAS7zC,OAAOyJ,OAAOrG,KAAKiwC,QACnCQ,EAAMxuB,WAAa,GAK3B,GAAI8xB,EAAQjvB,WAAazU,EAAKyU,SAAU,CAEpC,IAAK,MAAMiwB,KAAc/0C,KAAKwuC,OACrBuG,EAAa7gC,UACPlU,KAAKwuC,MAAMuG,GAQ1B,OAJA/0C,KAAKwuC,MAAMt6B,GAAO4Q,UAAW,SACtB9kB,KAAKiwC,OAAO/7B,GACnB6/B,EAAQ12B,QAEDoyB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,IAIzD,GAAI4gC,GAAoBf,EAAQjvB,UAAYzU,EAAKyU,SAAW,CAExD,IAAK,MAAMiwB,KAAc/0C,KAAKwuC,OACrBuG,EAAa7gC,UACPlU,KAAKwuC,MAAMuG,GAgB1B,GAZA/0C,KAAKwuC,MAAMt6B,GAAO4Q,UAAW,EAC7BzU,EAAKyU,UAAW,EAEhB9kB,KAAKiwC,OAAO/7B,GAAS,CACjBA,QACAqM,OAAQuzB,EAAKvzB,OACboE,OAAQmvB,EAAKnvB,OACbC,QAASkvB,EAAKlvB,QACdC,SAAUivB,EAAKjvB,SACf5C,WAAY,IAGZ8xB,EAAQ9xB,WAER,IAAK,MAAMqD,KAAU1oB,OAAOke,KAAKg5B,EAAK7xB,YAC9B+uB,EAAgB1rB,GAAQxD,UACxB9hB,KAAKiwC,OAAO/7B,GAAO+N,WAAWqD,GAAUjV,EAAK4R,WAAWqD,GACxDtlB,KAAKiwC,OAAO/7B,GAAO+N,WAAWqD,GAAUjV,EAAK4R,WAAWqD,IAQxE,OAFAyuB,EAAQ12B,QAEDoyB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,IAGzDkgC,YAAYG,GACR,MAAM,UACFK,EADE,WAEFC,GACA70C,KAAKs0C,gBAAgBC,GAEnBS,EAAgBz2B,OAAOC,UAAUq2B,GAAc70C,KAAKiwC,OAAO4E,GAAc,KACzEI,EAAe12B,OAAOC,UAAUo2B,GAAa50C,KAAKiwC,OAAO2E,GAAa,KAE5E,GAAIK,GAAgBL,IAAcL,EAC9B,MAAO,CACH5vB,OAAQ,IAAIswB,EAAatwB,QACzBE,SAAUowB,EAAapwB,SACvBD,QAASqwB,EAAarwB,QACtBrE,OAAQ00B,EAAa10B,OACrBuE,UAAU,GAIlB,GAAIkwB,GAAiBC,EACjB,OAAOr4C,OAAOwY,OAAO,GAAIpV,KAAKk1C,oBAC1BD,EACAD,GACCT,EAAcK,IAAcC,EAAaD,IAC3C,CACC9vB,UAAU,IAIlB,GAAIkwB,EACA,MAAO,CACHrwB,OAAQ,IAAIqwB,EAAcrwB,QAC1BE,SAAUmwB,EAAcnwB,SACxBD,SAAS,EACTrE,OAAQ,EACRuE,UAAU,GAIlB,GAAImwB,EACA,MAAO,CACHtwB,OAAQ,IAAIswB,EAAatwB,QACzBE,SAAUowB,EAAapwB,SACvBD,QAASqwB,EAAarwB,QACtBrE,OAAQ,EACRuE,UAAU,GAIlB,MAAM,IAAI3hB,kEAC0DnD,KAAKyQ,OAI7EC,OAAO6U,GAMH,OALKvlB,KAAK+kB,OAAQQ,IACdvlB,KAAK4wC,SAAU,EACf5wC,KAAKsxC,eAGF,EAGXA,aACItxC,KAAKwuC,MAAQ,IAsGrB,MAAMM,UAAuBS,EACzBxuC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYC,UAC7Bk7B,EAAoB7yC,KAAKmlB,UAAWnlB,KAAK2kB,QAG7C,gBAAgBA,EAAQvY,EAAG6Q,GACvB,MAAOk4B,EAAKC,EAAKC,EAAKC,GAAO3wB,EAE7B,OAAMvY,GAAK+oC,GAAO/oC,GAAKipC,GAAOp4B,GAAKm4B,GAAOn4B,GAAKq4B,EAMxCl3C,KAAKud,IAAI5P,MAAM,KAAM,CAACK,EAAI+oC,EAAKl4B,EAAIm4B,EAAKC,EAAMjpC,EAAGkpC,EAAMr4B,IAJnD,MAQnB,MAAMs4B,UAAkBhG,EACpBxuC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,IAIrC,MAAMd,UAAqBwG,EACvBx0C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYE,QAC7Bi7B,EAAoB7yC,KAAKmlB,UAAWnlB,KAAK2kB,QAG7C,gBAAgBA,EAAQvY,EAAG6Q,GACvB,SAASyG,EAAS8xB,EAAIC,EAAIC,EAAIC,GAC1B,OAASD,EAAKF,IAAOv4B,EAAIw4B,IAAOrpC,EAAIopC,IAAOG,EAAKF,GAGpD,IAAIG,EAAK,EACT,MAAMC,EAAY,GAElB,IAAK,IAAI35C,EAAI,EAAGwkC,EAAI/b,EAAOtkB,OAAS,EAAGnE,EAAIyoB,EAAOtkB,OAAS,EAAGqgC,EAAIxkC,EAAGA,GAAK,EAAG,CAEzE,MAAMs5C,EAAK7wB,EAAO+b,GACZ+U,EAAK9wB,EAAO+b,EAAI,GAGhBgV,EAAK/wB,EAAOzoB,GACZy5C,EAAKhxB,EAAOzoB,EAAI,GAKlBu5C,GAAMx4B,EACF04B,EAAK14B,GACDyG,EAAS8xB,EAAIC,EAAIC,EAAIC,GAAM,GAC3BC,IAGDD,GAAM14B,GACTyG,EAAS8xB,EAAIC,EAAIC,EAAIC,GAAM,GAC3BC,IAMR,MAMME,EAAS1pC,GANAqpC,EAAKE,GAOdI,EAAS94B,GANAy4B,EAAKF,IAQdM,EAASN,IAAOE,EAAKI,IAAY,IAC9BC,EAASN,IAAOE,EAAKI,IAAY,EAEtCF,EAAUlqC,KAAKvN,KAAK43C,KAChB53C,KAAKw7B,IAAIxtB,EAAI0pC,EAAQ,GACnB13C,KAAKw7B,IAAI3c,EAAI84B,EAAQ,KAG3BF,EAAUlqC,KACNvN,KAAKud,IACDvd,KAAK43C,KAAK53C,KAAKw7B,IAAI4b,EAAKppC,EAAG,GAAKhO,KAAKw7B,IAAI6b,EAAKx4B,EAAG,IACjD7e,KAAK43C,KAAK53C,KAAKw7B,IAAI8b,EAAKtpC,EAAG,GAAKhO,KAAKw7B,IAAI+b,EAAK14B,EAAG,MAMjE,OAAW,IAAP24B,EACOx3C,KAAKud,IAAI5P,MAAM,KAAM8pC,GAGzB,MAIf,MAAM7G,UAAsBuG,EACxBx0C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYG,SAC7Bg7B,EAAoB7yC,KAAKmlB,UAAWnlB,KAAK2kB,QAG7C,gBAAgBA,EAAQvY,EAAG6Q,GACvB,MAAM44B,EAAY,GAClB,IAAK,IAAI35C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAS,EAAGnE,GAAK,EAAG,CAE3C,MAAMs5C,EAAK7wB,EAAOzoB,GACZu5C,EAAK9wB,EAAOzoB,EAAI,GAGhBw5C,EAAK/wB,EAAOzoB,EAAI,GAChBy5C,EAAKhxB,EAAOzoB,EAAI,IAGhBkQ,EAAIopC,IAAOE,EAAKtpC,IAAO,IAAO6Q,EAAIw4B,IAAOE,EAAK14B,IAAO,EAGvD44B,EAAUlqC,KACNvN,KAAKu2C,KAAKgB,EAAKF,GAAMrpC,GAAKspC,EAAKF,GAAMv4B,EAAIy4B,EAAKD,EAAKE,EAAKH,GAAMp3C,KACzD43C,KAAK53C,KAAKw7B,IAAI+b,EAAKF,EAAI,GAAKr3C,KAAKw7B,IAAI8b,EAAKF,EAAI,KAOvDK,EAAUlqC,KACNvN,KAAKud,IACDvd,KAAK43C,KAAK53C,KAAKw7B,IAAI4b,EAAKppC,EAAG,GAAKhO,KAAKw7B,IAAI6b,EAAKx4B,EAAG,IACjD7e,KAAK43C,KAAK53C,KAAKw7B,IAAI8b,EAAKtpC,EAAG,GAAKhO,KAAKw7B,IAAI+b,EAAK14B,EAAG,MAMjE,OAAO7e,KAAKud,IAAI5P,MAAM,KAAM8pC,IAIpC,MAAM5G,UAAoBsG,EACtBx0C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYI,OAC7B+6B,EAAoB7yC,KAAKmlB,UAAWnlB,KAAK2kB,QAG7C,gBAAgBA,EAAQvY,EAAG6Q,GACvB,MAAM44B,EAAY,GAClB,IAAK,IAAI35C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EAAG,CACvC,MAAMs5C,EAAK7wB,EAAOzoB,GACZu5C,EAAK9wB,EAAOzoB,EAAI,GAEtB25C,EAAUlqC,KACNvN,KAAK43C,KAAK53C,KAAKw7B,IAAI4b,EAAKppC,EAAG,GAAKhO,KAAKw7B,IAAI6b,EAAKx4B,EAAG,KAIzD,OAAO7e,KAAKud,IAAI5P,MAAM,KAAM8pC,IAIpC,MAAM3G,UAAuBI,EACzBvuC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYC,UAC7B,IAAK,MAAM84B,KAAS7zC,OAAOyJ,OAAOrG,KAAKiwC,QACnC4C,EAAoB7yC,KAAKmlB,UAAWsrB,EAAM9rB,QAIlDuwB,oBAAoBD,EAAcD,EAAeiB,GAC7C,MAAMC,EAAiB,CACnBlB,EAAcrwB,OAAO,GAAKswB,EAAatwB,OAAO,GAC9CqwB,EAAcrwB,OAAO,GAAKswB,EAAatwB,OAAO,GAC9CqwB,EAAcrwB,OAAO,GAAKswB,EAAatwB,OAAO,GAC9CqwB,EAAcrwB,OAAO,GAAKswB,EAAatwB,OAAO,IAGlD,MAAO,CACHA,OAAQ,CACJswB,EAAatwB,OAAO,GAAKuxB,EAAe,GAAKD,EAC7ChB,EAAatwB,OAAO,GAAKuxB,EAAe,GAAKD,EAC7ChB,EAAatwB,OAAO,GAAKuxB,EAAe,GAAKD,EAC7ChB,EAAatwB,OAAO,GAAKuxB,EAAe,GAAKD,GAEjDpxB,SAAUowB,EAAapwB,SACvBD,QAASqwB,EAAarwB,QACtBrE,OAAQ00B,EAAa10B,SAKjC,MAAM41B,UAAkB7G,EACpBvuC,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAGjCqF,oBAAoBD,EAAcD,EAAeiB,GAC7C,SAASG,EAAQzxB,GACb,IAAIouB,EAAOx0B,OAAOy0B,iBACdG,EAAO50B,OAAOy0B,iBACdC,EAAO10B,OAAO20B,iBACdE,EAAO70B,OAAO20B,iBAElB,IAAK,IAAIh3C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EAChCyoB,EAAOzoB,GAAK62C,IAAMA,EAAOpuB,EAAOzoB,IAChCyoB,EAAOzoB,EAAI,GAAKi3C,IAAMA,EAAOxuB,EAAOzoB,EAAI,IACxCyoB,EAAOzoB,GAAK+2C,IAAMA,EAAOtuB,EAAOzoB,IAChCyoB,EAAOzoB,EAAI,GAAKk3C,IAAMA,EAAOzuB,EAAOzoB,EAAI,IAGhD,MAAO,CACH62C,OACAI,OACAF,OACAG,QAIR,SAASzsB,EAAUhC,EAAQ0xB,GACvB,MAAMC,EAAa,GACb/I,EAAQ8I,EAAIpD,KAAOoD,EAAItD,KACvBvF,EAAS6I,EAAIjD,KAAOiD,EAAIlD,KAE9B,IAAK,IAAIj3C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EACpCo6C,EAAW3qC,MACNgZ,EAAOzoB,GAAKm6C,EAAItD,MAAQxF,GACxB5oB,EAAOzoB,EAAI,GAAKm6C,EAAIlD,MAAQ3F,GAIrC,OAAO8I,EAGX,SAASC,EAAY5xB,EAAQ0xB,GACzB,MAAMG,EAAe,GACfjJ,EAAQ8I,EAAIpD,KAAOoD,EAAItD,KACvBvF,EAAS6I,EAAIjD,KAAOiD,EAAIlD,KAE9B,IAAK,IAAIj3C,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EACpCs6C,EAAa7qC,KACTgZ,EAAOzoB,GAAKqxC,EAAQ8I,EAAItD,KACxBpuB,EAAOzoB,EAAI,GAAKsxC,EAAS6I,EAAIlD,MAIrC,OAAOqD,EAGX,SAASC,EAAS9oB,GACd,MAAMhJ,EAAS,GACf,IAAK,IAAIzoB,EAAI,EAAGA,EAAIyxB,EAAMttB,OAAQnE,GAAK,EACnCyoB,EAAOhZ,KAAK,CACRS,EAAGuhB,EAAMzxB,GACT+gB,EAAG0Q,EAAMzxB,EAAI,KAIrB,OAAOyoB,EAGX,SAAS+xB,EAAQ/xB,GACb,MAAMgJ,EAAQ,GACd,IAAK,MAAMgpB,KAAShyB,EAChBgJ,EAAMhiB,KAAKgrC,EAAMvqC,EAAGuqC,EAAM15B,GAG9B,OAAO0Q,EAyFX,SAASipB,EAAWzpC,EAAQjN,GACxB,SAAS22C,EAASlyB,GACd,IAAIvf,EAAS,EACb,IAAK,IAAIlJ,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EAAG,CAGvCkJ,GAFiBhH,KAAK43C,KAAK53C,KAAKw7B,IAAIjV,EAAOzoB,GAAGkQ,EAAIuY,EAAOzoB,EAAI,GAAGkQ,EAAG,GAC7DhO,KAAKw7B,IAAIjV,EAAOzoB,GAAG+gB,EAAI0H,EAAOzoB,EAAI,GAAG+gB,EAAG,IAMlD,OAAK7X,GACMmZ,OAAOy0B,iBAMtB,SAAS8D,EAAiBnyB,EAAQoyB,GAC9B,IAAI3xC,EAAS,EACb,IAAK,IAAIlJ,EAAI,EAAGA,EAAIyoB,EAAOtkB,OAAQnE,GAAK,EAAG,CACvC,MAAM02C,EAAWx0C,KAAK43C,KAAK53C,KAAKw7B,IAAIjV,EAAOzoB,GAAGkQ,EAAIuY,EAAOzoB,EAAI,GAAGkQ,EAAG,GAC7DhO,KAAKw7B,IAAIjV,EAAOzoB,GAAG+gB,EAAI0H,EAAOzoB,EAAI,GAAG+gB,EAAG,IAC9C7X,GAAUhH,KAAKw7B,IAAIgZ,EAAWmE,EAAS,GAG3C,OAAO3xC,EAGX,MAAM4xC,EAAkB,GAClBC,EAAkB,GAElBpB,EAtHV,SAA0B1oC,EAAQjN,GAC9B,MAAM21C,EAAY,GAClB,IAAK,IAAI35C,EAAI,EAAGA,EAAIiR,EAAO9M,OAAQnE,IAAK,CACpC25C,EAAU35C,GAAK25C,EAAU35C,IAAM,GAC/B,IAAK,IAAIwkC,EAAI,EAAGA,EAAIxgC,EAAOG,OAAQqgC,IAAK,CACpC,MAAMwW,EAAK/pC,EAAOjR,GAAGkQ,EAAIlM,EAAOwgC,GAAGt0B,EAC7B+qC,EAAKhqC,EAAOjR,GAAG+gB,EAAI/c,EAAOwgC,GAAGzjB,EAEnC44B,EAAU35C,GAAGwkC,GAAKtiC,KAAK43C,KAAK53C,KAAKw7B,IAAIsd,EAAI,GAAK94C,KAAKw7B,IAAIud,EAAI,KAInE,OAAOtB,EA0GWuB,CAAiBjqC,EAAQjN,GACrCm3C,EAzFV,SAA+BC,EAAKC,EAAO1B,GACvC,MAAM2B,EAAiB,GACvB,IAAK,MAAMC,KAAOH,EACdE,EAAeC,GAAOF,EAAM3hC,SACvBic,KAAK,CAAC6lB,EAAIC,IAAO9B,EAAU4B,GAAKC,GAAM7B,EAAU4B,GAAKE,IAI9D,MAAMC,EAAa,GACbC,EAAU,GAChB,IAAIC,EAAY,EAGhB,KAAOl7C,OAAOyJ,OAAOwxC,GAASx3C,SAAWi3C,EAAIj3C,QAAQ,CAEjD,IAAK,MAAMo3C,KAAOH,EAAK,CAEnB,GAAIO,EAAQJ,GACR,SAGJ,MAAMM,EAAQP,EAAeC,GAAKK,GAC5BlF,EAAWiD,EAAU4B,GAAKM,GAGhC,GAAIA,KAASH,GAAcA,EAAWG,GAAOnF,SAAWA,EAAU,CAE9D,MAAMoF,EAAaJ,EAAWG,GAAO56C,aAC9By6C,EAAWG,UACXF,EAAQG,GAGbD,KAASH,IACXA,EAAWG,GAAS,CAChB56C,MAAOs6C,EACP7E,YAGJiF,EAAQJ,IAAO,GAIvBK,IAGJ,MAAM1yC,EAAS,GACf,IAAK,MAAM2yC,KAASn7C,OAAOke,KAAK88B,GAC5BxyC,EAAOwyC,EAAWG,GAAO56C,OAAS,CAC9BA,MAAO46C,EACPnF,SAAUgF,EAAWG,GAAOnF,UAIpC,OAAOxtC,EAoCS6yC,CAAsBp4C,MAAMw1B,KAAKloB,EAAO2N,QACpDjb,MAAMw1B,KAAKn1B,EAAO4a,QAAS+6B,GAEzBkB,GAAWF,EAAS32C,GACpB22C,EAAS1pC,KAAYjN,EAAOG,OAAS8M,EAAO9M,SA5GtD,SAA6Bg3C,EAASa,GAClC,IAAK,MAAMz6C,KAAOb,OAAOke,KAAKu8B,GACtBA,EAAQ55C,GAAKm1C,SAAWsF,UACjBb,EAAQ55C,GA6GvB06C,CAAoBd,EADFN,EAAU,EAFA34C,KAAK43C,MAAMc,EAAiB3pC,EAAQ4pC,GAC1DD,EAAiB52C,EAAQ62C,KAAa5pC,EAAO9M,OAASH,EAAOG,UAGnE,IAAK,MAAM5C,KAAOb,OAAOke,KAAKu8B,GAC1BA,EAAQ55C,GAAO45C,EAAQ55C,GAAKN,MAIhC,MAAMi7C,EAAiBp4C,KAAKq4C,cAAchB,EAASlqC,EAAQjN,GAE3D,IAAK,MAAMo4C,KAAYF,EACnBpB,EAAgBrrC,KAAKwB,EAAOmrC,IAC5BrB,EAAgBtrC,KAAKzL,EAAOm3C,EAAQiB,KAGxC,MAAO,CAACtB,EAAiBC,GAG7B,IAAIsB,EAAUnC,EAAQnB,EAAatwB,QAC/B6zB,EAAWpC,EAAQpB,EAAcrwB,SAOjC4zB,EAAQtF,KAAOsF,EAAQxF,KADb,GAC6ByF,EAASpF,KAAOoF,EAASrF,KADtD,KASVqF,EAPAD,EAAU,CACNxF,KAAM,EACNE,KAAM,KACNE,KAAM,EACNC,KAAM,MAMd,MAAMqF,EAAahC,EAAS9vB,EAAUsuB,EAAatwB,OAAQ4zB,IACrDG,EAAcjC,EAAS9vB,EAAUquB,EAAcrwB,OAAQ6zB,IAE7D,IAAIG,EAAgB,GAChBC,EAAiB,GACrB,GAAIH,EAAWp4C,OAASq4C,EAAYr4C,OAAQ,CACxC,MACIw4C,EACAC,GACAlC,EAAWv6C,KAAK2D,KAAM04C,EAAaD,GACvCE,EAAgBG,EAChBF,EAAiBC,MACd,CACH,MACIC,EACAD,GACAjC,EAAWv6C,KAAK2D,KAAMy4C,EAAYC,GACtCC,EAAgBG,EAChBF,EAAiBC,EAGrB,MAAME,EAAqBxC,EAAYG,EAAQiC,GAAgBJ,GACzDS,EAAsBzC,EAAYG,EAAQkC,GAAiBJ,GAE3DrE,EAAgB,GACtB,IAAK,IAAIj4C,EAAI,EAAGA,EAAI68C,EAAmB14C,OAAQnE,IAC3Ci4C,EAAcxoC,KAAKotC,EAAmB78C,IAClC88C,EAAoB98C,GAAK68C,EAAmB78C,IAAM+5C,GAG1D,MAAO,CACHtxB,OAAQwvB,EACRtvB,SAAUowB,EAAapwB,SACvBD,QAASqwB,EAAarwB,QACtBrE,OAAQ00B,EAAa10B,QAO7B83B,cAAchB,EAASlqC,EAAQjN,GAC3B,MAAM+4C,EAAgBr8C,OAAOyJ,OAAOgxC,GAASlhC,IAAI/J,IAAMA,GACjD8sC,EAAgBt8C,OAAOke,KAAKu8B,GAASlhC,IAAI/J,IAAMA,GAC/C+sC,EAAkB,GAExB,SAASC,EAAczC,GACnB,IAAInF,EAAOmF,EACPhsB,EAAOgsB,EAEX,IAAKsC,EAAc54C,OAEf,MAAM,IAAI8C,EAAe,kCAG7B,MAAQ81C,EAAc1lC,SAASi+B,MAC3BA,EACW,IACPA,EAAOtxC,EAAOG,OAAS,GAI/B,MAAQ44C,EAAc1lC,SAASoX,MAC3BA,GACYzqB,EAAOG,SACfsqB,EAAO,GAIf,MAAO,CAAC6mB,EAAM7mB,GAGlB,SAAS0uB,EAAc1C,EAAOnF,EAAM7mB,GAChC,MAAM2uB,EAAa,GAEnB,KAAO9H,IAAS7mB,GACZ2uB,EAAW3tC,KAAKzL,EAAOsxC,MACvBA,GACYtxC,EAAOG,SACfmxC,EAAO,GAGf8H,EAAW3tC,KAAKzL,EAAOyqB,IAEvB,IAAI4uB,EAAc,EACdtD,EAAS,EACTuD,GAAW,EACf,IAAK,IAAIljC,EAAI,EAAGA,EAAIgjC,EAAWj5C,OAAQiW,IAAK,CACxC,MAAMmjC,EAAKH,EAAWhjC,GAChBojC,EAAKJ,EAAWhjC,EAAI,GACpBs8B,EAAWx0C,KAAK43C,KAAK53C,KAAKw7B,IAAI6f,EAAGrtC,EAAIstC,EAAGttC,EAAG,GAAKhO,KAAKw7B,IAAI6f,EAAGx8B,EAAIy8B,EAAGz8B,EAAG,IAEvEu8B,IACDvD,GAAUrD,GAEd2G,GAAe3G,EACX1yC,EAAOy2C,KAAW2C,EAAWhjC,KAC7BkjC,GAAW,GAInB,OAAKD,EAIEtD,EAASsD,EAHL,EAMf,IAAK,IAAIr9C,EAAI,EAAGA,EAAIgE,EAAOG,OAAQnE,IAAK,CACpC,MAAMiE,EAAQ84C,EAAczvC,QAAQtN,GACpC,IAAe,IAAXiE,EAAc,CAEd,MAAOqxC,EAAM7mB,GAAQyuB,EAAcl9C,GAG7B+5C,EAASoD,EAAcn9C,EAAGs1C,EAAM7mB,GAGhCgvB,EAAYz5C,EAAOsxC,GACnBoI,EAAY15C,EAAOyqB,GACnBkvB,EAAY,CACdztC,EAAGutC,EAAUvtC,GAAKwtC,EAAUxtC,EAAIutC,EAAUvtC,GAAK6pC,EAC/Ch5B,EAAG08B,EAAU18B,GAAK28B,EAAU38B,EAAI08B,EAAU18B,GAAKg5B,GAInD9oC,EAAOxB,KAAKkuC,GACZxC,EAAQlqC,EAAO9M,OAAS,GAAKnE,EAC7Bi9C,EAAgBxtC,KAAKwB,EAAO9M,OAAS,QAErC84C,EAAgBxtC,KAAKutC,EAAc/4C,IAI3C,OAAOg5C,GAIf,MAAMhK,UAAqBgH,EACvBp1C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYE,QAC7B,IAAK,MAAM64B,KAAS7zC,OAAOyJ,OAAOrG,KAAKiwC,QACnC4C,EAAoB7yC,KAAKmlB,UAAWsrB,EAAM9rB,SAKtD,MAAMyqB,UAAsB+G,EACxBp1C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYG,SAC7B,IAAK,MAAM44B,KAAS7zC,OAAOyJ,OAAOrG,KAAKiwC,QACnC4C,EAAoB7yC,KAAKmlB,UAAWsrB,EAAM9rB,SAKtD,MAAM0qB,UAAoB8G,EACtBp1C,YAAYsP,EAAMjO,EAAU4iB,EAAO6qB,GAC/B5uC,MAAMoP,EAAMjO,EAAU4iB,EAAO6qB,GAC7B7vC,KAAKmlB,UAAYzN,EAAYI,OAC7B,IAAK,MAAM24B,KAAS7zC,OAAOyJ,OAAOrG,KAAKiwC,QACnC4C,EAAoB7yC,KAAKmlB,UAAWsrB,EAAM9rB,SAKtDuqB,EAAe0D,SAAW9D,EAAe8D,SACzCzD,EAAayD,SAAW7D,EAAa6D,SACrCxD,EAAcwD,SAAW5D,EAAc4D,SACvCvD,EAAYuD,SAAW3D,EAAY2D,SAEnC32C,EAAOD,QAAU,CACb8yC,iBACAC,eACAC,gBACAC,cACAC,iBACAC,eACAC,gBACAC,cACAC,QACAC,QACAC,IAhtBJ,cAAkB8D,EACdvyC,YAAYsP,EAAMjO,EAAUytC,GACxB5uC,MAAMoP,EAAMjO,EAAUytC,GAI1BruB,SACI,MAAO,CACHpf,SAAUpC,KAAKoC,SACfqO,GAAIzQ,KAAKilB,SACT/Q,MAAOlU,KAAKkU,MACZm9B,SAAUrxC,KAAKggB,MAAMvP,GACrB6M,MAAOtd,KAAKsd,MACZ2E,WAAYrlB,OAAOke,KAAK9a,KAAKiiB,YAAYkY,OAAO,CAACqZ,EAAsBK,KACnEL,EAAqB7nC,KAAK,CACtBulC,QAAS2C,EACT12C,MAAO6C,KAAKiiB,WAAW4xB,KAGpBL,GACR,KAKXz2C,IAAImX,GACA,GAAIA,IAAUlU,KAAKkU,MACf,MAAM,IAAI/Q,EACN,oDAIR,MAAO,CACH+hB,WAAY5N,EAAWC,IACvBnV,SAAUpC,KAAKoC,SACf6iB,SAAUjlB,KAAKilB,SACfF,KAAM/kB,KAAK+kB,KACX9C,WAAYrlB,OAAOwY,OAAO,GAAIpV,KAAKiiB,YACnCjC,MAAOhgB,KAAKggB,MACZ1C,MAAOtd,KAAKsd,OAIpBhB,KAAKpI,EAAO7D,GACR,GAAI6D,IAAUlU,KAAKkU,MACf,MAAM,IAAI/Q,EACN,oDAIR,GAAInD,KAAK+kB,MAAQ1U,EAAK0U,KAClB,OAAO0qB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,IAIzD,MAAM4/B,EAAO9zC,KAAKjD,IAAImX,GAChB6/B,EAAU1jC,EAAK+U,YASrB,GAPI2uB,EAAQ/zB,QACRwC,EAAgB,QAASnS,EAAK2P,MAAO,KAAM/D,GAC3C63B,EAAK9zB,MAAQ3P,EAAK2P,MAClB8zB,EAAK7xB,WAAa,GAClBjiB,KAAKyzC,wBAAwBp3C,KAAKy3C,EAAMA,EAAK9zB,QAG7C+zB,EAAQ9xB,WAAY,CACpB,MAAM+uB,EAAkB8C,EAAK9zB,MACxBiC,WAAW9L,IAAI4wB,MAAWA,EAAKt2B,MAEpC,IAAK,MAAM6U,KAAU1oB,OAAOke,KAAKzK,EAAK4R,YAC9B+uB,EAAgBz9B,SAAS+R,KACzBwuB,EAAK7xB,WAAWqD,GAAUjV,EAAK4R,WAAWqD,IAKlDyuB,EAAQz2B,QACRkF,EAAgB,QAASnS,EAAKiN,MAAO,UAAW,MAChDw2B,EAAKx2B,MAAQjN,EAAKiN,OAGlBy2B,EAAQhvB,OACRvC,EAAgB,OAAQnS,EAAK0U,KAAM,UAAW,MAC9C+uB,EAAK/uB,KAAO1U,EAAK0U,MAIrBgvB,EAAQ12B,QACR,IAAK,MAAMkF,KAAQ3lB,OAAOke,KAAKg5B,GACvBvxB,KAAQviB,OACRA,KAAKuiB,GAAQuxB,EAAKvxB,IAI1B,OAAOktB,EAAmBpzC,KAAK2D,KAAMkU,EAAOlU,KAAKjD,IAAImX,MAmnBzDu7B,uBAp+CR,I,+BCAA,MACI,MAAM3sC,EAAcpC,EAAQ,KACtB,KAAEme,GAASne,EAAQ,KACnB,eAAEyC,GAAoB,eAmQ5BlH,EAAOD,QAjQP,MACI+E,YAAYU,EAASktC,EAAYp6B,GAC7BvU,KAAKsuC,YAAc/5B,aAAmBsK,EAAO,OAAS,MACtD7e,KAAKyQ,GAAK8D,EAAQ9D,GAClBzQ,KAAKyB,QAAUA,EACfzB,KAAK2uC,WAAaA,EAClB3uC,KAAK85C,eAAiB,GACtB95C,KAAK8yB,KAAO9yB,KAAK+5C,WAIjB,MAAMxI,EAAWvxC,KAAK2uC,WAAWgC,SACjC,IAAK,MAAMF,KAASc,EAAStB,OACzBjwC,KAAK85C,eAAerJ,EAAMhgC,IAAMggC,EAGpC,IAAK,MAAMC,KAASa,EAASlB,OACzBrwC,KAAK85C,eAAepJ,EAAMjgC,IAAMigC,EAGpC,IAAK,MAAM3b,KAAOwc,EAASnB,KACvBpwC,KAAK85C,eAAe/kB,EAAItkB,IAAMskB,EAItCglB,WACI,MAAMxI,EAAWvxC,KAAK2uC,WAAWgC,SACjC,OAAOv/B,KAAKC,UAAUkgC,GAG1B,eAAelhC,EAAMmE,GAQjB,aAPqB1R,EAAYuR,YAAYC,kBACzCtU,KAAKsuC,YACLtuC,KAAKyQ,GACLJ,EACAmE,GAMR,WAAWnE,GAEP,aADqBrQ,KAAKg6C,SAAS3pC,EAAM,OAI7C,cAAc4pC,GAEV,aADqBj6C,KAAKg6C,SAASC,EAAS,UAIhD,cAAclG,GAEV,aADqB/zC,KAAKg6C,SAASjG,EAAS,UAIhD,cAAcmG,GAEV,aADqBl6C,KAAKg6C,SAASE,EAAS,UAIhDC,OAAO5I,GACH,MAAM6I,EAAW,CACbH,QAAS,CACLhK,OAAQ,GACRI,OAAQ,GACRD,KAAM,IAEV2D,QAAS,CACL9D,OAAQ,GACRI,OAAQ,GACRD,KAAM,IAEV8J,QAAS,CACLjK,OAAQ,GACRI,OAAQ,GACRD,KAAM,KAKd,IAAK,MAAMnwC,KAAQrD,OAAOke,KAAKy2B,GAC3B,IAAK,MAAM3zC,KAAU2zC,EAAStxC,GAC1B,GAAIrC,EAAO6S,MAAMzQ,KAAK85C,eAAgB,CACb1oC,KAAKC,UAAUzT,KAChBwT,KAAKC,UAAUrR,KAAK85C,eAAel8C,EAAO6S,MAE1D2pC,EAASrG,QAAQ9zC,GAAM0L,KAAK/N,OAE7B,SAA2B,IAAfA,EAAO6S,GAGtB,MAAM,IAAItN,8BACsBvF,EAAO6S,MACjC,mCAJN2pC,EAASH,QAAQh6C,GAAM0L,KAAK/N,GAWxC,MAAMy8C,EAAU9I,EAASlB,OAAOz6B,OAAO27B,EAAStB,QAC3Cr6B,OAAO27B,EAASnB,MAAMj6B,IAAIvY,GAAUA,EAAO6S,IAEhD,IAAK,MAAMA,KAAM7T,OAAOke,KAAK9a,KAAK85C,gBAC9B,IAAKO,EAAQ9mC,UAAU9C,GAAK,CACxB,MAAM7S,EAASoC,KAAK85C,eAAerpC,GACnC,IAAIxQ,EAAO,KAEPA,EADA,WAAYrC,EACL,SACA,WAAYA,EACZ,SAEA,OAEXw8C,EAASF,QAAQj6C,GAAM0L,KAAK/N,GAIpC,OAAOw8C,EAGXE,sBAAsBC,EAAOF,GACzB,MAAMG,EAAcD,EAAMlK,OAAOhwC,OAC3Bk6C,EAAMtK,OAAO5vC,OAASk6C,EAAMnK,KAAK/vC,OAEjCo6C,EAAgBJ,EAAQhK,OAAOhwC,OAC/Bg6C,EAAQpK,OAAO5vC,OAASg6C,EAAQjK,KAAK/vC,OAE3C,GAAIo6C,IAAkBD,EAClB,MAAM,IAAIr3C,EACN,8DACSs3C,QAAoBD,KAKrC,IAAK,MAAMv6C,KAAQrD,OAAOke,KAAKu/B,GAC3B,IAAK,IAAIn+C,EAAI,EAAGA,EAAIm+C,EAAQp6C,GAAMI,OAAQnE,IAAK,CAC3C,MAAMkG,EAAWi4C,EAAQp6C,GAAM/D,GAC/B8D,KAAK2uC,WAAW2B,QAAQluC,GAAU6iB,SAAWs1B,EAAMt6C,GAAM/D,GAAGuU,GAC/C,WAATxQ,GAEAD,KAAK2uC,WAAW2B,QAAQluC,GAAUkvC,cAMlDoJ,gBAAgBnJ,GAEZ,MAAM8I,EAAU,CACZhK,OAAQkB,EAASlB,OAAOl6B,IAAIu6B,GAASA,EAAMtuC,UAC3C6tC,OAAQsB,EAAStB,OAAO95B,IAAIs6B,GAASA,EAAMruC,UAC3CguC,KAAMmB,EAASnB,KAAKj6B,IAAI4e,GAAOA,EAAI3yB,WAUvC,OANAmvC,EAASlB,OAAOz6B,OAAO27B,EAAStB,QAAQr6B,OAAO27B,EAASnB,MACnDj6B,IAAKhZ,WACKA,EAAMiF,SACNjF,IAGRk9C,EAGX,WAAWnnC,GACiB,mBAAbA,IACPA,EAAYlS,IACRu1B,QAAQoP,IAAI3kC,KAIpB,IACI,MAAMuwC,EAAWvxC,KAAK2uC,WAAWgC,UAC3B,MAAElb,GAAUz1B,KAAK2uC,WACvB,GAAIlZ,EAAO,CACPviB,EAAS,iCACT,MAAMmnC,EAAUr6C,KAAK06C,gBAAgBnJ,GAC/BoJ,QAAkB36C,KAAK46C,KAAKh+C,OAAOwY,OAAO,GAAIm8B,EAAU,CAC1D9vC,QAASzB,KAAKyB,WAElBzB,KAAKyB,QAAUk5C,EAAUl5C,QACzBzB,KAAK2uC,WAAWlZ,OAAQ,EAExBviB,EAAS,iDACTlT,KAAKs6C,sBAAsBK,EAAWN,GAEtCnnC,EAAS,kCACT,IAAK,MAAMtV,KAAU+8C,EAAU1K,OAC1Br6B,OAAO+kC,EAAUtK,QAAQz6B,OAAO+kC,EAAUvK,MAC3CpwC,KAAK85C,eAAel8C,EAAO6S,IAAM7S,MAElC,CACH,MAAM,QACFq8C,EADE,QAEFlG,EAFE,QAGFmG,GACAl6C,KAAKm6C,OAAO5I,GAEhBr+B,EAAS,iCACT,MAAMmnC,EAAUr6C,KAAK06C,gBAAgBT,GAC/BY,QAAoB76C,KAAK86C,QAAQl+C,OAAOwY,OAAO,GAAI6kC,EAAS,CAC9Dx4C,QAASzB,KAAKyB,WAElBzB,KAAKyB,QAAUo5C,EAAYp5C,QAE3ByR,EAAS,iDACTlT,KAAKs6C,sBAAsBO,EAAaR,GAExCnnC,EAAS,kCACT,IAAK,MAAMtV,KAAUi9C,EAAY5K,OAC5Br6B,OAAOilC,EAAYxK,QAAQz6B,OAAOilC,EAAYzK,MAC/CpwC,KAAK85C,eAAel8C,EAAO6S,IAAM7S,EAGrCsV,EAAS,qCACTlT,KAAK06C,gBAAgB3G,GACrB,MAAMgH,QAAoB/6C,KAAKg7C,QAAQp+C,OAAOwY,OAAO,GAAI2+B,EAAS,CAC9DtyC,QAASzB,KAAKyB,WAElBzB,KAAKyB,QAAUo5C,EAAYp5C,QAE3ByR,EAAS,kCACT,IAAK,MAAMtV,KAAUm9C,EAAY9K,OAC5Br6B,OAAOmlC,EAAY1K,QAAQz6B,OAAOmlC,EAAY3K,MAC/CpwC,KAAK85C,eAAel8C,EAAO6S,IAAM7S,EAGrCsV,EAAS,qCACTlT,KAAK06C,gBAAgBR,GACrB,MAAMe,QAAoBj7C,KAAKk7C,QAAQt+C,OAAOwY,OAAO,GAAI8kC,EAAS,CAC9Dz4C,QAASzB,KAAKyB,WAElBzB,KAAKm7C,SAAWF,EAAYx5C,QAE5ByR,EAAS,kCACT,IAAK,MAAMtV,KAAUq9C,EAAYhL,OAC5Br6B,OAAOqlC,EAAY5K,QAAQz6B,OAAOqlC,EAAY7K,aACxCpwC,KAAK85C,eAAel8C,EAAO6S,IAI1CzQ,KAAK8yB,KAAO9yB,KAAK+5C,WACjB7mC,EAAS,kBACX,MAAOlU,GAEL,MADAkU,+BAAsClU,EAAMgC,WACtChC,GAIdme,oBACI,OAAOnd,KAAK+5C,aAAe/5C,KAAK8yB,QAlQ5C,I,oqCCGA,MACI,MAAMhZ,EAAiBpZ,EAAQ,IACzBoC,EAAcpC,EAAQ,KACtB,UACFyhB,EADE,UAEF3D,EAFE,OAGF4D,EAHE,SAIF/d,EAJE,YAKFge,GACA3hB,EAAQ,KAEN,WACFgW,EADE,SAEFI,GACApW,EAAQ,IAENqyB,EAAOryB,EAAQ,KACf,iBAAE4xB,GAAqB5xB,EAAQ,KAC/B,cAAEuC,GAAkBvC,EAAQ,IAC5B,KAAEme,GAASne,EAAQ,IA2IzBzE,EAAOD,QAzIP,SAAsB+e,GAsIlB,OArIAA,EAAKlB,QAAQK,KAAKK,eAAiBT,EAAeI,KAClDa,EAAKlB,QAAQ1H,SAASoI,eAAiBT,EAAe3H,SAASzU,KAAKqd,GAEpEA,EAAKhY,OAAO+N,MAAMyJ,eAAiB1K,UAE/B,aADqB/M,EAAYC,OAAO+N,SAI5CiK,EAAKhY,OAAOgO,MAAMwJ,eAAiB1K,UAE/B,aADqB/M,EAAYC,OAAOgO,MAAMC,IAIlD+J,EAAKhY,OAAOmO,QAAQqJ,eAAiB1K,UAEjC,aADqB/M,EAAYC,OAAOmO,WAC1BiF,IAAIoL,GAAM,IAAI+Q,EAAiB/Q,KAGjDxG,EAAKhY,OAAOoP,SAASoI,eAAiB1K,MAAO0B,EAAUa,EAAWC,EAC9DC,EAAOC,EAAWC,WACZ1P,EAAYC,OAAOoP,SAASZ,EAAUa,EAAWC,EAAUC,EAC7DC,EAAWC,IAGnBuI,EAAKhY,OAAOuO,MAAMiJ,eAAiB1K,MAAO0B,EAAUC,WAC1C1O,EAAYC,OAAOuO,MAAMC,EAAUC,IAG7CuJ,EAAKhY,OAAO8O,OAAO0I,eAAiB1K,gBAC1B/M,EAAYC,OAAO8O,UAG7BkJ,EAAKhY,OAAOgP,WAAWwI,eAAiB1K,UAEpC,aADqB/M,EAAYC,OAAOgP,cAI5CgJ,EAAK/I,MAAMjV,IAAIwd,eAAiB1K,UAC5BwS,EAAYtS,EAAQ,CAChBvR,KAAM2jB,IAGV,IAAInQ,EAAQ,KASZ,OADAA,GALIA,EAFA,SAAUjC,GAAUA,EAAOvR,KAEnB,CADRwT,QAAclP,EAAYkP,MAAMC,iBAGlBnP,EAAYkP,MAAM8B,YAGtBqC,IAAIilC,GAAQ,IAAIroB,EAAKqoB,KAIvCrgC,EAAKrH,KAAK3W,IAAIwd,eAAiB1K,UAM3B,GALAwS,EAAYtS,EAAQ,CAChB5N,OAAQqc,EACRtc,MAAOsc,IAGN,WAAYzO,GAAY,UAAWA,EACpC,MAAM,IAAI9M,EACN,kEAIR,IAAKrG,OAAOke,KAAK/K,GAAQ1P,OACrB,MAAM,IAAI4C,EACN,gCAIR,IAAI2P,EAAQ,KACZ,GAAI,WAAY7C,EACZ6C,QAAc9P,EAAY8P,MAAM9C,eAAeC,EAAO5N,cACnD,CACH,MAAM2d,QAAYhd,EAAY4Q,KAAKC,OAAO5D,EAAO7N,YACpB,IAAjB4d,EAAIpd,UACZkQ,QAAc9P,EAAY8P,MAAM9C,eAAegQ,EAAIpd,YAK3D,GAAc,OAAVkQ,GAAkBA,EAAMvS,OAAQ,CAChC,MAAMoH,EAAO,IAAIoX,EAAKjM,EAAM,IAC5B,OAAO7C,EAAO7N,MAAQuF,EAAKiM,KAAK3D,OAAO+P,GAAOA,EAAIrP,KAAOV,EAAO7N,OAASuF,EAAKiM,KAGlF,MAAO,IAGXqH,EAAKnI,MAAM7V,IAAIwd,eAAiB1K,UAY5B,GAXAwS,EAAYtS,EAAQ,CAChBsrC,KAAM78B,EACN/hB,KAAM4H,EACNoM,GAAI+N,EACJO,MAAO1a,EACP+Z,SAAU/Z,EACV0Y,OAAQ1Y,EACR+L,OAAQgS,EAAO1kB,KAAKgZ,GACpBrZ,KAAM+kB,EAAO1kB,KAAKoZ,KAGlB,WAAY/G,GAAUnT,OAAOke,KAAK/K,GAAQ1P,OAAS,KAC7C,SAAU0P,GAAyC,IAA/BnT,OAAOke,KAAK/K,GAAQ1P,QAC1C,MAAM,IAAI4C,EACN,oDAKZ,GAAI,OAAQ8M,GAAUnT,OAAOke,KAAK/K,GAAQ1P,OAAS,KACzC,SAAU0P,GAAyC,IAA/BnT,OAAOke,KAAK/K,GAAQ1P,QAC1C,MAAM,IAAI4C,EACN,gDAKZ,MAAM0vB,EAAe,IAAI7tB,gBACzB,IAAK,MAAMw2C,IAAS,CAAC,OAAQ,QAAS,WAAY,SAAU,SAAU,OAAQ,KAAM,QAC5E1+C,OAAOkB,UAAUC,eAAe1B,KAAK0T,EAAQurC,IAC7C3oB,EAAajzB,IAAI47C,EAAOvrC,EAAOurC,IAIvC,MAAMC,QAAkBz4C,EAAY8P,MAAM9C,SAAS6iB,EAAapxB,YAC1DqR,EAAQ2oC,EAAUplC,IAAI1O,GAAQ,IAAIoX,EAAKpX,IAG7C,OAFAmL,EAAMrC,MAAQgrC,EAAUhrC,MAEjBqC,GAGJmI,IA3Jf,I,6BCVA,EAAQ,KACR,IA4CIygC,EA5CA30C,EAAI,EAAQ,IACZ8F,EAAc,EAAQ,IACtB8uC,EAAiB,EAAQ,IACzBh9C,EAAS,EAAQ,GACjB4D,EAAmB,EAAQ,IAC3B0K,EAAW,EAAQ,IACnB3F,EAAa,EAAQ,IACrB+G,EAAM,EAAQ,GACdiH,EAAS,EAAQ,KACjBsmC,EAAY,EAAQ,KACpB73B,EAAS,EAAQ,IAAiCA,OAClD83B,EAAU,EAAQ,KAClB10C,EAAiB,EAAQ,IACzB20C,EAAwB,EAAQ,KAChCr8C,EAAsB,EAAQ,IAE9Bs8C,EAAYp9C,EAAOmnB,IACnB9gB,EAAkB82C,EAAsB92C,gBACxCg3C,EAA+BF,EAAsBG,SACrDt8C,EAAmBF,EAAoBG,IACvCs8C,EAAsBz8C,EAAoBK,UAAU,OACpDic,EAAQzd,KAAKyd,MACb+d,EAAMx7B,KAAKw7B,IAOXqiB,EAAQ,WACRC,EAAe,iBACfC,EAAQ,KACRC,EAAY,WACZC,EAAM,WACNC,EAAM,QACNC,EAAM,gBAENC,EAA4B,yCAE5BC,EAA8C,wCAE9CC,EAA2C,yCAE3CC,EAAmB,wBAGnBC,EAAY,SAAUloC,EAAK5I,GAC7B,IAAI1G,EAAQy3C,EAAY18C,EACxB,GAAuB,KAAnB2L,EAAM8X,OAAO,GAAW,CAC1B,GAAsC,KAAlC9X,EAAM8X,OAAO9X,EAAMzL,OAAS,GAAW,MAvB5B,eAyBf,KADA+E,EAAS03C,EAAUhxC,EAAMoC,MAAM,GAAI,KACtB,MAzBE,eA0BfwG,EAAI0T,KAAOhjB,OAEN,GAAK23C,EAAUroC,GAQf,CAEL,GADA5I,EAAQ6vC,EAAQ7vC,GACZ0wC,EAA0B1qB,KAAKhmB,GAAQ,MAtC5B,eAwCf,GAAe,QADf1G,EAAS43C,EAAUlxC,IACE,MAxCN,eAyCf4I,EAAI0T,KAAOhjB,MAbe,CAC1B,GAAIq3C,EAA4C3qB,KAAKhmB,GAAQ,MA7B9C,eAgCf,IAFA1G,EAAS,GACTy3C,EAAanB,EAAU5vC,GAClB3L,EAAQ,EAAGA,EAAQ08C,EAAWx8C,OAAQF,IACzCiF,GAAU63C,EAAcJ,EAAW18C,GAAQ+8C,GAE7CxoC,EAAI0T,KAAOhjB,IAUX43C,EAAY,SAAUlxC,GACxB,IACIqxC,EAAaC,EAASj9C,EAAOk9C,EAAMC,EAAO7P,EAAQ8P,EADlD9e,EAAQ3yB,EAAM0C,MAAM,KAMxB,GAJIiwB,EAAMp+B,QAAqC,IAA3Bo+B,EAAMA,EAAMp+B,OAAS,IACvCo+B,EAAMG,OAERue,EAAc1e,EAAMp+B,QACF,EAAG,OAAOyL,EAE5B,IADAsxC,EAAU,GACLj9C,EAAQ,EAAGA,EAAQg9C,EAAah9C,IAAS,CAE5C,GAAY,KADZk9C,EAAO5e,EAAMt+B,IACG,OAAO2L,EAMvB,GALAwxC,EAAQ,GACJD,EAAKh9C,OAAS,GAAuB,KAAlBg9C,EAAKz5B,OAAO,KACjC05B,EAAQlB,EAAUtqB,KAAKurB,GAAQ,GAAK,EACpCA,EAAOA,EAAKnvC,MAAe,GAATovC,EAAa,EAAI,IAExB,KAATD,EACF5P,EAAS,MACJ,CACL,KAAe,IAAT6P,EAAchB,EAAe,GAATgB,EAAajB,EAAME,GAAKzqB,KAAKurB,GAAO,OAAOvxC,EACrE2hC,EAASlQ,SAAS8f,EAAMC,GAE1BF,EAAQzxC,KAAK8hC,GAEf,IAAKttC,EAAQ,EAAGA,EAAQg9C,EAAah9C,IAEnC,GADAstC,EAAS2P,EAAQj9C,GACbA,GAASg9C,EAAc,GACzB,GAAI1P,GAAU7T,EAAI,IAAK,EAAIujB,GAAc,OAAO,UAC3C,GAAI1P,EAAS,IAAK,OAAO,KAGlC,IADA8P,EAAOH,EAAQxe,MACVz+B,EAAQ,EAAGA,EAAQi9C,EAAQ/8C,OAAQF,IACtCo9C,GAAQH,EAAQj9C,GAASy5B,EAAI,IAAK,EAAIz5B,GAExC,OAAOo9C,GAILT,EAAY,SAAUhxC,GACxB,IAII3O,EAAOkD,EAAQm9C,EAAaC,EAAWhQ,EAAQiQ,EAAOC,EAJtDC,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCC,EAAa,EACbC,EAAW,KACXC,EAAU,EAGVC,EAAO,WACT,OAAOlyC,EAAM8X,OAAOm6B,IAGtB,GAAc,KAAVC,IAAe,CACjB,GAAuB,KAAnBlyC,EAAM8X,OAAO,GAAW,OAC5Bm6B,GAAW,EAEXD,IADAD,EAGF,KAAOG,KAAQ,CACb,GAAkB,GAAdH,EAAiB,OACrB,GAAc,KAAVG,IAAJ,CAQA,IADA7gD,EAAQkD,EAAS,EACVA,EAAS,GAAKk8C,EAAIzqB,KAAKksB,MAC5B7gD,EAAgB,GAARA,EAAaogC,SAASygB,IAAQ,IACtCD,IACA19C,IAEF,GAAc,KAAV29C,IAAe,CACjB,GAAc,GAAV39C,EAAa,OAEjB,GADA09C,GAAW19C,EACPw9C,EAAa,EAAG,OAEpB,IADAL,EAAc,EACPQ,KAAQ,CAEb,GADAP,EAAY,KACRD,EAAc,EAAG,CACnB,KAAc,KAAVQ,KAAiBR,EAAc,GAC9B,OADiCO,IAGxC,IAAK5B,EAAMrqB,KAAKksB,KAAS,OACzB,KAAO7B,EAAMrqB,KAAKksB,MAAS,CAEzB,GADAvQ,EAASlQ,SAASygB,IAAQ,IACR,OAAdP,EAAoBA,EAAYhQ,MAC/B,IAAiB,GAAbgQ,EAAgB,OACpBA,EAAwB,GAAZA,EAAiBhQ,EAClC,GAAIgQ,EAAY,IAAK,OACrBM,IAEFH,EAAQC,GAAoC,IAAtBD,EAAQC,GAAoBJ,EAE/B,KADnBD,GACuC,GAAfA,GAAkBK,IAE5C,GAAmB,GAAfL,EAAkB,OACtB,MACK,GAAc,KAAVQ,KAET,GADAD,KACKC,IAAQ,YACR,GAAIA,IAAQ,OACnBJ,EAAQC,KAAgB1gD,MA3CxB,CACE,GAAiB,OAAb2gD,EAAmB,OACvBC,IAEAD,IADAD,GA0CJ,GAAiB,OAAbC,EAGF,IAFAJ,EAAQG,EAAaC,EACrBD,EAAa,EACQ,GAAdA,GAAmBH,EAAQ,GAChCC,EAAOC,EAAQC,GACfD,EAAQC,KAAgBD,EAAQE,EAAWJ,EAAQ,GACnDE,EAAQE,IAAaJ,GAASC,OAE3B,GAAkB,GAAdE,EAAiB,OAC5B,OAAOD,GA6BLK,EAAgB,SAAU71B,GAC5B,IAAIhjB,EAAQjF,EAAO29C,EAAUI,EAE7B,GAAmB,iBAAR91B,EAAkB,CAE3B,IADAhjB,EAAS,GACJjF,EAAQ,EAAGA,EAAQ,EAAGA,IACzBiF,EAAOk3B,QAAQlU,EAAO,KACtBA,EAAOvM,EAAMuM,EAAO,KACpB,OAAOhjB,EAAOuJ,KAAK,KAEhB,GAAmB,iBAARyZ,EAAkB,CAGlC,IAFAhjB,EAAS,GACT04C,EAtC0B,SAAUK,GAMtC,IALA,IAAIC,EAAW,KACXC,EAAY,EACZC,EAAY,KACZC,EAAa,EACbp+C,EAAQ,EACLA,EAAQ,EAAGA,IACI,IAAhBg+C,EAAKh+C,IACHo+C,EAAaF,IACfD,EAAWE,EACXD,EAAYE,GAEdD,EAAY,KACZC,EAAa,IAEK,OAAdD,IAAoBA,EAAYn+C,KAClCo+C,GAON,OAJIA,EAAaF,IACfD,EAAWE,EACXD,EAAYE,GAEPH,EAeMI,CAAwBp2B,GAC9BjoB,EAAQ,EAAGA,EAAQ,EAAGA,IACrB+9C,GAA2B,IAAhB91B,EAAKjoB,KAChB+9C,IAASA,GAAU,GACnBJ,IAAa39C,GACfiF,GAAUjF,EAAQ,IAAM,KACxB+9C,GAAU,IAEV94C,GAAUgjB,EAAKjoB,GAAOoB,SAAS,IAC3BpB,EAAQ,IAAGiF,GAAU,OAG7B,MAAO,IAAMA,EAAS,IACtB,OAAOgjB,GAGP80B,EAA4B,GAC5BuB,EAA2BrpC,EAAO,GAAI8nC,EAA2B,CACnE,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAEnCwB,EAAuBtpC,EAAO,GAAIqpC,EAA0B,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAE3BE,EAA2BvpC,EAAO,GAAIspC,EAAsB,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAG5EzB,EAAgB,SAAUe,EAAMt+C,GAClC,IAAI4D,EAAOugB,EAAOm6B,EAAM,GACxB,OAAO16C,EAAO,IAAQA,EAAO,MAAS6K,EAAIzO,EAAKs+C,GAAQA,EAAO/sC,mBAAmB+sC,IAG/EY,EAAiB,CACnBC,IAAK,GACL3pC,KAAM,KACN4pC,OAAQ,GACRC,KAAM,GACNC,MAAO,IACPC,GAAI,GACJC,IAAK,KAGHnC,EAAY,SAAUroC,GACxB,OAAOvG,EAAIywC,EAAgBlqC,EAAIyqC,SAG7BC,EAAsB,SAAU1qC,GAClC,MAAuB,IAAhBA,EAAInD,UAAkC,IAAhBmD,EAAIlD,UAG/B6tC,EAAiC,SAAU3qC,GAC7C,OAAQA,EAAI0T,MAAQ1T,EAAI4qC,kBAAkC,QAAd5qC,EAAIyqC,QAG9CI,EAAuB,SAAUz4B,EAAQwvB,GAC3C,IAAI9yB,EACJ,OAAwB,GAAjBsD,EAAOzmB,QAAe47C,EAAMnqB,KAAKhL,EAAOlD,OAAO,MACjB,MAA9BJ,EAASsD,EAAOlD,OAAO,MAAgB0yB,GAAwB,KAAV9yB,IAG1Dg8B,EAA+B,SAAU14B,GAC3C,IAAI24B,EACJ,OAAO34B,EAAOzmB,OAAS,GAAKk/C,EAAqBz4B,EAAO5Y,MAAM,EAAG,MAC9C,GAAjB4Y,EAAOzmB,QACyB,OAA9Bo/C,EAAQ34B,EAAOlD,OAAO,KAAyB,OAAV67B,GAA4B,MAAVA,GAA2B,MAAVA,IAI1EC,EAAkB,SAAUhrC,GAC9B,IAAI3N,EAAO2N,EAAI3N,KACX44C,EAAW54C,EAAK1G,QAChBs/C,GAA2B,QAAdjrC,EAAIyqC,QAAgC,GAAZQ,GAAkBJ,EAAqBx4C,EAAK,IAAI,IACvFA,EAAK63B,OAILghB,EAAc,SAAU//B,GAC1B,MAAmB,MAAZA,GAA6C,QAA1BA,EAAQkH,eAShC84B,GAAe,GACfC,GAAS,GACTC,GAAY,GACZC,GAAgC,GAChCC,GAAoB,GACpBC,GAAW,GACXC,GAAiB,GACjBC,GAA4B,GAC5BC,GAAmC,GACnCC,GAAY,GACZC,GAAO,GACPC,GAAW,GACXC,GAAO,GACPC,GAAO,GACPC,GAAa,GACbC,GAAY,GACZC,GAAa,GACbC,GAAO,GACPC,GAA4B,GAC5BC,GAAQ,GACRC,GAAW,GAGXC,GAAW,SAAUxsC,EAAK5I,EAAOq1C,EAAeC,GAClD,IAMIvE,EAAYmB,EAAMqD,EAAkBC,EApCdzhC,EA8BtBzf,EAAQ+gD,GAAiBtB,GACzB9B,EAAU,EACV35C,EAAS,GACTm9C,GAAS,EACTC,GAAc,EACdC,GAAoB,EAoBxB,IAjBKN,IACHzsC,EAAIyqC,OAAS,GACbzqC,EAAInD,SAAW,GACfmD,EAAIlD,SAAW,GACfkD,EAAI0T,KAAO,KACX1T,EAAI6S,KAAO,KACX7S,EAAI3N,KAAO,GACX2N,EAAIgtC,MAAQ,KACZhtC,EAAIitC,SAAW,KACfjtC,EAAI4qC,kBAAmB,EACvBxzC,EAAQA,EAAMjG,QAAQ62C,EAA0C,KAGlE5wC,EAAQA,EAAMjG,QAAQ82C,EAAkB,IAExCE,EAAanB,EAAU5vC,GAEhBiyC,GAAWlB,EAAWx8C,QAAQ,CAEnC,OADA29C,EAAOnB,EAAWkB,GACV39C,GACN,KAAKy/C,GACH,IAAI7B,IAAQ/B,EAAMnqB,KAAKksB,GAGhB,IAAKmD,EAGL,MAxVM,iBAsVX/gD,EAAQ2/C,GACR,SAJA37C,GAAU45C,EAAKj3B,cACf3mB,EAAQ0/C,GAKV,MAEF,KAAKA,GACH,GAAI9B,IAAS9B,EAAapqB,KAAKksB,IAAiB,KAARA,GAAuB,KAARA,GAAuB,KAARA,GACpE55C,GAAU45C,EAAKj3B,kBACV,IAAY,KAARi3B,EA0BJ,IAAKmD,EAKL,MA7XM,iBAyXX/8C,EAAS,GACThE,EAAQ2/C,GACRhC,EAAU,EACV,SA7BA,GAAIoD,IACDpE,EAAUroC,IAAQvG,EAAIywC,EAAgBx6C,IAC5B,QAAVA,IAAqBg7C,EAAoB1qC,IAAqB,OAAbA,EAAI6S,OACvC,QAAd7S,EAAIyqC,SAAqBzqC,EAAI0T,MAC7B,OAEH,GADA1T,EAAIyqC,OAAS/6C,EACT+8C,EAEF,YADIpE,EAAUroC,IAAQkqC,EAAelqC,EAAIyqC,SAAWzqC,EAAI6S,OAAM7S,EAAI6S,KAAO,OAG3EnjB,EAAS,GACS,QAAdsQ,EAAIyqC,OACN/+C,EAAQsgD,GACC3D,EAAUroC,IAAQ0sC,GAAQA,EAAKjC,QAAUzqC,EAAIyqC,OACtD/+C,EAAQ4/C,GACCjD,EAAUroC,GACnBtU,EAAQggD,GAC4B,KAA3BvD,EAAWkB,EAAU,IAC9B39C,EAAQ6/C,GACRlC,MAEArpC,EAAI4qC,kBAAmB,EACvB5qC,EAAI3N,KAAK4E,KAAK,IACdvL,EAAQ2gD,IAQZ,MAEF,KAAKhB,GACH,IAAKqB,GAASA,EAAK9B,kBAA4B,KAARtB,EAAc,MAjYxC,iBAkYb,GAAIoD,EAAK9B,kBAA4B,KAARtB,EAAa,CACxCtpC,EAAIyqC,OAASiC,EAAKjC,OAClBzqC,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQN,EAAKM,MACjBhtC,EAAIitC,SAAW,GACfjtC,EAAI4qC,kBAAmB,EACvBl/C,EAAQ6gD,GACR,MAEF7gD,EAAuB,QAAfghD,EAAKjC,OAAmBuB,GAAOR,GACvC,SAEF,KAAKF,GACH,GAAY,KAARhC,GAA0C,KAA3BnB,EAAWkB,EAAU,GAGjC,CACL39C,EAAQ8/C,GACR,SAJA9/C,EAAQigD,GACRtC,IAIA,MAEJ,KAAKkC,GACH,GAAY,KAARjC,EAAa,CACf59C,EAAQkgD,GACR,MAEAlgD,EAAQ0gD,GACR,SAGJ,KAAKZ,GAEH,GADAxrC,EAAIyqC,OAASiC,EAAKjC,OACdnB,GAAQxC,EACV9mC,EAAInD,SAAW6vC,EAAK7vC,SACpBmD,EAAIlD,SAAW4vC,EAAK5vC,SACpBkD,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI6S,KAAO65B,EAAK75B,KAChB7S,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQN,EAAKM,WACZ,GAAY,KAAR1D,GAAwB,MAARA,GAAgBjB,EAAUroC,GACnDtU,EAAQ+/C,QACH,GAAY,KAARnC,EACTtpC,EAAInD,SAAW6vC,EAAK7vC,SACpBmD,EAAIlD,SAAW4vC,EAAK5vC,SACpBkD,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI6S,KAAO65B,EAAK75B,KAChB7S,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQ,GACZthD,EAAQ4gD,OACH,IAAY,KAARhD,EASJ,CACLtpC,EAAInD,SAAW6vC,EAAK7vC,SACpBmD,EAAIlD,SAAW4vC,EAAK5vC,SACpBkD,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI6S,KAAO65B,EAAK75B,KAChB7S,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAI3N,KAAK63B,MACTx+B,EAAQ0gD,GACR,SAhBApsC,EAAInD,SAAW6vC,EAAK7vC,SACpBmD,EAAIlD,SAAW4vC,EAAK5vC,SACpBkD,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI6S,KAAO65B,EAAK75B,KAChB7S,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQN,EAAKM,MACjBhtC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,GAUR,MAEJ,KAAKd,GACH,IAAIpD,EAAUroC,IAAiB,KAARspC,GAAuB,MAARA,EAE/B,IAAY,KAARA,EAEJ,CACLtpC,EAAInD,SAAW6vC,EAAK7vC,SACpBmD,EAAIlD,SAAW4vC,EAAK5vC,SACpBkD,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI6S,KAAO65B,EAAK75B,KAChBnnB,EAAQ0gD,GACR,SAPA1gD,EAAQkgD,QAFRlgD,EAAQigD,GAUR,MAEJ,KAAKD,GAEH,GADAhgD,EAAQigD,GACI,KAARrC,GAA6C,KAA9B55C,EAAOwf,OAAOm6B,EAAU,GAAW,SACtDA,IACA,MAEF,KAAKsC,GACH,GAAY,KAARrC,GAAuB,MAARA,EAAc,CAC/B59C,EAAQkgD,GACR,SACA,MAEJ,KAAKA,GACH,GAAY,KAARtC,EAAa,CACXuD,IAAQn9C,EAAS,MAAQA,GAC7Bm9C,GAAS,EACTF,EAAmB3F,EAAUt3C,GAC7B,IAAK,IAAIlI,EAAI,EAAGA,EAAImlD,EAAiBhhD,OAAQnE,IAAK,CAChD,IAAI0lD,EAAYP,EAAiBnlD,GACjC,GAAiB,KAAb0lD,GAAqBH,EAAzB,CAIA,IAAII,EAAoB5E,EAAc2E,EAAWjD,GAC7C8C,EAAmB/sC,EAAIlD,UAAYqwC,EAClCntC,EAAInD,UAAYswC,OALnBJ,GAAoB,EAOxBr9C,EAAS,QACJ,GACL45C,GAAQxC,GAAe,KAARwC,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBjB,EAAUroC,GAC3B,CACA,GAAI6sC,GAAoB,IAAVn9C,EAAc,MAtfd,oBAufd25C,GAAWrC,EAAUt3C,GAAQ/D,OAAS,EACtC+D,EAAS,GACThE,EAAQmgD,QACHn8C,GAAU45C,EACjB,MAEF,KAAKuC,GACL,KAAKC,GACH,GAAIW,GAA+B,QAAdzsC,EAAIyqC,OAAkB,CACzC/+C,EAAQwgD,GACR,SACK,GAAY,KAAR5C,GAAgBwD,EAOpB,IACLxD,GAAQxC,GAAe,KAARwC,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBjB,EAAUroC,GAC3B,CACA,GAAIqoC,EAAUroC,IAAkB,IAAVtQ,EAAc,MA3gB3B,eA4gBT,GAAI+8C,GAA2B,IAAV/8C,IAAiBg7C,EAAoB1qC,IAAqB,OAAbA,EAAI6S,MAAgB,OAEtF,GADA+5B,EAAU1E,EAAUloC,EAAKtQ,GACZ,OAAOk9C,EAGpB,GAFAl9C,EAAS,GACThE,EAAQygD,GACJM,EAAe,OACnB,SAEY,KAARnD,EAAawD,GAAc,EACd,KAARxD,IAAawD,GAAc,GACpCp9C,GAAU45C,MAtB4B,CACtC,GAAc,IAAV55C,EAAc,MAjgBT,eAmgBT,GADAk9C,EAAU1E,EAAUloC,EAAKtQ,GACZ,OAAOk9C,EAGpB,GAFAl9C,EAAS,GACThE,EAAQqgD,GACJU,GAAiBX,GAAU,OAiB/B,MAEJ,KAAKC,GACH,IAAItE,EAAMrqB,KAAKksB,GAER,IACLA,GAAQxC,GAAe,KAARwC,GAAuB,KAARA,GAAuB,KAARA,GACpC,MAARA,GAAgBjB,EAAUroC,IAC3BysC,EACA,CACA,GAAc,IAAV/8C,EAAc,CAChB,IAAImjB,EAAOgW,SAASn5B,EAAQ,IAC5B,GAAImjB,EAAO,MAAQ,MAliBZ,eAmiBP7S,EAAI6S,KAAQw1B,EAAUroC,IAAQ6S,IAASq3B,EAAelqC,EAAIyqC,QAAW,KAAO53B,EAC5EnjB,EAAS,GAEX,GAAI+8C,EAAe,OACnB/gD,EAAQygD,GACR,SACK,MAziBI,eA0hBTz8C,GAAU45C,EAgBZ,MAEF,KAAK0C,GAEH,GADAhsC,EAAIyqC,OAAS,OACD,KAARnB,GAAuB,MAARA,EAAc59C,EAAQugD,OACpC,KAAIS,GAAuB,QAAfA,EAAKjC,OAyBf,CACL/+C,EAAQ0gD,GACR,SA1BA,GAAI9C,GAAQxC,EACV9mC,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQN,EAAKM,WACZ,GAAY,KAAR1D,EACTtpC,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQ,GACZthD,EAAQ4gD,OACH,IAAY,KAARhD,EAMJ,CACAwB,EAA6B3C,EAAW3uC,MAAM6vC,GAASpvC,KAAK,OAC/D+F,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwxC,EAAgBhrC,IAElBtU,EAAQ0gD,GACR,SAZApsC,EAAI0T,KAAOg5B,EAAKh5B,KAChB1T,EAAI3N,KAAOq6C,EAAKr6C,KAAKmH,QACrBwG,EAAIgtC,MAAQN,EAAKM,MACjBhtC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,IAaV,MAEJ,KAAKN,GACH,GAAY,KAAR3C,GAAuB,MAARA,EAAc,CAC/B59C,EAAQwgD,GACR,MAEEQ,GAAuB,QAAfA,EAAKjC,SAAqBK,EAA6B3C,EAAW3uC,MAAM6vC,GAASpvC,KAAK,OAC5F4wC,EAAqB6B,EAAKr6C,KAAK,IAAI,GAAO2N,EAAI3N,KAAK4E,KAAKy1C,EAAKr6C,KAAK,IACjE2N,EAAI0T,KAAOg5B,EAAKh5B,MAEvBhoB,EAAQ0gD,GACR,SAEF,KAAKF,GACH,GAAI5C,GAAQxC,GAAe,KAARwC,GAAuB,MAARA,GAAwB,KAARA,GAAuB,KAARA,EAAa,CAC5E,IAAKmD,GAAiB5B,EAAqBn7C,GACzChE,EAAQ0gD,QACH,GAAc,IAAV18C,EAAc,CAEvB,GADAsQ,EAAI0T,KAAO,GACP+4B,EAAe,OACnB/gD,EAAQygD,OACH,CAEL,GADAS,EAAU1E,EAAUloC,EAAKtQ,GACZ,OAAOk9C,EAEpB,GADgB,aAAZ5sC,EAAI0T,OAAqB1T,EAAI0T,KAAO,IACpC+4B,EAAe,OACnB/8C,EAAS,GACThE,EAAQygD,GACR,SACGz8C,GAAU45C,EACjB,MAEF,KAAK6C,GACH,GAAI9D,EAAUroC,IAEZ,GADAtU,EAAQ0gD,GACI,KAAR9C,GAAuB,MAARA,EAAc,cAC5B,GAAKmD,GAAyB,KAARnD,EAGtB,GAAKmD,GAAyB,KAARnD,GAGtB,GAAIA,GAAQxC,IACjBp7C,EAAQ0gD,GACI,KAAR9C,GAAa,cAJjBtpC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,QAJRvsC,EAAIgtC,MAAQ,GACZthD,EAAQ4gD,GAOR,MAEJ,KAAKF,GACH,GACE9C,GAAQxC,GAAe,KAARwC,GACN,MAARA,GAAgBjB,EAAUroC,KACzBysC,IAA0B,KAARnD,GAAuB,KAARA,GACnC,CAkBA,GA3XW,QADnBn+B,GAD0BA,EA4WFzb,GA3WN2iB,gBACqB,SAAZlH,GAAkC,SAAZA,GAAkC,WAAZA,GA2W7D6/B,EAAgBhrC,GACJ,KAARspC,GAAyB,MAARA,GAAgBjB,EAAUroC,IAC7CA,EAAI3N,KAAK4E,KAAK,KAEPi0C,EAAYx7C,GACT,KAAR45C,GAAyB,MAARA,GAAgBjB,EAAUroC,IAC7CA,EAAI3N,KAAK4E,KAAK,KAGE,QAAd+I,EAAIyqC,SAAqBzqC,EAAI3N,KAAK1G,QAAUk/C,EAAqBn7C,KAC/DsQ,EAAI0T,OAAM1T,EAAI0T,KAAO,IACzBhkB,EAASA,EAAOwf,OAAO,GAAK,KAE9BlP,EAAI3N,KAAK4E,KAAKvH,IAEhBA,EAAS,GACS,QAAdsQ,EAAIyqC,SAAqBnB,GAAQxC,GAAe,KAARwC,GAAuB,KAARA,GACzD,KAAOtpC,EAAI3N,KAAK1G,OAAS,GAAqB,KAAhBqU,EAAI3N,KAAK,IACrC2N,EAAI3N,KAAKw4B,QAGD,KAARye,GACFtpC,EAAIgtC,MAAQ,GACZthD,EAAQ4gD,IACS,KAARhD,IACTtpC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,SAGV78C,GAAU64C,EAAce,EAAMU,GAC9B,MAEJ,KAAKqC,GACS,KAAR/C,GACFtpC,EAAIgtC,MAAQ,GACZthD,EAAQ4gD,IACS,KAARhD,GACTtpC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,IACCjD,GAAQxC,IACjB9mC,EAAI3N,KAAK,IAAMk2C,EAAce,EAAMd,IACnC,MAEJ,KAAK8D,GACEG,GAAyB,KAARnD,EAGXA,GAAQxC,IACL,KAARwC,GAAejB,EAAUroC,GAAMA,EAAIgtC,OAAS,MAC1BhtC,EAAIgtC,OAAT,KAAR1D,EAA0B,MACjBf,EAAce,EAAMd,KALtCxoC,EAAIitC,SAAW,GACfvhD,EAAQ6gD,IAKR,MAEJ,KAAKA,GACCjD,GAAQxC,IAAK9mC,EAAIitC,UAAY1E,EAAce,EAAMS,IAIzDV,MAMA+D,GAAiB,SAAaptC,GAChC,IAIIqtC,EAAWT,EAJXvlC,EAAO3U,EAAWpH,KAAM8hD,GAAgB,OACxCV,EAAO97C,UAAUjF,OAAS,EAAIiF,UAAU,QAAKhF,EAC7C0hD,EAAY7iD,OAAOuV,GACnBtU,EAAQX,EAAiBsc,EAAM,CAAE9b,KAAM,QAE3C,QAAaK,IAAT8gD,EACF,GAAIA,aAAgBU,GAAgBC,EAAY/F,EAAoBoF,QAGlE,GADAE,EAAUJ,GAASa,EAAY,GAAI5iD,OAAOiiD,IAC7B,MAAMliD,UAAUoiD,GAIjC,GADAA,EAAUJ,GAAS9gD,EAAO4hD,EAAW,KAAMD,GAC9B,MAAM7iD,UAAUoiD,GAC7B,IAAI3uB,EAAevyB,EAAMuyB,aAAe,IAAI7tB,EACxCm9C,EAAoBnG,EAA6BnpB,GACrDsvB,EAAkBC,mBAAmB9hD,EAAMshD,OAC3CO,EAAkBE,UAAY,WAC5B/hD,EAAMshD,MAAQviD,OAAOwzB,IAAiB,MAEnChmB,IACHoP,EAAK8W,KAAOuvB,GAAa/lD,KAAK0f,GAC9BA,EAAKsmC,OAASC,GAAUjmD,KAAK0f,GAC7BA,EAAKoM,SAAWo6B,GAAYlmD,KAAK0f,GACjCA,EAAKxK,SAAWixC,GAAYnmD,KAAK0f,GACjCA,EAAKvK,SAAWixC,GAAYpmD,KAAK0f,GACjCA,EAAKqM,KAAOs6B,GAAQrmD,KAAK0f,GACzBA,EAAKwvB,SAAWoX,GAAYtmD,KAAK0f,GACjCA,EAAKwL,KAAOq7B,GAAQvmD,KAAK0f,GACzBA,EAAK6W,SAAWiwB,GAAYxmD,KAAK0f,GACjCA,EAAKgB,OAAS+lC,GAAUzmD,KAAK0f,GAC7BA,EAAK4W,aAAeowB,GAAgB1mD,KAAK0f,GACzCA,EAAK+W,KAAOkwB,GAAQ3mD,KAAK0f,KAIzBknC,GAAenB,GAAehkD,UAE9BskD,GAAe,WACjB,IAAI1tC,EAAMsnC,EAAoBh8C,MAC1Bm/C,EAASzqC,EAAIyqC,OACb5tC,EAAWmD,EAAInD,SACfC,EAAWkD,EAAIlD,SACf4W,EAAO1T,EAAI0T,KACXb,EAAO7S,EAAI6S,KACXxgB,EAAO2N,EAAI3N,KACX26C,EAAQhtC,EAAIgtC,MACZC,EAAWjtC,EAAIitC,SACfuB,EAAS/D,EAAS,IAYtB,OAXa,OAAT/2B,GACF86B,GAAU,KACN9D,EAAoB1qC,KACtBwuC,GAAU3xC,GAAYC,EAAW,IAAMA,EAAW,IAAM,KAE1D0xC,GAAUjF,EAAc71B,GACX,OAATb,IAAe27B,GAAU,IAAM37B,IAChB,QAAV43B,IAAkB+D,GAAU,MACvCA,GAAUxuC,EAAI4qC,iBAAmBv4C,EAAK,GAAKA,EAAK1G,OAAS,IAAM0G,EAAK4H,KAAK,KAAO,GAClE,OAAV+yC,IAAgBwB,GAAU,IAAMxB,GACnB,OAAbC,IAAmBuB,GAAU,IAAMvB,GAChCuB,GAGLZ,GAAY,WACd,IAAI5tC,EAAMsnC,EAAoBh8C,MAC1Bm/C,EAASzqC,EAAIyqC,OACb53B,EAAO7S,EAAI6S,KACf,GAAc,QAAV43B,EAAkB,IACpB,OAAO,IAAIv5B,IAAIu5B,EAAOp4C,KAAK,IAAIs7C,OAC/B,MAAOrjD,GACP,MAAO,OAET,MAAc,QAAVmgD,GAAqBpC,EAAUroC,GAC5ByqC,EAAS,MAAQlB,EAAcvpC,EAAI0T,OAAkB,OAATb,EAAgB,IAAMA,EAAO,IADhC,QAI9Cg7B,GAAc,WAChB,OAAOvG,EAAoBh8C,MAAMm/C,OAAS,KAGxCqD,GAAc,WAChB,OAAOxG,EAAoBh8C,MAAMuR,UAG/BkxC,GAAc,WAChB,OAAOzG,EAAoBh8C,MAAMwR,UAG/BkxC,GAAU,WACZ,IAAIhuC,EAAMsnC,EAAoBh8C,MAC1BooB,EAAO1T,EAAI0T,KACXb,EAAO7S,EAAI6S,KACf,OAAgB,OAATa,EAAgB,GACV,OAATb,EAAgB02B,EAAc71B,GAC9B61B,EAAc71B,GAAQ,IAAMb,GAG9Bo7B,GAAc,WAChB,IAAIv6B,EAAO4zB,EAAoBh8C,MAAMooB,KACrC,OAAgB,OAATA,EAAgB,GAAK61B,EAAc71B,IAGxCw6B,GAAU,WACZ,IAAIr7B,EAAOy0B,EAAoBh8C,MAAMunB,KACrC,OAAgB,OAATA,EAAgB,GAAKpoB,OAAOooB,IAGjCs7B,GAAc,WAChB,IAAInuC,EAAMsnC,EAAoBh8C,MAC1B+G,EAAO2N,EAAI3N,KACf,OAAO2N,EAAI4qC,iBAAmBv4C,EAAK,GAAKA,EAAK1G,OAAS,IAAM0G,EAAK4H,KAAK,KAAO,IAG3Em0C,GAAY,WACd,IAAIpB,EAAQ1F,EAAoBh8C,MAAM0hD,MACtC,OAAOA,EAAQ,IAAMA,EAAQ,IAG3BqB,GAAkB,WACpB,OAAO/G,EAAoBh8C,MAAM2yB,cAG/BqwB,GAAU,WACZ,IAAIrB,EAAW3F,EAAoBh8C,MAAM2hD,SACzC,OAAOA,EAAW,IAAMA,EAAW,IAGjCwB,GAAqB,SAAUzmD,EAAQy6B,GACzC,MAAO,CAAEp6B,IAAKL,EAAQgD,IAAKy3B,EAAQvd,cAAc,EAAM9c,YAAY,IAyHrE,GAtHI6P,GACFtK,EAAiB4gD,GAAc,CAG7BpwB,KAAMswB,GAAmBf,GAAc,SAAUvvB,GAC/C,IAAIne,EAAMsnC,EAAoBh8C,MAC1BgiD,EAAY7iD,OAAO0zB,GACnByuB,EAAUJ,GAASxsC,EAAKstC,GAC5B,GAAIV,EAAS,MAAMpiD,UAAUoiD,GAC7BxF,EAA6BpnC,EAAIie,cAAcuvB,mBAAmBxtC,EAAIgtC,SAIxEW,OAAQc,GAAmBb,IAG3Bn6B,SAAUg7B,GAAmBZ,GAAa,SAAUp6B,GAClD,IAAIzT,EAAMsnC,EAAoBh8C,MAC9BkhD,GAASxsC,EAAKvV,OAAOgpB,GAAY,IAAK03B,MAIxCtuC,SAAU4xC,GAAmBX,GAAa,SAAUjxC,GAClD,IAAImD,EAAMsnC,EAAoBh8C,MAC1B68C,EAAanB,EAAUv8C,OAAOoS,IAClC,IAAI8tC,EAA+B3qC,GAAnC,CACAA,EAAInD,SAAW,GACf,IAAK,IAAIrV,EAAI,EAAGA,EAAI2gD,EAAWx8C,OAAQnE,IACrCwY,EAAInD,UAAY0rC,EAAcJ,EAAW3gD,GAAIyiD,MAKjDntC,SAAU2xC,GAAmBV,GAAa,SAAUjxC,GAClD,IAAIkD,EAAMsnC,EAAoBh8C,MAC1B68C,EAAanB,EAAUv8C,OAAOqS,IAClC,IAAI6tC,EAA+B3qC,GAAnC,CACAA,EAAIlD,SAAW,GACf,IAAK,IAAItV,EAAI,EAAGA,EAAI2gD,EAAWx8C,OAAQnE,IACrCwY,EAAIlD,UAAYyrC,EAAcJ,EAAW3gD,GAAIyiD,MAKjDv2B,KAAM+6B,GAAmBT,GAAS,SAAUt6B,GAC1C,IAAI1T,EAAMsnC,EAAoBh8C,MAC1B0U,EAAI4qC,kBACR4B,GAASxsC,EAAKvV,OAAOipB,GAAOm4B,MAI9BhV,SAAU4X,GAAmBR,GAAa,SAAUpX,GAClD,IAAI72B,EAAMsnC,EAAoBh8C,MAC1B0U,EAAI4qC,kBACR4B,GAASxsC,EAAKvV,OAAOosC,GAAWiV,MAIlCj5B,KAAM47B,GAAmBP,GAAS,SAAUr7B,GAC1C,IAAI7S,EAAMsnC,EAAoBh8C,MAC1Bq/C,EAA+B3qC,KAEvB,KADZ6S,EAAOpoB,OAAOooB,IACE7S,EAAI6S,KAAO,KACtB25B,GAASxsC,EAAK6S,EAAMk5B,OAI3B7tB,SAAUuwB,GAAmBN,GAAa,SAAUjwB,GAClD,IAAIle,EAAMsnC,EAAoBh8C,MAC1B0U,EAAI4qC,mBACR5qC,EAAI3N,KAAO,GACXm6C,GAASxsC,EAAKke,EAAW,GAAIiuB,OAI/B9jC,OAAQomC,GAAmBL,GAAW,SAAU/lC,GAC9C,IAAIrI,EAAMsnC,EAAoBh8C,MAEhB,KADd+c,EAAS5d,OAAO4d,IAEdrI,EAAIgtC,MAAQ,MAER,KAAO3kC,EAAO6G,OAAO,KAAI7G,EAASA,EAAO7O,MAAM,IACnDwG,EAAIgtC,MAAQ,GACZR,GAASxsC,EAAKqI,EAAQikC,KAExBlF,EAA6BpnC,EAAIie,cAAcuvB,mBAAmBxtC,EAAIgtC,SAIxE/uB,aAAcwwB,GAAmBJ,IAGjCjwB,KAAMqwB,GAAmBH,GAAS,SAAUlwB,GAC1C,IAAIpe,EAAMsnC,EAAoBh8C,MAElB,KADZ8yB,EAAO3zB,OAAO2zB,KAKV,KAAOA,EAAKlP,OAAO,KAAIkP,EAAOA,EAAK5kB,MAAM,IAC7CwG,EAAIitC,SAAW,GACfT,GAASxsC,EAAKoe,EAAMmuB,KALlBvsC,EAAIitC,SAAW,SAYvB50C,EAASk2C,GAAc,SAAU,WAC/B,OAAOb,GAAa/lD,KAAK2D,OACxB,CAAElD,YAAY,IAIjBiQ,EAASk2C,GAAc,WAAY,WACjC,OAAOb,GAAa/lD,KAAK2D,OACxB,CAAElD,YAAY,IAEb++C,EAAW,CACb,IAAIuH,GAAwBvH,EAAUwH,gBAClCC,GAAwBzH,EAAU0H,gBAIlCH,IAAuBr2C,EAAS+0C,GAAgB,kBAAmB,SAAyB0B,GAC9F,OAAOJ,GAAsBr3C,MAAM8vC,EAAWv2C,aAK5Cg+C,IAAuBv2C,EAAS+0C,GAAgB,kBAAmB,SAAyBptC,GAC9F,OAAO4uC,GAAsBv3C,MAAM8vC,EAAWv2C,aAIlD2B,EAAe66C,GAAgB,OAE/Bj7C,EAAE,CAAEpI,QAAQ,EAAMoN,QAAS4vC,EAAgB9tC,MAAOhB,GAAe,CAC/DiZ,IAAKk8B,M,6BC7+BP,IAAIl+B,EAAS,EAAQ,IAAiCA,OAClDrkB,EAAsB,EAAQ,IAC9BC,EAAiB,EAAQ,IAGzBC,EAAmBF,EAAoBG,IACvCC,EAAmBJ,EAAoBK,UAFrB,mBAMtBJ,EAAeL,OAAQ,SAAU,SAAUW,GACzCL,EAAiBO,KAAM,CACrBC,KARkB,kBASlB6mB,OAAQ3nB,OAAOW,GACfK,MAAO,KAIR,WACD,IAGIw2C,EAHAv2C,EAAQT,EAAiBK,MACzB8mB,EAAS1mB,EAAM0mB,OACf3mB,EAAQC,EAAMD,MAElB,OAAIA,GAAS2mB,EAAOzmB,OAAe,CAAElD,WAAOmD,EAAWC,MAAM,IAC7Do2C,EAAQ/yB,EAAOkD,EAAQ3mB,GACvBC,EAAMD,OAASw2C,EAAMt2C,OACd,CAAElD,MAAOw5C,EAAOp2C,MAAM,O,6BC1B/B,IAAIoM,EAAc,EAAQ,IACtBD,EAAQ,EAAQ,GAChBsd,EAAa,EAAQ,IACrB0J,EAA8B,EAAQ,IACtChR,EAA6B,EAAQ,IACrCiJ,EAAW,EAAQ,IACnBtQ,EAAgB,EAAQ,IAExBooC,EAAe7mD,OAAOwY,OAK1BnZ,EAAOD,SAAWynD,GAAgB/2C,EAAM,WACtC,IAAIg3C,EAAI,GACJC,EAAI,GAEJ5sB,EAAS95B,SAIb,OAFAymD,EAAE3sB,GAAU,EADG,uBAENvoB,MAAM,IAAI7K,QAAQ,SAAUigD,GAAOD,EAAEC,GAAOA,IACf,GAA/BH,EAAa,GAAIC,GAAG3sB,IAHZ,wBAG4B/M,EAAWy5B,EAAa,GAAIE,IAAIh1C,KAAK,MAC7E,SAAgBzO,EAAQiN,GAM3B,IALA,IAAI02C,EAAIl4B,EAASzrB,GACb4jD,EAAkBx+C,UAAUjF,OAC5BF,EAAQ,EACRomB,EAAwBmN,EAA4B/qB,EACpDmd,EAAuBpD,EAA2B/Z,EAC/Cm7C,EAAkB3jD,GAMvB,IALA,IAII1C,EAJAgmB,EAAIpI,EAAc/V,UAAUnF,MAC5B2a,EAAOyL,EAAwByD,EAAWvG,GAAG7N,OAAO2Q,EAAsB9C,IAAMuG,EAAWvG,GAC3FpjB,EAASya,EAAKza,OACdqgC,EAAI,EAEDrgC,EAASqgC,GACdjjC,EAAMqd,EAAK4lB,KACN/zB,IAAemZ,EAAqBzpB,KAAKonB,EAAGhmB,KAAMomD,EAAEpmD,GAAOgmB,EAAEhmB,IAEpE,OAAOomD,GACPJ,G,6BCvCJ,IAAI/lD,EAAO,EAAQ,IACfiuB,EAAW,EAAQ,IACnByI,EAA+B,EAAQ,IACvCF,EAAwB,EAAQ,IAChCN,EAAW,EAAQ,IACnBmwB,EAAiB,EAAQ,KACzB5vB,EAAoB,EAAQ,IAIhCl4B,EAAOD,QAAU,SAAcgoD,GAC7B,IAOI3jD,EAAQ+E,EAAQsvB,EAAMxN,EAPtB5oB,EAAIqtB,EAASq4B,GACbp4C,EAAmB,mBAAR5L,KAAqBA,KAAOH,MACvCikD,EAAkBx+C,UAAUjF,OAC5B4jD,EAAQH,EAAkB,EAAIx+C,UAAU,QAAKhF,EAC7C+2C,OAAoB/2C,IAAV2jD,EACV9jD,EAAQ,EACR+jD,EAAiB/vB,EAAkB71B,GAIvC,GAFI+4C,IAAS4M,EAAQvmD,EAAKumD,EAAOH,EAAkB,EAAIx+C,UAAU,QAAKhF,EAAW,IAE3DA,MAAlB4jD,GAAiCt4C,GAAK/L,OAASq0B,EAAsBgwB,GAYvE,IADA9+C,EAAS,IAAIwG,EADbvL,EAASuzB,EAASt1B,EAAE+B,SAEdA,EAASF,EAAOA,IACpB4jD,EAAe3+C,EAAQjF,EAAOk3C,EAAU4M,EAAM3lD,EAAE6B,GAAQA,GAAS7B,EAAE6B,SAVrE,IAFA+mB,EAAWg9B,EAAe7nD,KAAKiC,GAC/B8G,EAAS,IAAIwG,IACL8oB,EAAOxN,EAASyD,QAAQpqB,KAAMJ,IACpC4jD,EAAe3+C,EAAQjF,EAAOk3C,EAC1BjjB,EAA6BlN,EAAU+8B,EAAO,CAACvvB,EAAKv3B,MAAOgD,IAAQ,GACnEu0B,EAAKv3B,OAWb,OADAiI,EAAO/E,OAASF,EACTiF,I,6BCtCT,IAAI0I,EAAc,EAAQ,IACtBlB,EAAuB,EAAQ,IAC/BC,EAA2B,EAAQ,IAEvC5Q,EAAOD,QAAU,SAAU4B,EAAQH,EAAKN,GACtC,IAAIgnD,EAAcr2C,EAAYrQ,GAC1B0mD,KAAevmD,EAAQgP,EAAqBjE,EAAE/K,EAAQumD,EAAat3C,EAAyB,EAAG1P,IAC9FS,EAAOumD,GAAehnD,I,6BCN7B,IASIinD,EAAgB,eAChBC,EAAkB,yBAClBC,EAAiB,kDAEjBzoC,EAAQzd,KAAKyd,MACb0oC,EAAqBplD,OAAOqlD,aAoC5BC,EAAe,SAAUC,GAG3B,OAAOA,EAAQ,GAAK,IAAMA,EAAQ,KAOhCC,EAAQ,SAAUC,EAAOC,EAAWC,GACtC,IAAIxuC,EAAI,EAGR,IAFAsuC,EAAQE,EAAYjpC,EAAM+oC,EAzDjB,KAyDiCA,GAAS,EACnDA,GAAS/oC,EAAM+oC,EAAQC,GAChBD,EAAQG,IAA2BzuC,GA/DjC,GAgEPsuC,EAAQ/oC,EAAM+oC,EArDExD,IAuDlB,OAAOvlC,EAAMvF,EAAI,GAAsBsuC,GAASA,EA/DvC,MAuEP7Z,EAAS,SAAUj/B,GACrB,IAYI5P,EAAG8oD,EAZH9B,EAAS,GAMT+B,GAHJn5C,EAxDe,SAAUgb,GAIzB,IAHA,IAAIo8B,EAAS,GACT52C,EAAU,EACVjM,EAASymB,EAAOzmB,OACbiM,EAAUjM,GAAQ,CACvB,IAAIlD,EAAQ2pB,EAAOnD,WAAWrX,KAC9B,GAAInP,GAAS,OAAUA,GAAS,OAAUmP,EAAUjM,EAAQ,CAE1D,IAAI6kD,EAAQp+B,EAAOnD,WAAWrX,KACN,QAAX,MAAR44C,GACHhC,EAAOv3C,OAAe,KAARxO,IAAkB,KAAe,KAAR+nD,GAAiB,QAIxDhC,EAAOv3C,KAAKxO,GACZmP,UAGF42C,EAAOv3C,KAAKxO,GAGhB,OAAO+lD,EAmCCiC,CAAWr5C,IAGKzL,OAGpB1C,EA9ES,IA+ETinD,EAAQ,EACRQ,EAjFY,GAqFhB,IAAKlpD,EAAI,EAAGA,EAAI4P,EAAMzL,OAAQnE,KAC5B8oD,EAAel5C,EAAM5P,IACF,KACjBgnD,EAAOv3C,KAAK44C,EAAmBS,IAInC,IAAIK,EAAcnC,EAAO7iD,OACrBilD,EAAiBD,EAQrB,IALIA,GACFnC,EAAOv3C,KA/FK,KAmGP25C,EAAiBL,GAAa,CAEnC,IAAI3oD,EA7GK,WA8GT,IAAKJ,EAAI,EAAGA,EAAI4P,EAAMzL,OAAQnE,KAC5B8oD,EAAel5C,EAAM5P,KACDyB,GAAKqnD,EAAe1oD,IACtCA,EAAI0oD,GAKR,IAAIO,EAAwBD,EAAiB,EAC7C,GAAIhpD,EAAIqB,EAAIke,GAvHH,WAuHmB+oC,GAASW,GACnC,MAAMC,WAAWlB,GAMnB,IAHAM,IAAUtoD,EAAIqB,GAAK4nD,EACnB5nD,EAAIrB,EAECJ,EAAI,EAAGA,EAAI4P,EAAMzL,OAAQnE,IAAK,CAEjC,IADA8oD,EAAel5C,EAAM5P,IACFyB,KAAOinD,EAhInB,WAiIL,MAAMY,WAAWlB,GAEnB,GAAIU,GAAgBrnD,EAAG,CAGrB,IADA,IAAI8nD,EAAIb,EACCtuC,EArIN,IAqIoCA,GArIpC,GAqI+C,CAChD,IAAIlZ,EAAIkZ,GAAK8uC,EArIZ,EAqI2B9uC,GAAK8uC,EApIhC,MAoIqD9uC,EAAI8uC,EAC1D,GAAIK,EAAIroD,EAAG,MACX,IAAIsoD,EAAUD,EAAIroD,EACduoD,EAzIH,GAyIuBvoD,EACxB8lD,EAAOv3C,KAAK44C,EAAmBE,EAAarnD,EAAIsoD,EAAUC,KAC1DF,EAAI5pC,EAAM6pC,EAAUC,GAGtBzC,EAAOv3C,KAAK44C,EAAmBE,EAAagB,KAC5CL,EAAOT,EAAMC,EAAOW,EAAuBD,GAAkBD,GAC7DT,EAAQ,IACNU,KAIJV,IACAjnD,EAEJ,OAAOulD,EAAOv0C,KAAK,KAGrB1S,EAAOD,QAAU,SAAU8P,GACzB,IAEI5P,EAAG8jB,EAFH4lC,EAAU,GACVpmC,EAAS1T,EAAMib,cAAclhB,QAAQw+C,EAAiB,KAAU71C,MAAM,KAE1E,IAAKtS,EAAI,EAAGA,EAAIsjB,EAAOnf,OAAQnE,IAC7B8jB,EAAQR,EAAOtjB,GACf0pD,EAAQj6C,KAAKy4C,EAActyB,KAAK9R,GAAS,OAAS+qB,EAAO/qB,GAASA,GAEpE,OAAO4lC,EAAQj3C,KAAK,O,6BCpKtB,EAAQ,GACR,IAAI9H,EAAI,EAAQ,IACZ40C,EAAiB,EAAQ,IACzB1uC,EAAW,EAAQ,IACnB/F,EAAc,EAAQ,IACtBC,EAAiB,EAAQ,IACzBijB,EAA4B,EAAQ,IACpC3qB,EAAsB,EAAQ,IAC9B6H,EAAa,EAAQ,IACrBy+C,EAAS,EAAQ,GACjBnoD,EAAO,EAAQ,IACfmQ,EAAW,EAAQ,GACnB5O,EAAW,EAAQ,IACnB6mD,EAAc,EAAQ,KACtB3xB,EAAoB,EAAQ,IAG5BjuB,EAFkB,EAAQ,EAEfD,CAAgB,YAG3BxG,EAAmBF,EAAoBG,IACvCqmD,EAAyBxmD,EAAoBK,UAHzB,mBAIpBomD,EAA2BzmD,EAAoBK,UAHlBqmD,2BAK7BC,EAAO,MACPC,EAAYtmD,MAAM,GAElBumD,EAAkB,SAAUC,GAC9B,OAAOF,EAAUE,EAAQ,KAAOF,EAAUE,EAAQ,GAAKn6B,OAAO,qBAAuBm6B,EAAQ,KAAM,QAGjGC,EAAgB,SAAUC,GAC5B,IACE,OAAO3a,mBAAmB2a,GAC1B,MAAOvnD,GACP,OAAOunD,IAIPC,EAAc,SAAUroD,GAC1B,IAAIiH,EAASjH,EAAG0H,QAAQqgD,EAAM,KAC1BG,EAAQ,EACZ,IACE,OAAOza,mBAAmBxmC,GAC1B,MAAOpG,GACP,KAAOqnD,GACLjhD,EAASA,EAAOS,QAAQugD,EAAgBC,KAAUC,GAEpD,OAAOlhD,IAIPqhD,EAAO,eAEP5gD,EAAU,CACZ,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,KAGLu7B,EAAW,SAAU3U,GACvB,OAAO5mB,EAAQ4mB,IAGbi6B,EAAY,SAAUvoD,GACxB,OAAO8S,mBAAmB9S,GAAI0H,QAAQ4gD,EAAMrlB,IAG1CulB,EAAoB,SAAUvhD,EAAQs8C,GACxC,GAAIA,EAIF,IAHA,IAEIzQ,EAAW2V,EAFX3kC,EAAay/B,EAAMlzC,MAAM,KACzBrO,EAAQ,EAELA,EAAQ8hB,EAAW5hB,SACxB4wC,EAAYhvB,EAAW9hB,MACTE,SACZumD,EAAQ3V,EAAUziC,MAAM,KACxBpJ,EAAOuG,KAAK,CACVlO,IAAK+oD,EAAYI,EAAMrnB,SACvBpiC,MAAOqpD,EAAYI,EAAMj4C,KAAK,UAOpCuzC,EAAqB,SAAUR,GACjC1hD,KAAKwrB,QAAQnrB,OAAS,EACtBsmD,EAAkB3mD,KAAKwrB,QAASk2B,IAG9BmF,EAA0B,SAAUC,EAAQC,GAC9C,GAAID,EAASC,EAAU,MAAM7nD,UAAU,yBAGrC8nD,EAA0B98B,EAA0B,SAAkBsF,EAAQzvB,GAChFN,EAAiBO,KAAM,CACrBC,KAjF6BgmD,0BAkF7B/+B,SAAU4+B,EAAYC,EAAuBv2B,GAAQhE,SACrDzrB,KAAMA,KAEP,WAAY,WACb,IAAIK,EAAQ4lD,EAAyBhmD,MACjCD,EAAOK,EAAML,KACb20B,EAAOt0B,EAAM8mB,SAASyD,OACtBi8B,EAAQlyB,EAAKv3B,MAGf,OAFGu3B,EAAKn0B,OACRm0B,EAAKv3B,MAAiB,SAAT4C,EAAkB6mD,EAAMnpD,IAAe,WAATsC,EAAoB6mD,EAAMzpD,MAAQ,CAACypD,EAAMnpD,IAAKmpD,EAAMzpD,QACxFu3B,IAKPuyB,EAA6B,WAC/B7/C,EAAWpH,KAAMinD,EAnGK,mBAoGtB,IAGI/C,EAAgBh9B,EAAUwN,EAAMwyB,EAAe3jC,EAAOC,EAAQ/lB,EAH9D0pD,EAAO7hD,UAAUjF,OAAS,EAAIiF,UAAU,QAAKhF,EAC7Cyb,EAAO/b,KACPwrB,EAAU,GAUd,GAPA/rB,EAAiBsc,EAAM,CACrB9b,KA1GoB,kBA2GpBurB,QAASA,EACT22B,UAAW,aACXD,mBAAoBA,SAGT5hD,IAAT6mD,EACF,GAAIloD,EAASkoD,GAEX,GAA8B,mBAD9BjD,EAAiB/vB,EAAkBgzB,IAGjC,IADAjgC,EAAWg9B,EAAe7nD,KAAK8qD,KACtBzyB,EAAOxN,EAASyD,QAAQpqB,MAAM,CAErC,IACGgjB,GAFH2jC,EAAgBpB,EAAYj4C,EAAS6mB,EAAKv3B,SAEjBwtB,QAAQpqB,OAC9BijB,EAAS0jC,EAAcv8B,QAAQpqB,OAC/B2mD,EAAcv8B,OAAOpqB,KACtB,MAAMrB,UAAU,mCAClBssB,EAAQ7f,KAAK,CAAElO,IAAK8lB,EAAMpmB,MAAQ,GAAIA,MAAOqmB,EAAOrmB,MAAQ,UAEzD,IAAKM,KAAO0pD,EAAUtB,EAAOsB,EAAM1pD,IAAM+tB,EAAQ7f,KAAK,CAAElO,IAAKA,EAAKN,MAAOgqD,EAAK1pD,GAAO,UAE5FkpD,EAAkBn7B,EAAyB,iBAAT27B,EAAuC,MAAnBA,EAAKvjC,OAAO,GAAaujC,EAAKj5C,MAAM,GAAKi5C,EAAOA,EAAO,KAK/GC,EAA2BH,EAA2BnpD,UAE1DkJ,EAAYogD,EAA0B,CAGpCh0C,OAAQ,SAAgB3W,EAAMU,GAC5B0pD,EAAwBvhD,UAAUjF,OAAQ,GAC1C,IAAID,EAAQ2lD,EAAuB/lD,MACnCI,EAAMorB,QAAQ7f,KAAK,CAAElO,IAAKhB,EAAO,GAAIU,MAAOA,EAAQ,KACpDiD,EAAM+hD,aAIR,OAAU,SAAU1lD,GAClBoqD,EAAwBvhD,UAAUjF,OAAQ,GAK1C,IAJA,IAAID,EAAQ2lD,EAAuB/lD,MAC/BwrB,EAAUprB,EAAMorB,QAChB/tB,EAAMhB,EAAO,GACb0D,EAAQ,EACLA,EAAQqrB,EAAQnrB,QACjBmrB,EAAQrrB,GAAO1C,MAAQA,EAAK+tB,EAAQ67B,OAAOlnD,EAAO,GACjDA,IAEPC,EAAM+hD,aAIRplD,IAAK,SAAaN,GAChBoqD,EAAwBvhD,UAAUjF,OAAQ,GAI1C,IAHA,IAAImrB,EAAUu6B,EAAuB/lD,MAAMwrB,QACvC/tB,EAAMhB,EAAO,GACb0D,EAAQ,EACLA,EAAQqrB,EAAQnrB,OAAQF,IAC7B,GAAIqrB,EAAQrrB,GAAO1C,MAAQA,EAAK,OAAO+tB,EAAQrrB,GAAOhD,MAExD,OAAO,MAITmqD,OAAQ,SAAgB7qD,GACtBoqD,EAAwBvhD,UAAUjF,OAAQ,GAK1C,IAJA,IAAImrB,EAAUu6B,EAAuB/lD,MAAMwrB,QACvC/tB,EAAMhB,EAAO,GACb2I,EAAS,GACTjF,EAAQ,EACLA,EAAQqrB,EAAQnrB,OAAQF,IACzBqrB,EAAQrrB,GAAO1C,MAAQA,GAAK2H,EAAOuG,KAAK6f,EAAQrrB,GAAOhD,OAE7D,OAAOiI,GAIT+I,IAAK,SAAa1R,GAChBoqD,EAAwBvhD,UAAUjF,OAAQ,GAI1C,IAHA,IAAImrB,EAAUu6B,EAAuB/lD,MAAMwrB,QACvC/tB,EAAMhB,EAAO,GACb0D,EAAQ,EACLA,EAAQqrB,EAAQnrB,QACrB,GAAImrB,EAAQrrB,KAAS1C,MAAQA,EAAK,OAAO,EAE3C,OAAO,GAITiC,IAAK,SAAajD,EAAMU,GACtB0pD,EAAwBvhD,UAAUjF,OAAQ,GAQ1C,IAPA,IAMIumD,EANAxmD,EAAQ2lD,EAAuB/lD,MAC/BwrB,EAAUprB,EAAMorB,QAChB+7B,GAAQ,EACR9pD,EAAMhB,EAAO,GACbgH,EAAMtG,EAAQ,GACdgD,EAAQ,EAELA,EAAQqrB,EAAQnrB,OAAQF,KAC7BymD,EAAQp7B,EAAQrrB,IACN1C,MAAQA,IACZ8pD,EAAO/7B,EAAQ67B,OAAOlnD,IAAS,IAEjConD,GAAQ,EACRX,EAAMzpD,MAAQsG,IAIf8jD,GAAO/7B,EAAQ7f,KAAK,CAAElO,IAAKA,EAAKN,MAAOsG,IAC5CrD,EAAM+hD,aAIRtwB,KAAM,WACJ,IAII+0B,EAAOY,EAAcC,EAJrBrnD,EAAQ2lD,EAAuB/lD,MAC/BwrB,EAAUprB,EAAMorB,QAEhBtd,EAAQsd,EAAQtd,QAGpB,IADAsd,EAAQnrB,OAAS,EACZonD,EAAa,EAAGA,EAAav5C,EAAM7N,OAAQonD,IAAc,CAE5D,IADAb,EAAQ14C,EAAMu5C,GACTD,EAAe,EAAGA,EAAeC,EAAYD,IAChD,GAAIh8B,EAAQg8B,GAAc/pD,IAAMmpD,EAAMnpD,IAAK,CACzC+tB,EAAQ67B,OAAOG,EAAc,EAAGZ,GAChC,MAGAY,IAAiBC,GAAYj8B,EAAQ7f,KAAKi7C,GAEhDxmD,EAAM+hD,aAGRx+C,QAAS,SAAiB2W,GAKxB,IAJA,IAGIssC,EAHAp7B,EAAUu6B,EAAuB/lD,MAAMwrB,QACvCmJ,EAAgBj3B,EAAK4c,EAAUhV,UAAUjF,OAAS,EAAIiF,UAAU,QAAKhF,EAAW,GAChFH,EAAQ,EAELA,EAAQqrB,EAAQnrB,QAErBs0B,GADAiyB,EAAQp7B,EAAQrrB,MACIhD,MAAOypD,EAAMnpD,IAAKuC,OAI1C8a,KAAM,WACJ,OAAO,IAAIksC,EAAwBhnD,KAAM,SAG3CqG,OAAQ,WACN,OAAO,IAAI2gD,EAAwBhnD,KAAM,WAG3CwrB,QAAS,WACP,OAAO,IAAIw7B,EAAwBhnD,KAAM,aAE1C,CAAElD,YAAY,IAGjBiQ,EAASq6C,EAA0BlhD,EAAUkhD,EAAyB57B,SAItEze,EAASq6C,EAA0B,WAAY,WAK7C,IAJA,IAGIR,EAHAp7B,EAAUu6B,EAAuB/lD,MAAMwrB,QACvCpmB,EAAS,GACTjF,EAAQ,EAELA,EAAQqrB,EAAQnrB,QACrBumD,EAAQp7B,EAAQrrB,KAChBiF,EAAOuG,KAAK+6C,EAAUE,EAAMnpD,KAAO,IAAMipD,EAAUE,EAAMzpD,QACzD,OAAOiI,EAAOuJ,KAAK,MACpB,CAAE7R,YAAY,IAEjBmK,EAAeggD,EAzRS,mBA2RxBpgD,EAAE,CAAEpI,QAAQ,EAAMoN,QAAS4vC,GAAkB,CAC3C32C,gBAAiBmiD,IAGnBhrD,EAAOD,QAAU,CACf8I,gBAAiBmiD,EACjBlL,SAAUgK,I,gBCrTZ,IAAIl4C,EAAW,EAAQ,GACnBsmB,EAAoB,EAAQ,IAEhCl4B,EAAOD,QAAU,SAAUmC,GACzB,IAAI+lD,EAAiB/vB,EAAkBh2B,GACvC,GAA6B,mBAAlB+lD,EACT,MAAMhlD,UAAUC,OAAOhB,GAAM,oBAC7B,OAAO0P,EAASq2C,EAAe7nD,KAAK8B","file":"cvat-core.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 90);\n","var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const Platform = require('platform');\n const ErrorStackParser = require('error-stack-parser');\n const config = require('./config');\n\n /**\n * Base exception class\n * @memberof module:API.cvat.exceptions\n * @extends Error\n * @ignore\n */\n class Exception extends Error {\n /**\n * @param {string} message - Exception message\n */\n constructor(message) {\n super(message);\n\n const time = new Date().toISOString();\n const system = Platform.os.toString();\n const client = `${Platform.name} ${Platform.version}`;\n const info = ErrorStackParser.parse(this)[0];\n const filename = `${info.fileName}`;\n const line = info.lineNumber;\n const column = info.columnNumber;\n const {\n jobID,\n taskID,\n clientID,\n } = config;\n\n const projID = undefined; // wasn't implemented\n\n Object.defineProperties(this, Object.freeze({\n system: {\n /**\n * @name system\n * @type {string}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => system,\n },\n client: {\n /**\n * @name client\n * @type {string}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => client,\n },\n time: {\n /**\n * @name time\n * @type {string}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => time,\n },\n jobID: {\n /**\n * @name jobID\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => jobID,\n },\n taskID: {\n /**\n * @name taskID\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => taskID,\n },\n projID: {\n /**\n * @name projID\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => projID,\n },\n clientID: {\n /**\n * @name clientID\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => clientID,\n },\n filename: {\n /**\n * @name filename\n * @type {string}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => filename,\n },\n line: {\n /**\n * @name line\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => line,\n },\n column: {\n /**\n * @name column\n * @type {integer}\n * @memberof module:API.cvat.exceptions.Exception\n * @readonly\n * @instance\n */\n get: () => column,\n },\n }));\n }\n\n /**\n * Save an exception on a server\n * @name save\n * @method\n * @memberof Exception\n * @instance\n * @async\n */\n async save() {\n const exceptionObject = {\n system: this.system,\n client: this.client,\n time: this.time,\n job_id: this.jobID,\n task_id: this.taskID,\n proj_id: this.projID,\n client_id: this.clientID,\n message: this.message,\n filename: this.filename,\n line: this.line,\n column: this.column,\n stack: this.stack,\n };\n\n try {\n const serverProxy = require('./server-proxy');\n await serverProxy.server.exception(exceptionObject);\n } catch (exception) {\n // add event\n }\n }\n }\n\n /**\n * Exceptions are referred with arguments data\n * @memberof module:API.cvat.exceptions\n * @extends module:API.cvat.exceptions.Exception\n */\n class ArgumentError extends Exception {\n /**\n * @param {string} message - Exception message\n */\n constructor(message) {\n super(message);\n }\n }\n\n /**\n * Unexpected problems with data which are not connected with a user input\n * @memberof module:API.cvat.exceptions\n * @extends module:API.cvat.exceptions.Exception\n */\n class DataError extends Exception {\n /**\n * @param {string} message - Exception message\n */\n constructor(message) {\n super(message);\n }\n }\n\n /**\n * Unexpected situations in code\n * @memberof module:API.cvat.exceptions\n * @extends module:API.cvat.exceptions.Exception\n */\n class ScriptingError extends Exception {\n /**\n * @param {string} message - Exception message\n */\n constructor(message) {\n super(message);\n }\n }\n\n /**\n * Plugin-referred exceptions\n * @memberof module:API.cvat.exceptions\n * @extends module:API.cvat.exceptions.Exception\n */\n class PluginError extends Exception {\n /**\n * @param {string} message - Exception message\n */\n constructor(message) {\n super(message);\n }\n }\n\n /**\n * Exceptions in interaction with a server\n * @memberof module:API.cvat.exceptions\n * @extends module:API.cvat.exceptions.Exception\n */\n class ServerError extends Exception {\n /**\n * @param {string} message - Exception message\n * @param {(string|integer)} code - Response code\n */\n constructor(message, code) {\n super(message);\n\n Object.defineProperties(this, Object.freeze({\n /**\n * @name code\n * @type {(string|integer)}\n * @memberof module:API.cvat.exceptions.ServerError\n * @readonly\n * @instance\n */\n code: {\n get: () => code,\n },\n }));\n }\n }\n\n module.exports = {\n Exception,\n ArgumentError,\n DataError,\n ScriptingError,\n PluginError,\n ServerError,\n };\n})();\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar hide = require('../internals/hide');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n hide(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) hide(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n hide(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar path = require('../internals/path');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar classof = require('../internals/classof-raw');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar userAgent = require('../internals/user-agent');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar PromiseConstructor = global[PROMISE];\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = global.fetch;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar IS_NODE = classof(process) == 'process';\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper;\n\nvar FORCED = isForced(PROMISE, function () {\n // correct subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var empty = function () { /* empty */ };\n var FakePromise = (promise.constructor = {})[SPECIES] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !((IS_NODE || typeof PromiseRejectionEvent == 'function')\n && (!IS_PURE || promise['finally'])\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1);\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (handler = global['on' + name]) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (promise, state) {\n task.call(global, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (promise, state) {\n task.call(global, function () {\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(promise, state, true);\n};\n\nvar internalResolve = function (promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, promise, wrapper, state),\n bind(internalReject, promise, wrapper, state)\n );\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, { done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n // wrap fetch result\n if (!IS_PURE && typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\n });\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = path[PROMISE];\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hide = require('../internals/hide');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar hide = require('../internals/hide');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n encodeURIComponent:false\n*/\n\n(() => {\n const FormData = require('form-data');\n const {\n ServerError,\n } = require('./exceptions');\n const store = require('store');\n const config = require('./config');\n\n class ServerProxy {\n constructor() {\n const Axios = require('axios');\n Axios.defaults.withCredentials = true;\n Axios.defaults.xsrfHeaderName = 'X-CSRFTOKEN';\n Axios.defaults.xsrfCookieName = 'csrftoken';\n\n let token = store.get('token');\n if (token) {\n Axios.defaults.headers.common.Authorization = `Token ${token}`;\n }\n\n async function about() {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/server/about`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get \"about\" information from the server',\n code,\n );\n }\n\n return response.data;\n }\n\n async function share(directory) {\n const { backendAPI } = config;\n directory = encodeURIComponent(directory);\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/server/share?directory=${directory}`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get \"share\" information from the server',\n code,\n );\n }\n\n return response.data;\n }\n\n async function exception(exceptionObject) {\n const { backendAPI } = config;\n\n try {\n await Axios.post(`${backendAPI}/server/exception`, JSON.stringify(exceptionObject), {\n proxy: config.proxy,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not send an exception to the server',\n code,\n );\n }\n }\n\n async function formats() {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/server/annotation/formats`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get annotation formats from the server',\n code,\n );\n }\n\n return response.data;\n }\n\n async function register(username, firstName, lastName, email, password1, password2) {\n let response = null;\n try {\n const data = JSON.stringify({\n username,\n first_name: firstName,\n last_name: lastName,\n email,\n password1,\n password2,\n });\n response = await Axios.post(`${config.backendAPI}/auth/register`, data, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n `Could not register '${username}' user on the server`,\n code,\n );\n }\n\n return response.data;\n }\n\n async function login(username, password) {\n const authenticationData = ([\n `${encodeURIComponent('username')}=${encodeURIComponent(username)}`,\n `${encodeURIComponent('password')}=${encodeURIComponent(password)}`,\n ]).join('&').replace(/%20/g, '+');\n\n let authenticationResponse = null;\n try {\n authenticationResponse = await Axios.post(\n `${config.backendAPI}/auth/login`,\n authenticationData, {\n proxy: config.proxy,\n },\n );\n } catch (errorData) {\n const code = errorData.response\n ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not login on a server',\n code,\n );\n }\n\n if (authenticationResponse.headers['set-cookie']) {\n // Browser itself setup cookie and header is none\n // In NodeJS we need do it manually\n const cookies = authenticationResponse.headers['set-cookie'].join(';');\n Axios.defaults.headers.common.Cookie = cookies;\n }\n\n token = authenticationResponse.data.key;\n store.set('token', token);\n Axios.defaults.headers.common.Authorization = `Token ${token}`;\n }\n\n async function logout() {\n try {\n await Axios.post(`${config.backendAPI}/auth/logout`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not logout from the server',\n code,\n );\n }\n\n store.remove('token');\n Axios.defaults.headers.common.Authorization = '';\n }\n\n async function authorized() {\n try {\n await module.exports.users.getSelf();\n } catch (serverError) {\n if (serverError.code === 401) {\n return false;\n }\n\n throw serverError;\n }\n\n return true;\n }\n\n async function getTasks(filter = '') {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/tasks?${filter}`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get tasks from a server',\n code,\n );\n }\n\n response.data.results.count = response.data.count;\n return response.data.results;\n }\n\n async function saveTask(id, taskData) {\n const { backendAPI } = config;\n\n try {\n await Axios.patch(`${backendAPI}/tasks/${id}`, JSON.stringify(taskData), {\n proxy: config.proxy,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not save the task on the server',\n code,\n );\n }\n }\n\n async function deleteTask(id) {\n const { backendAPI } = config;\n\n try {\n await Axios.delete(`${backendAPI}/tasks/${id}`);\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not delete the task from the server',\n code,\n );\n }\n }\n\n async function createTask(taskData, files, onUpdate) {\n const { backendAPI } = config;\n\n async function wait(id) {\n return new Promise((resolve, reject) => {\n async function checkStatus() {\n try {\n const response = await Axios.get(`${backendAPI}/tasks/${id}/status`);\n if (['Queued', 'Started'].includes(response.data.state)) {\n if (response.data.message !== '') {\n onUpdate(response.data.message);\n }\n setTimeout(checkStatus, 1000);\n } else if (response.data.state === 'Finished') {\n resolve();\n } else if (response.data.state === 'Failed') {\n // If request has been successful, but task hasn't been created\n // Then passed data is wrong and we can pass code 400\n reject(new ServerError(\n 'Could not create the task on the server',\n 400,\n ));\n } else {\n // If server has another status, it is unexpected\n // Therefore it is server error and we can pass code 500\n reject(new ServerError(\n `Unknown task state has been received: ${response.data.state}`,\n 500,\n ));\n }\n } catch (errorData) {\n const code = errorData.response\n ? errorData.response.status : errorData.code;\n\n reject(new ServerError(\n 'Data uploading error occurred',\n code,\n ));\n }\n }\n\n setTimeout(checkStatus, 1000);\n });\n }\n\n const batchOfFiles = new FormData();\n for (const key in files) {\n if (Object.prototype.hasOwnProperty.call(files, key)) {\n for (let i = 0; i < files[key].length; i++) {\n batchOfFiles.append(`${key}[${i}]`, files[key][i]);\n }\n }\n }\n\n let response = null;\n\n onUpdate('The task is being created on the server..');\n try {\n response = await Axios.post(`${backendAPI}/tasks`, JSON.stringify(taskData), {\n proxy: config.proxy,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not put task to the server',\n code,\n );\n }\n\n onUpdate('The data is being uploaded to the server..');\n try {\n await Axios.post(`${backendAPI}/tasks/${response.data.id}/data`, batchOfFiles, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n await deleteTask(response.data.id);\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not put data to the server',\n code,\n );\n }\n\n try {\n await wait(response.data.id);\n } catch (createException) {\n await deleteTask(response.data.id);\n throw createException;\n }\n\n\n const createdTask = await getTasks(`?id=${response.id}`);\n return createdTask[0];\n }\n\n async function getJob(jobID) {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/jobs/${jobID}`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get jobs from a server',\n code,\n );\n }\n\n return response.data;\n }\n\n async function saveJob(id, jobData) {\n const { backendAPI } = config;\n\n try {\n await Axios.patch(`${backendAPI}/jobs/${id}`, JSON.stringify(jobData), {\n proxy: config.proxy,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not save the job on the server',\n code,\n );\n }\n }\n\n async function getUsers() {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/users`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get users from the server',\n code,\n );\n }\n\n return response.data.results;\n }\n\n async function getSelf() {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/users/self`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n 'Could not get user data from the server',\n code,\n );\n }\n\n return response.data;\n }\n\n async function getData(tid, frame) {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/tasks/${tid}/frames/${frame}`, {\n proxy: config.proxy,\n responseType: 'blob',\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n `Could not get frame ${frame} for the task ${tid} from the server`,\n code,\n );\n }\n\n return response.data;\n }\n\n async function getMeta(tid) {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/tasks/${tid}/frames/meta`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n `Could not get frame meta info for the task ${tid} from the server`,\n code,\n );\n }\n\n return response.data;\n }\n\n // Session is 'task' or 'job'\n async function getAnnotations(session, id) {\n const { backendAPI } = config;\n\n let response = null;\n try {\n response = await Axios.get(`${backendAPI}/${session}s/${id}/annotations`, {\n proxy: config.proxy,\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n `Could not get annotations for the ${session} ${id} from the server`,\n code,\n );\n }\n\n return response.data;\n }\n\n // Session is 'task' or 'job'\n async function updateAnnotations(session, id, data, action) {\n const { backendAPI } = config;\n let requestFunc = null;\n let url = null;\n if (action.toUpperCase() === 'PUT') {\n requestFunc = Axios.put.bind(Axios);\n url = `${backendAPI}/${session}s/${id}/annotations`;\n } else {\n requestFunc = Axios.patch.bind(Axios);\n url = `${backendAPI}/${session}s/${id}/annotations?action=${action}`;\n }\n\n let response = null;\n try {\n response = await requestFunc(url, JSON.stringify(data), {\n proxy: config.proxy,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (errorData) {\n const code = errorData.response ? errorData.response.status : errorData.code;\n throw new ServerError(\n `Could not updated annotations for the ${session} ${id} on the server`,\n code,\n );\n }\n\n return response.data;\n }\n\n // Session is 'task' or 'job'\n async function uploadAnnotations(session, id, file, format) {\n const { backendAPI } = config;\n\n let annotationData = new FormData();\n annotationData.append('annotation_file', file);\n\n return new Promise((resolve, reject) => {\n async function request() {\n try {\n const response = await Axios\n .put(`${backendAPI}/${session}s/${id}/annotations?format=${format}`, annotationData, {\n proxy: config.proxy,\n });\n if (response.status === 202) {\n annotationData = new FormData();\n setTimeout(request, 3000);\n } else {\n resolve();\n }\n } catch (errorData) {\n const code = errorData.response\n ? errorData.response.status : errorData.code;\n const error = new ServerError(\n `Could not upload annotations for the ${session} ${id}`,\n code,\n );\n reject(error);\n }\n }\n\n setTimeout(request);\n });\n }\n\n // Session is 'task' or 'job'\n async function dumpAnnotations(id, name, format) {\n const { backendAPI } = config;\n const filename = name.replace(/\\//g, '_');\n let url = `${backendAPI}/tasks/${id}/annotations/${filename}?format=${format}`;\n\n return new Promise((resolve, reject) => {\n async function request() {\n try {\n const response = await Axios\n .get(`${url}`, {\n proxy: config.proxy,\n });\n if (response.status === 202) {\n setTimeout(request, 3000);\n } else {\n url = `${url}&action=download`;\n resolve(url);\n }\n } catch (errorData) {\n const code = errorData.response\n ? errorData.response.status : errorData.code;\n const error = new ServerError(\n `Could not dump annotations for the task ${id} from the server`,\n code,\n );\n reject(error);\n }\n }\n\n setTimeout(request);\n });\n }\n\n Object.defineProperties(this, Object.freeze({\n server: {\n value: Object.freeze({\n about,\n share,\n formats,\n exception,\n login,\n logout,\n authorized,\n register,\n }),\n writable: false,\n },\n\n tasks: {\n value: Object.freeze({\n getTasks,\n saveTask,\n createTask,\n deleteTask,\n }),\n writable: false,\n },\n\n jobs: {\n value: Object.freeze({\n getJob,\n saveJob,\n }),\n writable: false,\n },\n\n users: {\n value: Object.freeze({\n getUsers,\n getSelf,\n }),\n writable: false,\n },\n\n frames: {\n value: Object.freeze({\n getData,\n getMeta,\n }),\n writable: false,\n },\n\n annotations: {\n value: Object.freeze({\n updateAnnotations,\n getAnnotations,\n dumpAnnotations,\n uploadAnnotations,\n }),\n writable: false,\n },\n }));\n }\n }\n\n const serverProxy = new ServerProxy();\n module.exports = serverProxy;\n})();\n","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i {\n /**\n * Enum for type of server files\n * @enum {string}\n * @name ShareFileType\n * @memberof module:API.cvat.enums\n * @property {string} DIR 'DIR'\n * @property {string} REG 'REG'\n * @readonly\n */\n const ShareFileType = Object.freeze({\n DIR: 'DIR',\n REG: 'REG',\n });\n\n /**\n * Enum for a status of a task\n * @enum {string}\n * @name TaskStatus\n * @memberof module:API.cvat.enums\n * @property {string} ANNOTATION 'annotation'\n * @property {string} VALIDATION 'validation'\n * @property {string} COMPLETED 'completed'\n * @readonly\n */\n const TaskStatus = Object.freeze({\n ANNOTATION: 'annotation',\n VALIDATION: 'validation',\n COMPLETED: 'completed',\n });\n\n /**\n * Enum for a mode of a task\n * @enum {string}\n * @name TaskMode\n * @memberof module:API.cvat.enums\n * @property {string} ANNOTATION 'annotation'\n * @property {string} INTERPOLATION 'interpolation'\n * @readonly\n */\n const TaskMode = Object.freeze({\n ANNOTATION: 'annotation',\n INTERPOLATION: 'interpolation',\n });\n\n /**\n * Enum for type of server files\n * @enum {string}\n * @name AttributeType\n * @memberof module:API.cvat.enums\n * @property {string} CHECKBOX 'checkbox'\n * @property {string} SELECT 'select'\n * @property {string} RADIO 'radio'\n * @property {string} NUMBER 'number'\n * @property {string} TEXT 'text'\n * @readonly\n */\n const AttributeType = Object.freeze({\n CHECKBOX: 'checkbox',\n RADIO: 'radio',\n SELECT: 'select',\n NUMBER: 'number',\n TEXT: 'text',\n });\n\n /**\n * Enum for type of an object\n * @enum {string}\n * @name ObjectType\n * @memberof module:API.cvat.enums\n * @property {string} TAG 'tag'\n * @property {string} SHAPE 'shape'\n * @property {string} TRACK 'track'\n * @readonly\n */\n const ObjectType = Object.freeze({\n TAG: 'tag',\n SHAPE: 'shape',\n TRACK: 'track',\n });\n\n /**\n * Enum for type of server files\n * @enum {string}\n * @name ObjectShape\n * @memberof module:API.cvat.enums\n * @property {string} RECTANGLE 'rectangle'\n * @property {string} POLYGON 'polygon'\n * @property {string} POLYLINE 'polyline'\n * @property {string} POINTS 'points'\n * @readonly\n */\n const ObjectShape = Object.freeze({\n RECTANGLE: 'rectangle',\n POLYGON: 'polygon',\n POLYLINE: 'polyline',\n POINTS: 'points',\n });\n\n /**\n * Enum for type of server files\n * @enum {number}\n * @name LogType\n * @memberof module:API.cvat.enums\n * @property {number} pasteObject 0\n * @property {number} changeAttribute 1\n * @property {number} dragObject 2\n * @property {number} deleteObject 3\n * @property {number} pressShortcut 4\n * @property {number} resizeObject 5\n * @property {number} sendLogs 6\n * @property {number} saveJob 7\n * @property {number} jumpFrame 8\n * @property {number} drawObject 9\n * @property {number} changeLabel 10\n * @property {number} sendTaskInfo 11\n * @property {number} loadJob 12\n * @property {number} moveImage 13\n * @property {number} zoomImage 14\n * @property {number} lockObject 15\n * @property {number} mergeObjects 16\n * @property {number} copyObject 17\n * @property {number} propagateObject 18\n * @property {number} undoAction 19\n * @property {number} redoAction 20\n * @property {number} sendUserActivity 21\n * @property {number} sendException 22\n * @property {number} changeFrame 23\n * @property {number} debugInfo 24\n * @property {number} fitImage 25\n * @property {number} rotateImage 26\n * @readonly\n */\n const LogType = {\n pasteObject: 0,\n changeAttribute: 1,\n dragObject: 2,\n deleteObject: 3,\n pressShortcut: 4,\n resizeObject: 5,\n sendLogs: 6,\n saveJob: 7,\n jumpFrame: 8,\n drawObject: 9,\n changeLabel: 10,\n sendTaskInfo: 11,\n loadJob: 12,\n moveImage: 13,\n zoomImage: 14,\n lockObject: 15,\n mergeObjects: 16,\n copyObject: 17,\n propagateObject: 18,\n undoAction: 19,\n redoAction: 20,\n sendUserActivity: 21,\n sendException: 22,\n changeFrame: 23,\n debugInfo: 24,\n fitImage: 25,\n rotateImage: 26,\n };\n\n /**\n * Enum for type of server files\n * @enum {number}\n * @name EventType\n * @memberof module:API.cvat.enums\n * @property {number} frameDownloaded 0\n * @readonly\n */\n const EventType = Object.freeze({\n frameDownloaded: 0,\n });\n\n module.exports = {\n ShareFileType,\n TaskStatus,\n TaskMode,\n AttributeType,\n ObjectType,\n ObjectShape,\n LogType,\n EventType,\n };\n})();\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = false;\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","module.exports = {};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const { PluginError } = require('./exceptions');\n\n const plugins = [];\n class PluginRegistry {\n static async apiWrapper(wrappedFunc, ...args) {\n // I have to optimize the wrapper\n const pluginList = await PluginRegistry.list();\n for (const plugin of pluginList) {\n const pluginDecorators = plugin.functions\n .filter(obj => obj.callback === wrappedFunc)[0];\n if (pluginDecorators && pluginDecorators.enter) {\n try {\n await pluginDecorators.enter.call(this, plugin, ...args);\n } catch (exception) {\n if (exception instanceof PluginError) {\n throw exception;\n } else {\n throw new PluginError(`Exception in plugin ${plugin.name}: ${exception.toString()}`);\n }\n }\n }\n }\n\n let result = await wrappedFunc.implementation.call(this, ...args);\n\n for (const plugin of pluginList) {\n const pluginDecorators = plugin.functions\n .filter(obj => obj.callback === wrappedFunc)[0];\n if (pluginDecorators && pluginDecorators.leave) {\n try {\n result = await pluginDecorators.leave.call(this, plugin, result, ...args);\n } catch (exception) {\n if (exception instanceof PluginError) {\n throw exception;\n } else {\n throw new PluginError(`Exception in plugin ${plugin.name}: ${exception.toString()}`);\n }\n }\n }\n }\n\n return result;\n }\n\n // Called with cvat context\n static async register(plug) {\n const functions = [];\n\n if (typeof (plug) !== 'object') {\n throw new PluginError(`Plugin should be an object, but got \"${typeof (plug)}\"`);\n }\n\n if (!('name' in plug) || typeof (plug.name) !== 'string') {\n throw new PluginError('Plugin must contain a \"name\" field and it must be a string');\n }\n\n if (!('description' in plug) || typeof (plug.description) !== 'string') {\n throw new PluginError('Plugin must contain a \"description\" field and it must be a string');\n }\n\n if ('functions' in plug) {\n throw new PluginError('Plugin must not contain a \"functions\" field');\n }\n\n (function traverse(plugin, api) {\n const decorator = {};\n for (const key in plugin) {\n if (Object.prototype.hasOwnProperty.call(plugin, key)) {\n if (typeof (plugin[key]) === 'object') {\n if (Object.prototype.hasOwnProperty.call(api, key)) {\n traverse(plugin[key], api[key]);\n }\n } else if (['enter', 'leave'].includes(key)\n && typeof (api) === 'function'\n && typeof (plugin[key] === 'function')) {\n decorator.callback = api;\n decorator[key] = plugin[key];\n }\n }\n }\n\n if (Object.keys(decorator).length) {\n functions.push(decorator);\n }\n }(plug, {\n cvat: this,\n }));\n\n Object.defineProperty(plug, 'functions', {\n value: functions,\n writable: false,\n });\n\n plugins.push(plug);\n }\n\n static async list() {\n return plugins;\n }\n }\n\n module.exports = PluginRegistry;\n})();\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\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","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\nvar IS_PURE = require('../internals/is-pure');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const PluginRegistry = require('./plugins');\n const serverProxy = require('./server-proxy');\n const { getFrame } = require('./frames');\n const { ArgumentError } = require('./exceptions');\n const { TaskStatus } = require('./enums');\n const { Label } = require('./labels');\n\n function buildDublicatedAPI(prototype) {\n Object.defineProperties(prototype, {\n annotations: Object.freeze({\n value: {\n async upload(file, loader) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.upload, file, loader);\n return result;\n },\n\n async save() {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.save);\n return result;\n },\n\n async clear(reload = false) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.clear, reload);\n return result;\n },\n\n async dump(name, dumper) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.dump, name, dumper);\n return result;\n },\n\n async statistics() {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.statistics);\n return result;\n },\n\n async put(arrayOfObjects = []) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.put, arrayOfObjects);\n return result;\n },\n\n async get(frame, filter = {}) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.get, frame, filter);\n return result;\n },\n\n async search(filter, frameFrom, frameTo) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.search,\n filter, frameFrom, frameTo);\n return result;\n },\n\n async select(objectStates, x, y) {\n const result = await PluginRegistry\n .apiWrapper.call(this,\n prototype.annotations.select, objectStates, x, y);\n return result;\n },\n\n async hasUnsavedChanges() {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.hasUnsavedChanges);\n return result;\n },\n\n async merge(objectStates) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.merge, objectStates);\n return result;\n },\n\n async split(objectState, frame) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.split, objectState, frame);\n return result;\n },\n\n async group(objectStates, reset = false) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.annotations.group,\n objectStates, reset);\n return result;\n },\n },\n writable: true,\n }),\n frames: Object.freeze({\n value: {\n async get(frame) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.frames.get, frame);\n return result;\n },\n },\n writable: true,\n }),\n logs: Object.freeze({\n value: {\n async put(logType, details) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.logs.put, logType, details);\n return result;\n },\n async save(onUpdate) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.logs.save, onUpdate);\n return result;\n },\n },\n writable: true,\n }),\n actions: Object.freeze({\n value: {\n async undo(count) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.actions.undo, count);\n return result;\n },\n async redo(count) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.actions.redo, count);\n return result;\n },\n async clear() {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.actions.clear);\n return result;\n },\n },\n writable: true,\n }),\n events: Object.freeze({\n value: {\n async subscribe(evType, callback) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.events.subscribe, evType, callback);\n return result;\n },\n async unsubscribe(evType, callback = null) {\n const result = await PluginRegistry\n .apiWrapper.call(this, prototype.events.unsubscribe, evType, callback);\n return result;\n },\n },\n writable: true,\n }),\n });\n }\n\n /**\n * Base abstract class for Task and Job. It contains common members.\n * @hideconstructor\n * @virtual\n */\n class Session {\n constructor() {\n /**\n * An interaction with annotations\n * @namespace annotations\n * @memberof Session\n */\n /**\n * Upload annotations from a dump file\n * You need upload annotations from a server again after successful executing\n * @method upload\n * @memberof Session.annotations\n * @param {File} annotations - a text file with annotations\n * @param {module:API.cvat.classes.Loader} loader - a loader\n * which will be used to upload\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n /**\n * Save all changes in annotations on a server\n * Objects which hadn't been saved on a server before,\n * get a serverID after saving. But received object states aren't updated.\n * So, after successful saving it's recommended to update them manually\n * (call the annotations.get() again)\n * @method save\n * @memberof Session.annotations\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @instance\n * @async\n * @param {function} [onUpdate] saving can be long.\n * This callback can be used to notify a user about current progress\n * Its argument is a text string\n */\n /**\n * Remove all annotations and optionally reinitialize it\n * @method clear\n * @memberof Session.annotations\n * @param {boolean} [reload = false] reset all changes and\n * reinitialize annotations by data from a server\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @instance\n * @async\n */\n /**\n * Dump of annotations to a file.\n * Method always dumps annotations for a whole task.\n * @method dump\n * @memberof Session.annotations\n * @param {string} name - a name of a file with annotations\n * @param {module:API.cvat.classes.Dumper} dumper - a dumper\n * which will be used to dump\n * @returns {string} URL which can be used in order to get a dump file\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Collect short statistics about a task or a job.\n * @method statistics\n * @memberof Session.annotations\n * @returns {module:API.cvat.classes.Statistics} statistics object\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n /**\n * Create new objects from one-frame states\n * After successful adding you need to update object states on a frame\n * @method put\n * @memberof Session.annotations\n * @param {module:API.cvat.classes.ObjectState[]} data\n * array of objects on the specific frame\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.DataError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * @typedef {Object} ObjectFilter\n * @property {string} [label] a name of a label\n * @property {module:API.cvat.enums.ObjectType} [type]\n * @property {module:API.cvat.enums.ObjectShape} [shape]\n * @property {boolean} [occluded] a value of occluded property\n * @property {boolean} [lock] a value of lock property\n * @property {number} [width] a width of a shape\n * @property {number} [height] a height of a shape\n * @property {Object[]} [attributes] dictionary with \"name: value\" pairs\n * @global\n */\n /**\n * Get annotations for a specific frame\n * @method get\n * @param {integer} frame get objects from the frame\n * @param {ObjectFilter[]} [filter = []]\n * get only objects are satisfied to specific filter\n * @returns {module:API.cvat.classes.ObjectState[]}\n * @memberof Session.annotations\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Find frame which contains at least one object satisfied to a filter\n * @method search\n * @memberof Session.annotations\n * @param {ObjectFilter} [filter = []] filter\n * @param {integer} from lower bound of a search\n * @param {integer} to upper bound of a search\n * @returns {integer} the nearest frame which contains filtered objects\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Select shape under a cursor by using minimal distance\n * between a cursor and a shape edge or a shape point\n * For closed shapes a cursor is placed inside a shape\n * @method select\n * @memberof Session.annotations\n * @param {module:API.cvat.classes.ObjectState[]} objectStates\n * objects which can be selected\n * @param {float} x horizontal coordinate\n * @param {float} y vertical coordinate\n * @returns {Object}\n * a pair of {state: ObjectState, distance: number} for selected object.\n * Pair values can be null if there aren't any sutisfied objects\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Method unites several shapes and tracks into the one\n * All shapes must be the same (rectangle, polygon, etc)\n * All labels must be the same\n * After successful merge you need to update object states on a frame\n * @method merge\n * @memberof Session.annotations\n * @param {module:API.cvat.classes.ObjectState[]} objectStates\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Method splits a track into two parts\n * (start frame: previous frame), (frame, last frame)\n * After successful split you need to update object states on a frame\n * @method split\n * @memberof Session.annotations\n * @param {module:API.cvat.classes.ObjectState} objectState\n * @param {integer} frame\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n /**\n * Method creates a new group and put all passed objects into it\n * After successful split you need to update object states on a frame\n * @method group\n * @memberof Session.annotations\n * @param {module:API.cvat.classes.ObjectState[]} objectStates\n * @param {boolean} reset pass \"true\" to reset group value (set it to 0)\n * @returns {integer} an ID of created group\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n /**\n * Indicate if there are any changes in\n * annotations which haven't been saved on a server\n * @method hasUnsavedChanges\n * @memberof Session.annotations\n * @returns {boolean}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n\n\n /**\n * Namespace is used for an interaction with frames\n * @namespace frames\n * @memberof Session\n */\n /**\n * Get frame by its number\n * @method get\n * @memberof Session.frames\n * @param {integer} frame number of frame which you want to get\n * @returns {module:API.cvat.classes.FrameData}\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n\n /**\n * Namespace is used for an interaction with logs\n * @namespace logs\n * @memberof Session\n */\n\n /**\n * Append log to a log collection.\n * Continue logs will have been added after \"close\" method is called\n * @method put\n * @memberof Session.logs\n * @param {module:API.cvat.enums.LogType} type a type of a log\n * @param {boolean} continuous log is a continuous log\n * @param {Object} details any others data which will be append to log data\n * @returns {module:API.cvat.classes.Log}\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n /**\n * Save accumulated logs on a server\n * @method save\n * @memberof Session.logs\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @instance\n * @async\n */\n\n /**\n * Namespace is used for an interaction with actions\n * @namespace actions\n * @memberof Session\n */\n\n /**\n * Is a dictionary of pairs \"id:action\" where \"id\" is an identifier of an object\n * which has been affected by undo/redo and \"action\" is what exactly has been\n * done with the object. Action can be: \"created\", \"deleted\", \"updated\".\n * Size of an output array equal the param \"count\".\n * @typedef {Object} HistoryAction\n * @global\n */\n /**\n * Undo actions\n * @method undo\n * @memberof Session.actions\n * @returns {HistoryAction}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n /**\n * Redo actions\n * @method redo\n * @memberof Session.actions\n * @returns {HistoryAction}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @instance\n * @async\n */\n\n\n /**\n * Namespace is used for an interaction with events\n * @namespace events\n * @memberof Session\n */\n /**\n * Subscribe on an event\n * @method subscribe\n * @memberof Session.events\n * @param {module:API.cvat.enums.EventType} type - event type\n * @param {functions} callback - function which will be called on event\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n /**\n * Unsubscribe from an event. If callback is not provided,\n * all callbacks will be removed from subscribers for the event\n * @method unsubscribe\n * @memberof Session.events\n * @param {module:API.cvat.enums.EventType} type - event type\n * @param {functions} [callback = null] - function which is called on event\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n * @async\n */\n }\n }\n\n /**\n * Class representing a job.\n * @memberof module:API.cvat.classes\n * @hideconstructor\n * @extends Session\n */\n class Job extends Session {\n constructor(initialData) {\n super();\n const data = {\n id: undefined,\n assignee: undefined,\n status: undefined,\n start_frame: undefined,\n stop_frame: undefined,\n task: undefined,\n };\n\n for (const property in data) {\n if (Object.prototype.hasOwnProperty.call(data, property)) {\n if (property in initialData) {\n data[property] = initialData[property];\n }\n\n if (data[property] === undefined) {\n throw new ArgumentError(\n `Job field \"${property}\" was not initialized`,\n );\n }\n }\n }\n\n Object.defineProperties(this, Object.freeze({\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.Job\n * @readonly\n * @instance\n */\n id: {\n get: () => data.id,\n },\n /**\n * Identifier of a user who is responsible for the job\n * @name assignee\n * @type {integer}\n * @memberof module:API.cvat.classes.Job\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n assignee: {\n get: () => data.assignee,\n set: () => (assignee) => {\n if (!Number.isInteger(assignee) || assignee < 0) {\n throw new ArgumentError(\n 'Value must be a non negative integer',\n );\n }\n data.assignee = assignee;\n },\n },\n /**\n * @name status\n * @type {module:API.cvat.enums.TaskStatus}\n * @memberof module:API.cvat.classes.Job\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n status: {\n get: () => data.status,\n set: (status) => {\n const type = TaskStatus;\n let valueInEnum = false;\n for (const value in type) {\n if (type[value] === status) {\n valueInEnum = true;\n break;\n }\n }\n\n if (!valueInEnum) {\n throw new ArgumentError(\n 'Value must be a value from the enumeration cvat.enums.TaskStatus',\n );\n }\n\n data.status = status;\n },\n },\n /**\n * @name startFrame\n * @type {integer}\n * @memberof module:API.cvat.classes.Job\n * @readonly\n * @instance\n */\n startFrame: {\n get: () => data.start_frame,\n },\n /**\n * @name stopFrame\n * @type {integer}\n * @memberof module:API.cvat.classes.Job\n * @readonly\n * @instance\n */\n stopFrame: {\n get: () => data.stop_frame,\n },\n /**\n * @name task\n * @type {module:API.cvat.classes.Task}\n * @memberof module:API.cvat.classes.Job\n * @readonly\n * @instance\n */\n task: {\n get: () => data.task,\n },\n }));\n\n // When we call a function, for example: task.annotations.get()\n // In the method get we lose the task context\n // So, we need return it\n this.annotations = {\n get: Object.getPrototypeOf(this).annotations.get.bind(this),\n put: Object.getPrototypeOf(this).annotations.put.bind(this),\n save: Object.getPrototypeOf(this).annotations.save.bind(this),\n dump: Object.getPrototypeOf(this).annotations.dump.bind(this),\n merge: Object.getPrototypeOf(this).annotations.merge.bind(this),\n split: Object.getPrototypeOf(this).annotations.split.bind(this),\n group: Object.getPrototypeOf(this).annotations.group.bind(this),\n clear: Object.getPrototypeOf(this).annotations.clear.bind(this),\n upload: Object.getPrototypeOf(this).annotations.upload.bind(this),\n select: Object.getPrototypeOf(this).annotations.select.bind(this),\n statistics: Object.getPrototypeOf(this).annotations.statistics.bind(this),\n hasUnsavedChanges: Object.getPrototypeOf(this)\n .annotations.hasUnsavedChanges.bind(this),\n };\n\n this.frames = {\n get: Object.getPrototypeOf(this).frames.get.bind(this),\n };\n }\n\n /**\n * Method updates job data like status or assignee\n * @method save\n * @memberof module:API.cvat.classes.Job\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async save() {\n const result = await PluginRegistry\n .apiWrapper.call(this, Job.prototype.save);\n return result;\n }\n }\n\n /**\n * Class representing a task\n * @memberof module:API.cvat.classes\n * @extends Session\n */\n class Task extends Session {\n /**\n * In a fact you need use the constructor only if you want to create a task\n * @param {object} initialData - Object which is used for initalization\n *
It can contain keys:\n *
  • name\n *
  • assignee\n *
  • bug_tracker\n *
  • z_order\n *
  • labels\n *
  • segment_size\n *
  • overlap\n */\n constructor(initialData) {\n super();\n const data = {\n id: undefined,\n name: undefined,\n status: undefined,\n size: undefined,\n mode: undefined,\n owner: undefined,\n assignee: undefined,\n created_date: undefined,\n updated_date: undefined,\n bug_tracker: undefined,\n overlap: undefined,\n segment_size: undefined,\n z_order: undefined,\n image_quality: undefined,\n start_frame: undefined,\n stop_frame: undefined,\n frame_filter: undefined,\n };\n\n for (const property in data) {\n if (Object.prototype.hasOwnProperty.call(data, property)\n && property in initialData) {\n data[property] = initialData[property];\n }\n }\n\n data.labels = [];\n data.jobs = [];\n data.files = Object.freeze({\n server_files: [],\n client_files: [],\n remote_files: [],\n });\n\n if (Array.isArray(initialData.segments)) {\n for (const segment of initialData.segments) {\n if (Array.isArray(segment.jobs)) {\n for (const job of segment.jobs) {\n const jobInstance = new Job({\n url: job.url,\n id: job.id,\n assignee: job.assignee,\n status: job.status,\n start_frame: segment.start_frame,\n stop_frame: segment.stop_frame,\n task: this,\n });\n data.jobs.push(jobInstance);\n }\n }\n }\n }\n\n if (Array.isArray(initialData.labels)) {\n for (const label of initialData.labels) {\n const classInstance = new Label(label);\n data.labels.push(classInstance);\n }\n }\n\n Object.defineProperties(this, Object.freeze({\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n id: {\n get: () => data.id,\n },\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n name: {\n get: () => data.name,\n set: (value) => {\n if (!value.trim().length) {\n throw new ArgumentError(\n 'Value must not be empty',\n );\n }\n data.name = value;\n },\n },\n /**\n * @name status\n * @type {module:API.cvat.enums.TaskStatus}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n status: {\n get: () => data.status,\n },\n /**\n * @name size\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n size: {\n get: () => data.size,\n },\n /**\n * @name mode\n * @type {TaskMode}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n mode: {\n get: () => data.mode,\n },\n /**\n * Identificator of a user who has created the task\n * @name owner\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n owner: {\n get: () => data.owner,\n },\n /**\n * Identificator of a user who is responsible for the task\n * @name assignee\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n assignee: {\n get: () => data.assignee,\n set: () => (assignee) => {\n if (!Number.isInteger(assignee) || assignee < 0) {\n throw new ArgumentError(\n 'Value must be a non negative integer',\n );\n }\n data.assignee = assignee;\n },\n },\n /**\n * @name createdDate\n * @type {string}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n createdDate: {\n get: () => data.created_date,\n },\n /**\n * @name updatedDate\n * @type {string}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n updatedDate: {\n get: () => data.updated_date,\n },\n /**\n * @name bugTracker\n * @type {string}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n bugTracker: {\n get: () => data.bug_tracker,\n set: (tracker) => {\n data.bug_tracker = tracker;\n },\n },\n /**\n * @name overlap\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n overlap: {\n get: () => data.overlap,\n set: (overlap) => {\n if (!Number.isInteger(overlap) || overlap < 0) {\n throw new ArgumentError(\n 'Value must be a non negative integer',\n );\n }\n data.overlap = overlap;\n },\n },\n /**\n * @name segmentSize\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n segmentSize: {\n get: () => data.segment_size,\n set: (segment) => {\n if (!Number.isInteger(segment) || segment < 0) {\n throw new ArgumentError(\n 'Value must be a positive integer',\n );\n }\n data.segment_size = segment;\n },\n },\n /**\n * @name zOrder\n * @type {boolean}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n zOrder: {\n get: () => data.z_order,\n set: (zOrder) => {\n if (typeof (zOrder) !== 'boolean') {\n throw new ArgumentError(\n 'Value must be a boolean',\n );\n }\n data.z_order = zOrder;\n },\n },\n /**\n * @name imageQuality\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n imageQuality: {\n get: () => data.image_quality,\n set: (quality) => {\n if (!Number.isInteger(quality) || quality < 0) {\n throw new ArgumentError(\n 'Value must be a positive integer',\n );\n }\n data.image_quality = quality;\n },\n },\n /**\n * After task has been created value can be appended only.\n * @name labels\n * @type {module:API.cvat.classes.Label[]}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n labels: {\n get: () => [...data.labels],\n set: (labels) => {\n if (!Array.isArray(labels)) {\n throw new ArgumentError(\n 'Value must be an array of Labels',\n );\n }\n\n for (const label of labels) {\n if (!(label instanceof Label)) {\n throw new ArgumentError(\n 'Each array value must be an instance of Label. '\n + `${typeof (label)} was found`,\n );\n }\n }\n\n if (typeof (data.id) === 'undefined') {\n data.labels = [...labels];\n } else {\n data.labels = data.labels.concat([...labels]);\n }\n },\n },\n /**\n * @name jobs\n * @type {module:API.cvat.classes.Job[]}\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n */\n jobs: {\n get: () => [...data.jobs],\n },\n /**\n * List of files from shared resource\n * @name serverFiles\n * @type {string[]}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n serverFiles: {\n get: () => [...data.files.server_files],\n set: (serverFiles) => {\n if (!Array.isArray(serverFiles)) {\n throw new ArgumentError(\n `Value must be an array. But ${typeof (serverFiles)} has been got.`,\n );\n }\n\n for (const value of serverFiles) {\n if (typeof (value) !== 'string') {\n throw new ArgumentError(\n `Array values must be a string. But ${typeof (value)} has been got.`,\n );\n }\n }\n\n Array.prototype.push.apply(data.files.server_files, serverFiles);\n },\n },\n /**\n * List of files from client host\n * @name clientFiles\n * @type {File[]}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n clientFiles: {\n get: () => [...data.files.client_files],\n set: (clientFiles) => {\n if (!Array.isArray(clientFiles)) {\n throw new ArgumentError(\n `Value must be an array. But ${typeof (clientFiles)} has been got.`,\n );\n }\n\n for (const value of clientFiles) {\n if (!(value instanceof File)) {\n throw new ArgumentError(\n `Array values must be a File. But ${value.constructor.name} has been got.`,\n );\n }\n }\n\n Array.prototype.push.apply(data.files.client_files, clientFiles);\n },\n },\n /**\n * List of files from remote host\n * @name remoteFiles\n * @type {File[]}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n remoteFiles: {\n get: () => [...data.files.remote_files],\n set: (remoteFiles) => {\n if (!Array.isArray(remoteFiles)) {\n throw new ArgumentError(\n `Value must be an array. But ${typeof (remoteFiles)} has been got.`,\n );\n }\n\n for (const value of remoteFiles) {\n if (typeof (value) !== 'string') {\n throw new ArgumentError(\n `Array values must be a string. But ${typeof (value)} has been got.`,\n );\n }\n }\n\n Array.prototype.push.apply(data.files.remote_files, remoteFiles);\n },\n },\n /**\n * The first frame of a video to annotation\n * @name startFrame\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n startFrame: {\n get: () => data.start_frame,\n set: (frame) => {\n if (!Number.isInteger(frame) || frame < 0) {\n throw new ArgumentError(\n 'Value must be a not negative integer',\n );\n }\n data.start_frame = frame;\n },\n },\n /**\n * The last frame of a video to annotation\n * @name stopFrame\n * @type {integer}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n stopFrame: {\n get: () => data.stop_frame,\n set: (frame) => {\n if (!Number.isInteger(frame) || frame < 0) {\n throw new ArgumentError(\n 'Value must be a not negative integer',\n );\n }\n data.stop_frame = frame;\n },\n },\n /**\n * Filter to ignore some frames during task creation\n * @name frameFilter\n * @type {string}\n * @memberof module:API.cvat.classes.Task\n * @instance\n * @throws {module:API.cvat.exceptions.ArgumentError}\n */\n frameFilter: {\n get: () => data.frame_filter,\n set: (filter) => {\n if (typeof (filter) !== 'string') {\n throw new ArgumentError(\n `Filter value must be a string. But ${typeof (filter)} has been got.`,\n );\n }\n\n data.frame_filter = filter;\n },\n },\n }));\n\n // When we call a function, for example: task.annotations.get()\n // In the method get we lose the task context\n // So, we need return it\n this.annotations = {\n get: Object.getPrototypeOf(this).annotations.get.bind(this),\n put: Object.getPrototypeOf(this).annotations.put.bind(this),\n save: Object.getPrototypeOf(this).annotations.save.bind(this),\n dump: Object.getPrototypeOf(this).annotations.dump.bind(this),\n merge: Object.getPrototypeOf(this).annotations.merge.bind(this),\n split: Object.getPrototypeOf(this).annotations.split.bind(this),\n group: Object.getPrototypeOf(this).annotations.group.bind(this),\n clear: Object.getPrototypeOf(this).annotations.clear.bind(this),\n upload: Object.getPrototypeOf(this).annotations.upload.bind(this),\n select: Object.getPrototypeOf(this).annotations.select.bind(this),\n statistics: Object.getPrototypeOf(this).annotations.statistics.bind(this),\n hasUnsavedChanges: Object.getPrototypeOf(this)\n .annotations.hasUnsavedChanges.bind(this),\n };\n\n this.frames = {\n get: Object.getPrototypeOf(this).frames.get.bind(this),\n };\n }\n\n /**\n * Method updates data of a created task or creates new task from scratch\n * @method save\n * @returns {module:API.cvat.classes.Task}\n * @memberof module:API.cvat.classes.Task\n * @param {function} [onUpdate] - the function which is used only if task hasn't\n * been created yet. It called in order to notify about creation status.\n * It receives the string parameter which is a status message\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async save(onUpdate = () => {}) {\n const result = await PluginRegistry\n .apiWrapper.call(this, Task.prototype.save, onUpdate);\n return result;\n }\n\n /**\n * Method deletes a task from a server\n * @method delete\n * @memberof module:API.cvat.classes.Task\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async delete() {\n const result = await PluginRegistry\n .apiWrapper.call(this, Task.prototype.delete);\n return result;\n }\n }\n\n module.exports = {\n Job,\n Task,\n };\n\n const {\n getAnnotations,\n putAnnotations,\n saveAnnotations,\n hasUnsavedChanges,\n mergeAnnotations,\n splitAnnotations,\n groupAnnotations,\n clearAnnotations,\n selectObject,\n annotationsStatistics,\n uploadAnnotations,\n dumpAnnotations,\n } = require('./annotations');\n\n buildDublicatedAPI(Job.prototype);\n buildDublicatedAPI(Task.prototype);\n\n Job.prototype.save.implementation = async function () {\n // TODO: Add ability to change an assignee\n if (this.id) {\n const jobData = {\n status: this.status,\n };\n\n await serverProxy.jobs.saveJob(this.id, jobData);\n return this;\n }\n\n throw new ArgumentError(\n 'Can not save job without and id',\n );\n };\n\n Job.prototype.frames.get.implementation = async function (frame) {\n if (!Number.isInteger(frame) || frame < 0) {\n throw new ArgumentError(\n `Frame must be a positive integer. Got: \"${frame}\"`,\n );\n }\n\n if (frame < this.startFrame || frame > this.stopFrame) {\n throw new ArgumentError(\n `The frame with number ${frame} is out of the job`,\n );\n }\n\n const frameData = await getFrame(this.task.id, this.task.mode, frame);\n return frameData;\n };\n\n // TODO: Check filter for annotations\n Job.prototype.annotations.get.implementation = async function (frame, filter) {\n if (frame < this.startFrame || frame > this.stopFrame) {\n throw new ArgumentError(\n `Frame ${frame} does not exist in the job`,\n );\n }\n\n const annotationsData = await getAnnotations(this, frame, filter);\n return annotationsData;\n };\n\n Job.prototype.annotations.save.implementation = async function (onUpdate) {\n const result = await saveAnnotations(this, onUpdate);\n return result;\n };\n\n Job.prototype.annotations.merge.implementation = async function (objectStates) {\n const result = await mergeAnnotations(this, objectStates);\n return result;\n };\n\n Job.prototype.annotations.split.implementation = async function (objectState, frame) {\n const result = await splitAnnotations(this, objectState, frame);\n return result;\n };\n\n Job.prototype.annotations.group.implementation = async function (objectStates, reset) {\n const result = await groupAnnotations(this, objectStates, reset);\n return result;\n };\n\n Job.prototype.annotations.hasUnsavedChanges.implementation = function () {\n const result = hasUnsavedChanges(this);\n return result;\n };\n\n Job.prototype.annotations.clear.implementation = async function (reload) {\n const result = await clearAnnotations(this, reload);\n return result;\n };\n\n Job.prototype.annotations.select.implementation = function (frame, x, y) {\n const result = selectObject(this, frame, x, y);\n return result;\n };\n\n Job.prototype.annotations.statistics.implementation = function () {\n const result = annotationsStatistics(this);\n return result;\n };\n\n Job.prototype.annotations.put.implementation = function (objectStates) {\n const result = putAnnotations(this, objectStates);\n return result;\n };\n\n Job.prototype.annotations.upload.implementation = async function (file, loader) {\n const result = await uploadAnnotations(this, file, loader);\n return result;\n };\n\n Job.prototype.annotations.dump.implementation = async function (name, dumper) {\n const result = await dumpAnnotations(this, name, dumper);\n return result;\n };\n\n Task.prototype.save.implementation = async function saveTaskImplementation(onUpdate) {\n // TODO: Add ability to change an owner and an assignee\n if (typeof (this.id) !== 'undefined') {\n // If the task has been already created, we update it\n const taskData = {\n name: this.name,\n bug_tracker: this.bugTracker,\n z_order: this.zOrder,\n labels: [...this.labels.map(el => el.toJSON())],\n };\n\n await serverProxy.tasks.saveTask(this.id, taskData);\n return this;\n }\n\n const taskData = {\n name: this.name,\n labels: this.labels.map(el => el.toJSON()),\n image_quality: this.imageQuality,\n z_order: Boolean(this.zOrder),\n };\n\n if (this.bugTracker) {\n taskData.bug_tracker = this.bugTracker;\n }\n if (this.segmentSize) {\n taskData.segment_size = this.segmentSize;\n }\n if (this.overlap) {\n taskData.overlap = this.overlap;\n }\n if (this.startFrame) {\n taskData.start_frame = this.startFrame;\n }\n if (this.stopFrame) {\n taskData.stop_frame = this.stopFrame;\n }\n if (this.frameFilter) {\n taskData.frame_filter = this.frameFilter;\n }\n\n const taskFiles = {\n client_files: this.clientFiles,\n server_files: this.serverFiles,\n remote_files: this.remoteFiles,\n };\n\n const task = await serverProxy.tasks.createTask(taskData, taskFiles, onUpdate);\n return new Task(task);\n };\n\n Task.prototype.delete.implementation = async function () {\n const result = await serverProxy.tasks.deleteTask(this.id);\n return result;\n };\n\n Task.prototype.frames.get.implementation = async function (frame) {\n if (!Number.isInteger(frame) || frame < 0) {\n throw new ArgumentError(\n `Frame must be a positive integer. Got: \"${frame}\"`,\n );\n }\n\n if (frame >= this.size) {\n throw new ArgumentError(\n `The frame with number ${frame} is out of the task`,\n );\n }\n\n const result = await getFrame(this.id, this.mode, frame);\n return result;\n };\n\n // TODO: Check filter for annotations\n Task.prototype.annotations.get.implementation = async function (frame, filter) {\n if (!Number.isInteger(frame) || frame < 0) {\n throw new ArgumentError(\n `Frame must be a positive integer. Got: \"${frame}\"`,\n );\n }\n\n if (frame >= this.size) {\n throw new ArgumentError(\n `Frame ${frame} does not exist in the task`,\n );\n }\n\n const result = await getAnnotations(this, frame, filter);\n return result;\n };\n\n Task.prototype.annotations.save.implementation = async function (onUpdate) {\n const result = await saveAnnotations(this, onUpdate);\n return result;\n };\n\n Task.prototype.annotations.merge.implementation = async function (objectStates) {\n const result = await mergeAnnotations(this, objectStates);\n return result;\n };\n\n Task.prototype.annotations.split.implementation = async function (objectState, frame) {\n const result = await splitAnnotations(this, objectState, frame);\n return result;\n };\n\n Task.prototype.annotations.group.implementation = async function (objectStates, reset) {\n const result = await groupAnnotations(this, objectStates, reset);\n return result;\n };\n\n Task.prototype.annotations.hasUnsavedChanges.implementation = function () {\n const result = hasUnsavedChanges(this);\n return result;\n };\n\n Task.prototype.annotations.clear.implementation = async function (reload) {\n const result = await clearAnnotations(this, reload);\n return result;\n };\n\n Task.prototype.annotations.select.implementation = function (frame, x, y) {\n const result = selectObject(this, frame, x, y);\n return result;\n };\n\n Task.prototype.annotations.statistics.implementation = function () {\n const result = annotationsStatistics(this);\n return result;\n };\n\n Task.prototype.annotations.put.implementation = function (objectStates) {\n const result = putAnnotations(this, objectStates);\n return result;\n };\n\n Task.prototype.annotations.upload.implementation = async function (file, loader) {\n const result = await uploadAnnotations(this, file, loader);\n return result;\n };\n\n Task.prototype.annotations.dump.implementation = async function (name, dumper) {\n const result = await dumpAnnotations(this, name, dumper);\n return result;\n };\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const { AttributeType } = require('./enums');\n const { ArgumentError } = require('./exceptions');\n\n /**\n * Class representing an attribute\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class Attribute {\n constructor(initialData) {\n const data = {\n id: undefined,\n default_value: undefined,\n input_type: undefined,\n mutable: undefined,\n name: undefined,\n values: undefined,\n };\n\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n if (Object.prototype.hasOwnProperty.call(initialData, key)) {\n if (Array.isArray(initialData[key])) {\n data[key] = [...initialData[key]];\n } else {\n data[key] = initialData[key];\n }\n }\n }\n }\n\n if (!Object.values(AttributeType).includes(data.input_type)) {\n throw new ArgumentError(\n `Got invalid attribute type ${data.input_type}`,\n );\n }\n\n Object.defineProperties(this, Object.freeze({\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n id: {\n get: () => data.id,\n },\n /**\n * @name defaultValue\n * @type {(string|integer|boolean)}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n defaultValue: {\n get: () => data.default_value,\n },\n /**\n * @name inputType\n * @type {module:API.cvat.enums.AttributeType}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n inputType: {\n get: () => data.input_type,\n },\n /**\n * @name mutable\n * @type {boolean}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n mutable: {\n get: () => data.mutable,\n },\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n name: {\n get: () => data.name,\n },\n /**\n * @name values\n * @type {(string[]|integer[]|boolean[])}\n * @memberof module:API.cvat.classes.Attribute\n * @readonly\n * @instance\n */\n values: {\n get: () => [...data.values],\n },\n }));\n }\n\n toJSON() {\n const object = {\n name: this.name,\n mutable: this.mutable,\n input_type: this.inputType,\n default_value: this.defaultValue,\n values: this.values,\n };\n\n if (typeof (this.id) !== 'undefined') {\n object.id = this.id;\n }\n\n return object;\n }\n }\n\n /**\n * Class representing a label\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class Label {\n constructor(initialData) {\n const data = {\n id: undefined,\n name: undefined,\n };\n\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n if (Object.prototype.hasOwnProperty.call(initialData, key)) {\n data[key] = initialData[key];\n }\n }\n }\n\n data.attributes = [];\n\n if (Object.prototype.hasOwnProperty.call(initialData, 'attributes')\n && Array.isArray(initialData.attributes)) {\n for (const attrData of initialData.attributes) {\n data.attributes.push(new Attribute(attrData));\n }\n }\n\n Object.defineProperties(this, Object.freeze({\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.Label\n * @readonly\n * @instance\n */\n id: {\n get: () => data.id,\n },\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.Label\n * @readonly\n * @instance\n */\n name: {\n get: () => data.name,\n },\n /**\n * @name attributes\n * @type {module:API.cvat.classes.Attribute[]}\n * @memberof module:API.cvat.classes.Label\n * @readonly\n * @instance\n */\n attributes: {\n get: () => [...data.attributes],\n },\n }));\n }\n\n toJSON() {\n const object = {\n name: this.name,\n attributes: [...this.attributes.map(el => el.toJSON())],\n };\n\n if (typeof (this.id) !== 'undefined') {\n object.id = this.id;\n }\n\n return object;\n }\n }\n\n module.exports = {\n Attribute,\n Label,\n };\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const { ArgumentError } = require('./exceptions');\n\n function isBoolean(value) {\n return typeof (value) === 'boolean';\n }\n\n function isInteger(value) {\n return typeof (value) === 'number' && Number.isInteger(value);\n }\n\n // Called with specific Enum context\n function isEnum(value) {\n for (const key in this) {\n if (Object.prototype.hasOwnProperty.call(this, key)) {\n if (this[key] === value) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function isString(value) {\n return typeof (value) === 'string';\n }\n\n function checkFilter(filter, fields) {\n for (const prop in filter) {\n if (Object.prototype.hasOwnProperty.call(filter, prop)) {\n if (!(prop in fields)) {\n throw new ArgumentError(\n `Unsupported filter property has been recieved: \"${prop}\"`,\n );\n } else if (!fields[prop](filter[prop])) {\n throw new ArgumentError(\n `Received filter property \"${prop}\" is not satisfied for checker`,\n );\n }\n }\n }\n }\n\n function checkObjectType(name, value, type, instance) {\n if (type) {\n if (typeof (value) !== type) {\n // specific case for integers which aren't native type in JS\n if (type === 'integer' && Number.isInteger(value)) {\n return;\n }\n\n throw new ArgumentError(\n `\"${name}\" is expected to be \"${type}\", but \"${typeof (value)}\" has been got.`,\n );\n }\n } else if (instance) {\n if (!(value instanceof instance)) {\n if (value !== undefined) {\n throw new ArgumentError(\n `\"${name}\" is expected to be ${instance.name}, but `\n + `\"${value.constructor.name}\" has been got`,\n );\n }\n\n throw new ArgumentError(\n `\"${name}\" is expected to be ${instance.name}, but \"undefined\" has been got.`,\n );\n }\n }\n }\n\n module.exports = {\n isBoolean,\n isInteger,\n isEnum,\n isString,\n checkFilter,\n checkObjectType,\n };\n})();\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var global = require('../internals/global');\nvar hide = require('../internals/hide');\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\nmodule.exports = {\n backendAPI: 'http://localhost:7000/api/v1',\n proxy: false,\n taskID: undefined,\n jobID: undefined,\n clientID: +Date.now().toString().substr(-6),\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const PluginRegistry = require('./plugins');\n const { ArgumentError } = require('./exceptions');\n\n /**\n * Class representing a state of an object on a specific frame\n * @memberof module:API.cvat.classes\n */\n class ObjectState {\n /**\n * @param {Object} serialized - is an dictionary which contains\n * initial information about an ObjectState;\n * Necessary fields: objectType, shapeType\n * Necessary fields for objects which haven't been added to collection yet: frame\n * Optional fields: points, group, zOrder, outside, occluded,\n * attributes, lock, label, mode, color, keyframe, clientID, serverID\n * These fields can be set later via setters\n */\n constructor(serialized) {\n const data = {\n label: null,\n attributes: {},\n\n points: null,\n outside: null,\n occluded: null,\n keyframe: null,\n\n group: null,\n zOrder: null,\n lock: null,\n color: null,\n\n clientID: serialized.clientID,\n serverID: serialized.serverID,\n\n frame: serialized.frame,\n objectType: serialized.objectType,\n shapeType: serialized.shapeType,\n updateFlags: {},\n };\n\n // Shows whether any properties updated since last reset() or interpolation\n Object.defineProperty(data.updateFlags, 'reset', {\n value: function reset() {\n this.label = false;\n this.attributes = false;\n\n this.points = false;\n this.outside = false;\n this.occluded = false;\n this.keyframe = false;\n\n this.group = false;\n this.zOrder = false;\n this.lock = false;\n this.color = false;\n },\n writable: false,\n });\n\n Object.defineProperties(this, Object.freeze({\n // Internal property. We don't need document it.\n updateFlags: {\n get: () => data.updateFlags,\n },\n frame: {\n /**\n * @name frame\n * @type {integer}\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n */\n get: () => data.frame,\n },\n objectType: {\n /**\n * @name objectType\n * @type {module:API.cvat.enums.ObjectType}\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n */\n get: () => data.objectType,\n },\n shapeType: {\n /**\n * @name shapeType\n * @type {module:API.cvat.enums.ObjectShape}\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n */\n get: () => data.shapeType,\n },\n clientID: {\n /**\n * @name clientID\n * @type {integer}\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n */\n get: () => data.clientID,\n },\n serverID: {\n /**\n * @name serverID\n * @type {integer}\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n */\n get: () => data.serverID,\n },\n label: {\n /**\n * @name shape\n * @type {module:API.cvat.classes.Label}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.label,\n set: (labelInstance) => {\n data.updateFlags.label = true;\n data.label = labelInstance;\n },\n },\n color: {\n /**\n * @name color\n * @type {string}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.color,\n set: (color) => {\n data.updateFlags.color = true;\n data.color = color;\n },\n },\n points: {\n /**\n * @name points\n * @type {number[]}\n * @memberof module:API.cvat.classes.ObjectState\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n */\n get: () => data.points,\n set: (points) => {\n if (Array.isArray(points)) {\n data.updateFlags.points = true;\n data.points = [...points];\n } else {\n throw new ArgumentError(\n 'Points are expected to be an array '\n + `but got ${typeof (points) === 'object'\n ? points.constructor.name : typeof (points)}`,\n );\n }\n },\n },\n group: {\n /**\n * @name group\n * @type {integer}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.group,\n set: (group) => {\n data.updateFlags.group = true;\n data.group = group;\n },\n },\n zOrder: {\n /**\n * @name zOrder\n * @type {integer}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.zOrder,\n set: (zOrder) => {\n data.updateFlags.zOrder = true;\n data.zOrder = zOrder;\n },\n },\n outside: {\n /**\n * @name outside\n * @type {boolean}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.outside,\n set: (outside) => {\n data.updateFlags.outside = true;\n data.outside = outside;\n },\n },\n keyframe: {\n /**\n * @name keyframe\n * @type {boolean}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.keyframe,\n set: (keyframe) => {\n data.updateFlags.keyframe = true;\n data.keyframe = keyframe;\n },\n },\n occluded: {\n /**\n * @name occluded\n * @type {boolean}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.occluded,\n set: (occluded) => {\n data.updateFlags.occluded = true;\n data.occluded = occluded;\n },\n },\n lock: {\n /**\n * @name lock\n * @type {boolean}\n * @memberof module:API.cvat.classes.ObjectState\n * @instance\n */\n get: () => data.lock,\n set: (lock) => {\n data.updateFlags.lock = true;\n data.lock = lock;\n },\n },\n attributes: {\n /**\n * Object is id:value pairs where \"id\" is an integer\n * attribute identifier and \"value\" is an attribute value\n * @name attributes\n * @type {Object}\n * @memberof module:API.cvat.classes.ObjectState\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @instance\n */\n get: () => data.attributes,\n set: (attributes) => {\n if (typeof (attributes) !== 'object') {\n throw new ArgumentError(\n 'Attributes are expected to be an object '\n + `but got ${typeof (attributes) === 'object'\n ? attributes.constructor.name : typeof (attributes)}`,\n );\n }\n\n for (const attrID of Object.keys(attributes)) {\n data.updateFlags.attributes = true;\n data.attributes[attrID] = attributes[attrID];\n }\n },\n },\n }));\n\n this.label = serialized.label;\n this.group = serialized.group;\n this.zOrder = serialized.zOrder;\n this.outside = serialized.outside;\n this.keyframe = serialized.keyframe;\n this.occluded = serialized.occluded;\n this.color = serialized.color;\n this.lock = serialized.lock;\n\n // It can be undefined in a constructor and it can be defined later\n if (typeof (serialized.points) !== 'undefined') {\n this.points = serialized.points;\n }\n if (typeof (serialized.attributes) !== 'undefined') {\n this.attributes = serialized.attributes;\n }\n\n data.updateFlags.reset();\n }\n\n /**\n * Method saves/updates an object state in a collection\n * @method save\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ArgumentError}\n * @returns {module:API.cvat.classes.ObjectState} updated state of an object\n */\n async save() {\n const result = await PluginRegistry\n .apiWrapper.call(this, ObjectState.prototype.save);\n return result;\n }\n\n /**\n * Method deletes an object from a collection\n * @method delete\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n * @param {boolean} [force=false] delete object even if it is locked\n * @async\n * @returns {boolean} true if object has been deleted\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async delete(force = false) {\n const result = await PluginRegistry\n .apiWrapper.call(this, ObjectState.prototype.delete, force);\n return result;\n }\n\n /**\n * Set the highest ZOrder within a frame\n * @method up\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async up() {\n const result = await PluginRegistry\n .apiWrapper.call(this, ObjectState.prototype.up);\n return result;\n }\n\n /**\n * Set the lowest ZOrder within a frame\n * @method down\n * @memberof module:API.cvat.classes.ObjectState\n * @readonly\n * @instance\n * @async\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async down() {\n const result = await PluginRegistry\n .apiWrapper.call(this, ObjectState.prototype.down);\n return result;\n }\n }\n\n // Default implementation saves element in collection\n ObjectState.prototype.save.implementation = async function () {\n if (this.hidden && this.hidden.save) {\n return this.hidden.save();\n }\n\n return this;\n };\n\n // Default implementation do nothing\n ObjectState.prototype.delete.implementation = async function (force) {\n if (this.hidden && this.hidden.delete) {\n return this.hidden.delete(force);\n }\n\n return false;\n };\n\n ObjectState.prototype.up.implementation = async function () {\n if (this.hidden && this.hidden.up) {\n return this.hidden.up();\n }\n\n return false;\n };\n\n ObjectState.prototype.down.implementation = async function () {\n if (this.hidden && this.hidden.down) {\n return this.hidden.down();\n }\n\n return false;\n };\n\n\n module.exports = ObjectState;\n})();\n","'use strict';\nvar $ = require('../internals/export');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return URL.prototype.toString.call(this);\n }\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = require('../internals/global');\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var anObject = require('../internals/an-object');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\nvar bind = require('../internals/bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\n\nvar location = global.location;\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(id + '', location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (classof(process) == 'process') {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar hide = require('../internals/hide');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n(() => {\n /**\n * Class representing a user\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class User {\n constructor(initialData) {\n const data = {\n id: null,\n username: null,\n email: null,\n first_name: null,\n last_name: null,\n groups: null,\n last_login: null,\n date_joined: null,\n is_staff: null,\n is_superuser: null,\n is_active: null,\n };\n\n for (const property in data) {\n if (Object.prototype.hasOwnProperty.call(data, property)\n && property in initialData) {\n data[property] = initialData[property];\n }\n }\n\n Object.defineProperties(this, Object.freeze({\n id: {\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.id,\n },\n username: {\n /**\n * @name username\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.username,\n },\n email: {\n /**\n * @name email\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.email,\n },\n firstName: {\n /**\n * @name firstName\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.first_name,\n },\n lastName: {\n /**\n * @name lastName\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.last_name,\n },\n groups: {\n /**\n * @name groups\n * @type {string[]}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => JSON.parse(JSON.stringify(data.groups)),\n },\n lastLogin: {\n /**\n * @name lastLogin\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.last_login,\n },\n dateJoined: {\n /**\n * @name dateJoined\n * @type {string}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.date_joined,\n },\n isStaff: {\n /**\n * @name isStaff\n * @type {boolean}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.is_staff,\n },\n isSuperuser: {\n /**\n * @name isSuperuser\n * @type {boolean}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.is_superuser,\n },\n isActive: {\n /**\n * @name isActive\n * @type {boolean}\n * @memberof module:API.cvat.classes.User\n * @readonly\n * @instance\n */\n get: () => data.is_active,\n },\n }));\n }\n }\n\n module.exports = User;\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n\n(() => {\n /**\n * Class representing collection statistics\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class Statistics {\n constructor(label, total) {\n Object.defineProperties(this, Object.freeze({\n /**\n * Statistics by labels with a structure:\n * @example\n * {\n * label: {\n * boxes: {\n * tracks: 10,\n * shapes: 11,\n * },\n * polygons: {\n * tracks: 13,\n * shapes: 14,\n * },\n * polylines: {\n * tracks: 16,\n * shapes: 17,\n * },\n * points: {\n * tracks: 19,\n * shapes: 20,\n * },\n * tags: 66,\n * manually: 186,\n * interpolated: 500,\n * total: 608,\n * }\n * }\n * @name label\n * @type {Object}\n * @memberof module:API.cvat.classes.Statistics\n * @readonly\n * @instance\n */\n label: {\n get: () => JSON.parse(JSON.stringify(label)),\n },\n /**\n * Total statistics (covers all labels) with a structure:\n * @example\n * {\n * boxes: {\n * tracks: 10,\n * shapes: 11,\n * },\n * polygons: {\n * tracks: 13,\n * shapes: 14,\n * },\n * polylines: {\n * tracks: 16,\n * shapes: 17,\n * },\n * points: {\n * tracks: 19,\n * shapes: 20,\n * },\n * tags: 66,\n * manually: 186,\n * interpolated: 500,\n * total: 608,\n * }\n * @name total\n * @type {Object}\n * @memberof module:API.cvat.classes.Statistics\n * @readonly\n * @instance\n */\n total: {\n get: () => JSON.parse(JSON.stringify(total)),\n },\n }));\n }\n }\n\n module.exports = Statistics;\n})();\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n(() => {\n /**\n * Class representing an annotation loader\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class Loader {\n constructor(initialData) {\n const data = {\n display_name: initialData.display_name,\n format: initialData.format,\n handler: initialData.handler,\n version: initialData.version,\n };\n\n Object.defineProperties(this, {\n name: {\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.Loader\n * @readonly\n * @instance\n */\n get: () => data.display_name,\n },\n format: {\n /**\n * @name format\n * @type {string}\n * @memberof module:API.cvat.classes.Loader\n * @readonly\n * @instance\n */\n get: () => data.format,\n },\n handler: {\n /**\n * @name handler\n * @type {string}\n * @memberof module:API.cvat.classes.Loader\n * @readonly\n * @instance\n */\n get: () => data.handler,\n },\n version: {\n /**\n * @name version\n * @type {string}\n * @memberof module:API.cvat.classes.Loader\n * @readonly\n * @instance\n */\n get: () => data.version,\n },\n });\n }\n }\n\n /**\n * Class representing an annotation dumper\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class Dumper {\n constructor(initialData) {\n const data = {\n display_name: initialData.display_name,\n format: initialData.format,\n handler: initialData.handler,\n version: initialData.version,\n };\n\n Object.defineProperties(this, {\n name: {\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.Dumper\n * @readonly\n * @instance\n */\n get: () => data.display_name,\n },\n format: {\n /**\n * @name format\n * @type {string}\n * @memberof module:API.cvat.classes.Dumper\n * @readonly\n * @instance\n */\n get: () => data.format,\n },\n handler: {\n /**\n * @name handler\n * @type {string}\n * @memberof module:API.cvat.classes.Dumper\n * @readonly\n * @instance\n */\n get: () => data.handler,\n },\n version: {\n /**\n * @name version\n * @type {string}\n * @memberof module:API.cvat.classes.Dumper\n * @readonly\n * @instance\n */\n get: () => data.version,\n },\n });\n }\n }\n\n /**\n * Class representing an annotation format\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class AnnotationFormat {\n constructor(initialData) {\n const data = {\n created_date: initialData.created_date,\n updated_date: initialData.updated_date,\n id: initialData.id,\n owner: initialData.owner,\n name: initialData.name,\n handler_file: initialData.handler_file,\n };\n\n data.dumpers = initialData.dumpers.map(el => new Dumper(el));\n data.loaders = initialData.loaders.map(el => new Loader(el));\n\n // Now all fields are readonly\n Object.defineProperties(this, {\n id: {\n /**\n * @name id\n * @type {integer}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.id,\n },\n owner: {\n /**\n * @name owner\n * @type {integer}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.owner,\n },\n name: {\n /**\n * @name name\n * @type {string}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.name,\n },\n createdDate: {\n /**\n * @name createdDate\n * @type {string}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.created_date,\n },\n updatedDate: {\n /**\n * @name updatedDate\n * @type {string}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.updated_date,\n },\n handlerFile: {\n /**\n * @name handlerFile\n * @type {string}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => data.handler_file,\n },\n loaders: {\n /**\n * @name loaders\n * @type {module:API.cvat.classes.Loader[]}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => [...data.loaders],\n },\n dumpers: {\n /**\n * @name dumpers\n * @type {module:API.cvat.classes.Dumper[]}\n * @memberof module:API.cvat.classes.AnnotationFormat\n * @readonly\n * @instance\n */\n get: () => [...data.dumpers],\n },\n });\n }\n }\n\n module.exports = {\n AnnotationFormat,\n Loader,\n Dumper,\n };\n})();\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?e=1', 'http://a');\n var searchParams = url.searchParams;\n url.pathname = 'c%20d';\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?e=1'\n || searchParams.get('e') !== '1'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1';\n});\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n/**\n * External API which should be used by for development\n * @module API\n*/\n\nfunction build() {\n const PluginRegistry = require('./plugins');\n const User = require('./user');\n const ObjectState = require('./object-state');\n const Statistics = require('./statistics');\n const { Job, Task } = require('./session');\n const { Attribute, Label } = require('./labels');\n\n const {\n ShareFileType,\n TaskStatus,\n TaskMode,\n AttributeType,\n ObjectType,\n ObjectShape,\n LogType,\n EventType,\n } = require('./enums');\n\n const {\n Exception,\n ArgumentError,\n DataError,\n ScriptingError,\n PluginError,\n ServerError,\n } = require('./exceptions');\n\n const pjson = require('../package.json');\n const config = require('./config');\n\n /**\n * API entrypoint\n * @namespace cvat\n * @memberof module:API\n */\n const cvat = {\n /**\n * Namespace is used for an interaction with a server\n * @namespace server\n * @package\n * @memberof module:API.cvat\n */\n server: {\n /**\n * @typedef {Object} ServerInfo\n * @property {string} name A name of the tool\n * @property {string} description A description of the tool\n * @property {string} version A version of the tool\n * @global\n */\n\n /**\n * Method returns some information about the annotation tool\n * @method about\n * @async\n * @memberof module:API.cvat.server\n * @return {ServerInfo}\n * @throws {module:API.cvat.exceptions.ServerError}\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async about() {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.about);\n return result;\n },\n /**\n * @typedef {Object} FileInfo\n * @property {string} name A name of a file\n * @property {module:API.cvat.enums.ShareFileType} type\n * A type of a file\n * @global\n */\n\n /**\n * Method returns a list of files in a specified directory on a share\n * @method share\n * @async\n * @memberof module:API.cvat.server\n * @param {string} [directory=/] - Share directory path\n * @returns {FileInfo[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async share(directory = '/') {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.share, directory);\n return result;\n },\n /**\n * Method returns available annotation formats\n * @method formats\n * @async\n * @memberof module:API.cvat.server\n * @returns {module:API.cvat.classes.AnnotationFormat[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async formats() {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.formats);\n return result;\n },\n /**\n * Method allows to register on a server\n * @method register\n * @async\n * @memberof module:API.cvat.server\n * @param {string} username An username for the new account\n * @param {string} firstName A first name for the new account\n * @param {string} lastName A last name for the new account\n * @param {string} email A email address for the new account\n * @param {string} password1 A password for the new account\n * @param {string} password2 The confirmation password for the new account\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async register(username, firstName, lastName, email, password1, password2) {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.register, username, firstName,\n lastName, email, password1, password2);\n return result;\n },\n /**\n * Method allows to login on a server\n * @method login\n * @async\n * @memberof module:API.cvat.server\n * @param {string} username An username of an account\n * @param {string} password A password of an account\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async login(username, password) {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.login, username, password);\n return result;\n },\n /**\n * Method allows to logout from the server\n * @method logout\n * @async\n * @memberof module:API.cvat.server\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async logout() {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.logout);\n return result;\n },\n /**\n * Method allows to know whether you are authorized on the server\n * @method authorized\n * @async\n * @memberof module:API.cvat.server\n * @returns {boolean}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async authorized() {\n const result = await PluginRegistry\n .apiWrapper(cvat.server.authorized);\n return result;\n },\n },\n /**\n * Namespace is used for getting tasks\n * @namespace tasks\n * @memberof module:API.cvat\n */\n tasks: {\n /**\n * @typedef {Object} TaskFilter\n * @property {string} name Check if name contains this value\n * @property {module:API.cvat.enums.TaskStatus} status\n * Check if status contains this value\n * @property {module:API.cvat.enums.TaskMode} mode\n * Check if mode contains this value\n * @property {integer} id Check if id equals this value\n * @property {integer} page Get specific page\n * (default REST API returns 20 tasks per request.\n * In order to get more, it is need to specify next page)\n * @property {string} owner Check if owner user contains this value\n * @property {string} assignee Check if assigneed contains this value\n * @property {string} search Combined search of contains among all fields\n * @global\n */\n\n /**\n * Method returns list of tasks corresponding to a filter\n * @method get\n * @async\n * @memberof module:API.cvat.tasks\n * @param {TaskFilter} [filter={}] task filter\n * @returns {module:API.cvat.classes.Task[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async get(filter = {}) {\n const result = await PluginRegistry\n .apiWrapper(cvat.tasks.get, filter);\n return result;\n },\n },\n /**\n * Namespace is used for getting jobs\n * @namespace jobs\n * @memberof module:API.cvat\n */\n jobs: {\n /**\n * @typedef {Object} JobFilter\n * Only one of fields is allowed simultaneously\n * @property {integer} taskID filter all jobs of specific task\n * @property {integer} jobID filter job with a specific id\n * @global\n */\n\n /**\n * Method returns list of jobs corresponding to a filter\n * @method get\n * @async\n * @memberof module:API.cvat.jobs\n * @param {JobFilter} filter job filter\n * @returns {module:API.cvat.classes.Job[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async get(filter = {}) {\n const result = await PluginRegistry\n .apiWrapper(cvat.jobs.get, filter);\n return result;\n },\n },\n /**\n * Namespace is used for getting users\n * @namespace users\n * @memberof module:API.cvat\n */\n users: {\n /**\n * @typedef {Object} UserFilter\n * @property {boolean} self get only self\n * @global\n */\n\n /**\n * Method returns list of users corresponding to a filter\n * @method get\n * @async\n * @memberof module:API.cvat.users\n * @param {UserFilter} [filter={}] user filter\n * @returns {module:API.cvat.classes.User[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n * @throws {module:API.cvat.exceptions.ServerError}\n */\n async get(filter = {}) {\n const result = await PluginRegistry\n .apiWrapper(cvat.users.get, filter);\n return result;\n },\n },\n /**\n * Namespace is used for plugin management\n * @namespace plugins\n * @memberof module:API.cvat\n */\n plugins: {\n /**\n * @typedef {Object} Plugin\n * A plugin is a Javascript object. It must have properties are listed below.
    \n * It also mustn't have property 'functions' which is used internally.
    \n * You can expand any API method including class methods.
    \n * In order to expand class method just use a class name\n * in a cvat space (example is listed below).\n *\n * @property {string} name A name of a plugin\n * @property {string} description A description of a plugin\n * Example plugin implementation listed below:\n * @example\n * plugin = {\n * name: 'Example Plugin',\n * description: 'This example plugin demonstrates how plugin system in CVAT works',\n * cvat: {\n * server: {\n * about: {\n * // Plugin adds some actions after executing the cvat.server.about()\n * // For example it adds a field with installed plugins to a result\n * // An argument \"self\" is a plugin itself\n * // An argument \"result\" is a return value of cvat.server.about()\n * // All next arguments are arguments of a wrapped function\n * // (in this case the wrapped function doesn't have any arguments)\n * async leave(self, result) {\n * result.plugins = await self.internal.getPlugins();\n * // Note that a method leave must return \"result\" (changed or not)\n * // Otherwise API won't work as expected\n * return result;\n * },\n * },\n * },\n * // In this example plugin also wraps a class method\n * classes: {\n * Job: {\n * prototype: {\n * annotations: {\n * put: {\n * // The first argument \"self\" is a plugin, like in a case above\n * // The second argument is an argument of the\n * // Job.annotations.put()\n * // It contains an array of objects to put\n * // In this sample we round objects coordinates and save them\n * enter(self, objects) {\n * for (const obj of objects) {\n * if (obj.type != 'tag') {\n * const points = obj.position.map((point) => {\n * const roundPoint = {\n * x: Math.round(point.x),\n * y: Math.round(point.y),\n * };\n * return roundPoint;\n * });\n * }\n * }\n * },\n * },\n * },\n * },\n * },\n * },\n * },\n * // In general you can add any others members to your plugin\n * // Members below are only examples\n * internal: {\n * async getPlugins() {\n * // Collect information about installed plugins\n * const plugins = await cvat.plugins.list();\n * return plugins.map((el) => {\n * return {\n * name: el.name,\n * description: el.description,\n * };\n * });\n * },\n * },\n * };\n * @global\n */\n\n /**\n * Method returns list of installed plugins\n * @method list\n * @async\n * @memberof module:API.cvat.plugins\n * @returns {Plugin[]}\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async list() {\n const result = await PluginRegistry\n .apiWrapper(cvat.plugins.list);\n return result;\n },\n /**\n * Install plugin to CVAT\n * @method register\n * @async\n * @memberof module:API.cvat.plugins\n * @param {Plugin} [plugin] plugin for registration\n * @throws {module:API.cvat.exceptions.PluginError}\n */\n async register(plugin) {\n const result = await PluginRegistry\n .apiWrapper(cvat.plugins.register, plugin);\n return result;\n },\n },\n /**\n * Namespace contains some changeable configurations\n * @namespace config\n * @memberof module:API.cvat\n */\n config: {\n /**\n * @memberof module:API.cvat.config\n * @property {string} backendAPI host with a backend api\n * @memberof module:API.cvat.config\n * @property {string} proxy Axios proxy settings.\n * For more details please read here \n * @memberof module:API.cvat.config\n * @property {integer} taskID this value is displayed in a logs if available\n * @memberof module:API.cvat.config\n * @property {integer} jobID this value is displayed in a logs if available\n * @memberof module:API.cvat.config\n * @property {integer} clientID read only auto-generated\n * value which is displayed in a logs\n * @memberof module:API.cvat.config\n */\n get backendAPI() {\n return config.backendAPI;\n },\n set backendAPI(value) {\n config.backendAPI = value;\n },\n get proxy() {\n return config.proxy;\n },\n set proxy(value) {\n config.proxy = value;\n },\n get taskID() {\n return config.taskID;\n },\n set taskID(value) {\n config.taskID = value;\n },\n get jobID() {\n return config.jobID;\n },\n set jobID(value) {\n config.jobID = value;\n },\n get clientID() {\n return config.clientID;\n },\n },\n /**\n * Namespace contains some library information e.g. api version\n * @namespace client\n * @memberof module:API.cvat\n */\n client: {\n /**\n * @property {string} version Client version.\n * Format: {major}.{minor}.{patch}\n *
  • A major number is changed after an API becomes\n * incompatible with a previous version\n *
  • A minor number is changed after an API expands\n *
  • A patch number is changed after an each build\n * @memberof module:API.cvat.client\n * @readonly\n */\n version: `${pjson.version}`,\n },\n /**\n * Namespace is used for access to enums\n * @namespace enums\n * @memberof module:API.cvat\n */\n enums: {\n ShareFileType,\n TaskStatus,\n TaskMode,\n AttributeType,\n ObjectType,\n ObjectShape,\n LogType,\n EventType,\n },\n /**\n * Namespace is used for access to exceptions\n * @namespace exceptions\n * @memberof module:API.cvat\n */\n exceptions: {\n Exception,\n ArgumentError,\n DataError,\n ScriptingError,\n PluginError,\n ServerError,\n },\n /**\n * Namespace is used for access to classes\n * @namespace classes\n * @memberof module:API.cvat\n */\n classes: {\n Task,\n User,\n Job,\n Attribute,\n Label,\n Statistics,\n ObjectState,\n },\n };\n\n cvat.server = Object.freeze(cvat.server);\n cvat.tasks = Object.freeze(cvat.tasks);\n cvat.jobs = Object.freeze(cvat.jobs);\n cvat.users = Object.freeze(cvat.users);\n cvat.plugins = Object.freeze(cvat.plugins);\n cvat.client = Object.freeze(cvat.client);\n cvat.enums = Object.freeze(cvat.enums);\n\n const implementAPI = require('./api-implementation');\n\n Math.clamp = function (value, min, max) {\n return Math.min(Math.max(value, min), max);\n };\n\n const implemented = Object.freeze(implementAPI(cvat));\n return implemented;\n}\n\nmodule.exports = build();\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n while (!(step = iterator.next()).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar classof = require('../internals/classof-raw');\nvar macrotask = require('../internals/task').set;\nvar userAgent = require('../internals/user-agent');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar IS_NODE = classof(process) == 'process';\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n } else if (MutationObserver && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar hide = require('../internals/hide');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n hide(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","/*!\n * Platform.js \n * Copyright 2014-2018 Benjamin Tan \n * Copyright 2011-2013 John-David Dalton \n * Available under MIT license \n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': 'Edge' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Waterfox',\n 'WebPositive',\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chrome',\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && !/buntu/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$))',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\bChrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\", \"SuSE\",\n * \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\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","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var tokens = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').split(/\\s+/).slice(1);\n var locationParts = this.extractLocation(tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar hide = require('../internals/hide');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","var engine = require('../src/store-engine')\n\nvar storages = require('../storages/all')\nvar plugins = [require('../plugins/json2')]\n\nmodule.exports = engine.createStore(storages, plugins)\n","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","module.exports = [\n\t// Listed in order of usage preference\n\trequire('./localStorage'),\n\trequire('./oldFF-globalStorage'),\n\trequire('./oldIE-userDataStorage'),\n\trequire('./cookieStorage'),\n\trequire('./sessionStorage'),\n\trequire('./memoryStorage')\n]\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'localStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nfunction localStorage() {\n\treturn Global.localStorage\n}\n\nfunction read(key) {\n\treturn localStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn localStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = localStorage().length - 1; i >= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","// oldFF-globalStorage provides storage for Firefox\n// versions 6 and 7, where no localStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldFF-globalStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar globalStorage = Global.globalStorage\n\nfunction read(key) {\n\treturn globalStorage[key]\n}\n\nfunction write(key, data) {\n\tglobalStorage[key] = data\n}\n\nfunction each(fn) {\n\tfor (var i = globalStorage.length - 1; i >= 0; i--) {\n\t\tvar key = globalStorage.key(i)\n\t\tfn(globalStorage[key], key)\n\t}\n}\n\nfunction remove(key) {\n\treturn globalStorage.removeItem(key)\n}\n\nfunction clearAll() {\n\teach(function(key, _) {\n\t\tdelete globalStorage[key]\n\t})\n}\n","// oldIE-userDataStorage provides storage for Internet Explorer\n// versions 6 and 7, where no localStorage, sessionStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldIE-userDataStorage',\n\twrite: write,\n\tread: read,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar storageName = 'storejs'\nvar doc = Global.document\nvar _withStorageEl = _makeIEStorageElFunction()\nvar disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\\./) // MSIE 9.x, MSIE 10.x\n\nfunction write(unfixedKey, data) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.setAttribute(fixedKey, data)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction read(unfixedKey) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\tvar res = null\n\t_withStorageEl(function(storageEl) {\n\t\tres = storageEl.getAttribute(fixedKey)\n\t})\n\treturn res\n}\n\nfunction each(callback) {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tvar attr = attributes[i]\n\t\t\tcallback(storageEl.getAttribute(attr.name), attr.name)\n\t\t}\n\t})\n}\n\nfunction remove(unfixedKey) {\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.removeAttribute(fixedKey)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction clearAll() {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tstorageEl.load(storageName)\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tstorageEl.removeAttribute(attributes[i].name)\n\t\t}\n\t\tstorageEl.save(storageName)\n\t})\n}\n\n// Helpers\n//////////\n\n// In IE7, keys cannot start with a digit or contain certain chars.\n// See https://github.com/marcuswestin/store.js/issues/40\n// See https://github.com/marcuswestin/store.js/issues/83\nvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\nfunction fixKey(key) {\n\treturn key.replace(/^\\d/, '___$&').replace(forbiddenCharsRegex, '___')\n}\n\nfunction _makeIEStorageElFunction() {\n\tif (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {\n\t\treturn null\n\t}\n\tvar scriptTag = 'script',\n\t\tstorageOwner,\n\t\tstorageContainer,\n\t\tstorageEl\n\n\t// Since #userData storage applies only to specific paths, we need to\n\t// somehow link our data to a specific path. We choose /favicon.ico\n\t// as a pretty safe option, since all browsers already make a request to\n\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t// since the iframe access rules appear to allow direct access and\n\t// manipulation of the document element, even for a 404 page. This\n\t// document can be used instead of the current document (which would\n\t// have been limited to the current path) to perform #userData storage.\n\ttry {\n\t\t/* global ActiveXObject */\n\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\tstorageContainer.open()\n\t\tstorageContainer.write('<'+scriptTag+'>document.w=window')\n\t\tstorageContainer.close()\n\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\tstorageEl = storageOwner.createElement('div')\n\t} catch(e) {\n\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t// security settings or otherwse), fall back to per-path storage\n\t\tstorageEl = doc.createElement('div')\n\t\tstorageOwner = doc.body\n\t}\n\n\treturn function(storeFunction) {\n\t\tvar args = [].slice.call(arguments, 0)\n\t\targs.unshift(storageEl)\n\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\tstorageOwner.appendChild(storageEl)\n\t\tstorageEl.addBehavior('#default#userData')\n\t\tstorageEl.load(storageName)\n\t\tstoreFunction.apply(this, args)\n\t\tstorageOwner.removeChild(storageEl)\n\t\treturn\n\t}\n}\n","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = require('../src/util')\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","module.exports = json2Plugin\n\nfunction json2Plugin() {\n\trequire('./lib/json2')\n\treturn {}\n}\n","/* eslint-disable */\n\n// json2.js\n// 2016-10-28\n// Public Domain.\n// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n// See http://www.JSON.org/js.html\n// This code should be minified before deployment.\n// See http://javascript.crockford.com/jsmin.html\n\n// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n// NOT CONTROL.\n\n// This file creates a global JSON object containing two methods: stringify\n// and parse. This file provides the ES5 JSON capability to ES3 systems.\n// If a project might run on IE8 or earlier, then this file should be included.\n// This file does nothing on ES5 systems.\n\n// JSON.stringify(value, replacer, space)\n// value any JavaScript value, usually an object or array.\n// replacer an optional parameter that determines how object\n// values are stringified for objects. It can be a\n// function or an array of strings.\n// space an optional parameter that specifies the indentation\n// of nested structures. If it is omitted, the text will\n// be packed without extra whitespace. If it is a number,\n// it will specify the number of spaces to indent at each\n// level. If it is a string (such as \"\\t\" or \" \"),\n// it contains the characters used to indent at each level.\n// This method produces a JSON text from a JavaScript value.\n// When an object value is found, if the object contains a toJSON\n// method, its toJSON method will be called and the result will be\n// stringified. A toJSON method does not serialize: it returns the\n// value represented by the name/value pair that should be serialized,\n// or undefined if nothing should be serialized. The toJSON method\n// will be passed the key associated with the value, and this will be\n// bound to the value.\n\n// For example, this would serialize Dates as ISO strings.\n\n// Date.prototype.toJSON = function (key) {\n// function f(n) {\n// // Format integers to have at least two digits.\n// return (n < 10)\n// ? \"0\" + n\n// : n;\n// }\n// return this.getUTCFullYear() + \"-\" +\n// f(this.getUTCMonth() + 1) + \"-\" +\n// f(this.getUTCDate()) + \"T\" +\n// f(this.getUTCHours()) + \":\" +\n// f(this.getUTCMinutes()) + \":\" +\n// f(this.getUTCSeconds()) + \"Z\";\n// };\n\n// You can provide an optional replacer method. It will be passed the\n// key and value of each member, with this bound to the containing\n// object. The value that is returned from your method will be\n// serialized. If your method returns undefined, then the member will\n// be excluded from the serialization.\n\n// If the replacer parameter is an array of strings, then it will be\n// used to select the members to be serialized. It filters the results\n// such that only members with keys listed in the replacer array are\n// stringified.\n\n// Values that do not have JSON representations, such as undefined or\n// functions, will not be serialized. Such values in objects will be\n// dropped; in arrays they will be replaced with null. You can use\n// a replacer function to replace those with JSON values.\n\n// JSON.stringify(undefined) returns undefined.\n\n// The optional space parameter produces a stringification of the\n// value that is filled with line breaks and indentation to make it\n// easier to read.\n\n// If the space parameter is a non-empty string, then that string will\n// be used for indentation. If the space parameter is a number, then\n// the indentation will be that many spaces.\n\n// Example:\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n// // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n// // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n// text = JSON.stringify([new Date()], function (key, value) {\n// return this[key] instanceof Date\n// ? \"Date(\" + this[key] + \")\"\n// : value;\n// });\n// // text is '[\"Date(---current time---)\"]'\n\n// JSON.parse(text, reviver)\n// This method parses a JSON text to produce an object or array.\n// It can throw a SyntaxError exception.\n\n// The optional reviver parameter is a function that can filter and\n// transform the results. It receives each of the keys and values,\n// and its return value is used instead of the original value.\n// If it returns what it received, then the structure is not modified.\n// If it returns undefined then the member is deleted.\n\n// Example:\n\n// // Parse the text. Values that look like ISO date strings will\n// // be converted to Date objects.\n\n// myData = JSON.parse(text, function (key, value) {\n// var a;\n// if (typeof value === \"string\") {\n// a =\n// /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n// if (a) {\n// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n// +a[5], +a[6]));\n// }\n// }\n// return value;\n// });\n\n// myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n// var d;\n// if (typeof value === \"string\" &&\n// value.slice(0, 5) === \"Date(\" &&\n// value.slice(-1) === \")\") {\n// d = new Date(value.slice(5, -1));\n// if (d) {\n// return d;\n// }\n// }\n// return value;\n// });\n\n// This is a reference implementation. You are free to copy, modify, or\n// redistribute.\n\n/*jslint\n eval, for, this\n*/\n\n/*property\n JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== \"object\") {\n JSON = {};\n}\n\n(function () {\n \"use strict\";\n\n var rx_one = /^[\\],:{}\\s]*$/;\n var rx_two = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g;\n var rx_three = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\n var rx_four = /(?:^|:|,)(?:\\s*\\[)+/g;\n var rx_escapable = /[\\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var rx_dangerous = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10\n ? \"0\" + n\n : n;\n }\n\n function this_value() {\n return this.valueOf();\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n\n Date.prototype.toJSON = function () {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + \"-\" +\n f(this.getUTCMonth() + 1) + \"-\" +\n f(this.getUTCDate()) + \"T\" +\n f(this.getUTCHours()) + \":\" +\n f(this.getUTCMinutes()) + \":\" +\n f(this.getUTCSeconds()) + \"Z\"\n : null;\n };\n\n Boolean.prototype.toJSON = this_value;\n Number.prototype.toJSON = this_value;\n String.prototype.toJSON = this_value;\n }\n\n var gap;\n var indent;\n var meta;\n var rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n rx_escapable.lastIndex = 0;\n return rx_escapable.test(string)\n ? \"\\\"\" + string.replace(rx_escapable, function (a) {\n var c = meta[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\"\n : \"\\\"\" + string + \"\\\"\";\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i; // The loop counter.\n var k; // The member key.\n var v; // The member value.\n var length;\n var mind = gap;\n var partial;\n var value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === \"object\" &&\n typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value)\n ? String(value)\n : \"null\";\n\n case \"boolean\":\n case \"null\":\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce \"null\". The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is \"object\", we might be dealing with an object or an array or\n// null.\n\n case \"object\":\n\n// Due to a specification blunder in ECMAScript, typeof null is \"object\",\n// so watch out for that case.\n\n if (!value) {\n return \"null\";\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === \"[object Array]\") {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || \"null\";\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? \"[]\"\n : gap\n ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\"\n : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === \"object\") {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? \"{}\"\n : gap\n ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\"\n : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== \"function\") {\n meta = { // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": \"\\\\\\\"\",\n \"\\\\\": \"\\\\\\\\\"\n };\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = \"\";\n indent = \"\";\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === \"string\") {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" ||\n typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n }\n\n// Make a fake root object containing our value under the key of \"\".\n// Return the result of stringifying the value.\n\n return str(\"\", {\"\": value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k;\n var v;\n var value = holder[key];\n if (value && typeof value === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n rx_dangerous.lastIndex = 0;\n if (rx_dangerous.test(text)) {\n text = text.replace(rx_dangerous, function (a) {\n return \"\\\\u\" +\n (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n// because they can cause invocation, and \"=\" because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n// replace all simple value tokens with \"]\" characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or \"]\" or\n// \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n\n if (\n rx_one.test(\n text\n .replace(rx_two, \"@\")\n .replace(rx_three, \"]\")\n .replace(rx_four, \"\")\n )\n ) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The \"{\" operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval(\"(\" + text + \")\");\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return (typeof reviver === \"function\")\n ? walk({\"\": j}, \"\")\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n}());","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n global:false\n*/\n\n(() => {\n const PluginRegistry = require('./plugins');\n const serverProxy = require('./server-proxy');\n const { ArgumentError } = require('./exceptions');\n const { isBrowser, isNode } = require('browser-or-node');\n\n // This is the frames storage\n const frameDataCache = {};\n const frameCache = {};\n\n /**\n * Class provides meta information about specific frame and frame itself\n * @memberof module:API.cvat.classes\n * @hideconstructor\n */\n class FrameData {\n constructor(width, height, tid, number) {\n Object.defineProperties(this, Object.freeze({\n /**\n * @name width\n * @type {integer}\n * @memberof module:API.cvat.classes.FrameData\n * @readonly\n * @instance\n */\n width: {\n value: width,\n writable: false,\n },\n /**\n * @name height\n * @type {integer}\n * @memberof module:API.cvat.classes.FrameData\n * @readonly\n * @instance\n */\n height: {\n value: height,\n writable: false,\n },\n tid: {\n value: tid,\n writable: false,\n },\n number: {\n value: number,\n writable: false,\n },\n }));\n }\n\n /**\n * Method returns URL encoded image which can be placed in the img tag\n * @method data\n * @returns {string}\n * @memberof module:API.cvat.classes.FrameData\n * @instance\n * @async\n * @param {function} [onServerRequest = () => {}]\n * callback which will be called if data absences local\n * @throws {module:API.cvat.exception.ServerError}\n * @throws {module:API.cvat.exception.PluginError}\n */\n async data(onServerRequest = () => {}) {\n const result = await PluginRegistry\n .apiWrapper.call(this, FrameData.prototype.data, onServerRequest);\n return result;\n }\n }\n\n FrameData.prototype.data.implementation = async function (onServerRequest) {\n return new Promise(async (resolve, reject) => {\n try {\n if (this.number in frameCache[this.tid]) {\n resolve(frameCache[this.tid][this.number]);\n } else {\n onServerRequest();\n const frame = await serverProxy.frames.getData(this.tid, this.number);\n\n if (isNode) {\n frameCache[this.tid][this.number] = global.Buffer.from(frame, 'binary').toString('base64');\n resolve(frameCache[this.tid][this.number]);\n } else if (isBrowser) {\n const reader = new FileReader();\n reader.onload = () => {\n frameCache[this.tid][this.number] = reader.result;\n resolve(frameCache[this.tid][this.number]);\n };\n reader.readAsDataURL(frame);\n }\n }\n } catch (exception) {\n reject(exception);\n }\n });\n };\n\n async function getFrame(taskID, mode, frame) {\n if (!(taskID in frameDataCache)) {\n frameDataCache[taskID] = {};\n frameDataCache[taskID].meta = await serverProxy.frames.getMeta(taskID);\n\n frameCache[taskID] = {};\n }\n\n if (!(frame in frameDataCache[taskID])) {\n let size = null;\n if (mode === 'interpolation') {\n [size] = frameDataCache[taskID].meta;\n } else if (mode === 'annotation') {\n if (frame >= frameDataCache[taskID].meta.length) {\n throw new ArgumentError(\n `Meta information about frame ${frame} can't be received from the server`,\n );\n } else {\n size = frameDataCache[taskID].meta[frame];\n }\n } else {\n throw new ArgumentError(\n `Invalid mode is specified ${mode}`,\n );\n }\n\n frameDataCache[taskID][frame] = new FrameData(size.width, size.height, taskID, frame);\n }\n\n return frameDataCache[taskID][frame];\n }\n\n module.exports = {\n FrameData,\n getFrame,\n };\n})();\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* global window self */\n\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n/* eslint-disable no-restricted-globals */\nvar isWebWorker = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self.constructor && self.constructor.name === 'DedicatedWorkerGlobalScope';\n/* eslint-enable no-restricted-globals */\n\nvar isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\nexports.isBrowser = isBrowser;\nexports.isWebWorker = isWebWorker;\nexports.isNode = isNode;","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const serverProxy = require('./server-proxy');\n const Collection = require('./annotations-collection');\n const AnnotationsSaver = require('./annotations-saver');\n const { checkObjectType } = require('./common');\n const { Task } = require('./session');\n const {\n Loader,\n Dumper,\n } = require('./annotation-format.js');\n const {\n ScriptingError,\n DataError,\n ArgumentError,\n } = require('./exceptions');\n\n const jobCache = new WeakMap();\n const taskCache = new WeakMap();\n\n function getCache(sessionType) {\n if (sessionType === 'task') {\n return taskCache;\n }\n\n if (sessionType === 'job') {\n return jobCache;\n }\n\n throw new ScriptingError(\n `Unknown session type was received ${sessionType}`,\n );\n }\n\n async function getAnnotationsFromServer(session) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (!cache.has(session)) {\n const rawAnnotations = await serverProxy.annotations\n .getAnnotations(sessionType, session.id);\n\n // Get meta information about frames\n const startFrame = sessionType === 'job' ? session.startFrame : 0;\n const stopFrame = sessionType === 'job' ? session.stopFrame : session.size - 1;\n const frameMeta = {};\n for (let i = startFrame; i <= stopFrame; i++) {\n frameMeta[i] = await session.frames.get(i);\n }\n\n const collection = new Collection({\n labels: session.labels || session.task.labels,\n startFrame,\n stopFrame,\n frameMeta,\n }).import(rawAnnotations);\n\n const saver = new AnnotationsSaver(rawAnnotations.version, collection, session);\n\n cache.set(session, {\n collection,\n saver,\n\n });\n }\n }\n\n async function getAnnotations(session, frame, filter) {\n await getAnnotationsFromServer(session);\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n return cache.get(session).collection.get(frame, filter);\n }\n\n async function saveAnnotations(session, onUpdate) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n await cache.get(session).saver.save(onUpdate);\n }\n\n // If a collection wasn't uploaded, than it wasn't changed, finally we shouldn't save it\n }\n\n function mergeAnnotations(session, objectStates) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.merge(objectStates);\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n function splitAnnotations(session, objectState, frame) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.split(objectState, frame);\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n function groupAnnotations(session, objectStates, reset) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.group(objectStates, reset);\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n function hasUnsavedChanges(session) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).saver.hasUnsavedChanges();\n }\n\n return false;\n }\n\n async function clearAnnotations(session, reload) {\n checkObjectType('reload', reload, 'boolean', null);\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n cache.get(session).collection.clear();\n }\n\n if (reload) {\n cache.delete(session);\n await getAnnotationsFromServer(session);\n }\n }\n\n function annotationsStatistics(session) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.statistics();\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n function putAnnotations(session, objectStates) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.put(objectStates);\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n function selectObject(session, objectStates, x, y) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n const cache = getCache(sessionType);\n\n if (cache.has(session)) {\n return cache.get(session).collection.select(objectStates, x, y);\n }\n\n throw new DataError(\n 'Collection has not been initialized yet. Call annotations.get() or annotations.clear(true) before',\n );\n }\n\n async function uploadAnnotations(session, file, loader) {\n const sessionType = session instanceof Task ? 'task' : 'job';\n if (!(loader instanceof Loader)) {\n throw new ArgumentError(\n 'A loader must be instance of Loader class',\n );\n }\n await serverProxy.annotations.uploadAnnotations(sessionType, session.id, file, loader.name);\n }\n\n async function dumpAnnotations(session, name, dumper) {\n if (!(dumper instanceof Dumper)) {\n throw new ArgumentError(\n 'A dumper must be instance of Dumper class',\n );\n }\n\n let result = null;\n const sessionType = session instanceof Task ? 'task' : 'job';\n if (sessionType === 'job') {\n result = await serverProxy.annotations\n .dumpAnnotations(session.task.id, name, dumper.name);\n } else {\n result = await serverProxy.annotations\n .dumpAnnotations(session.id, name, dumper.name);\n }\n\n return result;\n }\n\n module.exports = {\n getAnnotations,\n putAnnotations,\n saveAnnotations,\n hasUnsavedChanges,\n mergeAnnotations,\n splitAnnotations,\n groupAnnotations,\n clearAnnotations,\n annotationsStatistics,\n selectObject,\n uploadAnnotations,\n dumpAnnotations,\n };\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const {\n RectangleShape,\n PolygonShape,\n PolylineShape,\n PointsShape,\n RectangleTrack,\n PolygonTrack,\n PolylineTrack,\n PointsTrack,\n Track,\n Shape,\n Tag,\n objectStateFactory,\n } = require('./annotations-objects');\n const { checkObjectType } = require('./common');\n const Statistics = require('./statistics');\n const { Label } = require('./labels');\n const {\n DataError,\n ArgumentError,\n ScriptingError,\n } = require('./exceptions');\n\n const {\n ObjectShape,\n ObjectType,\n } = require('./enums');\n const ObjectState = require('./object-state');\n\n const colors = [\n '#0066FF', '#AF593E', '#01A368', '#FF861F', '#ED0A3F', '#FF3F34', '#76D7EA',\n '#8359A3', '#FBE870', '#C5E17A', '#03BB85', '#FFDF00', '#8B8680', '#0A6B0D',\n '#8FD8D8', '#A36F40', '#F653A6', '#CA3435', '#FFCBA4', '#FF99CC', '#FA9D5A',\n '#FFAE42', '#A78B00', '#788193', '#514E49', '#1164B4', '#F4FA9F', '#FED8B1',\n '#C32148', '#01796F', '#E90067', '#FF91A4', '#404E5A', '#6CDAE7', '#FFC1CC',\n '#006A93', '#867200', '#E2B631', '#6EEB6E', '#FFC800', '#CC99BA', '#FF007C',\n '#BC6CAC', '#DCCCD7', '#EBE1C2', '#A6AAAE', '#B99685', '#0086A7', '#5E4330',\n '#C8A2C8', '#708EB3', '#BC8777', '#B2592D', '#497E48', '#6A2963', '#E6335F',\n '#00755E', '#B5A895', '#0048ba', '#EED9C4', '#C88A65', '#FF6E4A', '#87421F',\n '#B2BEB5', '#926F5B', '#00B9FB', '#6456B7', '#DB5079', '#C62D42', '#FA9C44',\n '#DA8A67', '#FD7C6E', '#93CCEA', '#FCF686', '#503E32', '#FF5470', '#9DE093',\n '#FF7A00', '#4F69C6', '#A50B5E', '#F0E68C', '#FDFF00', '#F091A9', '#FFFF66',\n '#6F9940', '#FC74FD', '#652DC1', '#D6AEDD', '#EE34D2', '#BB3385', '#6B3FA0',\n '#33CC99', '#FFDB00', '#87FF2A', '#6EEB6E', '#FFC800', '#CC99BA', '#7A89B8',\n '#006A93', '#867200', '#E2B631', '#D9D6CF',\n ];\n\n function shapeFactory(shapeData, clientID, injection) {\n const { type } = shapeData;\n const color = colors[clientID % colors.length];\n\n let shapeModel = null;\n switch (type) {\n case 'rectangle':\n shapeModel = new RectangleShape(shapeData, clientID, color, injection);\n break;\n case 'polygon':\n shapeModel = new PolygonShape(shapeData, clientID, color, injection);\n break;\n case 'polyline':\n shapeModel = new PolylineShape(shapeData, clientID, color, injection);\n break;\n case 'points':\n shapeModel = new PointsShape(shapeData, clientID, color, injection);\n break;\n default:\n throw new DataError(\n `An unexpected type of shape \"${type}\"`,\n );\n }\n\n return shapeModel;\n }\n\n\n function trackFactory(trackData, clientID, injection) {\n if (trackData.shapes.length) {\n const { type } = trackData.shapes[0];\n const color = colors[clientID % colors.length];\n\n let trackModel = null;\n switch (type) {\n case 'rectangle':\n trackModel = new RectangleTrack(trackData, clientID, color, injection);\n break;\n case 'polygon':\n trackModel = new PolygonTrack(trackData, clientID, color, injection);\n break;\n case 'polyline':\n trackModel = new PolylineTrack(trackData, clientID, color, injection);\n break;\n case 'points':\n trackModel = new PointsTrack(trackData, clientID, color, injection);\n break;\n default:\n throw new DataError(\n `An unexpected type of track \"${type}\"`,\n );\n }\n\n return trackModel;\n }\n\n console.warn('The track without any shapes had been found. It was ignored.');\n return null;\n }\n\n class Collection {\n constructor(data) {\n this.startFrame = data.startFrame;\n this.stopFrame = data.stopFrame;\n this.frameMeta = data.frameMeta;\n\n this.labels = data.labels.reduce((labelAccumulator, label) => {\n labelAccumulator[label.id] = label;\n return labelAccumulator;\n }, {});\n\n this.shapes = {}; // key is a frame\n this.tags = {}; // key is a frame\n this.tracks = [];\n this.objects = {}; // key is a client id\n this.count = 0;\n this.flush = false;\n this.collectionZ = {}; // key is a frame, {max, min} are values\n this.groups = {\n max: 0,\n }; // it is an object to we can pass it as an argument by a reference\n this.injection = {\n labels: this.labels,\n collectionZ: this.collectionZ,\n groups: this.groups,\n frameMeta: this.frameMeta,\n };\n }\n\n import(data) {\n for (const tag of data.tags) {\n const clientID = ++this.count;\n const tagModel = new Tag(tag, clientID, this.injection);\n this.tags[tagModel.frame] = this.tags[tagModel.frame] || [];\n this.tags[tagModel.frame].push(tagModel);\n this.objects[clientID] = tagModel;\n }\n\n for (const shape of data.shapes) {\n const clientID = ++this.count;\n const shapeModel = shapeFactory(shape, clientID, this.injection);\n this.shapes[shapeModel.frame] = this.shapes[shapeModel.frame] || [];\n this.shapes[shapeModel.frame].push(shapeModel);\n this.objects[clientID] = shapeModel;\n }\n\n for (const track of data.tracks) {\n const clientID = ++this.count;\n const trackModel = trackFactory(track, clientID, this.injection);\n // The function can return null if track doesn't have any shapes.\n // In this case a corresponded message will be sent to the console\n if (trackModel) {\n this.tracks.push(trackModel);\n this.objects[clientID] = trackModel;\n }\n }\n\n return this;\n }\n\n export() {\n const data = {\n tracks: this.tracks.filter(track => !track.removed)\n .map(track => track.toJSON()),\n shapes: Object.values(this.shapes)\n .reduce((accumulator, value) => {\n accumulator.push(...value);\n return accumulator;\n }, []).filter(shape => !shape.removed)\n .map(shape => shape.toJSON()),\n tags: Object.values(this.tags).reduce((accumulator, value) => {\n accumulator.push(...value);\n return accumulator;\n }, []).filter(tag => !tag.removed)\n .map(tag => tag.toJSON()),\n };\n\n return data;\n }\n\n get(frame) {\n const { tracks } = this;\n const shapes = this.shapes[frame] || [];\n const tags = this.tags[frame] || [];\n\n const objects = tracks.concat(shapes).concat(tags).filter(object => !object.removed);\n // filtering here\n\n const objectStates = [];\n for (const object of objects) {\n const stateData = object.get(frame);\n if (stateData.outside && !stateData.keyframe) {\n continue;\n }\n\n const objectState = objectStateFactory.call(object, frame, stateData);\n objectStates.push(objectState);\n }\n\n return objectStates;\n }\n\n merge(objectStates) {\n checkObjectType('shapes for merge', objectStates, null, Array);\n if (!objectStates.length) return;\n const objectsForMerge = objectStates.map((state) => {\n checkObjectType('object state', state, null, ObjectState);\n const object = this.objects[state.clientID];\n if (typeof (object) === 'undefined') {\n throw new ArgumentError(\n 'The object has not been saved yet. Call ObjectState.put([state]) before you can merge it',\n );\n }\n return object;\n });\n\n const keyframes = {}; // frame: position\n const { label, shapeType } = objectStates[0];\n if (!(label.id in this.labels)) {\n throw new ArgumentError(\n `Unknown label for the task: ${label.id}`,\n );\n }\n\n if (!Object.values(ObjectShape).includes(shapeType)) {\n throw new ArgumentError(\n `Got unknown shapeType \"${shapeType}\"`,\n );\n }\n\n const labelAttributes = label.attributes.reduce((accumulator, attribute) => {\n accumulator[attribute.id] = attribute;\n return accumulator;\n }, {});\n\n for (let i = 0; i < objectsForMerge.length; i++) {\n // For each state get corresponding object\n const object = objectsForMerge[i];\n const state = objectStates[i];\n if (state.label.id !== label.id) {\n throw new ArgumentError(\n `All shape labels are expected to be ${label.name}, but got ${state.label.name}`,\n );\n }\n\n if (state.shapeType !== shapeType) {\n throw new ArgumentError(\n `All shapes are expected to be ${shapeType}, but got ${state.shapeType}`,\n );\n }\n\n // If this object is shape, get it position and save as a keyframe\n if (object instanceof Shape) {\n // Frame already saved and it is not outside\n if (object.frame in keyframes && !keyframes[object.frame].outside) {\n throw new ArgumentError(\n 'Expected only one visible shape per frame',\n );\n }\n\n keyframes[object.frame] = {\n type: shapeType,\n frame: object.frame,\n points: [...object.points],\n occluded: object.occluded,\n zOrder: object.zOrder,\n outside: false,\n attributes: Object.keys(object.attributes).reduce((accumulator, attrID) => {\n // We save only mutable attributes inside a keyframe\n if (attrID in labelAttributes && labelAttributes[attrID].mutable) {\n accumulator.push({\n spec_id: +attrID,\n value: object.attributes[attrID],\n });\n }\n return accumulator;\n }, []),\n };\n\n // Push outside shape after each annotation shape\n // Any not outside shape rewrites it\n if (!((object.frame + 1) in keyframes)) {\n keyframes[object.frame + 1] = JSON\n .parse(JSON.stringify(keyframes[object.frame]));\n keyframes[object.frame + 1].outside = true;\n keyframes[object.frame + 1].frame++;\n }\n } else if (object instanceof Track) {\n // If this object is track, iterate through all its\n // keyframes and push copies to new keyframes\n const attributes = {}; // id:value\n for (const keyframe of Object.keys(object.shapes)) {\n const shape = object.shapes[keyframe];\n // Frame already saved and it is not outside\n if (keyframe in keyframes && !keyframes[keyframe].outside) {\n // This shape is outside and non-outside shape already exists\n if (shape.outside) {\n continue;\n }\n\n throw new ArgumentError(\n 'Expected only one visible shape per frame',\n );\n }\n\n // We do not save an attribute if it has the same value\n // We save only updates\n let updatedAttributes = false;\n for (const attrID in shape.attributes) {\n if (!(attrID in attributes)\n || attributes[attrID] !== shape.attributes[attrID]) {\n updatedAttributes = true;\n attributes[attrID] = shape.attributes[attrID];\n }\n }\n\n keyframes[keyframe] = {\n type: shapeType,\n frame: +keyframe,\n points: [...shape.points],\n occluded: shape.occluded,\n outside: shape.outside,\n zOrder: shape.zOrder,\n attributes: updatedAttributes ? Object.keys(attributes)\n .reduce((accumulator, attrID) => {\n accumulator.push({\n spec_id: +attrID,\n value: attributes[attrID],\n });\n\n return accumulator;\n }, []) : [],\n };\n }\n } else {\n throw new ArgumentError(\n `Trying to merge unknown object type: ${object.constructor.name}. `\n + 'Only shapes and tracks are expected.',\n );\n }\n }\n\n let firstNonOutside = false;\n for (const frame of Object.keys(keyframes).sort((a, b) => +a - +b)) {\n // Remove all outside frames at the begin\n firstNonOutside = firstNonOutside || keyframes[frame].outside;\n if (!firstNonOutside && keyframes[frame].outside) {\n delete keyframes[frame];\n } else {\n break;\n }\n }\n\n const clientID = ++this.count;\n const track = {\n frame: Math.min.apply(null, Object.keys(keyframes).map(frame => +frame)),\n shapes: Object.values(keyframes),\n group: 0,\n label_id: label.id,\n attributes: Object.keys(objectStates[0].attributes)\n .reduce((accumulator, attrID) => {\n if (!labelAttributes[attrID].mutable) {\n accumulator.push({\n spec_id: +attrID,\n value: objectStates[0].attributes[attrID],\n });\n }\n\n return accumulator;\n }, []),\n };\n\n const trackModel = trackFactory(track, clientID, this.injection);\n this.tracks.push(trackModel);\n this.objects[clientID] = trackModel;\n\n // Remove other shapes\n for (const object of objectsForMerge) {\n object.removed = true;\n if (typeof (object.resetCache) === 'function') {\n object.resetCache();\n }\n }\n }\n\n split(objectState, frame) {\n checkObjectType('object state', objectState, null, ObjectState);\n checkObjectType('frame', frame, 'integer', null);\n\n const object = this.objects[objectState.clientID];\n if (typeof (object) === 'undefined') {\n throw new ArgumentError(\n 'The object has not been saved yet. Call annotations.put([state]) before',\n );\n }\n\n if (objectState.objectType !== ObjectType.TRACK) {\n return;\n }\n\n const keyframes = Object.keys(object.shapes).sort((a, b) => +a - +b);\n if (frame <= +keyframes[0] || frame > keyframes[keyframes.length - 1]) {\n return;\n }\n\n const labelAttributes = object.label.attributes.reduce((accumulator, attribute) => {\n accumulator[attribute.id] = attribute;\n return accumulator;\n }, {});\n\n const exported = object.toJSON();\n const position = {\n type: objectState.shapeType,\n points: [...objectState.points],\n occluded: objectState.occluded,\n outside: objectState.outside,\n zOrder: 0,\n attributes: Object.keys(objectState.attributes)\n .reduce((accumulator, attrID) => {\n if (!labelAttributes[attrID].mutable) {\n accumulator.push({\n spec_id: +attrID,\n value: objectState.attributes[attrID],\n });\n }\n\n return accumulator;\n }, []),\n frame,\n };\n\n const prev = {\n frame: exported.frame,\n group: 0,\n label_id: exported.label_id,\n attributes: exported.attributes,\n shapes: [],\n };\n\n const next = JSON.parse(JSON.stringify(prev));\n next.frame = frame;\n\n next.shapes.push(JSON.parse(JSON.stringify(position)));\n exported.shapes.map((shape) => {\n delete shape.id;\n if (shape.frame < frame) {\n prev.shapes.push(JSON.parse(JSON.stringify(shape)));\n } else if (shape.frame > frame) {\n next.shapes.push(JSON.parse(JSON.stringify(shape)));\n }\n\n return shape;\n });\n prev.shapes.push(position);\n prev.shapes[prev.shapes.length - 1].outside = true;\n\n let clientID = ++this.count;\n const prevTrack = trackFactory(prev, clientID, this.injection);\n this.tracks.push(prevTrack);\n this.objects[clientID] = prevTrack;\n\n clientID = ++this.count;\n const nextTrack = trackFactory(next, clientID, this.injection);\n this.tracks.push(nextTrack);\n this.objects[clientID] = nextTrack;\n\n // Remove source object\n object.removed = true;\n object.resetCache();\n }\n\n group(objectStates, reset) {\n checkObjectType('shapes for group', objectStates, null, Array);\n\n const objectsForGroup = objectStates.map((state) => {\n checkObjectType('object state', state, null, ObjectState);\n const object = this.objects[state.clientID];\n if (typeof (object) === 'undefined') {\n throw new ArgumentError(\n 'The object has not been saved yet. Call annotations.put([state]) before',\n );\n }\n return object;\n });\n\n const groupIdx = reset ? 0 : ++this.groups.max;\n for (const object of objectsForGroup) {\n object.group = groupIdx;\n if (typeof (object.resetCache) === 'function') {\n object.resetCache();\n }\n }\n\n return groupIdx;\n }\n\n clear() {\n this.shapes = {};\n this.tags = {};\n this.tracks = [];\n this.objects = {}; // by id\n this.count = 0;\n\n this.flush = true;\n }\n\n statistics() {\n const labels = {};\n const skeleton = {\n rectangle: {\n shape: 0,\n track: 0,\n },\n polygon: {\n shape: 0,\n track: 0,\n },\n polyline: {\n shape: 0,\n track: 0,\n },\n points: {\n shape: 0,\n track: 0,\n },\n tags: 0,\n manually: 0,\n interpolated: 0,\n total: 0,\n };\n\n const total = JSON.parse(JSON.stringify(skeleton));\n for (const label of Object.values(this.labels)) {\n const { name } = label;\n labels[name] = JSON.parse(JSON.stringify(skeleton));\n }\n\n for (const object of Object.values(this.objects)) {\n let objectType = null;\n if (object instanceof Shape) {\n objectType = 'shape';\n } else if (object instanceof Track) {\n objectType = 'track';\n } else if (object instanceof Tag) {\n objectType = 'tag';\n } else {\n throw new ScriptingError(\n `Unexpected object type: \"${objectType}\"`,\n );\n }\n\n const label = object.label.name;\n if (objectType === 'tag') {\n labels[label].tags++;\n labels[label].manually++;\n labels[label].total++;\n } else {\n const { shapeType } = object;\n labels[label][shapeType][objectType]++;\n\n if (objectType === 'track') {\n const keyframes = Object.keys(object.shapes)\n .sort((a, b) => +a - +b).map(el => +el);\n\n let prevKeyframe = keyframes[0];\n let visible = false;\n\n for (const keyframe of keyframes) {\n if (visible) {\n const interpolated = keyframe - prevKeyframe - 1;\n labels[label].interpolated += interpolated;\n labels[label].total += interpolated;\n }\n visible = !object.shapes[keyframe].outside;\n prevKeyframe = keyframe;\n\n if (visible) {\n labels[label].manually++;\n labels[label].total++;\n }\n }\n\n const lastKey = keyframes[keyframes.length - 1];\n if (lastKey !== this.stopFrame && !object.shapes[lastKey].outside) {\n const interpolated = this.stopFrame - lastKey;\n labels[label].interpolated += interpolated;\n labels[label].total += interpolated;\n }\n } else {\n labels[label].manually++;\n labels[label].total++;\n }\n }\n }\n\n for (const label of Object.keys(labels)) {\n for (const key of Object.keys(labels[label])) {\n if (typeof (labels[label][key]) === 'object') {\n for (const objectType of Object.keys(labels[label][key])) {\n total[key][objectType] += labels[label][key][objectType];\n }\n } else {\n total[key] += labels[label][key];\n }\n }\n }\n\n return new Statistics(labels, total);\n }\n\n put(objectStates) {\n checkObjectType('shapes for put', objectStates, null, Array);\n const constructed = {\n shapes: [],\n tracks: [],\n tags: [],\n };\n\n function convertAttributes(accumulator, attrID) {\n const specID = +attrID;\n const value = this.attributes[attrID];\n\n checkObjectType('attribute id', specID, 'integer', null);\n checkObjectType('attribute value', value, 'string', null);\n\n accumulator.push({\n spec_id: specID,\n value,\n });\n\n return accumulator;\n }\n\n for (const state of objectStates) {\n checkObjectType('object state', state, null, ObjectState);\n checkObjectType('state client ID', state.clientID, 'undefined', null);\n checkObjectType('state frame', state.frame, 'integer', null);\n checkObjectType('state attributes', state.attributes, null, Object);\n checkObjectType('state label', state.label, null, Label);\n\n const attributes = Object.keys(state.attributes)\n .reduce(convertAttributes.bind(state), []);\n const labelAttributes = state.label.attributes.reduce((accumulator, attribute) => {\n accumulator[attribute.id] = attribute;\n return accumulator;\n }, {});\n\n // Construct whole objects from states\n if (state.objectType === 'tag') {\n constructed.tags.push({\n attributes,\n frame: state.frame,\n label_id: state.label.id,\n group: 0,\n });\n } else {\n checkObjectType('state occluded', state.occluded, 'boolean', null);\n checkObjectType('state points', state.points, null, Array);\n\n for (const coord of state.points) {\n checkObjectType('point coordinate', coord, 'number', null);\n }\n\n if (!Object.values(ObjectShape).includes(state.shapeType)) {\n throw new ArgumentError(\n 'Object shape must be one of: '\n + `${JSON.stringify(Object.values(ObjectShape))}`,\n );\n }\n\n if (state.objectType === 'shape') {\n constructed.shapes.push({\n attributes,\n frame: state.frame,\n group: 0,\n label_id: state.label.id,\n occluded: state.occluded || false,\n points: [...state.points],\n type: state.shapeType,\n z_order: 0,\n });\n } else if (state.objectType === 'track') {\n constructed.tracks.push({\n attributes: attributes\n .filter(attr => !labelAttributes[attr.spec_id].mutable),\n frame: state.frame,\n group: 0,\n label_id: state.label.id,\n shapes: [{\n attributes: attributes\n .filter(attr => labelAttributes[attr.spec_id].mutable),\n frame: state.frame,\n occluded: state.occluded || false,\n outside: false,\n points: [...state.points],\n type: state.shapeType,\n z_order: 0,\n }],\n });\n } else {\n throw new ArgumentError(\n 'Object type must be one of: '\n + `${JSON.stringify(Object.values(ObjectType))}`,\n );\n }\n }\n }\n\n // Add constructed objects to a collection\n this.import(constructed);\n }\n\n select(objectStates, x, y) {\n checkObjectType('shapes for select', objectStates, null, Array);\n checkObjectType('x coordinate', x, 'number', null);\n checkObjectType('y coordinate', y, 'number', null);\n\n let minimumDistance = null;\n let minimumState = null;\n for (const state of objectStates) {\n checkObjectType('object state', state, null, ObjectState);\n if (state.outside) continue;\n\n const object = this.objects[state.clientID];\n if (typeof (object) === 'undefined') {\n throw new ArgumentError(\n 'The object has not been saved yet. Call annotations.put([state]) before',\n );\n }\n\n const distance = object.constructor.distance(state.points, x, y);\n if (distance !== null && (minimumDistance === null || distance < minimumDistance)) {\n minimumDistance = distance;\n minimumState = state;\n }\n }\n\n return {\n state: minimumState,\n distance: minimumDistance,\n };\n }\n }\n\n module.exports = Collection;\n})();\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const ObjectState = require('./object-state');\n const { checkObjectType } = require('./common');\n const {\n ObjectShape,\n ObjectType,\n AttributeType,\n } = require('./enums');\n\n const {\n DataError,\n ArgumentError,\n ScriptingError,\n } = require('./exceptions');\n\n const { Label } = require('./labels');\n\n // Called with the Annotation context\n function objectStateFactory(frame, data) {\n const objectState = new ObjectState(data);\n\n objectState.hidden = {\n save: this.save.bind(this, frame, objectState),\n delete: this.delete.bind(this),\n up: this.up.bind(this, frame, objectState),\n down: this.down.bind(this, frame, objectState),\n };\n\n return objectState;\n }\n\n function checkNumberOfPoints(shapeType, points) {\n if (shapeType === ObjectShape.RECTANGLE) {\n if (points.length / 2 !== 2) {\n throw new DataError(\n `Rectangle must have 2 points, but got ${points.length / 2}`,\n );\n }\n } else if (shapeType === ObjectShape.POLYGON) {\n if (points.length / 2 < 3) {\n throw new DataError(\n `Polygon must have at least 3 points, but got ${points.length / 2}`,\n );\n }\n } else if (shapeType === ObjectShape.POLYLINE) {\n if (points.length / 2 < 2) {\n throw new DataError(\n `Polyline must have at least 2 points, but got ${points.length / 2}`,\n );\n }\n } else if (shapeType === ObjectShape.POINTS) {\n if (points.length / 2 < 1) {\n throw new DataError(\n `Points must have at least 1 points, but got ${points.length / 2}`,\n );\n }\n } else {\n throw new ArgumentError(\n `Unknown value of shapeType has been recieved ${shapeType}`,\n );\n }\n }\n\n function checkShapeArea(shapeType, points) {\n const MIN_SHAPE_LENGTH = 3;\n const MIN_SHAPE_AREA = 9;\n\n if (shapeType === ObjectShape.POINTS) {\n return true;\n }\n\n let xmin = Number.MAX_SAFE_INTEGER;\n let xmax = Number.MIN_SAFE_INTEGER;\n let ymin = Number.MAX_SAFE_INTEGER;\n let ymax = Number.MIN_SAFE_INTEGER;\n\n for (let i = 0; i < points.length - 1; i += 2) {\n xmin = Math.min(xmin, points[i]);\n xmax = Math.max(xmax, points[i]);\n ymin = Math.min(ymin, points[i + 1]);\n ymax = Math.max(ymax, points[i + 1]);\n }\n\n if (shapeType === ObjectShape.POLYLINE) {\n const length = Math.max(\n xmax - xmin,\n ymax - ymin,\n );\n\n return length >= MIN_SHAPE_LENGTH;\n }\n\n const area = (xmax - xmin) * (ymax - ymin);\n return area >= MIN_SHAPE_AREA;\n }\n\n function validateAttributeValue(value, attr) {\n const { values } = attr;\n const type = attr.inputType;\n\n if (typeof (value) !== 'string') {\n throw new ArgumentError(\n `Attribute value is expected to be string, but got ${typeof (value)}`,\n );\n }\n\n if (type === AttributeType.NUMBER) {\n return +value >= +values[0]\n && +value <= +values[1]\n && !((+value - +values[0]) % +values[2]);\n }\n\n if (type === AttributeType.CHECKBOX) {\n return ['true', 'false'].includes(value.toLowerCase());\n }\n\n return values.includes(value);\n }\n\n class Annotation {\n constructor(data, clientID, injection) {\n this.taskLabels = injection.labels;\n this.clientID = clientID;\n this.serverID = data.id;\n this.group = data.group;\n this.label = this.taskLabels[data.label_id];\n this.frame = data.frame;\n this.removed = false;\n this.lock = false;\n this.attributes = data.attributes.reduce((attributeAccumulator, attr) => {\n attributeAccumulator[attr.spec_id] = attr.value;\n return attributeAccumulator;\n }, {});\n this.appendDefaultAttributes(this.label);\n\n injection.groups.max = Math.max(injection.groups.max, this.group);\n }\n\n appendDefaultAttributes(label) {\n const labelAttributes = label.attributes;\n for (const attribute of labelAttributes) {\n if (!(attribute.id in this.attributes)) {\n this.attributes[attribute.id] = attribute.defaultValue;\n }\n }\n }\n\n delete(force) {\n if (!this.lock || force) {\n this.removed = true;\n }\n\n return true;\n }\n }\n\n class Drawn extends Annotation {\n constructor(data, clientID, color, injection) {\n super(data, clientID, injection);\n\n this.frameMeta = injection.frameMeta;\n this.collectionZ = injection.collectionZ;\n\n this.color = color;\n this.shapeType = null;\n }\n\n _getZ(frame) {\n this.collectionZ[frame] = this.collectionZ[frame] || {\n max: 0,\n min: 0,\n };\n\n return this.collectionZ[frame];\n }\n\n save() {\n throw new ScriptingError(\n 'Is not implemented',\n );\n }\n\n get() {\n throw new ScriptingError(\n 'Is not implemented',\n );\n }\n\n toJSON() {\n throw new ScriptingError(\n 'Is not implemented',\n );\n }\n\n // Increase ZOrder within frame\n up(frame, objectState) {\n const z = this._getZ(frame);\n z.max++;\n objectState.zOrder = z.max;\n }\n\n // Decrease ZOrder within frame\n down(frame, objectState) {\n const z = this._getZ(frame);\n z.min--;\n objectState.zOrder = z.min;\n }\n }\n\n class Shape extends Drawn {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.points = data.points;\n this.occluded = data.occluded;\n this.zOrder = data.z_order;\n\n const z = this._getZ(this.frame);\n z.max = Math.max(z.max, this.zOrder || 0);\n z.min = Math.min(z.min, this.zOrder || 0);\n }\n\n // Method is used to export data to the server\n toJSON() {\n return {\n type: this.shapeType,\n clientID: this.clientID,\n occluded: this.occluded,\n z_order: this.zOrder,\n points: [...this.points],\n attributes: Object.keys(this.attributes).reduce((attributeAccumulator, attrId) => {\n attributeAccumulator.push({\n spec_id: attrId,\n value: this.attributes[attrId],\n });\n\n return attributeAccumulator;\n }, []),\n id: this.serverID,\n frame: this.frame,\n label_id: this.label.id,\n group: this.group,\n };\n }\n\n // Method is used to construct ObjectState objects\n get(frame) {\n if (frame !== this.frame) {\n throw new ScriptingError(\n 'Got frame is not equal to the frame of the shape',\n );\n }\n\n return {\n objectType: ObjectType.SHAPE,\n shapeType: this.shapeType,\n clientID: this.clientID,\n serverID: this.serverID,\n occluded: this.occluded,\n lock: this.lock,\n zOrder: this.zOrder,\n points: [...this.points],\n attributes: Object.assign({}, this.attributes),\n label: this.label,\n group: this.group,\n color: this.color,\n };\n }\n\n save(frame, data) {\n if (frame !== this.frame) {\n throw new ScriptingError(\n 'Got frame is not equal to the frame of the shape',\n );\n }\n\n if (this.lock && data.lock) {\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n\n // All changes are done in this temporary object\n const copy = this.get(frame);\n const updated = data.updateFlags;\n\n if (updated.label) {\n checkObjectType('label', data.label, null, Label);\n copy.label = data.label;\n copy.attributes = {};\n this.appendDefaultAttributes.call(copy, copy.label);\n }\n\n if (updated.attributes) {\n const labelAttributes = copy.label.attributes\n .reduce((accumulator, value) => {\n accumulator[value.id] = value;\n return accumulator;\n }, {});\n\n for (const attrID of Object.keys(data.attributes)) {\n const value = data.attributes[attrID];\n if (attrID in labelAttributes\n && validateAttributeValue(value, labelAttributes[attrID])) {\n copy.attributes[attrID] = value;\n } else {\n throw new ArgumentError(\n `Trying to save unknown attribute with id ${attrID} and value ${value}`,\n );\n }\n }\n }\n\n if (updated.points) {\n checkObjectType('points', data.points, null, Array);\n checkNumberOfPoints(this.shapeType, data.points);\n\n // cut points\n const { width, height } = this.frameMeta[frame];\n const cutPoints = [];\n for (let i = 0; i < data.points.length - 1; i += 2) {\n const x = data.points[i];\n const y = data.points[i + 1];\n\n checkObjectType('coordinate', x, 'number', null);\n checkObjectType('coordinate', y, 'number', null);\n\n cutPoints.push(\n Math.clamp(x, 0, width),\n Math.clamp(y, 0, height),\n );\n }\n\n if (checkShapeArea(this.shapeType, cutPoints)) {\n copy.points = cutPoints;\n }\n }\n\n if (updated.occluded) {\n checkObjectType('occluded', data.occluded, 'boolean', null);\n copy.occluded = data.occluded;\n }\n\n if (updated.group) {\n checkObjectType('group', data.group, 'integer', null);\n copy.group = data.group;\n }\n\n if (updated.zOrder) {\n checkObjectType('zOrder', data.zOrder, 'integer', null);\n copy.zOrder = data.zOrder;\n }\n\n if (updated.lock) {\n checkObjectType('lock', data.lock, 'boolean', null);\n copy.lock = data.lock;\n }\n\n if (updated.color) {\n checkObjectType('color', data.color, 'string', null);\n if (/^#[0-9A-F]{6}$/i.test(data.color)) {\n throw new ArgumentError(\n `Got invalid color value: \"${data.color}\"`,\n );\n }\n\n copy.color = data.color;\n }\n\n // Reset flags and commit all changes\n updated.reset();\n for (const prop of Object.keys(copy)) {\n if (prop in this) {\n this[prop] = copy[prop];\n }\n }\n\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n }\n\n class Track extends Drawn {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapes = data.shapes.reduce((shapeAccumulator, value) => {\n shapeAccumulator[value.frame] = {\n serverID: value.id,\n occluded: value.occluded,\n zOrder: value.z_order,\n points: value.points,\n outside: value.outside,\n attributes: value.attributes.reduce((attributeAccumulator, attr) => {\n attributeAccumulator[attr.spec_id] = attr.value;\n return attributeAccumulator;\n }, {}),\n };\n\n const z = this._getZ(value.frame);\n z.max = Math.max(z.max, value.z_order);\n z.min = Math.min(z.min, value.z_order);\n\n return shapeAccumulator;\n }, {});\n\n this.cache = {};\n }\n\n // Method is used to export data to the server\n toJSON() {\n const labelAttributes = this.label.attributes.reduce((accumulator, attribute) => {\n accumulator[attribute.id] = attribute;\n return accumulator;\n }, {});\n\n return {\n clientID: this.clientID,\n id: this.serverID,\n frame: this.frame,\n label_id: this.label.id,\n group: this.group,\n attributes: Object.keys(this.attributes).reduce((attributeAccumulator, attrId) => {\n if (!labelAttributes[attrId].mutable) {\n attributeAccumulator.push({\n spec_id: attrId,\n value: this.attributes[attrId],\n });\n }\n\n return attributeAccumulator;\n }, []),\n shapes: Object.keys(this.shapes).reduce((shapesAccumulator, frame) => {\n shapesAccumulator.push({\n type: this.shapeType,\n occluded: this.shapes[frame].occluded,\n z_order: this.shapes[frame].zOrder,\n points: [...this.shapes[frame].points],\n outside: this.shapes[frame].outside,\n attributes: Object.keys(this.shapes[frame].attributes)\n .reduce((attributeAccumulator, attrId) => {\n if (labelAttributes[attrId].mutable) {\n attributeAccumulator.push({\n spec_id: attrId,\n value: this.shapes[frame].attributes[attrId],\n });\n }\n\n return attributeAccumulator;\n }, []),\n id: this.shapes[frame].serverID,\n frame: +frame,\n });\n\n return shapesAccumulator;\n }, []),\n };\n }\n\n // Method is used to construct ObjectState objects\n get(frame) {\n if (!(frame in this.cache)) {\n const interpolation = Object.assign(\n {}, this.getPosition(frame),\n {\n attributes: this.getAttributes(frame),\n group: this.group,\n objectType: ObjectType.TRACK,\n shapeType: this.shapeType,\n clientID: this.clientID,\n serverID: this.serverID,\n lock: this.lock,\n color: this.color,\n },\n );\n\n this.cache[frame] = interpolation;\n }\n\n const result = JSON.parse(JSON.stringify(this.cache[frame]));\n result.label = this.label;\n return result;\n }\n\n neighborsFrames(targetFrame) {\n const frames = Object.keys(this.shapes).map(frame => +frame);\n let lDiff = Number.MAX_SAFE_INTEGER;\n let rDiff = Number.MAX_SAFE_INTEGER;\n\n for (const frame of frames) {\n const diff = Math.abs(targetFrame - frame);\n if (frame <= targetFrame && diff < lDiff) {\n lDiff = diff;\n } else if (diff < rDiff) {\n rDiff = diff;\n }\n }\n\n const leftFrame = lDiff === Number.MAX_SAFE_INTEGER ? null : targetFrame - lDiff;\n const rightFrame = rDiff === Number.MAX_SAFE_INTEGER ? null : targetFrame + rDiff;\n\n return {\n leftFrame,\n rightFrame,\n };\n }\n\n getAttributes(targetFrame) {\n const result = {};\n\n // First of all copy all unmutable attributes\n for (const attrID in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attrID)) {\n result[attrID] = this.attributes[attrID];\n }\n }\n\n // Secondly get latest mutable attributes up to target frame\n const frames = Object.keys(this.shapes).sort((a, b) => +a - +b);\n for (const frame of frames) {\n if (frame <= targetFrame) {\n const { attributes } = this.shapes[frame];\n\n for (const attrID in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, attrID)) {\n result[attrID] = attributes[attrID];\n }\n }\n }\n }\n\n return result;\n }\n\n save(frame, data) {\n if (this.lock && data.lock) {\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n\n // All changes are done in this temporary object\n const copy = Object.assign(this.get(frame));\n copy.attributes = Object.assign(copy.attributes);\n copy.points = [...copy.points];\n\n const updated = data.updateFlags;\n let positionUpdated = false;\n\n if (updated.label) {\n checkObjectType('label', data.label, null, Label);\n copy.label = data.label;\n copy.attributes = {};\n\n // Shape attributes will be removed later after all checks\n this.appendDefaultAttributes.call(copy, copy.label);\n }\n\n const labelAttributes = copy.label.attributes\n .reduce((accumulator, value) => {\n accumulator[value.id] = value;\n return accumulator;\n }, {});\n\n if (updated.attributes) {\n for (const attrID of Object.keys(data.attributes)) {\n const value = data.attributes[attrID];\n if (attrID in labelAttributes\n && validateAttributeValue(value, labelAttributes[attrID])) {\n copy.attributes[attrID] = value;\n } else {\n throw new ArgumentError(\n `Trying to save unknown attribute with id ${attrID} and value ${value}`,\n );\n }\n }\n }\n\n if (updated.points) {\n checkObjectType('points', data.points, null, Array);\n checkNumberOfPoints(this.shapeType, data.points);\n\n // cut points\n const { width, height } = this.frameMeta[frame];\n const cutPoints = [];\n for (let i = 0; i < data.points.length - 1; i += 2) {\n const x = data.points[i];\n const y = data.points[i + 1];\n\n checkObjectType('coordinate', x, 'number', null);\n checkObjectType('coordinate', y, 'number', null);\n\n cutPoints.push(\n Math.clamp(x, 0, width),\n Math.clamp(y, 0, height),\n );\n }\n\n if (checkShapeArea(this.shapeType, cutPoints)) {\n copy.points = cutPoints;\n positionUpdated = true;\n }\n }\n\n if (updated.occluded) {\n checkObjectType('occluded', data.occluded, 'boolean', null);\n copy.occluded = data.occluded;\n positionUpdated = true;\n }\n\n if (updated.outside) {\n checkObjectType('outside', data.outside, 'boolean', null);\n copy.outside = data.outside;\n positionUpdated = true;\n }\n\n if (updated.group) {\n checkObjectType('group', data.group, 'integer', null);\n copy.group = data.group;\n }\n\n if (updated.zOrder) {\n checkObjectType('zOrder', data.zOrder, 'integer', null);\n copy.zOrder = data.zOrder;\n positionUpdated = true;\n }\n\n if (updated.lock) {\n checkObjectType('lock', data.lock, 'boolean', null);\n copy.lock = data.lock;\n }\n\n if (updated.color) {\n checkObjectType('color', data.color, 'string', null);\n if (/^#[0-9A-F]{6}$/i.test(data.color)) {\n throw new ArgumentError(\n `Got invalid color value: \"${data.color}\"`,\n );\n }\n\n copy.color = data.color;\n }\n\n if (updated.keyframe) {\n // Just check here\n checkObjectType('keyframe', data.keyframe, 'boolean', null);\n }\n\n // Commit all changes\n for (const prop of Object.keys(copy)) {\n if (prop in this) {\n this[prop] = copy[prop];\n }\n\n this.cache[frame][prop] = copy[prop];\n }\n\n if (updated.attributes) {\n // Mutable attributes will be updated below\n for (const attrID of Object.keys(copy.attributes)) {\n if (!labelAttributes[attrID].mutable) {\n this.shapes[frame].attributes[attrID] = data.attributes[attrID];\n this.shapes[frame].attributes[attrID] = data.attributes[attrID];\n }\n }\n }\n\n if (updated.label) {\n for (const shape of Object.values(this.shapes)) {\n shape.attributes = {};\n }\n }\n\n // Remove keyframe\n if (updated.keyframe && !data.keyframe) {\n // Remove all cache after this keyframe because it have just become outdated\n for (const cacheFrame in this.cache) {\n if (+cacheFrame > frame) {\n delete this.cache[cacheFrame];\n }\n }\n\n this.cache[frame].keyframe = false;\n delete this.shapes[frame];\n updated.reset();\n\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n\n // Add/update keyframe\n if (positionUpdated || (updated.keyframe && data.keyframe)) {\n // Remove all cache after this keyframe because it have just become outdated\n for (const cacheFrame in this.cache) {\n if (+cacheFrame > frame) {\n delete this.cache[cacheFrame];\n }\n }\n\n this.cache[frame].keyframe = true;\n data.keyframe = true;\n\n this.shapes[frame] = {\n frame,\n zOrder: copy.zOrder,\n points: copy.points,\n outside: copy.outside,\n occluded: copy.occluded,\n attributes: {},\n };\n\n if (updated.attributes) {\n // Unmutable attributes were updated above\n for (const attrID of Object.keys(copy.attributes)) {\n if (labelAttributes[attrID].mutable) {\n this.shapes[frame].attributes[attrID] = data.attributes[attrID];\n this.shapes[frame].attributes[attrID] = data.attributes[attrID];\n }\n }\n }\n }\n\n updated.reset();\n\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n\n getPosition(targetFrame) {\n const {\n leftFrame,\n rightFrame,\n } = this.neighborsFrames(targetFrame);\n\n const rightPosition = Number.isInteger(rightFrame) ? this.shapes[rightFrame] : null;\n const leftPosition = Number.isInteger(leftFrame) ? this.shapes[leftFrame] : null;\n\n if (leftPosition && leftFrame === targetFrame) {\n return {\n points: [...leftPosition.points],\n occluded: leftPosition.occluded,\n outside: leftPosition.outside,\n zOrder: leftPosition.zOrder,\n keyframe: true,\n };\n }\n\n if (rightPosition && leftPosition) {\n return Object.assign({}, this.interpolatePosition(\n leftPosition,\n rightPosition,\n (targetFrame - leftFrame) / (rightFrame - leftFrame),\n ), {\n keyframe: false,\n });\n }\n\n if (rightPosition) {\n return {\n points: [...rightPosition.points],\n occluded: rightPosition.occluded,\n outside: true,\n zOrder: 0,\n keyframe: false,\n };\n }\n\n if (leftPosition) {\n return {\n points: [...leftPosition.points],\n occluded: leftPosition.occluded,\n outside: leftPosition.outside,\n zOrder: 0,\n keyframe: false,\n };\n }\n\n throw new ScriptingError(\n `No one neightbour frame found for the track with client ID: \"${this.id}\"`,\n );\n }\n\n delete(force) {\n if (!this.lock || force) {\n this.removed = true;\n this.resetCache();\n }\n\n return true;\n }\n\n resetCache() {\n this.cache = {};\n }\n }\n\n class Tag extends Annotation {\n constructor(data, clientID, injection) {\n super(data, clientID, injection);\n }\n\n // Method is used to export data to the server\n toJSON() {\n return {\n clientID: this.clientID,\n id: this.serverID,\n frame: this.frame,\n label_id: this.label.id,\n group: this.group,\n attributes: Object.keys(this.attributes).reduce((attributeAccumulator, attrId) => {\n attributeAccumulator.push({\n spec_id: attrId,\n value: this.attributes[attrId],\n });\n\n return attributeAccumulator;\n }, []),\n };\n }\n\n // Method is used to construct ObjectState objects\n get(frame) {\n if (frame !== this.frame) {\n throw new ScriptingError(\n 'Got frame is not equal to the frame of the shape',\n );\n }\n\n return {\n objectType: ObjectType.TAG,\n clientID: this.clientID,\n serverID: this.serverID,\n lock: this.lock,\n attributes: Object.assign({}, this.attributes),\n label: this.label,\n group: this.group,\n };\n }\n\n save(frame, data) {\n if (frame !== this.frame) {\n throw new ScriptingError(\n 'Got frame is not equal to the frame of the shape',\n );\n }\n\n if (this.lock && data.lock) {\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n\n // All changes are done in this temporary object\n const copy = this.get(frame);\n const updated = data.updateFlags;\n\n if (updated.label) {\n checkObjectType('label', data.label, null, Label);\n copy.label = data.label;\n copy.attributes = {};\n this.appendDefaultAttributes.call(copy, copy.label);\n }\n\n if (updated.attributes) {\n const labelAttributes = copy.label\n .attributes.map(attr => `${attr.id}`);\n\n for (const attrID of Object.keys(data.attributes)) {\n if (labelAttributes.includes(attrID)) {\n copy.attributes[attrID] = data.attributes[attrID];\n }\n }\n }\n\n if (updated.group) {\n checkObjectType('group', data.group, 'integer', null);\n copy.group = data.group;\n }\n\n if (updated.lock) {\n checkObjectType('lock', data.lock, 'boolean', null);\n copy.lock = data.lock;\n }\n\n // Reset flags and commit all changes\n updated.reset();\n for (const prop of Object.keys(copy)) {\n if (prop in this) {\n this[prop] = copy[prop];\n }\n }\n\n return objectStateFactory.call(this, frame, this.get(frame));\n }\n }\n\n class RectangleShape extends Shape {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.RECTANGLE;\n checkNumberOfPoints(this.shapeType, this.points);\n }\n\n static distance(points, x, y) {\n const [xtl, ytl, xbr, ybr] = points;\n\n if (!(x >= xtl && x <= xbr && y >= ytl && y <= ybr)) {\n // Cursor is outside of a box\n return null;\n }\n\n // The shortest distance from point to an edge\n return Math.min.apply(null, [x - xtl, y - ytl, xbr - x, ybr - y]);\n }\n }\n\n class PolyShape extends Shape {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n }\n }\n\n class PolygonShape extends PolyShape {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POLYGON;\n checkNumberOfPoints(this.shapeType, this.points);\n }\n\n static distance(points, x, y) {\n function position(x1, y1, x2, y2) {\n return ((x2 - x1) * (y - y1) - (x - x1) * (y2 - y1));\n }\n\n let wn = 0;\n const distances = [];\n\n for (let i = 0, j = points.length - 2; i < points.length - 1; j = i, i += 2) {\n // Current point\n const x1 = points[j];\n const y1 = points[j + 1];\n\n // Next point\n const x2 = points[i];\n const y2 = points[i + 1];\n\n // Check if a point is inside a polygon\n // with a winding numbers algorithm\n // https://en.wikipedia.org/wiki/Point_in_polygon#Winding_number_algorithm\n if (y1 <= y) {\n if (y2 > y) {\n if (position(x1, y1, x2, y2) > 0) {\n wn++;\n }\n }\n } else if (y2 <= y) {\n if (position(x1, y1, x2, y2) < 0) {\n wn--;\n }\n }\n\n // Find the shortest distance from point to an edge\n // Get an equation of a line in general\n const aCoef = (y1 - y2);\n const bCoef = (x2 - x1);\n\n // Vector (aCoef, bCoef) is a perpendicular to line\n // Now find the point where two lines\n // (edge and its perpendicular through the point (x,y)) are cross\n const xCross = x - aCoef;\n const yCross = y - bCoef;\n\n if (((xCross - x1) * (x2 - xCross)) >= 0\n && ((yCross - y1) * (y2 - yCross)) >= 0) {\n // Cross point is on segment between p1(x1,y1) and p2(x2,y2)\n distances.push(Math.sqrt(\n Math.pow(x - xCross, 2)\n + Math.pow(y - yCross, 2),\n ));\n } else {\n distances.push(\n Math.min(\n Math.sqrt(Math.pow(x1 - x, 2) + Math.pow(y1 - y, 2)),\n Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)),\n ),\n );\n }\n }\n\n if (wn !== 0) {\n return Math.min.apply(null, distances);\n }\n\n return null;\n }\n }\n\n class PolylineShape extends PolyShape {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POLYLINE;\n checkNumberOfPoints(this.shapeType, this.points);\n }\n\n static distance(points, x, y) {\n const distances = [];\n for (let i = 0; i < points.length - 2; i += 2) {\n // Current point\n const x1 = points[i];\n const y1 = points[i + 1];\n\n // Next point\n const x2 = points[i + 2];\n const y2 = points[i + 3];\n\n // Find the shortest distance from point to an edge\n if (((x - x1) * (x2 - x)) >= 0 && ((y - y1) * (y2 - y)) >= 0) {\n // Find the length of a perpendicular\n // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\n distances.push(\n Math.abs((y2 - y1) * x - (x2 - x1) * y + x2 * y1 - y2 * x1) / Math\n .sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2)),\n );\n } else {\n // The link below works for lines (which have infinit length)\n // There is a case when perpendicular doesn't cross the edge\n // In this case we don't use the computed distance\n // Instead we use just distance to the nearest point\n distances.push(\n Math.min(\n Math.sqrt(Math.pow(x1 - x, 2) + Math.pow(y1 - y, 2)),\n Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2)),\n ),\n );\n }\n }\n\n return Math.min.apply(null, distances);\n }\n }\n\n class PointsShape extends PolyShape {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POINTS;\n checkNumberOfPoints(this.shapeType, this.points);\n }\n\n static distance(points, x, y) {\n const distances = [];\n for (let i = 0; i < points.length; i += 2) {\n const x1 = points[i];\n const y1 = points[i + 1];\n\n distances.push(\n Math.sqrt(Math.pow(x1 - x, 2) + Math.pow(y1 - y, 2)),\n );\n }\n\n return Math.min.apply(null, distances);\n }\n }\n\n class RectangleTrack extends Track {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.RECTANGLE;\n for (const shape of Object.values(this.shapes)) {\n checkNumberOfPoints(this.shapeType, shape.points);\n }\n }\n\n interpolatePosition(leftPosition, rightPosition, offset) {\n const positionOffset = [\n rightPosition.points[0] - leftPosition.points[0],\n rightPosition.points[1] - leftPosition.points[1],\n rightPosition.points[2] - leftPosition.points[2],\n rightPosition.points[3] - leftPosition.points[3],\n ];\n\n return { // xtl, ytl, xbr, ybr\n points: [\n leftPosition.points[0] + positionOffset[0] * offset,\n leftPosition.points[1] + positionOffset[1] * offset,\n leftPosition.points[2] + positionOffset[2] * offset,\n leftPosition.points[3] + positionOffset[3] * offset,\n ],\n occluded: leftPosition.occluded,\n outside: leftPosition.outside,\n zOrder: leftPosition.zOrder,\n };\n }\n }\n\n class PolyTrack extends Track {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n }\n\n interpolatePosition(leftPosition, rightPosition, offset) {\n function findBox(points) {\n let xmin = Number.MAX_SAFE_INTEGER;\n let ymin = Number.MAX_SAFE_INTEGER;\n let xmax = Number.MIN_SAFE_INTEGER;\n let ymax = Number.MIN_SAFE_INTEGER;\n\n for (let i = 0; i < points.length; i += 2) {\n if (points[i] < xmin) xmin = points[i];\n if (points[i + 1] < ymin) ymin = points[i + 1];\n if (points[i] > xmax) xmax = points[i];\n if (points[i + 1] > ymax) ymax = points[i + 1];\n }\n\n return {\n xmin,\n ymin,\n xmax,\n ymax,\n };\n }\n\n function normalize(points, box) {\n const normalized = [];\n const width = box.xmax - box.xmin;\n const height = box.ymax - box.ymin;\n\n for (let i = 0; i < points.length; i += 2) {\n normalized.push(\n (points[i] - box.xmin) / width,\n (points[i + 1] - box.ymin) / height,\n );\n }\n\n return normalized;\n }\n\n function denormalize(points, box) {\n const denormalized = [];\n const width = box.xmax - box.xmin;\n const height = box.ymax - box.ymin;\n\n for (let i = 0; i < points.length; i += 2) {\n denormalized.push(\n points[i] * width + box.xmin,\n points[i + 1] * height + box.ymin,\n );\n }\n\n return denormalized;\n }\n\n function toPoints(array) {\n const points = [];\n for (let i = 0; i < array.length; i += 2) {\n points.push({\n x: array[i],\n y: array[i + 1],\n });\n }\n\n return points;\n }\n\n function toArray(points) {\n const array = [];\n for (const point of points) {\n array.push(point.x, point.y);\n }\n\n return array;\n }\n\n function computeDistances(source, target) {\n const distances = {};\n for (let i = 0; i < source.length; i++) {\n distances[i] = distances[i] || {};\n for (let j = 0; j < target.length; j++) {\n const dx = source[i].x - target[j].x;\n const dy = source[i].y - target[j].y;\n\n distances[i][j] = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n }\n }\n\n return distances;\n }\n\n function truncateByThreshold(mapping, threshold) {\n for (const key of Object.keys(mapping)) {\n if (mapping[key].distance > threshold) {\n delete mapping[key];\n }\n }\n }\n\n // https://en.wikipedia.org/wiki/Stable_marriage_problem\n // TODO: One of important part of the algorithm is to correctly match\n // \"corner\" points. Thus it is possible for each of such point calculate\n // a descriptor (d) and use (x, y, d) to calculate the distance. One more\n // idea is to be sure that order or matched points is preserved. For example,\n // if p1 matches q1 and p2 matches q2 and between p1 and p2 we don't have any\n // points thus we should not have points between q1 and q2 as well.\n function stableMarriageProblem(men, women, distances) {\n const menPreferences = {};\n for (const man of men) {\n menPreferences[man] = women.concat()\n .sort((w1, w2) => distances[man][w1] - distances[man][w2]);\n }\n\n // Start alghoritm with max N^2 complexity\n const womenMaybe = {}; // id woman:id man,distance\n const menBusy = {}; // id man:boolean\n let prefIndex = 0;\n\n // While there is at least one free man\n while (Object.values(menBusy).length !== men.length) {\n // Every man makes offer to the best woman\n for (const man of men) {\n // The man have already found a woman\n if (menBusy[man]) {\n continue;\n }\n\n const woman = menPreferences[man][prefIndex];\n const distance = distances[man][woman];\n\n // A women chooses the best offer and says \"maybe\"\n if (woman in womenMaybe && womenMaybe[woman].distance > distance) {\n // A woman got better offer\n const prevChoice = womenMaybe[woman].value;\n delete womenMaybe[woman];\n delete menBusy[prevChoice];\n }\n\n if (!(woman in womenMaybe)) {\n womenMaybe[woman] = {\n value: man,\n distance,\n };\n\n menBusy[man] = true;\n }\n }\n\n prefIndex++;\n }\n\n const result = {};\n for (const woman of Object.keys(womenMaybe)) {\n result[womenMaybe[woman].value] = {\n value: woman,\n distance: womenMaybe[woman].distance,\n };\n }\n\n return result;\n }\n\n function getMapping(source, target) {\n function sumEdges(points) {\n let result = 0;\n for (let i = 1; i < points.length; i += 2) {\n const distance = Math.sqrt(Math.pow(points[i].x - points[i - 1].x, 2)\n + Math.pow(points[i].y - points[i - 1].y, 2));\n result += distance;\n }\n\n // Corner case when work with one point\n // Mapping in this case can't be wrong\n if (!result) {\n return Number.MAX_SAFE_INTEGER;\n }\n\n return result;\n }\n\n function computeDeviation(points, average) {\n let result = 0;\n for (let i = 1; i < points.length; i += 2) {\n const distance = Math.sqrt(Math.pow(points[i].x - points[i - 1].x, 2)\n + Math.pow(points[i].y - points[i - 1].y, 2));\n result += Math.pow(distance - average, 2);\n }\n\n return result;\n }\n\n const processedSource = [];\n const processedTarget = [];\n\n const distances = computeDistances(source, target);\n const mapping = stableMarriageProblem(Array.from(source.keys()),\n Array.from(target.keys()), distances);\n\n const average = (sumEdges(target)\n + sumEdges(source)) / (target.length + source.length);\n const meanSquareDeviation = Math.sqrt((computeDeviation(source, average)\n + computeDeviation(target, average)) / (source.length + target.length));\n const threshold = average + 3 * meanSquareDeviation; // 3 sigma rule\n truncateByThreshold(mapping, threshold);\n for (const key of Object.keys(mapping)) {\n mapping[key] = mapping[key].value;\n }\n\n // const receivingOrder = Object.keys(mapping).map(x => +x).sort((a,b) => a - b);\n const receivingOrder = this.appendMapping(mapping, source, target);\n\n for (const pointIdx of receivingOrder) {\n processedSource.push(source[pointIdx]);\n processedTarget.push(target[mapping[pointIdx]]);\n }\n\n return [processedSource, processedTarget];\n }\n\n let leftBox = findBox(leftPosition.points);\n let rightBox = findBox(rightPosition.points);\n\n // Sometimes (if shape has one point or shape is line),\n // We can get box with zero area\n // Next computation will be with NaN in this case\n // We have to prevent it\n const delta = 1;\n if (leftBox.xmax - leftBox.xmin < delta || rightBox.ymax - rightBox.ymin < delta) {\n leftBox = {\n xmin: 0,\n xmax: 1024, // TODO: Get actual image size\n ymin: 0,\n ymax: 768,\n };\n\n rightBox = leftBox;\n }\n\n const leftPoints = toPoints(normalize(leftPosition.points, leftBox));\n const rightPoints = toPoints(normalize(rightPosition.points, rightBox));\n\n let newLeftPoints = [];\n let newRightPoints = [];\n if (leftPoints.length > rightPoints.length) {\n const [\n processedRight,\n processedLeft,\n ] = getMapping.call(this, rightPoints, leftPoints);\n newLeftPoints = processedLeft;\n newRightPoints = processedRight;\n } else {\n const [\n processedLeft,\n processedRight,\n ] = getMapping.call(this, leftPoints, rightPoints);\n newLeftPoints = processedLeft;\n newRightPoints = processedRight;\n }\n\n const absoluteLeftPoints = denormalize(toArray(newLeftPoints), leftBox);\n const absoluteRightPoints = denormalize(toArray(newRightPoints), rightBox);\n\n const interpolation = [];\n for (let i = 0; i < absoluteLeftPoints.length; i++) {\n interpolation.push(absoluteLeftPoints[i] + (\n absoluteRightPoints[i] - absoluteLeftPoints[i]) * offset);\n }\n\n return {\n points: interpolation,\n occluded: leftPosition.occluded,\n outside: leftPosition.outside,\n zOrder: leftPosition.zOrder,\n };\n }\n\n // mapping is predicted order of points sourse_idx:target_idx\n // some points from source and target can absent in mapping\n // source, target - arrays of points. Target array size >= sourse array size\n appendMapping(mapping, source, target) {\n const targetMatched = Object.values(mapping).map(x => +x);\n const sourceMatched = Object.keys(mapping).map(x => +x);\n const orderForReceive = [];\n\n function findNeighbors(point) {\n let prev = point;\n let next = point;\n\n if (!targetMatched.length) {\n // Prevent infinity loop\n throw new ScriptingError('Interpolation mapping is empty');\n }\n\n while (!targetMatched.includes(prev)) {\n prev--;\n if (prev < 0) {\n prev = target.length - 1;\n }\n }\n\n while (!targetMatched.includes(next)) {\n next++;\n if (next >= target.length) {\n next = 0;\n }\n }\n\n return [prev, next];\n }\n\n function computeOffset(point, prev, next) {\n const pathPoints = [];\n\n while (prev !== next) {\n pathPoints.push(target[prev]);\n prev++;\n if (prev >= target.length) {\n prev = 0;\n }\n }\n pathPoints.push(target[next]);\n\n let curveLength = 0;\n let offset = 0;\n let iCrossed = false;\n for (let k = 1; k < pathPoints.length; k++) {\n const p1 = pathPoints[k];\n const p2 = pathPoints[k - 1];\n const distance = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\n if (!iCrossed) {\n offset += distance;\n }\n curveLength += distance;\n if (target[point] === pathPoints[k]) {\n iCrossed = true;\n }\n }\n\n if (!curveLength) {\n return 0;\n }\n\n return offset / curveLength;\n }\n\n for (let i = 0; i < target.length; i++) {\n const index = targetMatched.indexOf(i);\n if (index === -1) {\n // We have to find a neighbours which have been mapped\n const [prev, next] = findNeighbors(i);\n\n // Now compute edge offset\n const offset = computeOffset(i, prev, next);\n\n // Get point between two neighbors points\n const prevPoint = target[prev];\n const nextPoint = target[next];\n const autoPoint = {\n x: prevPoint.x + (nextPoint.x - prevPoint.x) * offset,\n y: prevPoint.y + (nextPoint.y - prevPoint.y) * offset,\n };\n\n // Put it into matched\n source.push(autoPoint);\n mapping[source.length - 1] = i;\n orderForReceive.push(source.length - 1);\n } else {\n orderForReceive.push(sourceMatched[index]);\n }\n }\n\n return orderForReceive;\n }\n }\n\n class PolygonTrack extends PolyTrack {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POLYGON;\n for (const shape of Object.values(this.shapes)) {\n checkNumberOfPoints(this.shapeType, shape.points);\n }\n }\n }\n\n class PolylineTrack extends PolyTrack {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POLYLINE;\n for (const shape of Object.values(this.shapes)) {\n checkNumberOfPoints(this.shapeType, shape.points);\n }\n }\n }\n\n class PointsTrack extends PolyTrack {\n constructor(data, clientID, color, injection) {\n super(data, clientID, color, injection);\n this.shapeType = ObjectShape.POINTS;\n for (const shape of Object.values(this.shapes)) {\n checkNumberOfPoints(this.shapeType, shape.points);\n }\n }\n }\n\n RectangleTrack.distance = RectangleShape.distance;\n PolygonTrack.distance = PolygonShape.distance;\n PolylineTrack.distance = PolylineShape.distance;\n PointsTrack.distance = PointsShape.distance;\n\n module.exports = {\n RectangleShape,\n PolygonShape,\n PolylineShape,\n PointsShape,\n RectangleTrack,\n PolygonTrack,\n PolylineTrack,\n PointsTrack,\n Track,\n Shape,\n Tag,\n objectStateFactory,\n };\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* global\n require:false\n*/\n\n(() => {\n const serverProxy = require('./server-proxy');\n const { Task } = require('./session');\n const { ScriptingError } = ('./exceptions');\n\n class AnnotationsSaver {\n constructor(version, collection, session) {\n this.sessionType = session instanceof Task ? 'task' : 'job';\n this.id = session.id;\n this.version = version;\n this.collection = collection;\n this.initialObjects = [];\n this.hash = this._getHash();\n\n // We need use data from export instead of initialData\n // Otherwise we have differ keys order and JSON comparison code incorrect\n const exported = this.collection.export();\n for (const shape of exported.shapes) {\n this.initialObjects[shape.id] = shape;\n }\n\n for (const track of exported.tracks) {\n this.initialObjects[track.id] = track;\n }\n\n for (const tag of exported.tags) {\n this.initialObjects[tag.id] = tag;\n }\n }\n\n _getHash() {\n const exported = this.collection.export();\n return JSON.stringify(exported);\n }\n\n async _request(data, action) {\n const result = await serverProxy.annotations.updateAnnotations(\n this.sessionType,\n this.id,\n data,\n action,\n );\n\n return result;\n }\n\n async _put(data) {\n const result = await this._request(data, 'put');\n return result;\n }\n\n async _create(created) {\n const result = await this._request(created, 'create');\n return result;\n }\n\n async _update(updated) {\n const result = await this._request(updated, 'update');\n return result;\n }\n\n async _delete(deleted) {\n const result = await this._request(deleted, 'delete');\n return result;\n }\n\n _split(exported) {\n const splitted = {\n created: {\n shapes: [],\n tracks: [],\n tags: [],\n },\n updated: {\n shapes: [],\n tracks: [],\n tags: [],\n },\n deleted: {\n shapes: [],\n tracks: [],\n tags: [],\n },\n };\n\n // Find created and updated objects\n for (const type of Object.keys(exported)) {\n for (const object of exported[type]) {\n if (object.id in this.initialObjects) {\n const exportedHash = JSON.stringify(object);\n const initialHash = JSON.stringify(this.initialObjects[object.id]);\n if (exportedHash !== initialHash) {\n splitted.updated[type].push(object);\n }\n } else if (typeof (object.id) === 'undefined') {\n splitted.created[type].push(object);\n } else {\n throw new ScriptingError(\n `Id of object is defined \"${object.id}\"`\n + 'but it absents in initial state',\n );\n }\n }\n }\n\n // Now find deleted objects\n const indexes = exported.tracks.concat(exported.shapes)\n .concat(exported.tags).map(object => object.id);\n\n for (const id of Object.keys(this.initialObjects)) {\n if (!indexes.includes(+id)) {\n const object = this.initialObjects[id];\n let type = null;\n if ('shapes' in object) {\n type = 'tracks';\n } else if ('points' in object) {\n type = 'shapes';\n } else {\n type = 'tags';\n }\n splitted.deleted[type].push(object);\n }\n }\n\n return splitted;\n }\n\n _updateCreatedObjects(saved, indexes) {\n const savedLength = saved.tracks.length\n + saved.shapes.length + saved.tags.length;\n\n const indexesLength = indexes.tracks.length\n + indexes.shapes.length + indexes.tags.length;\n\n if (indexesLength !== savedLength) {\n throw new ScriptingError(\n 'Number of indexes is differed by number of saved objects'\n + `${indexesLength} vs ${savedLength}`,\n );\n }\n\n // Updated IDs of created objects\n for (const type of Object.keys(indexes)) {\n for (let i = 0; i < indexes[type].length; i++) {\n const clientID = indexes[type][i];\n this.collection.objects[clientID].serverID = saved[type][i].id;\n if (type === 'tracks') {\n // We have to reset cache because of old value of serverID was saved there\n this.collection.objects[clientID].resetCache();\n }\n }\n }\n }\n\n _receiveIndexes(exported) {\n // Receive client indexes before saving\n const indexes = {\n tracks: exported.tracks.map(track => track.clientID),\n shapes: exported.shapes.map(shape => shape.clientID),\n tags: exported.tags.map(tag => tag.clientID),\n };\n\n // Remove them from the request body\n exported.tracks.concat(exported.shapes).concat(exported.tags)\n .map((value) => {\n delete value.clientID;\n return value;\n });\n\n return indexes;\n }\n\n async save(onUpdate) {\n if (typeof onUpdate !== 'function') {\n onUpdate = (message) => {\n console.log(message);\n };\n }\n\n try {\n const exported = this.collection.export();\n const { flush } = this.collection;\n if (flush) {\n onUpdate('New objects are being saved..');\n const indexes = this._receiveIndexes(exported);\n const savedData = await this._put(Object.assign({}, exported, {\n version: this.version,\n }));\n this.version = savedData.version;\n this.collection.flush = false;\n\n onUpdate('Saved objects are being updated in the client');\n this._updateCreatedObjects(savedData, indexes);\n\n onUpdate('Initial state is being updated');\n for (const object of savedData.shapes\n .concat(savedData.tracks).concat(savedData.tags)) {\n this.initialObjects[object.id] = object;\n }\n } else {\n const {\n created,\n updated,\n deleted,\n } = this._split(exported);\n\n onUpdate('New objects are being saved..');\n const indexes = this._receiveIndexes(created);\n const createdData = await this._create(Object.assign({}, created, {\n version: this.version,\n }));\n this.version = createdData.version;\n\n onUpdate('Saved objects are being updated in the client');\n this._updateCreatedObjects(createdData, indexes);\n\n onUpdate('Initial state is being updated');\n for (const object of createdData.shapes\n .concat(createdData.tracks).concat(createdData.tags)) {\n this.initialObjects[object.id] = object;\n }\n\n onUpdate('Changed objects are being saved..');\n this._receiveIndexes(updated);\n const updatedData = await this._update(Object.assign({}, updated, {\n version: this.version,\n }));\n this.version = createdData.version;\n\n onUpdate('Initial state is being updated');\n for (const object of updatedData.shapes\n .concat(updatedData.tracks).concat(updatedData.tags)) {\n this.initialObjects[object.id] = object;\n }\n\n onUpdate('Changed objects are being saved..');\n this._receiveIndexes(deleted);\n const deletedData = await this._delete(Object.assign({}, deleted, {\n version: this.version,\n }));\n this._version = deletedData.version;\n\n onUpdate('Initial state is being updated');\n for (const object of deletedData.shapes\n .concat(deletedData.tracks).concat(deletedData.tags)) {\n delete this.initialObjects[object.id];\n }\n }\n\n this.hash = this._getHash();\n onUpdate('Saving is done');\n } catch (error) {\n onUpdate(`Can not save annotations: ${error.message}`);\n throw error;\n }\n }\n\n hasUnsavedChanges() {\n return this._getHash() !== this.hash;\n }\n }\n\n module.exports = AnnotationsSaver;\n})();\n","/*\n* Copyright (C) 2019 Intel Corporation\n* SPDX-License-Identifier: MIT\n*/\n\n/* eslint prefer-arrow-callback: [ \"error\", { \"allowNamedFunctions\": true } ] */\n\n/* global\n require:false\n*/\n\n\n(() => {\n const PluginRegistry = require('./plugins');\n const serverProxy = require('./server-proxy');\n const {\n isBoolean,\n isInteger,\n isEnum,\n isString,\n checkFilter,\n } = require('./common');\n\n const {\n TaskStatus,\n TaskMode,\n } = require('./enums');\n\n const User = require('./user');\n const { AnnotationFormat } = require('./annotation-format.js');\n const { ArgumentError } = require('./exceptions');\n const { Task } = require('./session');\n\n function implementAPI(cvat) {\n cvat.plugins.list.implementation = PluginRegistry.list;\n cvat.plugins.register.implementation = PluginRegistry.register.bind(cvat);\n\n cvat.server.about.implementation = async () => {\n const result = await serverProxy.server.about();\n return result;\n };\n\n cvat.server.share.implementation = async (directory) => {\n const result = await serverProxy.server.share(directory);\n return result;\n };\n\n cvat.server.formats.implementation = async () => {\n const result = await serverProxy.server.formats();\n return result.map(el => new AnnotationFormat(el));\n };\n\n cvat.server.register.implementation = async (username, firstName, lastName,\n email, password1, password2) => {\n await serverProxy.server.register(username, firstName, lastName, email,\n password1, password2);\n };\n\n cvat.server.login.implementation = async (username, password) => {\n await serverProxy.server.login(username, password);\n };\n\n cvat.server.logout.implementation = async () => {\n await serverProxy.server.logout();\n };\n\n cvat.server.authorized.implementation = async () => {\n const result = await serverProxy.server.authorized();\n return result;\n };\n\n cvat.users.get.implementation = async (filter) => {\n checkFilter(filter, {\n self: isBoolean,\n });\n\n let users = null;\n if ('self' in filter && filter.self) {\n users = await serverProxy.users.getSelf();\n users = [users];\n } else {\n users = await serverProxy.users.getUsers();\n }\n\n users = users.map(user => new User(user));\n return users;\n };\n\n cvat.jobs.get.implementation = async (filter) => {\n checkFilter(filter, {\n taskID: isInteger,\n jobID: isInteger,\n });\n\n if (('taskID' in filter) && ('jobID' in filter)) {\n throw new ArgumentError(\n 'Only one of fields \"taskID\" and \"jobID\" allowed simultaneously',\n );\n }\n\n if (!Object.keys(filter).length) {\n throw new ArgumentError(\n 'Job filter must not be empty',\n );\n }\n\n let tasks = null;\n if ('taskID' in filter) {\n tasks = await serverProxy.tasks.getTasks(`id=${filter.taskID}`);\n } else {\n const job = await serverProxy.jobs.getJob(filter.jobID);\n if (typeof (job.task_id) !== 'undefined') {\n tasks = await serverProxy.tasks.getTasks(`id=${job.task_id}`);\n }\n }\n\n // If task was found by its id, then create task instance and get Job instance from it\n if (tasks !== null && tasks.length) {\n const task = new Task(tasks[0]);\n return filter.jobID ? task.jobs.filter(job => job.id === filter.jobID) : task.jobs;\n }\n\n return [];\n };\n\n cvat.tasks.get.implementation = async (filter) => {\n checkFilter(filter, {\n page: isInteger,\n name: isString,\n id: isInteger,\n owner: isString,\n assignee: isString,\n search: isString,\n status: isEnum.bind(TaskStatus),\n mode: isEnum.bind(TaskMode),\n });\n\n if ('search' in filter && Object.keys(filter).length > 1) {\n if (!('page' in filter && Object.keys(filter).length === 2)) {\n throw new ArgumentError(\n 'Do not use the filter field \"search\" with others',\n );\n }\n }\n\n if ('id' in filter && Object.keys(filter).length > 1) {\n if (!('page' in filter && Object.keys(filter).length === 2)) {\n throw new ArgumentError(\n 'Do not use the filter field \"id\" with others',\n );\n }\n }\n\n const searchParams = new URLSearchParams();\n for (const field of ['name', 'owner', 'assignee', 'search', 'status', 'mode', 'id', 'page']) {\n if (Object.prototype.hasOwnProperty.call(filter, field)) {\n searchParams.set(field, filter[field]);\n }\n }\n\n const tasksData = await serverProxy.tasks.getTasks(searchParams.toString());\n const tasks = tasksData.map(task => new Task(task));\n tasks.count = tasksData.count;\n\n return tasks;\n };\n\n return cvat;\n }\n\n module.exports = implementAPI;\n})();\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/punycode-to-ascii');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+\\-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\u0009\\u000A\\u000D #%/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\u0009\\u000A\\u000D #/:?@[\\\\]]/;\n// eslint-disable-next-line no-control-regex\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\n// eslint-disable-next-line no-control-regex\nvar TAB_AND_NEW_LINE = /[\\u0009\\u000A\\u000D]/g;\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\nvar nativeAssign = Object.assign;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n","'use strict';\nvar bind = require('../internals/bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/bind-context');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, step, entryIterator, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n while (!(step = iterator.next()).done) {\n entryIterator = getIterator(anObject(step.value));\n if (\n (first = entryIterator.next()).done ||\n (second = entryIterator.next()).done ||\n !entryIterator.next().done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.appent` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n"],"sourceRoot":""} \ No newline at end of file