{"version":3,"sources":["../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/events/events.js","../../../src/index.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/utils.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/mode.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/utils/typedarray-buffer.js","../../../src/constants.ts","../../../src/encoding.ts","../../../src/misc.ts","../../../src/validators.ts","../../../src/ethereum.ts","../../../src/payload.ts","../../../src/url.ts","../../../src/session.ts","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../../../src/error.ts","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../../src/lib/browser.ts","../../../../src/helpers/index.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/isarray/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/error-correction-level.js","../../../src/browser.ts","../../../src/json.ts","../../../src/local.ts","../../../src/mobile.ts","../../../src/registry.ts","../../../../src/constants/length.ts","../../../../src/constants/default.ts","../../../../src/constants/operations.ts","../../../src/env.ts","../../../src/format.ts","../../../src/types.ts","../../../src/provider.ts","../node_modules/is-typedarray/index.js","../../../../src/browser/index.ts","../../../../src/browser/aes.ts","../../../../src/browser/hmac.ts","../../../../src/helpers/env.ts","../../../../src/helpers/validators.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/version-check.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/regex.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/utils.js","../../../src/crypto.ts","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/detect-browser/es/index.js","../node_modules/@walletconnect/utils/node_modules/bn.js/lib/bn.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/query-string/index.js","../node_modules/query-string/node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../../../src/network.ts","../node_modules/@walletconnect/socket-transport/node_modules/ws/browser.js","../../../../../../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../../../src/browser/assets/logo.ts","../../../src/browser/constants/index.ts","../../../src/browser/components/Header.tsx","../../../src/browser/components/ConnectButton.tsx","../../../src/browser/components/WalletButton.tsx","../../../src/browser/assets/caret.ts","../../../src/browser/components/WalletIcon.tsx","../../../src/browser/components/LinkDisplay.tsx","../../../src/browser/components/Notification.tsx","../../../src/browser/components/QRCodeDisplay.tsx","../../../src/browser/components/Modal.tsx","../../../src/browser/languages/de.ts","../../../src/browser/languages/index.ts","../../../src/browser/languages/en.ts","../../../src/browser/languages/es.ts","../../../src/browser/languages/fr.ts","../../../src/browser/languages/ko.ts","../../../src/browser/languages/pt.ts","../../../src/browser/languages/zh.ts","../../../src/browser/languages/fa.ts","../../../src/browser/index.tsx","../../../src/browser/assets/style.ts","../../../src/node.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/browser.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/can-promise.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/qrcode.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/polynomial.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/galois-field.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/version.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/format-info.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/segments.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/numeric-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/byte-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/core/kanji-data.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/canvas.js","../node_modules/@walletconnect/qrcode-modal/node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/copy-to-clipboard/index.js","../node_modules/toggle-selection/index.js","../../src/constants.js","../../src/options.js","../../src/component.js","../../src/render.js","../../src/create-context.js","../../src/util.js","../../src/create-element.js","../../src/diff/children.js","../../src/diff/props.js","../../src/diff/index.js","../../src/clone-element.js","../../src/diff/catch-error.js","../../src/index.js","../../src/PureComponent.js","../../src/memo.js","../../src/forwardRef.js","../../src/Children.js","../../src/suspense.js","../../src/suspense-list.js","../../src/portals.js","../../src/events.js","../../../src/http.ts","../../../src/errors.ts","../../../src/events.ts","../../../src/storage.ts"],"names":["arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","module","exports","arr","i","__esModule","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","ret","Array","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","toSJISFunction","CODEWORDS_COUNT","getSymbolSize","version","getSymbolTotalCodewords","getBCHDigit","data","digit","setToSJISFunction","f","isKanjiModeEnabled","toSJIS","kanji","VersionCheck","require","Regex","NUMERIC","id","bit","ccBits","ALPHANUMERIC","BYTE","KANJI","MIXED","getCharCountIndicator","mode","isValid","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","toString","from","defaultValue","string","toLowerCase","fromString","e","isArray","Buffer","TYPED_ARRAY_SUPPORT","Uint8Array","__proto__","foo","typedArraySupport","K_MAX_LENGTH","offset","allocUnsafe","ArrayBuffer","array","byteOffset","byteLength","buf","fromArrayLike","fromArrayBuffer","createBuffer","actual","write","obj","isBuffer","checked","buffer","val","fromObject","size","utf8ToBytes","units","codePoint","Infinity","leadSurrogate","bytes","charCodeAt","isView","Symbol","species","configurable","writable","isFinite","remaining","src","dst","blitBuffer","utf8Write","start","end","newBuf","subarray","sliceLen","targetStart","fill","code","pos","_isBuffer","b","alloc","arrBuf","parsePersonalSign","params","test","address","txData","o","allowArrayLike","it","iterator","F","s","done","_e","normalCompletion","didErr","step","next","_e2","INTERNAL_ERROR","SERVER_ERROR","_i","_s","_arr","_n","_d","L","M","Q","H","level","local","LENGTH_512","ENCRYPT_OP","DECRYPT_OP","isTypedArray","strict","isStrictTypedArray","loose","isLooseTypedArray","names","Int8Array","Int16Array","Int32Array","Uint8ClampedArray","Uint16Array","Uint32Array","Float32Array","Float64Array","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","numeric","byte","replace","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","hex2rgba","hex","hexCode","split","map","c","hexValue","parseInt","join","r","g","a","getOptions","options","color","margin","width","scale","dark","light","rendererOpts","getScale","qrSize","opts","getImageWidth","Math","floor","qrToImageData","imgData","qr","modules","symbolSize","scaledMargin","palette","j","posDst","pxColor","global","self","__self__","fetch","DOMException","support","Blob","viewClasses","isArrayBufferView","indexOf","normalizeName","normalizeValue","iteratorFor","items","Headers","headers","forEach","append","header","consumed","body","bodyUsed","fileReaderReady","reader","onload","result","onerror","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","view","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","then","text","readAsText","readBlobAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","JSON","parse","oldValue","has","hasOwnProperty","callback","thisArg","values","entries","methods","Request","input","url","credentials","method","signal","upcased","toUpperCase","normalizeMethod","referrer","form","trim","decodeURIComponent","parseHeaders","rawHeaders","line","parts","Response","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","location","stack","constructor","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","send","polyfill","ponyfill","ctx","default","__spreadArrays","il","k","jl","BrowserInfo","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","document","navigator","product","matchUserAgent","ua","reduce","matched","_a","browser","regex","uaMatch","exec","matchedRule","match","versionParts","output","ii","createVersionParts","detectOS","searchBotMatch","assert","msg","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","wordSize","parseHex","min","parseBase","mul","num","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","toArray","ceil","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","lo","carry","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toJSON","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","wbit","iadd","isub","add","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","outLen","prev","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","strictUriEncode","decodeComponent","splitOnFirst","validateArrayFormatSeparator","encode","encodeURIComponent","keysSorter","sort","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","newValue","item","parserForArrayFormat","param","includes","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","filter","parseUrl","hash","query","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","token","singleMatcher","multiMatcher","decodeComponents","components","tokens","encodedURI","replaceMap","customDecodeURIComponent","separator","separatorIndex","event","const","WALLETCONNECT_WRAPPER_ID","WALLETCONNECT_STYLE_ID","WALLETCONNECT_MODAL_ID","WALLETCONNECT_CTA_TEXT_ID","Header","props","className","React","onClick","onClose","ConnectButton","href","WALLETCONNECT_CONNECT_BUTTON_ID","rel","style","backgroundColor","WalletButton","logo","background","backgroundSize","WalletIcon","fontSize","window","LinkDisplay","android","isAndroid","setInput","setFilter","page","setPage","links","link","errorMessage","grid","pages","range","pageLinks","hasPaging","filterTimeout","placeholder","onChange","clearTimeout","setTimeout","connect","uri","useCallback","saveMobileLinkInfo","entry","shortName","formatIOSMobile","handleClickIOS","pageNumber","selected","fontWeight","Notification","show","QRCodeDisplay","notification","setNotification","svg","setSvg","formatQRCodeImage","QRCode","dataString","dangerouslySetInnerHTML","__html","setInterval","Modal","mobile","isMobile","whitelist","loading","setLoading","fetched","setFetched","displayQRCode","setDisplayQRCode","displayProps","qrcodeModalOptions","singleLinkHref","setSingleLinkHref","hasSingleLink","setHasSingleLink","setLinks","setErrorMessage","getLinksIfNeeded","recover","getWalletRegistryUrl","registryResponse","registry","_links","getMobileLinkRegistry","formatMobileRegistry","initLinks","rightSelected","languages","choose_preferred_wallet","connect_mobile_wallet","scan_qrcode_with_wallet","qrcode","desktop","copy_to_clipboard","copied_to_clipboard","connect_with","something_went_wrong","no_supported_wallets","no_wallets_found","triggerCloseAnimation","doc","getDocumentOrThrow","modal","wrapper","getWrappedCallback","cb","getText","lang","getNavigatorOrThrow","Languages","injectStyleSheet","renderWrapper","ReactDOM","isNode","nodeLib","browserLib","canPromise","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","render","toDataURL","renderToDataURL","BufferUtil","Utils","BitBuffer","BitMatrix","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Mode","Segments","setupFormatInfo","matrix","maskPattern","getEncodedBits","createData","segments","put","getLength","dataTotalCodewordsBits","getLengthInBits","putBit","remainingByte","bitBuffer","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","getPositions","row","col","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","isReserved","setupData","getBestMask","applyMask","toSJISFunc","bufIndex","reservedBit","reserved","getRowColCoords","posCount","intervals","positions","reverse","coords","posLength","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","Polynomial","degree","genPoly","initialize","generateECPolynomial","pad","paddedData","remainder","buff","GF","p1","p2","coeff","divident","divisor","poly","exp","EXP_TABLE","LOG_TABLE","log","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getBitsLength","getCapacity","usableBits","seg","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","d","G15_BCH","NumericData","AlphanumericData","ByteData","KanjiData","dijkstra","getStringByteLength","unescape","getSegments","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","nodes","segs","buildNodes","graph","table","prevNodeIds","nodeGroup","currentNodeIds","node","lastCount","prevNodeId","buildGraph","path","find_path","optimizedSegs","curr","prevSeg","mergeSegments","group","substr","remainingNum","ALPHA_NUM_CHARS","qrData","canvasEl","createElement","getCanvasElement","image","createImageData","clearRect","height","clearCanvas","putImageData","quality","getColorAttrib","attrib","alpha","toFixed","svgCmd","cmd","qrcodesize","bg","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","deselectCurrent","clipboardToIE11Formatting","debug","reselectPrevious","selection","mark","success","createRange","getSelection","textContent","all","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","stopPropagation","format","preventDefault","clipboardData","clearData","setData","onCopy","appendChild","selectNodeContents","addRange","execCommand","copyKey","prompt","removeRange","removeAllRanges","removeChild","rangeCount","active","activeElement","ranges","getRangeAt","tagName","blur","focus","rerenderQueue","rerenderCount","defer","prevDebounce","IS_HYDRATE","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","parentNode","children","normalizedProps","defaultProps","createVNode","ref","original","vnode","_children","_parent","_depth","_dom","_nextDom","_component","_original","createRef","Fragment","Component","getDomSibling","childIndex","sibling","updateParentDomPointers","child","enqueueRender","_dirty","debounceRendering","queue","_vnode","some","component","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","sibDom","firstChildDom","refs","oldChildren","oldChildrenLength","toChildArray","childVNode","nextDom","outer","nextSibling","insertBefore","unmount","applyRef","flattened","setStyle","setProperty","dom","useCapture","nameLower","cssText","eventProxy","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","_force","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","oldHtml","newHtml","nodeType","localName","createTextNode","createElementNS","is","childNodes","attributes","innerHTML","hydrate","diffProps","parentVNode","skipRemove","componentWillUnmount","replaceNode","_root","cloneElement","createContext","Consumer","Provider","subs","_this","_props","old","splice","_contextRef","hasCaught","getDerivedStateFromError","setState","componentDidCatch","update","forceUpdate","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","_hook","hooks","__hooks","_list","_pendingEffects","useState","initialState","useReducer","invokeOrReturn","reducer","hookState","_value","nextValue","action","useEffect","_skipEffects","argsChanged","_args","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","factory","_factory","useContext","_context","useDebugValue","useErrorBoundary","errState","flushAfterPaintEffects","invokeCleanup","invokeEffect","hook","_cleanup","oldArgs","newArgs","shallowDiffers","requestAnimationFrame","raf","timeout","cancelAnimationFrame","PureComponent","isPureReactComponent","memo","comparer","shouldUpdate","nextProps","updateRef","Memoed","isReactComponent","displayName","_forwarded","oldDiffHook","forwardRef","fn","Forwarded","mapFn","Children","only","oldCatchError","detachedClone","Suspense","_pendingSuspensionCount","_suspenders","_detachOnNextRender","suspended","_suspended","lazy","loader","prom","Lazy","SuspenseList","_next","_map","_childDidSuspend","suspendingComponent","resolved","onResolved","onSuspensionComplete","_suspendedComponentWillUnmount","fallback","delete","revealOrder","delegated","wrappedUnsuspend","unsuspend","Map","ContextProvider","Portal","container","wrap","_container","_temp","_unmount","_wrap","_hasMounted","createPortal","CAMEL_PROPS","REACT_ELEMENT_TYPE","for","parent","firstChild","preactRender","preactHydrate","oldEventHook","setSafeDescriptor","proto","v","persist","stoppedPropagating","defaultPrevented","origStopPropagation","origPreventDefault","isPropagationStopped","isDefaultPrevented","nativeEvent","classNameDescriptor","class","oldVNodeHook","$$typeof","shouldSanitize","attrs","multiple","ondoubleclick","ondblclick","onbeforeinput","onchange","normalized","oninput","_patchedLifecycles","createFactory","isValidElement","element","preactCloneElement","unmountComponentAtNode","findDOMNode","unstable_batchedUpdates","ERROR_SESSION_CONNECTED","ERROR_SESSION_DISCONNECTED","signer","connection"],"mappings":"+GAAA,IAAIA,EAAiB,EAAQ,KAEzBC,EAAuB,EAAQ,KAE/BC,EAA6B,EAAQ,KAErCC,EAAkB,EAAQ,KAM9BC,EAAOC,QAJP,SAAwBC,EAAKC,GAC3B,OAAOP,EAAeM,IAAQL,EAAqBK,EAAKC,IAAML,EAA2BI,EAAKC,IAAMJ,KAGrEC,EAAOC,QAAQG,YAAa,EAAMJ,EAAOC,QAAiB,QAAID,EAAOC,S,iCCWtG,IAOII,EAPAC,EAAuB,kBAAZC,QAAuBA,QAAU,KAC5CC,EAAeF,GAAwB,oBAAZA,EAAEG,MAC7BH,EAAEG,MACF,SAAsBC,EAAQC,EAAUC,GACxC,OAAOC,SAASC,UAAUL,MAAMM,KAAKL,EAAQC,EAAUC,IAKzDP,EADEC,GAA0B,oBAAdA,EAAEU,QACCV,EAAEU,QACVC,OAAOC,sBACC,SAAwBR,GACvC,OAAOO,OAAOE,oBAAoBT,GAC/BU,OAAOH,OAAOC,sBAAsBR,KAGxB,SAAwBA,GACvC,OAAOO,OAAOE,oBAAoBT,IAQtC,IAAIW,EAAcC,OAAOC,OAAS,SAAqBC,GACrD,OAAOA,IAAUA,GAGnB,SAASC,IACPA,EAAaC,KAAKX,KAAKY,MAEzB3B,EAAOC,QAAUwB,EACjBzB,EAAOC,QAAQ2B,KAwYf,SAAcC,EAASC,GACrB,OAAO,IAAIC,SAAQ,SAAUC,EAASC,GACpC,SAASC,EAAcC,GACrBN,EAAQO,eAAeN,EAAMO,GAC7BJ,EAAOE,GAGT,SAASE,IAC+B,oBAA3BR,EAAQO,gBACjBP,EAAQO,eAAe,QAASF,GAElCF,EAAQ,GAAGM,MAAMvB,KAAKwB,YAGxBC,EAA+BX,EAASC,EAAMO,EAAU,CAAET,MAAM,IACnD,UAATE,GAMR,SAAuCD,EAASY,EAASC,GAC7B,oBAAfb,EAAQc,IACjBH,EAA+BX,EAAS,QAASY,EAASC,GAPxDE,CAA8Bf,EAASK,EAAe,CAAEN,MAAM,QArZpEH,EAAaA,aAAeA,EAE5BA,EAAaX,UAAU+B,aAAUC,EACjCrB,EAAaX,UAAUiC,aAAe,EACtCtB,EAAaX,UAAUkC,mBAAgBF,EAIvC,IAAIG,EAAsB,GAE1B,SAASC,EAAcC,GACrB,GAAwB,oBAAbA,EACT,MAAM,IAAIC,UAAU,0EAA4ED,GAsCpG,SAASE,EAAiBC,GACxB,YAA2BR,IAAvBQ,EAAKN,cACAvB,EAAawB,oBACfK,EAAKN,cAmDd,SAASO,EAAa7C,EAAQ8C,EAAML,EAAUM,GAC5C,IAAIC,EACAC,EACAC,EA1HsBC,EAgJ1B,GApBAX,EAAcC,QAGCL,KADfa,EAASjD,EAAOmC,UAEdc,EAASjD,EAAOmC,QAAU5B,OAAO6C,OAAO,MACxCpD,EAAOqC,aAAe,SAIKD,IAAvBa,EAAOI,cACTrD,EAAOsD,KAAK,cAAeR,EACfL,EAASA,SAAWA,EAASA,SAAWA,GAIpDQ,EAASjD,EAAOmC,SAElBe,EAAWD,EAAOH,SAGHV,IAAbc,EAEFA,EAAWD,EAAOH,GAAQL,IACxBzC,EAAOqC,kBAeT,GAbwB,oBAAba,EAETA,EAAWD,EAAOH,GAChBC,EAAU,CAACN,EAAUS,GAAY,CAACA,EAAUT,GAErCM,EACTG,EAASK,QAAQd,GAEjBS,EAASM,KAAKf,IAIhBO,EAAIL,EAAiB3C,IACb,GAAKkD,EAASO,OAAST,IAAME,EAASQ,OAAQ,CACpDR,EAASQ,QAAS,EAGlB,IAAIC,EAAI,IAAIC,MAAM,+CACEV,EAASO,OAAS,IAAMI,OAAOf,GADjC,qEAIlBa,EAAEvC,KAAO,8BACTuC,EAAExC,QAAUnB,EACZ2D,EAAEb,KAAOA,EACTa,EAAEG,MAAQZ,EAASO,OA7KGN,EA8KHQ,EA7KnBI,SAAWA,QAAQC,MAAMD,QAAQC,KAAKb,GAiL1C,OAAOnD,EAcT,SAASiE,IACP,IAAKhD,KAAKiD,MAGR,OAFAjD,KAAKjB,OAAO0B,eAAeT,KAAK6B,KAAM7B,KAAKkD,QAC3ClD,KAAKiD,OAAQ,EACY,IAArBrC,UAAU4B,OACLxC,KAAKwB,SAASpC,KAAKY,KAAKjB,QAC1BiB,KAAKwB,SAAS1C,MAAMkB,KAAKjB,OAAQ6B,WAI5C,SAASuC,EAAUpE,EAAQ8C,EAAML,GAC/B,IAAI4B,EAAQ,CAAEH,OAAO,EAAOC,YAAQ/B,EAAWpC,OAAQA,EAAQ8C,KAAMA,EAAML,SAAUA,GACjF6B,EAAUL,EAAYM,KAAKF,GAG/B,OAFAC,EAAQ7B,SAAWA,EACnB4B,EAAMF,OAASG,EACRA,EA0HT,SAASE,EAAWxE,EAAQ8C,EAAM2B,GAChC,IAAIxB,EAASjD,EAAOmC,QAEpB,QAAeC,IAAXa,EACF,MAAO,GAET,IAAIyB,EAAazB,EAAOH,GACxB,YAAmBV,IAAfsC,EACK,GAEiB,oBAAfA,EACFD,EAAS,CAACC,EAAWjC,UAAYiC,GAAc,CAACA,GAElDD,EAsDT,SAAyBjF,GAEvB,IADA,IAAImF,EAAM,IAAIC,MAAMpF,EAAIiE,QACfhE,EAAI,EAAGA,EAAIkF,EAAIlB,SAAUhE,EAChCkF,EAAIlF,GAAKD,EAAIC,GAAGgD,UAAYjD,EAAIC,GAElC,OAAOkF,EA1DLE,CAAgBH,GAAcI,EAAWJ,EAAYA,EAAWjB,QAoBpE,SAASsB,EAAcjC,GACrB,IAAIG,EAAShC,KAAKkB,QAElB,QAAeC,IAAXa,EAAsB,CACxB,IAAIyB,EAAazB,EAAOH,GAExB,GAA0B,oBAAf4B,EACT,OAAO,EACF,QAAmBtC,IAAfsC,EACT,OAAOA,EAAWjB,OAItB,OAAO,EAOT,SAASqB,EAAWtF,EAAKwF,GAEvB,IADA,IAAIC,EAAO,IAAIL,MAAMI,GACZvF,EAAI,EAAGA,EAAIuF,IAAKvF,EACvBwF,EAAKxF,GAAKD,EAAIC,GAChB,OAAOwF,EA4CT,SAASnD,EAA+BX,EAASC,EAAMqB,EAAUT,GAC/D,GAA0B,oBAAfb,EAAQc,GACbD,EAAMd,KACRC,EAAQD,KAAKE,EAAMqB,GAEnBtB,EAAQc,GAAGb,EAAMqB,OAEd,IAAwC,oBAA7BtB,EAAQ+D,iBAYxB,MAAM,IAAIxC,UAAU,6EAA+EvB,GATnGA,EAAQ+D,iBAAiB9D,GAAM,SAAS+D,EAAaC,GAG/CpD,EAAMd,MACRC,EAAQkE,oBAAoBjE,EAAM+D,GAEpC1C,EAAS2C,OAhaf7E,OAAO+E,eAAevE,EAAc,sBAAuB,CACzDwE,YAAY,EACZC,IAAK,WACH,OAAOjD,GAETkD,IAAK,SAASL,GACZ,GAAmB,kBAARA,GAAoBA,EAAM,GAAKzE,EAAYyE,GACpD,MAAM,IAAIM,WAAW,kGAAoGN,EAAM,KAEjI7C,EAAsB6C,KAI1BrE,EAAaC,KAAO,gBAEGoB,IAAjBnB,KAAKkB,SACLlB,KAAKkB,UAAY5B,OAAOoF,eAAe1E,MAAMkB,UAC/ClB,KAAKkB,QAAU5B,OAAO6C,OAAO,MAC7BnC,KAAKoB,aAAe,GAGtBpB,KAAKqB,cAAgBrB,KAAKqB,oBAAiBF,GAK7CrB,EAAaX,UAAUwF,gBAAkB,SAAyBZ,GAChE,GAAiB,kBAANA,GAAkBA,EAAI,GAAKrE,EAAYqE,GAChD,MAAM,IAAIU,WAAW,gFAAkFV,EAAI,KAG7G,OADA/D,KAAKqB,cAAgB0C,EACd/D,MASTF,EAAaX,UAAUyF,gBAAkB,WACvC,OAAOlD,EAAiB1B,OAG1BF,EAAaX,UAAUkD,KAAO,SAAcR,GAE1C,IADA,IAAI5C,EAAO,GACFT,EAAI,EAAGA,EAAIoC,UAAU4B,OAAQhE,IAAKS,EAAKsD,KAAK3B,UAAUpC,IAC/D,IAAIqG,EAAoB,UAAThD,EAEXG,EAAShC,KAAKkB,QAClB,QAAeC,IAAXa,EACF6C,EAAWA,QAA4B1D,IAAjBa,EAAO8C,WAC1B,IAAKD,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIE,EAGJ,GAFI9F,EAAKuD,OAAS,IAChBuC,EAAK9F,EAAK,IACR8F,aAAcpC,MAGhB,MAAMoC,EAGR,IAAIvE,EAAM,IAAImC,MAAM,oBAAsBoC,EAAK,KAAOA,EAAGC,QAAU,IAAM,KAEzE,MADAxE,EAAIyE,QAAUF,EACRvE,EAGR,IAAIM,EAAUkB,EAAOH,GAErB,QAAgBV,IAAZL,EACF,OAAO,EAET,GAAuB,oBAAZA,EACTjC,EAAaiC,EAASd,KAAMf,OAE5B,KAAIiG,EAAMpE,EAAQ0B,OACd2C,EAAYtB,EAAW/C,EAASoE,GACpC,IAAS1G,EAAI,EAAGA,EAAI0G,IAAO1G,EACzBK,EAAasG,EAAU3G,GAAIwB,KAAMf,GAGrC,OAAO,GAiETa,EAAaX,UAAUiG,YAAc,SAAqBvD,EAAML,GAC9D,OAAOI,EAAa5B,KAAM6B,EAAML,GAAU,IAG5C1B,EAAaX,UAAU6B,GAAKlB,EAAaX,UAAUiG,YAEnDtF,EAAaX,UAAUkG,gBACnB,SAAyBxD,EAAML,GAC7B,OAAOI,EAAa5B,KAAM6B,EAAML,GAAU,IAqBhD1B,EAAaX,UAAUc,KAAO,SAAc4B,EAAML,GAGhD,OAFAD,EAAcC,GACdxB,KAAKgB,GAAGa,EAAMsB,EAAUnD,KAAM6B,EAAML,IAC7BxB,MAGTF,EAAaX,UAAUmG,oBACnB,SAA6BzD,EAAML,GAGjC,OAFAD,EAAcC,GACdxB,KAAKqF,gBAAgBxD,EAAMsB,EAAUnD,KAAM6B,EAAML,IAC1CxB,MAIbF,EAAaX,UAAUsB,eACnB,SAAwBoB,EAAML,GAC5B,IAAI+D,EAAMvD,EAAQwD,EAAUhH,EAAGiH,EAK/B,GAHAlE,EAAcC,QAGCL,KADfa,EAAShC,KAAKkB,SAEZ,OAAOlB,KAGT,QAAamB,KADboE,EAAOvD,EAAOH,IAEZ,OAAO7B,KAET,GAAIuF,IAAS/D,GAAY+D,EAAK/D,WAAaA,EACb,MAAtBxB,KAAKoB,aACTpB,KAAKkB,QAAU5B,OAAO6C,OAAO,cAEtBH,EAAOH,GACVG,EAAOvB,gBACTT,KAAKqC,KAAK,iBAAkBR,EAAM0D,EAAK/D,UAAYA,SAElD,GAAoB,oBAAT+D,EAAqB,CAGrC,IAFAC,GAAY,EAEPhH,EAAI+G,EAAK/C,OAAS,EAAGhE,GAAK,EAAGA,IAChC,GAAI+G,EAAK/G,KAAOgD,GAAY+D,EAAK/G,GAAGgD,WAAaA,EAAU,CACzDiE,EAAmBF,EAAK/G,GAAGgD,SAC3BgE,EAAWhH,EACX,MAIJ,GAAIgH,EAAW,EACb,OAAOxF,KAEQ,IAAbwF,EACFD,EAAKG,QAiIf,SAAmBH,EAAMI,GACvB,KAAOA,EAAQ,EAAIJ,EAAK/C,OAAQmD,IAC9BJ,EAAKI,GAASJ,EAAKI,EAAQ,GAC7BJ,EAAKK,MAlIGC,CAAUN,EAAMC,GAGE,IAAhBD,EAAK/C,SACPR,EAAOH,GAAQ0D,EAAK,SAEQpE,IAA1Ba,EAAOvB,gBACTT,KAAKqC,KAAK,iBAAkBR,EAAM4D,GAAoBjE,GAG1D,OAAOxB,MAGbF,EAAaX,UAAU2G,IAAMhG,EAAaX,UAAUsB,eAEpDX,EAAaX,UAAU4G,mBACnB,SAA4BlE,GAC1B,IAAIsD,EAAWnD,EAAQxD,EAGvB,QAAe2C,KADfa,EAAShC,KAAKkB,SAEZ,OAAOlB,KAGT,QAA8BmB,IAA1Ba,EAAOvB,eAUT,OATyB,IAArBG,UAAU4B,QACZxC,KAAKkB,QAAU5B,OAAO6C,OAAO,MAC7BnC,KAAKoB,aAAe,QACMD,IAAjBa,EAAOH,KACY,MAAtB7B,KAAKoB,aACTpB,KAAKkB,QAAU5B,OAAO6C,OAAO,aAEtBH,EAAOH,IAEX7B,KAIT,GAAyB,IAArBY,UAAU4B,OAAc,CAC1B,IACIwD,EADAC,EAAO3G,OAAO2G,KAAKjE,GAEvB,IAAKxD,EAAI,EAAGA,EAAIyH,EAAKzD,SAAUhE,EAEjB,oBADZwH,EAAMC,EAAKzH,KAEXwB,KAAK+F,mBAAmBC,GAK1B,OAHAhG,KAAK+F,mBAAmB,kBACxB/F,KAAKkB,QAAU5B,OAAO6C,OAAO,MAC7BnC,KAAKoB,aAAe,EACbpB,KAKT,GAAyB,oBAFzBmF,EAAYnD,EAAOH,IAGjB7B,KAAKS,eAAeoB,EAAMsD,QACrB,QAAkBhE,IAAdgE,EAET,IAAK3G,EAAI2G,EAAU3C,OAAS,EAAGhE,GAAK,EAAGA,IACrCwB,KAAKS,eAAeoB,EAAMsD,EAAU3G,IAIxC,OAAOwB,MAoBbF,EAAaX,UAAUgG,UAAY,SAAmBtD,GACpD,OAAO0B,EAAWvD,KAAM6B,GAAM,IAGhC/B,EAAaX,UAAU+G,aAAe,SAAsBrE,GAC1D,OAAO0B,EAAWvD,KAAM6B,GAAM,IAGhC/B,EAAagE,cAAgB,SAAS5D,EAAS2B,GAC7C,MAAqC,oBAA1B3B,EAAQ4D,cACV5D,EAAQ4D,cAAcjC,GAEtBiC,EAAc1E,KAAKc,EAAS2B,IAIvC/B,EAAaX,UAAU2E,cAAgBA,EAiBvChE,EAAaX,UAAUgH,WAAa,WAClC,OAAOnG,KAAKoB,aAAe,EAAI1C,EAAesB,KAAKkB,SAAW,K,qYCxahE,YACA,a,kBCDA,IAAIkF,EACAC,EAAkB,CACpB,EACA,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC1C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC7C,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KACtD,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASxD/H,EAAQgI,cAAgB,SAAwBC,GAC9C,IAAKA,EAAS,MAAM,IAAI5D,MAAM,yCAC9B,GAAI4D,EAAU,GAAKA,EAAU,GAAI,MAAM,IAAI5D,MAAM,6CACjD,OAAiB,EAAV4D,EAAc,IASvBjI,EAAQkI,wBAA0B,SAAkCD,GAClE,OAAOF,EAAgBE,IASzBjI,EAAQmI,YAAc,SAAUC,GAG9B,IAFA,IAAIC,EAAQ,EAEI,IAATD,GACLC,IACAD,KAAU,EAGZ,OAAOC,GAGTrI,EAAQsI,kBAAoB,SAA4BC,GACtD,GAAiB,oBAANA,EACT,MAAM,IAAIlE,MAAM,yCAGlByD,EAAiBS,GAGnBvI,EAAQwI,mBAAqB,WAC3B,MAAiC,qBAAnBV,GAGhB9H,EAAQyI,OAAS,SAAiBC,GAChC,OAAOZ,EAAeY,K,oBC7DxB,IAAIC,EAAeC,EAAQ,KACvBC,EAAQD,EAAQ,KASpB5I,EAAQ8I,QAAU,CAChBC,GAAI,UACJC,IAAK,EACLC,OAAQ,CAAC,GAAI,GAAI,KAYnBjJ,EAAQkJ,aAAe,CACrBH,GAAI,eACJC,IAAK,EACLC,OAAQ,CAAC,EAAG,GAAI,KAQlBjJ,EAAQmJ,KAAO,CACbJ,GAAI,OACJC,IAAK,EACLC,OAAQ,CAAC,EAAG,GAAI,KAYlBjJ,EAAQoJ,MAAQ,CACdL,GAAI,QACJC,IAAK,EACLC,OAAQ,CAAC,EAAG,GAAI,KASlBjJ,EAAQqJ,MAAQ,CACdL,KAAM,GAWRhJ,EAAQsJ,sBAAwB,SAAgCC,EAAMtB,GACpE,IAAKsB,EAAKN,OAAQ,MAAM,IAAI5E,MAAM,iBAAmBkF,GAErD,IAAKZ,EAAaa,QAAQvB,GACxB,MAAM,IAAI5D,MAAM,oBAAsB4D,GAGxC,OAAIA,GAAW,GAAKA,EAAU,GAAWsB,EAAKN,OAAO,GAC5ChB,EAAU,GAAWsB,EAAKN,OAAO,GACnCM,EAAKN,OAAO,IASrBjJ,EAAQyJ,mBAAqB,SAA6BC,GACxD,OAAIb,EAAMc,YAAYD,GAAiB1J,EAAQ8I,QACtCD,EAAMe,iBAAiBF,GAAiB1J,EAAQkJ,aAChDL,EAAMgB,UAAUH,GAAiB1J,EAAQoJ,MACtCpJ,EAAQmJ,MAStBnJ,EAAQ8J,SAAW,SAAmBP,GACpC,GAAIA,GAAQA,EAAKR,GAAI,OAAOQ,EAAKR,GACjC,MAAM,IAAI1E,MAAM,iBASlBrE,EAAQwJ,QAAU,SAAkBD,GAClC,OAAOA,GAAQA,EAAKP,KAAOO,EAAKN,QAsClCjJ,EAAQ+J,KAAO,SAAexI,EAAOyI,GACnC,GAAIhK,EAAQwJ,QAAQjI,GAClB,OAAOA,EAGT,IACE,OAnCJ,SAAqB0I,GACnB,GAAsB,kBAAXA,EACT,MAAM,IAAI5F,MAAM,yBAKlB,OAFY4F,EAAOC,eAGjB,IAAK,UACH,OAAOlK,EAAQ8I,QACjB,IAAK,eACH,OAAO9I,EAAQkJ,aACjB,IAAK,QACH,OAAOlJ,EAAQoJ,MACjB,IAAK,OACH,OAAOpJ,EAAQmJ,KACjB,QACE,MAAM,IAAI9E,MAAM,iBAAmB4F,IAkB9BE,CAAW5I,GAClB,MAAO6I,GACP,OAAOJ,K,iCC3JX,IAAIK,EAAUzB,EAAQ,KAatB0B,EAAOC,oBAXP,WAEE,IACE,IAAItK,EAAM,IAAIuK,WAAW,GAEzB,OADAvK,EAAIwK,UAAY,CAACA,UAAWD,WAAW3J,UAAW6J,IAAK,WAAc,OAAO,KACvD,KAAdzK,EAAIyK,MACX,MAAON,GACP,OAAO,GAIkBO,GAE7B,IAAIC,EAAeN,EAAOC,oBACpB,WACA,WAEN,SAASD,EAAQzE,EAAKgF,EAAQ3G,GAC5B,OAAKoG,EAAOC,qBAAyB7I,gBAAgB4I,EAIlC,kBAARzE,EACFiF,EAAYpJ,KAAMmE,GAmQ7B,SAAexC,EAAM9B,EAAOsJ,EAAQ3G,GAClC,GAAqB,kBAAV3C,EACT,MAAM,IAAI4B,UAAU,yCAGtB,GAA2B,qBAAhB4H,aAA+BxJ,aAAiBwJ,YACzD,OA/KJ,SAA0B1H,EAAM2H,EAAOC,EAAY/G,GACjD,GAAI+G,EAAa,GAAKD,EAAME,WAAaD,EACvC,MAAM,IAAI9E,WAAW,6BAGvB,GAAI6E,EAAME,WAAaD,GAAc/G,GAAU,GAC7C,MAAM,IAAIiC,WAAW,6BAGvB,IAAIgF,EAEFA,OADiBtI,IAAfoI,QAAuCpI,IAAXqB,EACxB,IAAIsG,WAAWQ,QACDnI,IAAXqB,EACH,IAAIsG,WAAWQ,EAAOC,GAEtB,IAAIT,WAAWQ,EAAOC,EAAY/G,GAGtCoG,EAAOC,oBAETY,EAAIV,UAAYH,EAAOzJ,UAGvBsK,EAAMC,EAAc/H,EAAM8H,GAG5B,OAAOA,EAqJEE,CAAgBhI,EAAM9B,EAAOsJ,EAAQ3G,GAG9C,GAAqB,kBAAV3C,EACT,OA5MJ,SAAqB8B,EAAM4G,GACzB,IAAI/F,EAA8B,EAArBgH,EAAWjB,GACpBkB,EAAMG,EAAajI,EAAMa,GAEzBqH,EAASJ,EAAIK,MAAMvB,GAEnBsB,IAAWrH,IAIbiH,EAAMA,EAAI9I,MAAM,EAAGkJ,IAGrB,OAAOJ,EA+LEhB,CAAW9G,EAAM9B,GAG1B,OAzJF,SAAqB8B,EAAMoI,GACzB,GAAInB,EAAOoB,SAASD,GAAM,CACxB,IAAI7E,EAA4B,EAAtB+E,EAAQF,EAAIvH,QAClBiH,EAAMG,EAAajI,EAAMuD,GAE7B,OAAmB,IAAfuE,EAAIjH,QAIRuH,EAAI/F,KAAKyF,EAAK,EAAG,EAAGvE,GAHXuE,EAOX,GAAIM,EAAK,CACP,GAA4B,qBAAhBV,aACRU,EAAIG,kBAAkBb,aAAgB,WAAYU,EACpD,MAA0B,kBAAfA,EAAIvH,SAvGL2H,EAuGkCJ,EAAIvH,UAtGrC2H,EAuGFP,EAAajI,EAAM,GAErB+H,EAAc/H,EAAMoI,GAG7B,GAAiB,WAAbA,EAAIlI,MAAqB8B,MAAMgF,QAAQoB,EAAIrD,MAC7C,OAAOgD,EAAc/H,EAAMoI,EAAIrD,MA9GrC,IAAgByD,EAkHd,MAAM,IAAI1I,UAAU,sFA8Hb2I,CAAWzI,EAAM9B,GA7QjBwI,CAAKrI,KAAMmE,EAAKgF,EAAQ3G,GAPtB,IAAIoG,EAAOzE,EAAKgF,EAAQ3G,GA0BnC,SAASyH,EAASzH,GAGhB,GAAIA,GAAU0G,EACZ,MAAM,IAAIzE,WAAW,0DACayE,EAAad,SAAS,IAAM,UAEhE,OAAgB,EAAT5F,EAOT,SAASoH,EAAcjI,EAAMa,GAC3B,IAAIiH,EAaJ,OAZIb,EAAOC,qBACTY,EAAM,IAAIX,WAAWtG,IACjBuG,UAAYH,EAAOzJ,WAIX,QADZsK,EAAM9H,KAEJ8H,EAAM,IAAIb,EAAOpG,IAEnBiH,EAAIjH,OAASA,GAGRiH,EAGT,SAASL,EAAazH,EAAM0I,GAC1B,IAAIZ,EAAMG,EAAajI,EAAM0I,EAAO,EAAI,EAAoB,EAAhBJ,EAAQI,IAEpD,IAAKzB,EAAOC,oBACV,IAAK,IAAIrK,EAAI,EAAGA,EAAI6L,IAAQ7L,EAC1BiL,EAAIjL,GAAK,EAIb,OAAOiL,EAmBT,SAASC,EAAe/H,EAAM2H,GAG5B,IAFA,IAAI9G,EAAS8G,EAAM9G,OAAS,EAAI,EAA4B,EAAxByH,EAAQX,EAAM9G,QAC9CiH,EAAMG,EAAajI,EAAMa,GACpBhE,EAAI,EAAGA,EAAIgE,EAAQhE,GAAK,EAC/BiL,EAAIjL,GAAgB,IAAX8K,EAAM9K,GAEjB,OAAOiL,EA8DT,SAASa,EAAa/B,EAAQgC,GAE5B,IAAIC,EADJD,EAAQA,GAASE,IAMjB,IAJA,IAAIjI,EAAS+F,EAAO/F,OAChBkI,EAAgB,KAChBC,EAAQ,GAEHnM,EAAI,EAAGA,EAAIgE,IAAUhE,EAAG,CAI/B,IAHAgM,EAAYjC,EAAOqC,WAAWpM,IAGd,OAAUgM,EAAY,MAAQ,CAE5C,IAAKE,EAAe,CAElB,GAAIF,EAAY,MAAQ,EAEjBD,GAAS,IAAM,GAAGI,EAAMpI,KAAK,IAAM,IAAM,KAC9C,SACK,GAAI/D,EAAI,IAAMgE,EAAQ,EAEtB+H,GAAS,IAAM,GAAGI,EAAMpI,KAAK,IAAM,IAAM,KAC9C,SAIFmI,EAAgBF,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjBD,GAAS,IAAM,GAAGI,EAAMpI,KAAK,IAAM,IAAM,KAC9CmI,EAAgBF,EAChB,SAIFA,EAAkE,OAArDE,EAAgB,OAAU,GAAKF,EAAY,YAC/CE,IAEJH,GAAS,IAAM,GAAGI,EAAMpI,KAAK,IAAM,IAAM,KAMhD,GAHAmI,EAAgB,KAGZF,EAAY,IAAM,CACpB,IAAKD,GAAS,GAAK,EAAG,MACtBI,EAAMpI,KAAKiI,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKD,GAAS,GAAK,EAAG,MACtBI,EAAMpI,KACJiI,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAKD,GAAS,GAAK,EAAG,MACtBI,EAAMpI,KACJiI,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAI7H,MAAM,sBARhB,IAAK4H,GAAS,GAAK,EAAG,MACtBI,EAAMpI,KACJiI,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOG,EAGT,SAASnB,EAAYjB,GACnB,OAAIK,EAAOoB,SAASzB,GACXA,EAAO/F,OAEW,qBAAhB6G,aAA6D,oBAAvBA,YAAYwB,SACxDxB,YAAYwB,OAAOtC,IAAWA,aAAkBc,aAC5Cd,EAAOiB,YAEM,kBAAXjB,IACTA,EAAS,GAAKA,GAIJ,IADFA,EAAO/F,OACK,EAEf8H,EAAY/B,GAAQ/F,QA9OzBoG,EAAOC,sBACTD,EAAOzJ,UAAU4J,UAAYD,WAAW3J,UACxCyJ,EAAOG,UAAYD,WAGG,qBAAXgC,QAA0BA,OAAOC,SACxCnC,EAAOkC,OAAOC,WAAanC,GAC7BtJ,OAAO+E,eAAeuE,EAAQkC,OAAOC,QAAS,CAC5ClL,MAAO,KACPmL,cAAc,EACd1G,YAAY,EACZ2G,UAAU,KAkQhBrC,EAAOzJ,UAAU2K,MAAQ,SAAgBvB,EAAQY,EAAQ3G,QAExCrB,IAAXgI,QAIkBhI,IAAXqB,GAA0C,kBAAX2G,GAHxC3G,EAASxC,KAAKwC,OACd2G,EAAS,GAMA+B,SAAS/B,KAClBA,GAAkB,EACd+B,SAAS1I,GACXA,GAAkB,EAElBA,OAASrB,GAIb,IAAIgK,EAAYnL,KAAKwC,OAAS2G,EAG9B,SAFehI,IAAXqB,GAAwBA,EAAS2I,KAAW3I,EAAS2I,GAEpD5C,EAAO/F,OAAS,IAAMA,EAAS,GAAK2G,EAAS,IAAOA,EAASnJ,KAAKwC,OACrE,MAAM,IAAIiC,WAAW,0CAGvB,OA9CF,SAAoBgF,EAAKlB,EAAQY,EAAQ3G,GACvC,OATF,SAAqB4I,EAAKC,EAAKlC,EAAQ3G,GACrC,IAAK,IAAIhE,EAAI,EAAGA,EAAIgE,KACbhE,EAAI2K,GAAUkC,EAAI7I,QAAYhE,GAAK4M,EAAI5I,UADhBhE,EAE5B6M,EAAI7M,EAAI2K,GAAUiC,EAAI5M,GAExB,OAAOA,EAIA8M,CAAWhB,EAAY/B,EAAQkB,EAAIjH,OAAS2G,GAASM,EAAKN,EAAQ3G,GA6ClE+I,CAAUvL,KAAMuI,EAAQY,EAAQ3G,IAGzCoG,EAAOzJ,UAAUwB,MAAQ,SAAgB6K,EAAOC,GAC9C,IAoBIC,EApBAxG,EAAMlF,KAAKwC,OAqBf,IApBAgJ,IAAUA,GAGE,GACVA,GAAStG,GACG,IAAGsG,EAAQ,GACdA,EAAQtG,IACjBsG,EAAQtG,IANVuG,OAActK,IAARsK,EAAoBvG,IAAQuG,GASxB,GACRA,GAAOvG,GACG,IAAGuG,EAAM,GACVA,EAAMvG,IACfuG,EAAMvG,GAGJuG,EAAMD,IAAOC,EAAMD,GAGnB5C,EAAOC,qBACT6C,EAAS1L,KAAK2L,SAASH,EAAOC,IAEvB1C,UAAYH,EAAOzJ,cACrB,CACL,IAAIyM,EAAWH,EAAMD,EACrBE,EAAS,IAAI9C,EAAOgD,OAAUzK,GAC9B,IAAK,IAAI3C,EAAI,EAAGA,EAAIoN,IAAYpN,EAC9BkN,EAAOlN,GAAKwB,KAAKxB,EAAIgN,GAIzB,OAAOE,GAGT9C,EAAOzJ,UAAU6E,KAAO,SAAejF,EAAQ8M,EAAaL,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMzL,KAAKwC,QAC9BqJ,GAAe9M,EAAOyD,SAAQqJ,EAAc9M,EAAOyD,QAClDqJ,IAAaA,EAAc,GAC5BJ,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBzM,EAAOyD,QAAgC,IAAhBxC,KAAKwC,OAAc,OAAO,EAGrD,GAAIqJ,EAAc,EAChB,MAAM,IAAIpH,WAAW,6BAEvB,GAAI+G,EAAQ,GAAKA,GAASxL,KAAKwC,OAAQ,MAAM,IAAIiC,WAAW,6BAC5D,GAAIgH,EAAM,EAAG,MAAM,IAAIhH,WAAW,2BAG9BgH,EAAMzL,KAAKwC,SAAQiJ,EAAMzL,KAAKwC,QAC9BzD,EAAOyD,OAASqJ,EAAcJ,EAAMD,IACtCC,EAAM1M,EAAOyD,OAASqJ,EAAcL,GAGtC,IACIhN,EADA0G,EAAMuG,EAAMD,EAGhB,GAAIxL,OAASjB,GAAUyM,EAAQK,GAAeA,EAAcJ,EAE1D,IAAKjN,EAAI0G,EAAM,EAAG1G,GAAK,IAAKA,EAC1BO,EAAOP,EAAIqN,GAAe7L,KAAKxB,EAAIgN,QAEhC,GAAItG,EAAM,MAAS0D,EAAOC,oBAE/B,IAAKrK,EAAI,EAAGA,EAAI0G,IAAO1G,EACrBO,EAAOP,EAAIqN,GAAe7L,KAAKxB,EAAIgN,QAGrC1C,WAAW3J,UAAUqF,IAAIpF,KACvBL,EACAiB,KAAK2L,SAASH,EAAOA,EAAQtG,GAC7B2G,GAIJ,OAAO3G,GAGT0D,EAAOzJ,UAAU2M,KAAO,SAAe3B,EAAKqB,EAAOC,GAEjD,GAAmB,kBAARtB,GAOT,GANqB,kBAAVqB,GACTA,EAAQ,EACRC,EAAMzL,KAAKwC,QACa,kBAARiJ,IAChBA,EAAMzL,KAAKwC,QAEM,IAAf2H,EAAI3H,OAAc,CACpB,IAAIuJ,EAAO5B,EAAIS,WAAW,GACtBmB,EAAO,MACT5B,EAAM4B,QAGc,kBAAR5B,IAChBA,GAAY,KAId,GAAIqB,EAAQ,GAAKxL,KAAKwC,OAASgJ,GAASxL,KAAKwC,OAASiJ,EACpD,MAAM,IAAIhH,WAAW,sBAGvB,GAAIgH,GAAOD,EACT,OAAOxL,KAQT,IAAIxB,EACJ,GANAgN,KAAkB,EAClBC,OAActK,IAARsK,EAAoBzL,KAAKwC,OAASiJ,IAAQ,EAE3CtB,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAK3L,EAAIgN,EAAOhN,EAAIiN,IAAOjN,EACzBwB,KAAKxB,GAAK2L,MAEP,CACL,IAAIQ,EAAQ/B,EAAOoB,SAASG,GACxBA,EACA,IAAIvB,EAAOuB,GACXjF,EAAMyF,EAAMnI,OAChB,IAAKhE,EAAI,EAAGA,EAAIiN,EAAMD,IAAShN,EAC7BwB,KAAKxB,EAAIgN,GAASb,EAAMnM,EAAI0G,GAIhC,OAAOlF,MAGT4I,EAAOnJ,OAAS,SAAiB8F,EAAM/C,GACrC,IAAKmG,EAAQpD,GACX,MAAM,IAAI9D,UAAU,+CAGtB,GAAoB,IAAhB8D,EAAK/C,OACP,OAAOoH,EAAa,KAAM,GAG5B,IAAIpL,EACJ,QAAe2C,IAAXqB,EAEF,IADAA,EAAS,EACJhE,EAAI,EAAGA,EAAI+G,EAAK/C,SAAUhE,EAC7BgE,GAAU+C,EAAK/G,GAAGgE,OAItB,IAAI0H,EAASd,EAAY,KAAM5G,GAC3BwJ,EAAM,EACV,IAAKxN,EAAI,EAAGA,EAAI+G,EAAK/C,SAAUhE,EAAG,CAChC,IAAIiL,EAAMlE,EAAK/G,GACf,IAAKoK,EAAOoB,SAASP,GACnB,MAAM,IAAIhI,UAAU,+CAEtBgI,EAAIzF,KAAKkG,EAAQ8B,GACjBA,GAAOvC,EAAIjH,OAEb,OAAO0H,GAGTtB,EAAOY,WAAaA,EAEpBZ,EAAOzJ,UAAU8M,WAAY,EAC7BrD,EAAOoB,SAAW,SAAmBkC,GACnC,QAAe,MAALA,IAAaA,EAAED,YAG3B5N,EAAOC,QAAQ6N,MAAQ,SAAU9B,GAC/B,IAAIH,EAAS,IAAItB,EAAOyB,GAExB,OADAH,EAAO4B,KAAK,GACL5B,GAGT7L,EAAOC,QAAQ+J,KAAO,SAAU3B,GAC9B,OAAO,IAAIkC,EAAOlC,K,qrCCtgBP,EAAiB,CAC5B,kBACA,iBACA,eACA,UACA,aACA,cACA,eACA,iBACA,kBACA,mBAGW,EAAiB,CAC5B,sBACA,sBACA,WACA,oBACA,uBACA,uBACA,uBACA,uBACA,gBACA,0BACA,6BACA,wBACA,4BACA,4BACA,oBACA,qBAKW,EAAiB,CAC5B,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,SACH,GAAI,S,2BClCA,SAAU,EAA2B,GACzC,OAAO,gBAAuB,IAAIoC,WAAWsD,IAOzC,SAAU,EAAwB,EAAqB,GAC3D,OAAO,aAAoB,IAAI,WAAW,IAAU,GAahD,SAAU,EAA2B,GACzC,OAAO,gBAAuB,GAAK,OA2C/B,SAAU,EAAwB,GACtC,OAAO,aAAoB,GAAK,OAyB5B,SAAU,EAAmB,EAAsB,GACvD,IAAM,EAAM,kBAAyB,cAAqB,IAAI,IAAG,GAAK,SAAS,MAC/E,OAAO,EAAW,EAAM,eAAsB,G,aC5F1C,SAAU,EAAY,GAC1B,OAAO,cAAqB,GAiBvB,IAAM,E,OAAY,UAEnB,SAAU,IAWd,OAVwB,SAAC,EAAS,GAChC,IACE,EAAI,EAAI,GACR,IAAM,GACN,GAAU,GAAJ,EAAU,IAAU,GAAJ,EAAS,EAAK,KAAK,UAAgB,GAAJ,EAAS,GAAK,GAAM,GAAG,SAAS,IAAM,KAI7F,OAAO,EARe,GAiCpB,SAAU,EAAU,EAAiB,GACzC,IAAI,EACE,EAXF,SAA0B,EAAiB,GAC/C,IAAI,EACE,EAAU,EAAe,GAI/B,OAHI,IACF,EAAM,kBAAc,EAAd,yBAAsC,IAEvC,EAKW,CAAgB,EAAS,EAAI,UAM/C,OALI,EAAI,QAAU,EAAI,OAAO,GAC3B,EAAS,EAAI,OAAO,GACX,IACT,EAAS,GAEJ,EC9BH,SAAU,EAAY,EAAY,GACtC,OAAO,cAAqB,EAAO,GAO/B,SAAU,EAAiB,GAC/B,MAAgC,qBAAlB,EAAO,OAGjB,SAAU,EAAyB,GACvC,MAAgC,qBAAlB,EAAO,OAGjB,SAAU,EAAuB,GACrC,MAA+B,qBAAjB,EAAO,MAGjB,SAAU,EAAgB,GAC9B,MAA+B,qBAAjB,EAAO,MAGjB,SAAU,EAAgB,GAC9B,OAAO,EAAe,SAAS,IAAU,EAAM,WAAW,OAGtD,SAAU,EAAgB,GAC9B,QAAI,EAAQ,OAAO,WAAW,SAG1B,EAAe,SAAS,EAAQ,QC/DhC,SAAU,EAAkB,GAChC,EAAU,0BAAgB,EAAQ,eAGlC,IAFA,IH2CkC,EG3C5B,EAAO,0BAAgB,sBH2CK,EG3C0B,EH4CrD,eAAsB,MG3CzB,EAAW,GACN,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAC9B,SAAS,EAAK,GAAI,IAAM,EAC1B,GAAY,EAAQ,GAAG,cAEvB,GAAY,EAAQ,GAGxB,OAAO,uBAAa,GAiBhB,SAAUC,EAAkBC,GHqB5B,IAA2B,EAAc,EE1ClB,ECyB3B,ODzB2B,ECsBT,IDrBA,EAAM,SCqBM,EAAY,EAAO,MAC/C,EAAO,IHmBsB,EGnBA,EAAO,GHoB/B,YAAmB,GAAO,KGlB1B,EAGH,SAAU,EAAqB,GACnC,GAA2B,qBAAhB,EAAO,MAAwC,MAAhB,EAAO,KAAc,OAAO,EAEtE,GAA2B,qBAAhB,EAAO,SAxBW,EAwB6B,EAAO,OArBZ,OAA1C,EAAQ,cAAc,UAAU,EAAG,KAElC,uBAAuB,KAAK,KAE7B,sBAAsBC,KAAKC,KAAY,sBAAsBD,KAAKC,IAGpE,IAAY,EAAkB,IAerC,MAAM,IAAI,MAAJ,yDAzBoB,IAAC,EA4B7B,SAAS,EAAe,GACtB,IFhCkC,EEgC9B,EAAS,EAWb,OAVqB,kBAAV,GAAwC,kBAAV,IDzCvC,SAAwB,GAC5B,MAAiB,KAAV,GAAkC,kBAAV,GAAuC,KAAjB,EAAM,OCwCO,CAAc,MACvE,EAAY,GAEW,kBAAV,IAChB,EAAS,EAAY,IAFrB,EAAS,EAAmB,IAKV,kBAAX,IFxCuB,EEyCD,EAA/B,EFxCG,wBAA+B,eAAsB,KE0CnD,EAGT,IAAM,EAAY,CAChB,KAAM,EAAY,EAAO,MACzB,GAAyB,qBAAd,EAAO,QAAqB,EAAY,EAAY,EAAO,IACtE,SAAqC,qBAApBC,EAAO,SAA2B,GAAK,EAAe,EAAO,UAC9E,IACwB,qBAAf,EAAO,IACiB,qBAApB,EAAO,SACZ,GACA,EAAe,EAAO,UACxB,EAAe,EAAO,KAC5B,MAA+B,qBAAjB,EAAO,MAAwB,GAAK,EAAe,EAAO,OACxE,MAA+B,qBAAjB,EAAO,MAAwB,GAAK,EAAe,EAAO,OACxE,KAA6B,qBAAhB,EAAO,KAAuB,GAAK,EAAY,EAAO,OAAS,MAGxE,EAAW,CAAC,WAAY,MAAO,QAAS,SAW9C,OAVA,OAAO,KAAK,GAAW,SAAQ,SAAC,IAED,qBAAnB,EAAU,IACW,kBAAnB,EAAU,KAAsB,EAAU,GAAK,OAAO,SAChE,EAAS,SAAS,WAEX,EAAU,MAId,E,UC9DH,SAAU,EACd,GAEA,IAAM,EAAU,EAAM,SAAW,6BAC7B,GAAQ,KACZ,GAAI,IAAU,EAAM,KAClB,OAAQ,GACN,IAAK,cACH,GAAQ,MACR,MACF,IAAK,kBACHV,GAAQ,MACR,MACF,IAAK,mBACH,GAAQ,MACR,MACF,IAAK,iBACH,GAAQ,MACR,MACF,IAAK,iBACH,GAAQ,MACR,MACF,QACE,GAAQ,KAQd,MAJe,CACb,OACA,W,aCxDE,SAAU,EAAe,GAC7B,IAAM,GAAoD,IAAtB,EAAI,QAAQ,KAAc,EAAI,QAAQ,UAAO,EAIjF,MAF+C,qBAAZ,EAA0B,EAAI,OAAO,GAAW,GAK/E,SAAU,EAAoB,EAAqB,GACvD,IAAI,EAAc,EAAiB,GAMnC,OAFA,EASI,SAA4B,GAChC,OAAO,YAA2B,GAVpB,CAFd,EAAW,+BAAQ,GAAgB,IAO/B,SAAU,EAAiB,GAC/B,OAAO,QAAuB,GCb1B,SAAU,EAAuB,GACrC,MAAgC,qBAAlB,EAAO,OAGjB,SAAU,EAAsB,GACpC,IAAM,EAAoB,EAAI,QAAQ,KAEhC,GAAoD,IAAtB,EAAI,QAAQ,KAAc,EAAI,QAAQ,UAAO,EAE3E,EAAmB,EAAI,UAAU,EAAG,GAiB1C,IAAM,EAbN,SAA6B,GAC3B,IAEM,EAAS,EAAK,MAFF,KASlB,MALuB,CACrB,eAAgB,EAAO,GACvB,QAAS,SAAS,EAAO,GAAI,KAMa,CAfzB,EAAI,UAAU,EAAY,EAAG,IA8BlD,IAAM,EAXN,SAA0B,GACxB,IAAM,EAAS,EAAiB,GAOhC,MALuC,CACrC,IAAK,EAAO,KAAO,GACnB,OAAQ,EAAO,QAAU,IAMW,CAbO,qBAAZ,EAA0B,EAAI,OAAO,GAAW,IAqBnF,OANY,6BACV,YACG,GACA,K,83EXjDD,EAAU,MACV,EAAW,OAQX,EAAc,IAId,SAAU,EAAc,GAC5B,OAAO,IAAI,WAAW,GAGlB,SAAU,EAAY,GAA6B,IAAhB,EAAgB,wDACjD,EAAM,EAAI,SAAS,GACzB,OAAO,EAAW,GAAa,GAAO,EAGlC,SAAU,EAAa,GAC3B,OAAO,EAAI,SAAS,GAGhB,SAAU,EAAe,GAC7B,OAAO,EAAI,WAAW,EAAG,EAAI,QAGzB,SAAU,EAAe,GAC7B,OAAO,EAAc,EAAc,IAK/B,SAAU,EAAc,GAC5B,OAAO,IAAmB,GAGtB,SAAU,EAAW,GAAiC,IAAhB,EAAgB,wDAC1D,OAAO,EAAY,EAAc,GAAM,GAGnC,SAAU,EAAY,GAC1B,OAAO,EAAa,EAAc,IAG9B,SAAU,EAAc,GAC5B,OAAO,EAAe,EAAc,IAGhC,SAAU,EAAc,GAC5B,OAAO,MAAM,KAAK,GACf,IAAI,GACJ,KAAK,IAKJ,SAAU,EAAY,GAC1B,OAAO,EAAO,KAAK,GAAgB,GAAM,GAGrC,SAAU,EAAW,GACzB,OAAO,EAAc,EAAY,IAG7B,SAAU,EAAU,GACxB,OAAO,EAAa,EAAY,IAG5B,SAAU,EAAY,GAC1B,OAAO,EAAc,EAAW,IAG5B,SAAU,EAAY,GAC1B,OAAO,EAAc,EAAW,IAK5B,SAAU,EAAa,GAC3B,OAAO,EAAO,KAAK,EAAM,GAGrB,SAAU,EAAY,GAC1B,OAAO,EAAc,EAAa,IAG9B,SAAU,EAAU,GAA8B,IAAhB,EAAgB,wDACtD,OAAO,EAAY,EAAa,GAAO,GAGnC,SAAU,EAAa,GAC3B,IAAM,EAAM,SAAS,EAAM,IAE3B,OA2NF,SAAgB,EAAoB,GAClC,IAAK,EACH,MAAM,IAAI,MAAM,GA9NlB,EAoNF,SAAqB,GACnB,MAAwB,qBAAV,EAIN,CAzNS,GAAM,8CAChB,EAGH,SAAU,EAAa,GAC3B,OAAO,EAAc,EAAY,IAK7B,SAAU,EAAe,GAC7B,OAAO,EAAe,EAAe,IAGjC,SAAU,EAAc,GAC5B,OAAO,EAAc,EAAe,IAGhC,SAAU,EAAY,EAAa,GACvC,OAAO,EAAY,EAAe,GAAM,GAGpC,SAAU,EAAa,GAC3B,gBAAU,GAGN,SAAU,EAAe,GAE7B,OAAO,IADM,IAAQ,GAAG,SAAS,IAM7B,SAAU,EAAe,GAC7B,OAAO,EAAc,EAAc,IAG/B,SAAU,EAAc,GAC5B,OAAO,IAAI,WAAW,EAAW,GAAK,KAAI,YAAC,OAAI,SAAS,EAAG,OAGvD,SAAU,EAAY,EAAsB,GAChD,OAAO,EAAW,EAAc,GAAM,GAGlC,SAAU,EAAa,GAC3B,OAAO,EAAY,EAAc,IAG7B,SAAU,EAAe,GAC7B,OAAO,EAAc,EAAc,IAK/B,SAAU,EAAe,GAC7B,QAAmB,kBAAR,IAAqB,IAAI,OAAO,WAAW,KAAK,KAGvD,EAAI,OAAS,IAAM,EAMnB,SAAU,EAAY,EAAU,GACpC,QAAmB,kBAAR,IAAqB,EAAI,MAAM,wBAGtC,GAAU,EAAI,SAAW,EAAI,EAAI,GAMjC,SAAU,EAAS,GACvB,OAAO,EAAO,SAAS,GAGnB,SAAU,EAAa,GAC3B,OAAO,IAAc,OAAO,KAAS,EAAS,GAG1C,SAAU,EAAc,GAC5B,OACG,EAAa,KACb,EAAS,IACgB,qBAAnB,EAAI,WAIT,SAAU,EAAQ,GACtB,OAAI,EAAS,GAxLK,SA0LP,EAAa,GAxLD,cA0LZ,EAAc,GAzLD,eA2Lb,MAAM,QAAQ,GA7LR,eAgMD,EAIZ,SAAU,EAAY,GAC1B,OAAI,EAAe,GAxML,SA2MV,EAAY,GACP,EAEF,EAKH,SAAU,IAA+B,2BAAd,EAAc,yBAAd,EAAc,gBAC7C,IAAM,EAAS,EAAO,OAAO,GAC7B,OAAO,EAGH,SAAU,IAAkC,IAChD,IAAI,EAAmB,GADyB,mBAAlB,EAAkB,yBAAlB,EAAkB,gBAGhD,OADA,EAAK,SAAQ,YAAG,OAAK,EAAS,EAAO,OAAO,MAAM,KAAK,OAChD,IAAI,WAAJ,YAAmB,IAGtB,SAAU,EAAS,EAAc,GACrC,IAAM,EAAO,EAAK,OAAS,EAI3B,OAHI,EAAO,IACT,EAAO,EAAK,MAAM,IAEb,EAGH,SAAU,EAAU,EAAc,GACtC,OAAO,EAAK,MAAM,EAAG,GAGjB,SAAU,EAAe,GAA4B,IAAZ,EAAY,uDAAD,EAClD,EAAY,EAAS,EAC3B,OAAO,GACD,EAAS,GAAa,EAAY,EAAW,EAC/C,EAGA,SAAU,EAAW,GAAyB,IAAZ,EAAY,uDAAD,EAC3C,EAAQ,GAAc,GAAK,MAAM,IAAI,OAAJ,YAAgB,EAAhB,KAA6B,OACpE,OAAO,MAAM,KAAK,GAAS,IAGvB,SAAU,GAAU,GACxB,OAAO,EAAW,GACf,IAAI,IACJ,KAAK,IAGJ,SAAU,GAAQ,GACtB,OAAO,EAAY,GAAU,EAAY,KAGrC,SAAU,GACd,GAEqB,IADrB,EACqB,uDADV,EACX,EAAqB,uDAAX,EAEV,OAAO,GAAQ,EAAK,EAAe,EAAI,OAAQ,GAAW,GAGtD,SAAU,GACd,EACA,GACqB,IAArB,EAAqB,uDAAX,EAEV,OAAO,GAAU,EAAK,GAAQ,EAAM,GAGhC,SAAU,GACd,EACA,GACqB,IAArB,EAAqB,uDAAX,EAEV,OAAO,GAAU,EAAK,GAAQ,EAAO,GAGjC,SAAU,GAAgB,GAC9B,OAAO,EAAI,QAAQ,MAAO,IAGtB,SAAU,GAAa,GAC3B,OAAO,EAAI,WAAW,MAAQ,EAAvB,YAAkC,GAGrC,SAAU,GAAY,GAM1B,OAJA,EAAM,GADN,EAAM,GAAgB,GACG,MAEvB,EAAM,GAAa,IAEd,EAGH,SAAU,GAAsB,GACpC,IAAM,EAAW,EAAI,WAAW,MAGhC,OADA,GADA,EAAM,GAAgB,IACZ,WAAW,GAAe,EAAI,UAAU,GAAK,EAChD,EAAW,GAAa,GAAO,EAmBxC,SAAS,GAAc,GACrB,OAAO,EACJ,MAAM,IACN,UACA,KAAK,IAGV,SAAS,GACP,EACA,EACA,GACqB,IAArB,EAAqB,uDAAX,EAEJ,EAAO,EAAS,EAAI,OACtB,EAAS,EACb,GAAI,EAAO,EAAG,CACZ,IAAM,EAAM,EAAQ,OAAO,GAC3B,EAAS,EAAO,EAAM,EAAM,EAAM,EAEpC,OAAO,I,8CY1VT,IAAI5N,EAA6B,EAAQ,KA2DzCE,EAAOC,QAzDP,SAAoCoO,EAAGC,GACrC,IAAIC,EAAuB,qBAAX9B,QAA0B4B,EAAE5B,OAAO+B,WAAaH,EAAE,cAElE,IAAKE,EAAI,CACP,GAAIjJ,MAAMgF,QAAQ+D,KAAOE,EAAKzO,EAA2BuO,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAElK,OAAqB,CAC/GoK,IAAIF,EAAIE,GACZ,IAAIpO,EAAI,EAEJsO,EAAI,aAER,MAAO,CACLC,EAAGD,EACH/I,EAAG,WACD,OAAIvF,GAAKkO,EAAElK,OAAe,CACxBwK,MAAM,GAED,CACLA,MAAM,EACNnN,MAAO6M,EAAElO,OAGbkK,EAAG,SAAWuE,GACZ,MAAMA,GAERpG,EAAGiG,GAIP,MAAM,IAAIrL,UAAU,yIAGtB,IAEIjB,EAFA0M,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLJ,EAAG,WACDH,EAAKA,EAAGxN,KAAKsN,IAEf3I,EAAG,WACD,IAAIqJ,EAAOR,EAAGS,OAEd,OADAH,EAAmBE,EAAKJ,KACjBI,GAET1E,EAAG,SAAW4E,GACZH,GAAS,EACT3M,EAAM8M,GAERzG,EAAG,WACD,IACOqG,GAAoC,MAAhBN,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAIO,EAAQ,MAAM3M,MAMmBnC,EAAOC,QAAQG,YAAa,EAAMJ,EAAOC,QAAiB,QAAID,EAAOC,S,iCZ3DlH,y4C,yNIIaiP,EAAiB,iBACjBC,EAAe,eAEf,EAAuB,EAAE,OAAQ,OAAQ,OAAQ,OAAQ,OACzD,EAA0B,EAAE,MAAQ,OAEpC,GAAkB,mBAVJ,cAWV,CAAE,MAAO,MAAO,QAAS,gBADX,cATA,kBAWV,CAAE,MAAO,MAAO,QAAS,oBAFf,cARC,mBAWV,CAAEzB,MAAO,MAAO/G,QAAS,qBAHhB,cAPD,iBAWV,CAAE+G,MAAO,MAAO/G,QAAS,mBAJd,cAK5B,EAAiB,CAAE,MAAO,MAAO,QAAS,mBALd,cAM5B,EAAe,CAAE,MAAO,KAAO,QAAS,iBANZ,I,iCST/B,qJAYM,SAAU,EAAoB,GAClC,OAAO,IAAqB,SAAS,GAOjC,SAAU,EAAS,GACvB,OAAK,OAAO,KAAK,KAAoB,SAAS,GAGvC,IAAmB,GAFjB,IAAmB,KAKxB,SAAU,EAAe,GAC7B,IAAM,EAAQ,OAAO,OAAO,KAAoB,MAAK,YAAC,OAAI,EAAE,OAAS,KACrE,OAAK,GACI,IAAmB,KAiCxB,SAAU,EAAqB,EAAU,EAAa,GAC1D,OAAO,EAAE,QAAQ,SAAS,0BAA4B,EAAE,QAAQ,SAAS,wBACrE,IAAI,MAAJ,sBAAyB,EAAzB,uBAA4C,IAC5C,I,iCbnEN,q1B,uFMEsB,EAAtB,kD,kBQEA3G,EAAOC,QAJP,SAAyBC,GACvB,GAAIoF,MAAMgF,QAAQpK,GAAM,OAAOA,GAGCF,EAAOC,QAAQG,YAAa,EAAMJ,EAAOC,QAAiB,QAAID,EAAOC,S,kBC0BvGD,EAAOC,QA9BP,SAA+BC,EAAKC,GAClC,IAAIiP,EAAY,MAAPlP,EAAc,KAAyB,qBAAXuM,QAA0BvM,EAAIuM,OAAO+B,WAAatO,EAAI,cAE3F,GAAU,MAANkP,EAAJ,CACA,IAIIC,EAAIT,EAJJU,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKJ,EAAKA,EAAGrO,KAAKb,KAAQqP,GAAMF,EAAKD,EAAGJ,QAAQL,QAC9CW,EAAKpL,KAAKmL,EAAG7N,QAETrB,GAAKmP,EAAKnL,SAAWhE,GAH4BoP,GAAK,IAK5D,MAAOpN,GACPqN,GAAK,EACLZ,EAAKzM,EACL,QACA,IACOoN,GAAsB,MAAhBH,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAII,EAAI,MAAMZ,GAIlB,OAAOU,IAG+BtP,EAAOC,QAAQG,YAAa,EAAMJ,EAAOC,QAAiB,QAAID,EAAOC,S,kBC1B7GD,EAAOC,QAJP,WACE,MAAM,IAAImD,UAAU,8IAGapD,EAAOC,QAAQG,YAAa,EAAMJ,EAAOC,QAAiB,QAAID,EAAOC,S,iRCYlG,SAAU,EAAQ,GACtB,OAAO,IAAS,IACZ,CAAE,OAAQ,IAAY,KAAM,KAC5B,CACE,KAAM,CAAE,KAAM,KACd,KAAM,KAIR,SAAU,EAAO,GACrB,OAAO,IAAS,IACZ,CAAC,IAAY,KACb,CAAC,IAAS,KAWhB,SAAsB,EAAtB,kC,sDAAO,WACL,GADK,oGAEL,EAFK,+BAEU,IAFV,kBAIG,oBAA8B,UACpC,MACA,EACA,EAAQ,IACR,EACA,EAAO,KATJ,2C,wBAaP,SAAsB,EAAtB,sC,sDAAO,WACL,EACA,EACA,GAHK,4FAKC,EAAS,oBALV,SAMmB,EAAiB,EAAK,KANzC,cAMC,EAND,gBAOgB,EAAO,QAC1B,CACE,KACA,KAAM,KAER,EACA,GAbG,cAOC,EAPD,yBAeE,IAAI,WAAW,IAfjB,4C,sBAkBP,SAAsB,EAAtB,sC,sDAAO,WACL,EACA,EACA,GAHK,4FAKC,EAAS,oBALV,SAMmB,EAAiB,EAAK,KANzC,cAMC,EAND,gBAOgB,EAAO,QAC1B,CACE,KACA,KAAM,KAER,EACA,GAbG,cAOC,EAPD,yBAeE,IAAI,WAAW,IAfjB,4C,sBAkBP,SAAsB,EAAtB,oC,sDAAO,WACL,EACA,GAFK,4FAIC,EAAS,oBAJV,SAKmB,EAAiB,EAAK,KALzC,cAKC,EALD,gBAMmB,EAAO,KAC7B,CACE,OAAQ,IACR,KAAM,KAER,EACA,GAZG,cAMC,EAND,yBAcE,IAAI,WAAW,IAdjB,4C,sBAiBP,SAAsB,EAAtB,oC,sDAAO,WACL,EACA,GAFK,4FAIC,EAAS,oBAJV,SAKmB,EAAiB,EAAK,KALzC,cAKC,EALD,gBAMmB,EAAO,KAC7B,CACE,OAAQ,IACR,KAAM,KAER,EACA,GAZG,cAMC,EAND,yBAcE,IAAI,WAAW,IAdjB,4C,sBAiBP,SAAsB,EAAtB,kC,sDAAO,WAA6B,GAA7B,0FACC,EAAS,oBADV,SAEgB,EAAO,OAC1B,CACE,KAAM,KAER,GANG,cAEC,EAFD,yBAQE,IAAI,WAAW,IARjB,4C,sBAWP,SAAsB,EAAtB,kC,sDAAO,WAA6B,GAA7B,0FACC,EAAS,oBADV,SAEgB,EAAO,OAC1B,CACE,KAAM,KAER,GANG,cAEC,EAFD,yBAQE,IAAI,WAAW,IARjB,4C,yDCrIP,8Q,kBCAA,IAAI8J,EAAW,GAAGA,SAElB/J,EAAOC,QAAUqF,MAAMgF,SAAW,SAAUpK,GAC1C,MAA6B,kBAAtB6J,EAAShJ,KAAKb,K,kBCHvBD,EAAQwP,EAAI,CAAExG,IAAK,GACnBhJ,EAAQyP,EAAI,CAAEzG,IAAK,GACnBhJ,EAAQ0P,EAAI,CAAE1G,IAAK,GACnBhJ,EAAQ2P,EAAI,CAAE3G,IAAK,GA+BnBhJ,EAAQwJ,QAAU,SAAkBoG,GAClC,OAAOA,GAA8B,qBAAdA,EAAM5G,KAC3B4G,EAAM5G,KAAO,GAAK4G,EAAM5G,IAAM,GAGlChJ,EAAQ+J,KAAO,SAAexI,EAAOyI,GACnC,GAAIhK,EAAQwJ,QAAQjI,GAClB,OAAOA,EAGT,IACE,OAxCJ,SAAqB0I,GACnB,GAAsB,kBAAXA,EACT,MAAM,IAAI5F,MAAM,yBAKlB,OAFY4F,EAAOC,eAGjB,IAAK,IACL,IAAK,MACH,OAAOlK,EAAQwP,EAEjB,IAAK,IACL,IAAK,SACH,OAAOxP,EAAQyP,EAEjB,IAAK,IACL,IAAK,WACH,OAAOzP,EAAQ0P,EAEjB,IAAK,IACL,IAAK,OACH,OAAO1P,EAAQ2P,EAEjB,QACE,MAAM,IAAItL,MAAM,qBAAuB4F,IAelCE,CAAW5I,GAClB,MAAO6I,GACP,OAAOJ,K,+oDClCL,SAAU,EACd,GAEA,OAAO,YAAO,GAGV,SAAU,IACd,IAAM,EAAM,IACZ,OAAO,GAAO,EAAI,GAAK,EAAI,QAAK,EAG5B,SAAU,IACd,IAAM,EAAK,IACX,QAAO,GAAK,EAAG,cAAc,SAAS,WAGlC,SAAU,IACd,IAAM,EAAK,IACX,QAAO,IACH,EAAG,cAAc,SAAS,QACvB,EAAG,cAAc,SAAS,QAAU,UAAU,eAAiB,GAIlE,SAAU,IAEd,QADW,MACC,KAAe,KAGvB,SAAU,IACd,IAAM,EAAM,IAEZ,SADe,IAAO,EAAI,OAAkC,SAA3B,EAAI,KAAK,cAItC,SAAU,IAEd,OADgB,OAAc,IAIzB,IAAM,EAAgB,gBAEhB,EAAuB,uBAEvB,EAAqB,qBAErB,EAAc,cAEd,EAAsB,sBAEtB,EAAe,eAEf,EAAqB,qBAErB,EAAc,cAEd,EAAmB,mBAEnB,EAAY,YAEZ,EAAyB,yBAEzB,EAAkB,kBAEzB,SAAU,IACd,OAAO,sB,aC5EI,EAAgB,IAEhB,EAAoB,ICD3B,SAAU,EAAS,EAAa,GACpC,IAAM,EAAM,EAAkB,GACxB6F,EAAQ,IACV,GACF,EAAM,QAAQ,EAAK,GAIjB,SAAU,EAAS,GACvB,IACI,EAAqB,KACnB,EAAQ,IAKd,OAJI,IACF,EAAM,EAAM,QAAQ,IAEf,EAAM,EAAc,GAAO,EAI9B,SAAU,EAAY,GAC1B,IAAM,EAAQ,IACV,GACF,EAAM,WAAW,GCrBd,IAAM,EAAsB,gCAE7B,SAAU,EAAgB,EAAa,GAC3C,IAAM,EAAqB,mBAAmB,GAC9C,OAAO,EAAM,cAAN,UACA,EAAM,cADN,mBAC8B,GACjC,EAAM,SAAN,UACG,EAAM,UADT,OACoB,EAAM,SAAS,SAAS,KAAO,KAAO,IAD1D,kBACuE,GACvE,GAGA,SAAU,EAAmB,GACjC,IAAM,EAAW,EAAK,KAAK,MAAM,KAAK,GACtC,EAAS,EAAmB,+BAAO,GAAI,CAAE,KAAM,KAG3C,SAAU,EACd,EACA,GAEA,OAAO,EAAS,QAAO,SAAC,GAAD,OACrB,EAAM,KAAK,cAAc,SAAS,EAAK,kBACvC,GAGE,SAAU,EAAsB,EAA2B,GAC/D,IAAI,EAAQ,EAIZ,OAHI,IACF,EAAQ,EAAU,KAAI,SAAC,GAAD,OAAkB,EAAuB,EAAU,MAAO,OAAO,UAElF,EChCT,IAAM,EAAU,qCAEV,SAAU,IACd,OAAO,EAAU,kBAGb,SAAU,IACd,OAAO,EAAU,gBAGb,SAAU,EAA0B,GAA2D,I,EAAzC,EAAyC,uDAAR,SAC3F,MAAO,CACL,KAAM,EAAM,MAAQ,GACpB,UAAW,EAAM,SAAS,WAAa,GACvC,MAAO,EAAM,SAAS,OAAO,SAAW,GACxC,KAAwB,QAAlB,IAAM,UAAU,UAAE,QAAI,GAC5B,cAAe,EAAM,GAAU,WAAa,GAC5C,SAAU,EAAM,GAAU,QAAU,IAIlC,SAAU,EAAqB,GAAiE,IAAzC,EAAyC,uDAAR,SAC5F,OAAO,OAAO,OAAY,GACvB,QAAO,YAAK,QAAM,EAAM,GAAU,aAAe,EAAM,GAAU,UACjE,KAAI,SAAC,GAAD,OAAW,EAA0B,EAAO,Q,ybC1B9C,IAOMC,EAAa,ICLb,EDIa,ICHb,EDGa,ICDb,EAAmB,UACnB,EAAiB,cAAU,GAC3B,EAAe,OAEf,EAAsB,UACtB,EAAsB,UCVtBC,GDYa,cAAU,EAAV,QACC,aAAS,GCbV,WACbC,EAAa,UAEb,EAAU,OACV,EAAY,U,iCCJzB,6nBAGwB,U,iCCHxB,4HAIM,SAAU,IAGd,OAFa,KAAK,MAAQ,KAAK,IAAI,GAAI,GACzB,KAAK,MAAM,KAAK,SAAW,KAAK,IAAI,GAAI,IAIlD,SAAU,EACd,EACA,EACA,GAEA,MAAO,CACL,GAAI,GAAM,IACV,QAAS,MACT,SACA,UAYE,SAAU,EAAmB,EAAY,GAC7C,MAAO,CACL,KACA,QAAS,MACT,MAAO,EAAmB,IAIxB,SAAU,EAAmB,GACjC,MAAqB,qBAAV,EACF,YAAS,MAEG,kBAAV,IACT,EAAK,+BACA,YAAS,MAAa,CACzB,QAAS,KAGT,YAAoB,EAAM,QAC5B,EAAQ,YAAe,EAAM,OAExB,K,mECpDT,0W,sKCGsB,EAAtB,kDAGE,WAAY,GAAU,wCAHxB,uBAAiD,KAiC3B,EAAtB,kDAGE,WAAY,GAAuC,wCAHrD,uBAtBA,kDACE,qDADF,uBAAmD,O,qDtBdnD,kCAUA,SAAS,EAAmB,EAAa,GACvC,IAAM,EAPR,SAAwB,GACtB,IAAM,EAAU,EAAI,MAAM,IAAI,OAAO,QAAS,OAC9C,GAAK,GAAY,EAAQ,OACzB,OAAO,EAAQ,GAIE,CAAe,GAChC,MAAwB,qBAAb,GACJ,IAAI,OAAO,GAAO,KAAK,GAG1B,SAAU,EAAU,GACxB,OAAO,EAAmB,EAjBT,c,iCHUb,SAAU,EAAiB,GAC/B,MAAO,OAAQ,GAAW,YAAa,GAA+B,QAApB,EAAQ,QAOtD,SAAU,EAA2B,GACzC,OAAO,EAAiB,KAGpB,SAAmC,GACvC,MAAO,WAAY,EAJkB,CAAgB,IAAY,EAAe,IAO5E,SAAU,EAAe,GAC7B,MAAO,UAAW,EAjBpB,qE,iCPVM,SAAU,EAAuB,GACrC,GAAqB,kBAAV,EACT,MAAM,IAAI,MAAJ,sDAAyD,IAEjE,IACE,OAAO,KAAK,MAAM,GAClB,SACA,OAAO,GAIL,SAAU,EAAkB,GAChC,MAAwB,kBAAV,EAAqB,EAAQ,KAAK,UAAU,GAZ5D,qE,iCAAA,SAAgB,EAAiB,GAC/B,IAAI,OAAqB,EAIzB,MAHsB,qBAAX,QAAkD,qBAAjB,OAAO,KACjD,EAAM,OAAO,IAER,EAGT,SAAgB,EAAwB,GACtC,IAAM,EAAM,EAAiB,GAC7B,IAAK,EACH,MAAM,IAAI,MAAJ,UAAa,EAAb,8BAER,OAAO,E,oRAbT,kBAQA,yBAQA,gCACE,OAAO,EAA+B,aAGxC,yBACE,OAAO,EAAwB,aAGjC,iCACE,OAAO,EAAgC,cAGzC,0BACE,OAAO,EAAyB,cAGlC,gCACE,OAAO,EAA+B,aAGxC,yBACE,OAAO,EAAwB,aAGjC,8BACE,OAAO,EAA6B,WAGtC,uBACE,OAAO,EAAsB,WAG/B,oCACE,OAAO,EAA8B,iBAGvC,6BACE,OAAO,EAAuB,kB,kBiCrDhCjQ,EAAOC,QAAeiQ,EACtBA,EAAaC,OAASC,EACtBF,EAAaG,MAASC,EAEtB,IAAIvG,EAAW9I,OAAOH,UAAUiJ,SAC5BwG,EAAQ,CACR,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAG7B,SAASL,EAAahQ,GACpB,OACKkQ,EAAmBlQ,IACnBoQ,EAAkBpQ,GAIzB,SAASkQ,EAAmBlQ,GAC1B,OACKA,aAAesQ,WACftQ,aAAeuQ,YACfvQ,aAAewQ,YACfxQ,aAAeuK,YACfvK,aAAeyQ,mBACfzQ,aAAe0Q,aACf1Q,aAAe2Q,aACf3Q,aAAe4Q,cACf5Q,aAAe6Q,aAItB,SAAST,EAAkBpQ,GACzB,OAAOqQ,EAAMxG,EAAShJ,KAAKb,M,iCCvC7B,+CAEM,SAAU,EAAY,GAE1B,OADsB,oBACD,gBAAgB,IAAI,WAAW,M,iCCJtD,iFAEM,SAAU,EACd,EACA,EACA,GAEA,OAAO,YAAkB,EAAI,EAAK,GAG9B,SAAU,EACd,EACA,EACA,GAEA,OAAO,YAAkB,EAAI,EAAK,K,qGCXpC,SAAsB,EAAtB,oC,sDAAO,WACL,EACA,GAFK,iGAIgB,YAAsB,EAAK,GAJ3C,cAIC,EAJD,yBAKE,GALF,4C,yDCJP,qG,uFCMM,SAAU,EAAe,EAAkB,GAC/C,GAAI,EAAK,SAAW,EAAK,OACvB,OAAO,EAGT,IADA,IAAI,EAAM,EACD,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,GAAO,EAAK,GAAK,EAAK,GAExB,OAAe,IAAR,EAdT,mC,uECAA,IAAI8Q,EAAUnI,EAAQ,KAElBoI,EAAkB,CAEpB,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,EACT,EAAG,EAAG,EAAG,GACT,EAAG,EAAG,GAAI,GACV,EAAG,EAAG,GAAI,GACV,EAAG,EAAG,GAAI,GACV,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,EAAG,GAAI,GAAI,GACX,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,IAGVC,EAAqB,CAEvB,EAAG,GAAI,GAAI,GACX,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,GACZ,GAAI,GAAI,GAAI,IACZ,GAAI,GAAI,IAAK,IACb,GAAI,GAAI,IAAK,IACb,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,GAAI,IAAK,IAAK,IACd,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,IACf,IAAK,IAAK,IAAK,KACf,IAAK,IAAK,IAAK,KACf,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,IAAK,KAAM,KAChB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,KACjB,IAAK,KAAM,KAAM,MAWnBjR,EAAQkR,eAAiB,SAAyBjJ,EAASkJ,GACzD,OAAQA,GACN,KAAKJ,EAAQvB,EACX,OAAOwB,EAAgC,GAAf/I,EAAU,GAAS,GAC7C,KAAK8I,EAAQtB,EACX,OAAOuB,EAAgC,GAAf/I,EAAU,GAAS,GAC7C,KAAK8I,EAAQrB,EACX,OAAOsB,EAAgC,GAAf/I,EAAU,GAAS,GAC7C,KAAK8I,EAAQpB,EACX,OAAOqB,EAAgC,GAAf/I,EAAU,GAAS,GAC7C,QACE,SAYNjI,EAAQoR,uBAAyB,SAAiCnJ,EAASkJ,GACzE,OAAQA,GACN,KAAKJ,EAAQvB,EACX,OAAOyB,EAAmC,GAAfhJ,EAAU,GAAS,GAChD,KAAK8I,EAAQtB,EACX,OAAOwB,EAAmC,GAAfhJ,EAAU,GAAS,GAChD,KAAK8I,EAAQrB,EACX,OAAOuB,EAAmC,GAAfhJ,EAAU,GAAS,GAChD,KAAK8I,EAAQpB,EACX,OAAOsB,EAAmC,GAAfhJ,EAAU,GAAS,GAChD,QACE,U,kBC9HNjI,EAAQwJ,QAAU,SAAkBvB,GAClC,OAAQ3G,MAAM2G,IAAYA,GAAW,GAAKA,GAAW,K,kBCPvD,IAAIoJ,EAAU,SAEV3I,EAAQ,mNAMR4I,EAAO,8BAFX5I,EAAQA,EAAM6I,QAAQ,KAAM,QAEsB,kBAElDvR,EAAQoJ,MAAQ,IAAIoI,OAAO9I,EAAO,KAClC1I,EAAQyR,WAAa,IAAID,OAAO,wBAAyB,KACzDxR,EAAQmJ,KAAO,IAAIqI,OAAOF,EAAM,KAChCtR,EAAQ8I,QAAU,IAAI0I,OAAOH,EAAS,KACtCrR,EAAQkJ,aAAe,IAAIsI,OAbR,oBAa6B,KAEhD,IAAIE,EAAa,IAAIF,OAAO,IAAM9I,EAAQ,KACtCiJ,EAAe,IAAIH,OAAO,YAC1BI,EAAoB,IAAIJ,OAAO,0BAEnCxR,EAAQ6J,UAAY,SAAoBgI,GACtC,OAAOH,EAAWzD,KAAK4D,IAGzB7R,EAAQ2J,YAAc,SAAsBkI,GAC1C,OAAOF,EAAa1D,KAAK4D,IAG3B7R,EAAQ4J,iBAAmB,SAA2BiI,GACpD,OAAOD,EAAkB3D,KAAK4D,K,kBC7BhC,SAASC,EAAUC,GAKjB,GAJmB,kBAARA,IACTA,EAAMA,EAAIjI,YAGO,kBAARiI,EACT,MAAM,IAAI1N,MAAM,yCAGlB,IAAI2N,EAAUD,EAAI1P,QAAQkP,QAAQ,IAAK,IAAIU,MAAM,IACjD,GAAID,EAAQ9N,OAAS,GAAwB,IAAnB8N,EAAQ9N,QAAgB8N,EAAQ9N,OAAS,EACjE,MAAM,IAAIG,MAAM,sBAAwB0N,GAInB,IAAnBC,EAAQ9N,QAAmC,IAAnB8N,EAAQ9N,SAClC8N,EAAU3M,MAAMxE,UAAUM,OAAOX,MAAM,GAAIwR,EAAQE,KAAI,SAAUC,GAC/D,MAAO,CAACA,EAAGA,QAKQ,IAAnBH,EAAQ9N,QAAc8N,EAAQ/N,KAAK,IAAK,KAE5C,IAAImO,EAAWC,SAASL,EAAQM,KAAK,IAAK,IAE1C,MAAO,CACLC,EAAIH,GAAY,GAAM,IACtBI,EAAIJ,GAAY,GAAM,IACtBxE,EAAIwE,GAAY,EAAK,IACrBK,EAAc,IAAXL,EACHL,IAAK,IAAMC,EAAQ3P,MAAM,EAAG,GAAGiQ,KAAK,KAIxCtS,EAAQ0S,WAAa,SAAqBC,GACnCA,IAASA,EAAU,IACnBA,EAAQC,QAAOD,EAAQC,MAAQ,IAEpC,IAAIC,EAAmC,qBAAnBF,EAAQE,QACP,OAAnBF,EAAQE,QACRF,EAAQE,OAAS,EAAI,EAAIF,EAAQE,OAE/BC,EAAQH,EAAQG,OAASH,EAAQG,OAAS,GAAKH,EAAQG,WAAQjQ,EAC/DkQ,EAAQJ,EAAQI,OAAS,EAE7B,MAAO,CACLD,MAAOA,EACPC,MAAOD,EAAQ,EAAIC,EACnBF,OAAQA,EACRD,MAAO,CACLI,KAAMlB,EAASa,EAAQC,MAAMI,MAAQ,aACrCC,MAAOnB,EAASa,EAAQC,MAAMK,OAAS,cAEzC1P,KAAMoP,EAAQpP,KACd2P,aAAcP,EAAQO,cAAgB,KAI1ClT,EAAQmT,SAAW,SAAmBC,EAAQC,GAC5C,OAAOA,EAAKP,OAASO,EAAKP,OAASM,EAAuB,EAAdC,EAAKR,OAC7CQ,EAAKP,OAASM,EAAuB,EAAdC,EAAKR,QAC5BQ,EAAKN,OAGX/S,EAAQsT,cAAgB,SAAwBF,EAAQC,GACtD,IAAIN,EAAQ/S,EAAQmT,SAASC,EAAQC,GACrC,OAAOE,KAAKC,OAAOJ,EAAuB,EAAdC,EAAKR,QAAcE,IAGjD/S,EAAQyT,cAAgB,SAAwBC,EAASC,EAAIN,GAQ3D,IAPA,IAAItH,EAAO4H,EAAGC,QAAQ7H,KAClB3D,EAAOuL,EAAGC,QAAQxL,KAClB2K,EAAQ/S,EAAQmT,SAASpH,EAAMsH,GAC/BQ,EAAaN,KAAKC,OAAOzH,EAAqB,EAAdsH,EAAKR,QAAcE,GACnDe,EAAeT,EAAKR,OAASE,EAC7BgB,EAAU,CAACV,EAAKT,MAAMK,MAAOI,EAAKT,MAAMI,MAEnC9S,EAAI,EAAGA,EAAI2T,EAAY3T,IAC9B,IAAK,IAAI8T,EAAI,EAAGA,EAAIH,EAAYG,IAAK,CACnC,IAAIC,EAAgC,GAAtB/T,EAAI2T,EAAaG,GAC3BE,EAAUb,EAAKT,MAAMK,MAEzB,GAAI/S,GAAK4T,GAAgBE,GAAKF,GAC5B5T,EAAI2T,EAAaC,GAAgBE,EAAIH,EAAaC,EAGlDI,EAAUH,EAAQ3L,EAFPmL,KAAKC,OAAOtT,EAAI4T,GAAgBf,GAEbhH,EADnBwH,KAAKC,OAAOQ,EAAIF,GAAgBf,IACE,EAAI,GAGnDW,EAAQO,KAAYC,EAAQ3B,EAC5BmB,EAAQO,KAAYC,EAAQ1B,EAC5BkB,EAAQO,KAAYC,EAAQtG,EAC5B8F,EAAQO,GAAUC,EAAQzB,K,8CC7FhC,SAAgB,IAEd,OAAa,OAAN,QAAM,IAAN,OAAM,EAAN,EAAQ,UAAgB,OAAN,QAAM,IAAN,OAAM,EAAN,EAAQ,WAAY,GAG/C,SAAgB,IACd,IAAM,EAAgB,IAEtB,OAAO,EAAc,QAAU,EAAc,a,uHAR/C,oBAKA,oBAMAzS,EAAQ,yBAAR,WACE,QAAS,OAAuB,O,iEdZlC,SAAgB,IACd,MACsB,qBAAb,UACc,qBAAd,WACe,gBAAtB,UAAU,QAId,SAAgB,IACd,MACqB,qBAAZ,GACqB,qBAArB,EAAQ,UACkB,qBAA1B,EAAQ,SAAS,K,6FAZ5B,kBAQAA,EAAQ,OAAR,EAQA,uBACE,OAAQ,MAAoB,O,qCejB9B,IAAImU,EAAyB,qBAATC,KAAuBA,KAAO1S,KAC9C2S,EAAY,WAChB,SAAS7F,IACT9M,KAAK4S,OAAQ,EACb5S,KAAK6S,aAAeJ,EAAOI,aAG3B,OADA/F,EAAE3N,UAAYsT,EACP,IAAI3F,EANK,IAQhB,SAAU4F,IAEQ,SAAUpU,GAE1B,IAAIwU,EACY,oBAAqBJ,EADjCI,EAEQ,WAAYJ,GAAQ,aAAc5H,OAF1CgI,EAIA,eAAgBJ,GAChB,SAAUA,GACT,WACC,IAEE,OADA,IAAIK,MACG,EACP,MAAOrK,GACP,OAAO,GALV,GANDoK,EAcQ,aAAcJ,EAdtBI,EAeW,gBAAiBJ,EAOhC,GAAII,EACF,IAAIE,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACF5J,YAAYwB,QACZ,SAASd,GACP,OAAOA,GAAOiJ,EAAYE,QAAQ5T,OAAOH,UAAUiJ,SAAShJ,KAAK2K,KAAS,GAIhF,SAASoJ,EAAchT,GAIrB,GAHoB,kBAATA,IACTA,EAAOyC,OAAOzC,IAEZ,4BAA4BoM,KAAKpM,GACnC,MAAM,IAAIsB,UAAU,0CAEtB,OAAOtB,EAAKqI,cAGd,SAAS4K,EAAevT,GAItB,MAHqB,kBAAVA,IACTA,EAAQ+C,OAAO/C,IAEVA,EAIT,SAASwT,EAAYC,GACnB,IAAIzG,EAAW,CACbQ,KAAM,WACJ,IAAIxN,EAAQyT,EAAM5N,QAClB,MAAO,CAACsH,UAAgB7L,IAAVtB,EAAqBA,MAAOA,KAU9C,OANIiT,IACFjG,EAAS/B,OAAO+B,UAAY,WAC1B,OAAOA,IAIJA,EAGT,SAAS0G,EAAQC,GACfxT,KAAKwQ,IAAM,GAEPgD,aAAmBD,EACrBC,EAAQC,SAAQ,SAAS5T,EAAOM,GAC9BH,KAAK0T,OAAOvT,EAAMN,KACjBG,MACM2D,MAAMgF,QAAQ6K,GACvBA,EAAQC,SAAQ,SAASE,GACvB3T,KAAK0T,OAAOC,EAAO,GAAIA,EAAO,MAC7B3T,MACMwT,GACTlU,OAAOE,oBAAoBgU,GAASC,SAAQ,SAAStT,GACnDH,KAAK0T,OAAOvT,EAAMqT,EAAQrT,MACzBH,MAgEP,SAAS4T,EAASC,GAChB,GAAIA,EAAKC,SACP,OAAO1T,QAAQE,OAAO,IAAImB,UAAU,iBAEtCoS,EAAKC,UAAW,EAGlB,SAASC,EAAgBC,GACvB,OAAO,IAAI5T,SAAQ,SAASC,EAASC,GACnC0T,EAAOC,OAAS,WACd5T,EAAQ2T,EAAOE,SAEjBF,EAAOG,QAAU,WACf7T,EAAO0T,EAAOlP,WAKpB,SAASsP,EAAsBC,GAC7B,IAAIL,EAAS,IAAIM,WACbC,EAAUR,EAAgBC,GAE9B,OADAA,EAAOQ,kBAAkBH,GAClBE,EAoBT,SAASE,EAAYhL,GACnB,GAAIA,EAAI9I,MACN,OAAO8I,EAAI9I,MAAM,GAEjB,IAAI+T,EAAO,IAAI5L,WAAWW,EAAID,YAE9B,OADAkL,EAAKlQ,IAAI,IAAIsE,WAAWW,IACjBiL,EAAKxK,OAIhB,SAASyK,IA0FP,OAzFA3U,KAAK8T,UAAW,EAEhB9T,KAAK4U,UAAY,SAASf,GAhM5B,IAAoB9J,EAiMhB/J,KAAK6U,UAAYhB,EACZA,EAEsB,kBAATA,EAChB7T,KAAK8U,UAAYjB,EACRf,GAAgBC,KAAK5T,UAAU4V,cAAclB,GACtD7T,KAAKgV,UAAYnB,EACRf,GAAoBmC,SAAS9V,UAAU4V,cAAclB,GAC9D7T,KAAKkV,cAAgBrB,EACZf,GAAwBqC,gBAAgBhW,UAAU4V,cAAclB,GACzE7T,KAAK8U,UAAYjB,EAAKzL,WACb0K,GAAuBA,KA5MlB/I,EA4M6C8J,IA3MjDuB,SAASjW,UAAU4V,cAAchL,KA4M3C/J,KAAKqV,iBAAmBZ,EAAYZ,EAAK3J,QAEzClK,KAAK6U,UAAY,IAAI9B,KAAK,CAAC/S,KAAKqV,oBACvBvC,IAAwBzJ,YAAYlK,UAAU4V,cAAclB,IAASZ,EAAkBY,IAChG7T,KAAKqV,iBAAmBZ,EAAYZ,GAEpC7T,KAAK8U,UAAYjB,EAAOvU,OAAOH,UAAUiJ,SAAShJ,KAAKyU,GAhBvD7T,KAAK8U,UAAY,GAmBd9U,KAAKwT,QAAQjP,IAAI,kBACA,kBAATsP,EACT7T,KAAKwT,QAAQhP,IAAI,eAAgB,4BACxBxE,KAAKgV,WAAahV,KAAKgV,UAAUnT,KAC1C7B,KAAKwT,QAAQhP,IAAI,eAAgBxE,KAAKgV,UAAUnT,MACvCiR,GAAwBqC,gBAAgBhW,UAAU4V,cAAclB,IACzE7T,KAAKwT,QAAQhP,IAAI,eAAgB,qDAKnCsO,IACF9S,KAAKqU,KAAO,WACV,IAAIiB,EAAW1B,EAAS5T,MACxB,GAAIsV,EACF,OAAOA,EAGT,GAAItV,KAAKgV,UACP,OAAO5U,QAAQC,QAAQL,KAAKgV,WACvB,GAAIhV,KAAKqV,iBACd,OAAOjV,QAAQC,QAAQ,IAAI0S,KAAK,CAAC/S,KAAKqV,oBACjC,GAAIrV,KAAKkV,cACd,MAAM,IAAIvS,MAAM,wCAEhB,OAAOvC,QAAQC,QAAQ,IAAI0S,KAAK,CAAC/S,KAAK8U,cAI1C9U,KAAKuV,YAAc,WACjB,OAAIvV,KAAKqV,iBACAzB,EAAS5T,OAASI,QAAQC,QAAQL,KAAKqV,kBAEvCrV,KAAKqU,OAAOmB,KAAKpB,KAK9BpU,KAAKyV,KAAO,WACV,IAAIH,EAAW1B,EAAS5T,MACxB,GAAIsV,EACF,OAAOA,EAGT,GAAItV,KAAKgV,UACP,OAjGN,SAAwBX,GACtB,IAAIL,EAAS,IAAIM,WACbC,EAAUR,EAAgBC,GAE9B,OADAA,EAAO0B,WAAWrB,GACXE,EA6FIoB,CAAe3V,KAAKgV,WACtB,GAAIhV,KAAKqV,iBACd,OAAOjV,QAAQC,QA5FrB,SAA+BoJ,GAI7B,IAHA,IAAIiL,EAAO,IAAI5L,WAAWW,GACtBmM,EAAQ,IAAIjS,MAAM+Q,EAAKlS,QAElBhE,EAAI,EAAGA,EAAIkW,EAAKlS,OAAQhE,IAC/BoX,EAAMpX,GAAKoE,OAAOiT,aAAanB,EAAKlW,IAEtC,OAAOoX,EAAMhF,KAAK,IAqFSkF,CAAsB9V,KAAKqV,mBAC7C,GAAIrV,KAAKkV,cACd,MAAM,IAAIvS,MAAM,wCAEhB,OAAOvC,QAAQC,QAAQL,KAAK8U,YAI5BhC,IACF9S,KAAK+V,SAAW,WACd,OAAO/V,KAAKyV,OAAOD,KAAKQ,KAI5BhW,KAAKiW,KAAO,WACV,OAAOjW,KAAKyV,OAAOD,KAAKU,KAAKC,QAGxBnW,KA1MTuT,EAAQpU,UAAUuU,OAAS,SAASvT,EAAMN,GACxCM,EAAOgT,EAAchT,GACrBN,EAAQuT,EAAevT,GACvB,IAAIuW,EAAWpW,KAAKwQ,IAAIrQ,GACxBH,KAAKwQ,IAAIrQ,GAAQiW,EAAWA,EAAW,KAAOvW,EAAQA,GAGxD0T,EAAQpU,UAAR,OAA8B,SAASgB,UAC9BH,KAAKwQ,IAAI2C,EAAchT,KAGhCoT,EAAQpU,UAAUoF,IAAM,SAASpE,GAE/B,OADAA,EAAOgT,EAAchT,GACdH,KAAKqW,IAAIlW,GAAQH,KAAKwQ,IAAIrQ,GAAQ,MAG3CoT,EAAQpU,UAAUkX,IAAM,SAASlW,GAC/B,OAAOH,KAAKwQ,IAAI8F,eAAenD,EAAchT,KAG/CoT,EAAQpU,UAAUqF,IAAM,SAASrE,EAAMN,GACrCG,KAAKwQ,IAAI2C,EAAchT,IAASiT,EAAevT,IAGjD0T,EAAQpU,UAAUsU,QAAU,SAAS8C,EAAUC,GAC7C,IAAK,IAAIrW,KAAQH,KAAKwQ,IAChBxQ,KAAKwQ,IAAI8F,eAAenW,IAC1BoW,EAASnX,KAAKoX,EAASxW,KAAKwQ,IAAIrQ,GAAOA,EAAMH,OAKnDuT,EAAQpU,UAAU8G,KAAO,WACvB,IAAIqN,EAAQ,GAIZ,OAHAtT,KAAKyT,SAAQ,SAAS5T,EAAOM,GAC3BmT,EAAM/Q,KAAKpC,MAENkT,EAAYC,IAGrBC,EAAQpU,UAAUsX,OAAS,WACzB,IAAInD,EAAQ,GAIZ,OAHAtT,KAAKyT,SAAQ,SAAS5T,GACpByT,EAAM/Q,KAAK1C,MAENwT,EAAYC,IAGrBC,EAAQpU,UAAUuX,QAAU,WAC1B,IAAIpD,EAAQ,GAIZ,OAHAtT,KAAKyT,SAAQ,SAAS5T,EAAOM,GAC3BmT,EAAM/Q,KAAK,CAACpC,EAAMN,OAEbwT,EAAYC,IAGjBR,IACFS,EAAQpU,UAAU2L,OAAO+B,UAAY0G,EAAQpU,UAAUuX,SAqJzD,IAAIC,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAO3D,SAASC,EAAQC,EAAO5F,GAEtB,IAAI4C,GADJ5C,EAAUA,GAAW,IACF4C,KAEnB,GAAIgD,aAAiBD,EAAS,CAC5B,GAAIC,EAAM/C,SACR,MAAM,IAAIrS,UAAU,gBAEtBzB,KAAK8W,IAAMD,EAAMC,IACjB9W,KAAK+W,YAAcF,EAAME,YACpB9F,EAAQuC,UACXxT,KAAKwT,QAAU,IAAID,EAAQsD,EAAMrD,UAEnCxT,KAAKgX,OAASH,EAAMG,OACpBhX,KAAK6H,KAAOgP,EAAMhP,KAClB7H,KAAKiX,OAASJ,EAAMI,OACfpD,GAA2B,MAAnBgD,EAAMhC,YACjBhB,EAAOgD,EAAMhC,UACbgC,EAAM/C,UAAW,QAGnB9T,KAAK8W,IAAMlU,OAAOiU,GAYpB,GATA7W,KAAK+W,YAAc9F,EAAQ8F,aAAe/W,KAAK+W,aAAe,eAC1D9F,EAAQuC,SAAYxT,KAAKwT,UAC3BxT,KAAKwT,QAAU,IAAID,EAAQtC,EAAQuC,UAErCxT,KAAKgX,OAjCP,SAAyBA,GACvB,IAAIE,EAAUF,EAAOG,cACrB,OAAOR,EAAQzD,QAAQgE,IAAY,EAAIA,EAAUF,EA+BnCI,CAAgBnG,EAAQ+F,QAAUhX,KAAKgX,QAAU,OAC/DhX,KAAK6H,KAAOoJ,EAAQpJ,MAAQ7H,KAAK6H,MAAQ,KACzC7H,KAAKiX,OAAShG,EAAQgG,QAAUjX,KAAKiX,OACrCjX,KAAKqX,SAAW,MAEK,QAAhBrX,KAAKgX,QAAoC,SAAhBhX,KAAKgX,SAAsBnD,EACvD,MAAM,IAAIpS,UAAU,6CAEtBzB,KAAK4U,UAAUf,GAOjB,SAASmC,EAAOnC,GACd,IAAIyD,EAAO,IAAIrC,SAYf,OAXApB,EACG0D,OACAhH,MAAM,KACNkD,SAAQ,SAAS9I,GAChB,GAAIA,EAAO,CACT,IAAI4F,EAAQ5F,EAAM4F,MAAM,KACpBpQ,EAAOoQ,EAAM7K,QAAQmK,QAAQ,MAAO,KACpChQ,EAAQ0Q,EAAMK,KAAK,KAAKf,QAAQ,MAAO,KAC3CyH,EAAK5D,OAAO8D,mBAAmBrX,GAAOqX,mBAAmB3X,QAGxDyX,EAGT,SAASG,EAAaC,GACpB,IAAIlE,EAAU,IAAID,EAYlB,OAT0BmE,EAAW7H,QAAQ,eAAgB,KACzCU,MAAM,SAASkD,SAAQ,SAASkE,GAClD,IAAIC,EAAQD,EAAKpH,MAAM,KACnBvK,EAAM4R,EAAMlS,QAAQ6R,OACxB,GAAIvR,EAAK,CACP,IAAInG,EAAQ+X,EAAMhH,KAAK,KAAK2G,OAC5B/D,EAAQE,OAAO1N,EAAKnG,OAGjB2T,EAKT,SAASqE,EAASC,EAAU7G,GACrBA,IACHA,EAAU,IAGZjR,KAAK6B,KAAO,UACZ7B,KAAK+X,YAA4B5W,IAAnB8P,EAAQ8G,OAAuB,IAAM9G,EAAQ8G,OAC3D/X,KAAKgY,GAAKhY,KAAK+X,QAAU,KAAO/X,KAAK+X,OAAS,IAC9C/X,KAAKiY,WAAa,eAAgBhH,EAAUA,EAAQgH,WAAa,KACjEjY,KAAKwT,QAAU,IAAID,EAAQtC,EAAQuC,SACnCxT,KAAK8W,IAAM7F,EAAQ6F,KAAO,GAC1B9W,KAAK4U,UAAUkD,GAjDjBlB,EAAQzX,UAAU+Y,MAAQ,WACxB,OAAO,IAAItB,EAAQ5W,KAAM,CAAC6T,KAAM7T,KAAK6U,aAmCvCF,EAAKvV,KAAKwX,EAAQzX,WAgBlBwV,EAAKvV,KAAKyY,EAAS1Y,WAEnB0Y,EAAS1Y,UAAU+Y,MAAQ,WACzB,OAAO,IAAIL,EAAS7X,KAAK6U,UAAW,CAClCkD,OAAQ/X,KAAK+X,OACbE,WAAYjY,KAAKiY,WACjBzE,QAAS,IAAID,EAAQvT,KAAKwT,SAC1BsD,IAAK9W,KAAK8W,OAIde,EAAS/S,MAAQ,WACf,IAAIqT,EAAW,IAAIN,EAAS,KAAM,CAACE,OAAQ,EAAGE,WAAY,KAE1D,OADAE,EAAStW,KAAO,QACTsW,GAGT,IAAIC,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CP,EAASQ,SAAW,SAASvB,EAAKiB,GAChC,IAA0C,IAAtCK,EAAiBlF,QAAQ6E,GAC3B,MAAM,IAAItT,WAAW,uBAGvB,OAAO,IAAIoT,EAAS,KAAM,CAACE,OAAQA,EAAQvE,QAAS,CAAC8E,SAAUxB,MAGjExY,EAAQuU,aAAeH,EAAKG,aAC5B,IACE,IAAIvU,EAAQuU,aACZ,MAAOrS,GACPlC,EAAQuU,aAAe,SAAS7N,EAAS7E,GACvCH,KAAKgF,QAAUA,EACfhF,KAAKG,KAAOA,EACZ,IAAI2E,EAAQnC,MAAMqC,GAClBhF,KAAKuY,MAAQzT,EAAMyT,OAErBja,EAAQuU,aAAa1T,UAAYG,OAAO6C,OAAOQ,MAAMxD,WACrDb,EAAQuU,aAAa1T,UAAUqZ,YAAcla,EAAQuU,aAGvD,SAASD,EAAMiE,EAAO9W,GACpB,OAAO,IAAIK,SAAQ,SAASC,EAASC,GACnC,IAAImY,EAAU,IAAI7B,EAAQC,EAAO9W,GAEjC,GAAI0Y,EAAQxB,QAAUwB,EAAQxB,OAAOyB,QACnC,OAAOpY,EAAO,IAAIhC,EAAQuU,aAAa,UAAW,eAGpD,IAAI8F,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIG,QAGNH,EAAI1E,OAAS,WACX,IAAIhD,EAAU,CACZ8G,OAAQY,EAAIZ,OACZE,WAAYU,EAAIV,WAChBzE,QAASiE,EAAakB,EAAII,yBAA2B,KAEvD9H,EAAQ6F,IAAM,gBAAiB6B,EAAMA,EAAIK,YAAc/H,EAAQuC,QAAQjP,IAAI,iBAC3E,IAAIsP,EAAO,aAAc8E,EAAMA,EAAIR,SAAWQ,EAAIM,aAClD5Y,EAAQ,IAAIwX,EAAShE,EAAM5C,KAG7B0H,EAAIxE,QAAU,WACZ7T,EAAO,IAAImB,UAAU,4BAGvBkX,EAAIO,UAAY,WACd5Y,EAAO,IAAImB,UAAU,4BAGvBkX,EAAIQ,QAAU,WACZ7Y,EAAO,IAAIhC,EAAQuU,aAAa,UAAW,gBAG7C8F,EAAIS,KAAKX,EAAQzB,OAAQyB,EAAQ3B,KAAK,GAEV,YAAxB2B,EAAQ1B,YACV4B,EAAIU,iBAAkB,EACW,SAAxBZ,EAAQ1B,cACjB4B,EAAIU,iBAAkB,GAGpB,iBAAkBV,GAAO7F,IAC3B6F,EAAIW,aAAe,QAGrBb,EAAQjF,QAAQC,SAAQ,SAAS5T,EAAOM,GACtCwY,EAAIY,iBAAiBpZ,EAAMN,MAGzB4Y,EAAQxB,SACVwB,EAAQxB,OAAOhT,iBAAiB,QAAS4U,GAEzCF,EAAIa,mBAAqB,WAEA,IAAnBb,EAAIc,YACNhB,EAAQxB,OAAO7S,oBAAoB,QAASyU,KAKlDF,EAAIe,KAAkC,qBAAtBjB,EAAQ5D,UAA4B,KAAO4D,EAAQ5D,cAIvEjC,EAAM+G,UAAW,EAEZjH,EAAKE,QACRF,EAAKE,MAAQA,EACbF,EAAKa,QAAUA,EACfb,EAAKkE,QAAUA,EACflE,EAAKmF,SAAWA,GAGlBvZ,EAAQiV,QAAUA,EAClBjV,EAAQsY,QAAUA,EAClBtY,EAAQuZ,SAAWA,EACnBvZ,EAAQsU,MAAQA,EAEhBtT,OAAO+E,eAAe/F,EAAS,aAAc,CAAEuB,OAAO,IA5gBtC,CAghBf,IAlhBH,CAmhBG8S,GACHA,EAASC,MAAMgH,UAAW,SAEnBjH,EAASC,MAAM+G,SAGtB,IAAIE,EAAMlH,GACVrU,EAAUub,EAAIjH,OACNkH,QAAUD,EAAIjH,MACtBtU,EAAQsU,MAAQiH,EAAIjH,MACpBtU,EAAQiV,QAAUsG,EAAItG,QACtBjV,EAAQsY,QAAUiD,EAAIjD,QACtBtY,EAAQuZ,SAAWgC,EAAIhC,SACvBxZ,EAAOC,QAAUA,G,6G5CziBjB,aAYA,+BACE,IAAI,EACA,EAEJ,IACE,EAAM,uBACN,EAAM,uBACN,MAAO,GACP,OAAO,KAkDT,SAAS,IAAwC,2BAAd,EAAc,yBAAd,EAAc,gBAK/C,IAJA,IAAM,EAA8C,EAAI,qBACtD,QAF6C,WAKtC,GACP,IAAM,EAAuB,EAAS,GAChC,EAAmC,CAAC,WAAY,WAAY,QAC/D,KAAI,SAAC,GAAD,OAAoB,EAAI,aAAa,MACzC,QAAO,SAAC,GACP,QAAI,GACK,EAAK,SAAS,MAK3B,GAAI,EAAW,QAAU,EAAY,CACnC,IAAM,EAAyB,EAAI,aAAa,WAChD,GAAI,EACF,SAAO,KAdJ,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,SAAjC,GAAiC,kCAmB1C,MAAO,GA6BT,IAAM,EA1BN,WACE,IAAI,EAAe,EACjB,OACA,eACA,WACA,iBAOF,OAJK,IACH,EAAO,EAAI,OAGN,EAcY,GAYrB,MAP+B,CAC7B,YAhB4B,EAC1B,cACA,iBACA,sBACA,YAaF,IALkB,EAAI,OAMtB,MA5GF,WAME,IALA,IAAM,EAA2C,EAAI,qBACnD,QAEI,EAAkB,GAEf,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,IAAM,EAAwB,EAAM,GAE9B,EAAqB,EAAK,aAAa,OAC7C,GAAI,GACE,EAAI,cAAc,QAAQ,SAAW,EAAG,CAC1C,IAAM,EAAsB,EAAK,aAAa,QAE9C,GAAI,EACF,IAC4C,IAA1C,EAAK,cAAc,QAAQ,YACc,IAAzC,EAAK,cAAc,QAAQ,UACJ,IAAvB,EAAK,QAAQ,MACb,CACA,IAAI,EAAuB,EAAI,SAAW,KAAO,EAAI,KAErD,GAA0B,IAAtB,EAAK,QAAQ,KACf,GAAgB,MACX,CACL,IAAM,EAAiB,EAAI,SAAS,MAAM,KAC1C,EAAK,MAEL,GAD0B,EAAK,KAAK,KACR,IAAM,EAGpC,EAAM,KAAK,QACN,GAA2B,IAAvB,EAAK,QAAQ,MAAa,CACnC,IAAM,EAAsB,EAAI,SAAW,EAE3C,EAAM,KAAK,QAEX,EAAM,KAAK,IAOrB,OAAO,EA2De,GAMtB,U,kC6CpIJ,kDAAIyb,EAAkD,WAClD,IAAK,IAAIhN,EAAI,EAAGvO,EAAI,EAAGwb,EAAKpZ,UAAU4B,OAAQhE,EAAIwb,EAAIxb,IAAKuO,GAAKnM,UAAUpC,GAAGgE,OACxE,IAAIqO,EAAIlN,MAAMoJ,GAAIkN,EAAI,EAA3B,IAA8Bzb,EAAI,EAAGA,EAAIwb,EAAIxb,IACzC,IAAK,IAAIuS,EAAInQ,UAAUpC,GAAI8T,EAAI,EAAG4H,EAAKnJ,EAAEvO,OAAQ8P,EAAI4H,EAAI5H,IAAK2H,IAC1DpJ,EAAEoJ,GAAKlJ,EAAEuB,GACjB,OAAOzB,GAEPsJ,EACA,SAAqBha,EAAMoG,EAAS6T,GAChCpa,KAAKG,KAAOA,EACZH,KAAKuG,QAAUA,EACfvG,KAAKoa,GAAKA,EACVpa,KAAK6B,KAAO,WAKhBwY,EACA,SAAkB9T,GACdvG,KAAKuG,QAAUA,EACfvG,KAAK6B,KAAO,OACZ7B,KAAKG,KAAO,OACZH,KAAKoa,GAAKE,EAAQC,UAKtBC,EACA,SAA6Bra,EAAMoG,EAAS6T,EAAIK,GAC5Cza,KAAKG,KAAOA,EACZH,KAAKuG,QAAUA,EACfvG,KAAKoa,GAAKA,EACVpa,KAAKya,IAAMA,EACXza,KAAK6B,KAAO,cAKhB6Y,EACA,WACI1a,KAAK6B,KAAO,MACZ7B,KAAKya,KAAM,EACXza,KAAKG,KAAO,MACZH,KAAKuG,QAAU,KACfvG,KAAKoa,GAAK,MAKdO,EACA,WACI3a,KAAK6B,KAAO,eACZ7B,KAAKG,KAAO,eACZH,KAAKuG,QAAU,KACfvG,KAAKoa,GAAK,MAOdQ,EAAqB,gFAErBC,EAAiB,CACjB,CAAC,MAAO,0BACR,CAAC,OAAQ,qBACT,CAAC,WAAY,uBACb,CAAC,gBAAiB,0BAClB,CAAC,YAAa,yBACd,CAAC,UAAW,8BACZ,CAAC,OAAQ,yBACT,CAAC,OAAQ,4BACT,CAAC,SAAU,6BACX,CAAC,gBAAiB,qBAClB,CACI,mBACA,0DAEJ,CAAC,SAAU,oDACX,CAAC,YAAa,iCACd,CAAC,QAAS,6BACV,CAAC,UAAW,+BACZ,CAAC,QAAS,qBACV,CAAC,aAAc,mCACf,CAAC,QAAS,6BACV,CAAC,QAAS,2BACV,CAAC,KAAM,6CACP,CAAC,KAAM,uCACP,CAAC,KAAM,gBACP,CAAC,OAAQ,qCACT,CAAC,UAAW,uBACZ,CAAC,MAAO,0CACR,CAAC,SAAU,gCACX,CAAC,WAAY,oBACb,CAAC,YAAa,yBACd,CAAC,cAAe,mCAChB,CAAC,cAAe,qCAChB,CAAC,YArCoB,iIAuCrBC,EAAuB,CACvB,CAAC,MAAO,kBACR,CAAC,aAAc,WACf,CAAC,gBAAiB,mBAClB,CAAC,iBAAkB,YACnB,CAAC,YAAa,UACd,CAAC,eAAgB,SACjB,CAAC,aAAc,qCACf,CAAC,aAAc,wBACf,CAAC,eAAgB,mCACjB,CAAC,aAAc,iCACf,CAAC,sBAAuB,oBACxB,CAAC,gBAAiB,oBAClB,CAAC,YAAa,oBACd,CAAC,YAAa,oBACd,CAAC,cAAe,oBAChB,CAAC,aAAc,qBACf,CAAC,aAAc,cACf,CAAC,WAAY,WACb,CAAC,SAAU,SACX,CAAC,YAAa,QACd,CAAC,QAAS,iBACV,CAAC,SAAU,6BACX,CAAC,MAAO,OACR,CAAC,OAAQ,QACT,CAAC,OAAQ,UAEN,SAASC,EAAOC,GACnB,OAAMA,EACKC,EAAeD,GAEF,qBAAbE,UACc,qBAAdC,WACe,gBAAtBA,UAAUC,QACH,IAAIT,EAEU,qBAAdQ,UACAF,EAAeE,UAAUH,WA4DJ,qBAAZV,GAA2BA,EAAQ/T,QACvC,IAAI8T,EAASC,EAAQ/T,QAAQ5F,MAAM,IAAM,KAzD7D,SAAS0a,EAAeC,GAKpB,MAAe,KAAPA,GACJT,EAAeU,QAAO,SAAUC,EAASC,GACrC,IAAIC,EAAUD,EAAG,GAAIE,EAAQF,EAAG,GAChC,GAAID,EACA,OAAOA,EAEX,IAAII,EAAUD,EAAME,KAAKP,GACzB,QAASM,GAAW,CAACF,EAASE,MAC/B,GAMJ,SAASX,EAAeK,GAC3B,IAAIQ,EAAcT,EAAeC,GACjC,IAAKQ,EACD,OAAO,KAEX,IAAI3b,EAAO2b,EAAY,GAAIC,EAAQD,EAAY,GAC/C,GAAa,cAAT3b,EACA,OAAO,IAAIua,EAEf,IAAIsB,EAAeD,EAAM,IAAMA,EAAM,GAAGxL,MAAM,QAAQ5P,MAAM,EAAG,GAC3Dqb,EACIA,EAAaxZ,OA5GI,IA6GjBwZ,EAAejC,EAAeiC,EA4B1C,SAA4BnZ,GAExB,IADA,IAAIoZ,EAAS,GACJC,EAAK,EAAGA,EAAKrZ,EAAOqZ,IACzBD,EAAO1Z,KAAK,KAEhB,OAAO0Z,EAjC6CE,CA7G3B,EA6GuEH,EAAaxZ,UAIzGwZ,EAAe,GAEnB,IAAIzV,EAAUyV,EAAapL,KAAK,KAC5BwJ,EAOD,SAAkBkB,GACrB,IAAK,IAAIY,EAAK,EAAGrZ,EAAQiY,EAAqBtY,OAAQ0Z,EAAKrZ,EAAOqZ,IAAM,CACpE,IAAIT,EAAKX,EAAqBoB,GAAK9B,EAAKqB,EAAG,GAE3C,GAFuDA,EAAG,GACxCI,KAAKP,GAEnB,OAAOlB,EAGf,OAAO,KAfEgC,CAASd,GACde,EAAiBzB,EAAmBiB,KAAKP,GAC7C,OAAIe,GAAkBA,EAAe,GAC1B,IAAI7B,EAAoBra,EAAMoG,EAAS6T,EAAIiC,EAAe,IAE9D,IAAIlC,EAAYha,EAAMoG,EAAS6T,M,wCCvL1C,sBAAW/b,EAAQC,GACjB,aAGA,SAASge,EAAQnS,EAAKoS,GACpB,IAAKpS,EAAK,MAAM,IAAIxH,MAAM4Z,GAAO,oBAKnC,SAASC,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASzd,UAAYud,EAAUvd,UAC/Bsd,EAAKtd,UAAY,IAAIyd,EACrBH,EAAKtd,UAAUqZ,YAAciE,EAK/B,SAASI,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGT9c,KAAKkd,SAAW,EAChBld,KAAKmd,MAAQ,KACbnd,KAAKwC,OAAS,EAGdxC,KAAKod,IAAM,KAEI,OAAXN,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGT/c,KAAKqd,MAAMP,GAAU,EAAGC,GAAQ,GAAIC,GAAU,OAYlD,IAAIpU,EATkB,kBAAXvK,EACTA,EAAOC,QAAUue,EAEjBve,EAAQue,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGS,SAAW,GAGd,IACE1U,EAAS1B,EAAQ,KAAU0B,OAC3B,MAAOF,IAoIT,SAAS6U,EAAUpN,EAAK3E,EAAOC,GAG7B,IAFA,IAAIoF,EAAI,EACJ3L,EAAM2M,KAAK2L,IAAIrN,EAAI3N,OAAQiJ,GACtBjN,EAAIgN,EAAOhN,EAAI0G,EAAK1G,IAAK,CAChC,IAAIiS,EAAIN,EAAIvF,WAAWpM,GAAK,GAE5BqS,IAAM,EAIJA,GADEJ,GAAK,IAAMA,GAAK,GACbA,EAAI,GAAK,GAGLA,GAAK,IAAMA,GAAK,GACpBA,EAAI,GAAK,GAIL,GAAJA,EAGT,OAAOI,EAiCT,SAAS4M,EAAWtN,EAAK3E,EAAOC,EAAKiS,GAGnC,IAFA,IAAI7M,EAAI,EACJ3L,EAAM2M,KAAK2L,IAAIrN,EAAI3N,OAAQiJ,GACtBjN,EAAIgN,EAAOhN,EAAI0G,EAAK1G,IAAK,CAChC,IAAIiS,EAAIN,EAAIvF,WAAWpM,GAAK,GAE5BqS,GAAK6M,EAIH7M,GADEJ,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAOI,EA5MTgM,EAAGI,KAAO,SAAeU,GACvB,OAAIA,aAAed,GAIJ,OAARc,GAA+B,kBAARA,GAC5BA,EAAInF,YAAY8E,WAAaT,EAAGS,UAAY3Z,MAAMgF,QAAQgV,EAAIR,QAGlEN,EAAGe,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTjB,EAAGW,IAAM,SAAcK,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTjB,EAAG1d,UAAUke,MAAQ,SAAeP,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAO9c,KAAKge,YAAYlB,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAO9c,KAAKie,WAAWnB,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETT,EAAOS,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAIvR,EAAQ,EACM,OAFlBsR,EAASA,EAAO1U,WAAWyH,QAAQ,OAAQ,KAEhC,IACTrE,IAGW,KAATuR,EACF/c,KAAKke,UAAUpB,EAAQtR,GAEvBxL,KAAKme,WAAWrB,EAAQC,EAAMvR,GAGd,MAAdsR,EAAO,KACT9c,KAAKkd,SAAW,GAGlBld,KAAKoe,QAEU,OAAXpB,GAEJhd,KAAKie,WAAWje,KAAKqe,UAAWtB,EAAMC,IAGxCH,EAAG1d,UAAU6e,YAAc,SAAsBlB,EAAQC,EAAMC,GACzDF,EAAS,IACX9c,KAAKkd,SAAW,EAChBJ,GAAUA,GAERA,EAAS,UACX9c,KAAKmd,MAAQ,CAAW,SAATL,GACf9c,KAAKwC,OAAS,GACLsa,EAAS,kBAClB9c,KAAKmd,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,UAEzB9c,KAAKwC,OAAS,IAEd8Z,EAAOQ,EAAS,kBAChB9c,KAAKmd,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,SACvB,GAEF9c,KAAKwC,OAAS,GAGD,OAAXwa,GAGJhd,KAAKie,WAAWje,KAAKqe,UAAWtB,EAAMC,IAGxCH,EAAG1d,UAAU8e,WAAa,SAAqBnB,EAAQC,EAAMC,GAG3D,GADAV,EAAgC,kBAAlBQ,EAAOta,QACjBsa,EAAOta,QAAU,EAGnB,OAFAxC,KAAKmd,MAAQ,CAAE,GACfnd,KAAKwC,OAAS,EACPxC,KAGTA,KAAKwC,OAASqP,KAAKyM,KAAKxB,EAAOta,OAAS,GACxCxC,KAAKmd,MAAQ,IAAIxZ,MAAM3D,KAAKwC,QAC5B,IAAK,IAAIhE,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAC/BwB,KAAKmd,MAAM3e,GAAK,EAGlB,IAAI8T,EAAG5P,EACHoD,EAAM,EACV,GAAe,OAAXkX,EACF,IAAKxe,EAAIse,EAAOta,OAAS,EAAG8P,EAAI,EAAG9T,GAAK,EAAGA,GAAK,EAC9CkE,EAAIoa,EAAOte,GAAMse,EAAOte,EAAI,IAAM,EAAMse,EAAOte,EAAI,IAAM,GACzDwB,KAAKmd,MAAM7K,IAAO5P,GAAKoD,EAAO,SAC9B9F,KAAKmd,MAAM7K,EAAI,GAAM5P,IAAO,GAAKoD,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPwM,UAGC,GAAe,OAAX0K,EACT,IAAKxe,EAAI,EAAG8T,EAAI,EAAG9T,EAAIse,EAAOta,OAAQhE,GAAK,EACzCkE,EAAIoa,EAAOte,GAAMse,EAAOte,EAAI,IAAM,EAAMse,EAAOte,EAAI,IAAM,GACzDwB,KAAKmd,MAAM7K,IAAO5P,GAAKoD,EAAO,SAC9B9F,KAAKmd,MAAM7K,EAAI,GAAM5P,IAAO,GAAKoD,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACPwM,KAIN,OAAOtS,KAAKoe,SA2BdvB,EAAG1d,UAAU+e,UAAY,SAAoBpB,EAAQtR,GAEnDxL,KAAKwC,OAASqP,KAAKyM,MAAMxB,EAAOta,OAASgJ,GAAS,GAClDxL,KAAKmd,MAAQ,IAAIxZ,MAAM3D,KAAKwC,QAC5B,IAAK,IAAIhE,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAC/BwB,KAAKmd,MAAM3e,GAAK,EAGlB,IAAI8T,EAAG5P,EAEHoD,EAAM,EACV,IAAKtH,EAAIse,EAAOta,OAAS,EAAG8P,EAAI,EAAG9T,GAAKgN,EAAOhN,GAAK,EAClDkE,EAAI6a,EAAST,EAAQte,EAAGA,EAAI,GAC5BwB,KAAKmd,MAAM7K,IAAO5P,GAAKoD,EAAO,SAE9B9F,KAAKmd,MAAM7K,EAAI,IAAM5P,IAAO,GAAKoD,EAAO,SACxCA,GAAO,KACI,KACTA,GAAO,GACPwM,KAGA9T,EAAI,IAAMgN,IACZ9I,EAAI6a,EAAST,EAAQtR,EAAOhN,EAAI,GAChCwB,KAAKmd,MAAM7K,IAAO5P,GAAKoD,EAAO,SAC9B9F,KAAKmd,MAAM7K,EAAI,IAAM5P,IAAO,GAAKoD,EAAO,SAE1C9F,KAAKoe,SA2BPvB,EAAG1d,UAAUgf,WAAa,SAAqBrB,EAAQC,EAAMvR,GAE3DxL,KAAKmd,MAAQ,CAAE,GACfnd,KAAKwC,OAAS,EAGd,IAAK,IAAI+b,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWzB,EAClEwB,IAEFA,IACAC,EAAWA,EAAUzB,EAAQ,EAO7B,IALA,IAAI0B,EAAQ3B,EAAOta,OAASgJ,EACxBkT,EAAMD,EAAQF,EACd9S,EAAMoG,KAAK2L,IAAIiB,EAAOA,EAAQC,GAAOlT,EAErCmT,EAAO,EACFngB,EAAIgN,EAAOhN,EAAIiN,EAAKjN,GAAK+f,EAChCI,EAAOlB,EAAUX,EAAQte,EAAGA,EAAI+f,EAASxB,GAEzC/c,KAAK4e,MAAMJ,GACPxe,KAAKmd,MAAM,GAAKwB,EAAO,SACzB3e,KAAKmd,MAAM,IAAMwB,EAEjB3e,KAAK6e,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAOlB,EAAUX,EAAQte,EAAGse,EAAOta,OAAQua,GAEtCve,EAAI,EAAGA,EAAIkgB,EAAKlgB,IACnBsgB,GAAO/B,EAGT/c,KAAK4e,MAAME,GACP9e,KAAKmd,MAAM,GAAKwB,EAAO,SACzB3e,KAAKmd,MAAM,IAAMwB,EAEjB3e,KAAK6e,OAAOF,KAKlB9B,EAAG1d,UAAU6E,KAAO,SAAe+a,GACjCA,EAAK5B,MAAQ,IAAIxZ,MAAM3D,KAAKwC,QAC5B,IAAK,IAAIhE,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAC/BugB,EAAK5B,MAAM3e,GAAKwB,KAAKmd,MAAM3e,GAE7BugB,EAAKvc,OAASxC,KAAKwC,OACnBuc,EAAK7B,SAAWld,KAAKkd,SACrB6B,EAAK3B,IAAMpd,KAAKod,KAGlBP,EAAG1d,UAAU+Y,MAAQ,WACnB,IAAIrH,EAAI,IAAIgM,EAAG,MAEf,OADA7c,KAAKgE,KAAK6M,GACHA,GAGTgM,EAAG1d,UAAU6f,QAAU,SAAkB3U,GACvC,KAAOrK,KAAKwC,OAAS6H,GACnBrK,KAAKmd,MAAMnd,KAAKwC,UAAY,EAE9B,OAAOxC,MAIT6c,EAAG1d,UAAUif,MAAQ,WACnB,KAAOpe,KAAKwC,OAAS,GAAqC,IAAhCxC,KAAKmd,MAAMnd,KAAKwC,OAAS,IACjDxC,KAAKwC,SAEP,OAAOxC,KAAKif,aAGdpC,EAAG1d,UAAU8f,UAAY,WAKvB,OAHoB,IAAhBjf,KAAKwC,QAAkC,IAAlBxC,KAAKmd,MAAM,KAClCnd,KAAKkd,SAAW,GAEXld,MAGT6c,EAAG1d,UAAU+f,QAAU,WACrB,OAAQlf,KAAKod,IAAM,UAAY,SAAWpd,KAAKoI,SAAS,IAAM,KAiChE,IAAI+W,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAY5M,EAAMiL,EAAK4B,GAC9BA,EAAIrC,SAAWS,EAAIT,SAAWxK,EAAKwK,SACnC,IAAIhY,EAAOwN,EAAKlQ,OAASmb,EAAInb,OAAU,EACvC+c,EAAI/c,OAAS0C,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAI6L,EAAoB,EAAhB2B,EAAKyK,MAAM,GACfjR,EAAmB,EAAfyR,EAAIR,MAAM,GACdtM,EAAIE,EAAI7E,EAERsT,EAAS,SAAJ3O,EACL4O,EAAS5O,EAAI,SAAa,EAC9B0O,EAAIpC,MAAM,GAAKqC,EAEf,IAAK,IAAIvF,EAAI,EAAGA,EAAI/U,EAAK+U,IAAK,CAM5B,IAHA,IAAIyF,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAO/N,KAAK2L,IAAIvD,EAAG0D,EAAInb,OAAS,GAC3B8P,EAAIT,KAAK+L,IAAI,EAAG3D,EAAIvH,EAAKlQ,OAAS,GAAI8P,GAAKsN,EAAMtN,IAAK,CAC7D,IAAI9T,EAAKyb,EAAI3H,EAAK,EAIlBoN,IADA7O,GAFAE,EAAoB,EAAhB2B,EAAKyK,MAAM3e,KACf0N,EAAmB,EAAfyR,EAAIR,MAAM7K,IACFqN,GACG,SAAa,EAC5BA,EAAY,SAAJ9O,EAEV0O,EAAIpC,MAAMlD,GAAa,EAAR0F,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFF,EAAIpC,MAAMlD,GAAa,EAARwF,EAEfF,EAAI/c,SAGC+c,EAAInB,QAzlBbvB,EAAG1d,UAAUiJ,SAAW,SAAmB2U,EAAM8C,GAI/C,IAAIN,EACJ,GAHAM,EAAoB,EAAVA,GAAe,EAGZ,MAJb9C,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCwC,EAAM,GAGN,IAFA,IAAIzZ,EAAM,EACN2Z,EAAQ,EACHjhB,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAAK,CACpC,IAAIkE,EAAI1C,KAAKmd,MAAM3e,GACfmgB,GAA+B,UAArBjc,GAAKoD,EAAO2Z,IAAmBrX,SAAS,IAGpDmX,EADY,KADdE,EAAS/c,IAAO,GAAKoD,EAAQ,WACVtH,IAAMwB,KAAKwC,OAAS,EAC/B2c,EAAM,EAAIR,EAAKnc,QAAUmc,EAAOY,EAEhCZ,EAAOY,GAEfzZ,GAAO,IACI,KACTA,GAAO,GACPtH,KAMJ,IAHc,IAAVihB,IACFF,EAAME,EAAMrX,SAAS,IAAMmX,GAEtBA,EAAI/c,OAASqd,IAAY,GAC9BN,EAAM,IAAMA,EAKd,OAHsB,IAAlBvf,KAAKkd,WACPqC,EAAM,IAAMA,GAEPA,EAGT,GAAIxC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI+C,EAAYV,EAAWrC,GAEvBgD,EAAYV,EAAWtC,GAC3BwC,EAAM,GACN,IAAI9O,EAAIzQ,KAAKkY,QAEb,IADAzH,EAAEyM,SAAW,GACLzM,EAAEuP,UAAU,CAClB,IAAInP,EAAIJ,EAAEwP,KAAKF,GAAW3X,SAAS2U,GAMjCwC,GALF9O,EAAIA,EAAEyP,MAAMH,IAELC,SAGCnP,EAAI0O,EAFJJ,EAAMW,EAAYjP,EAAErO,QAAUqO,EAAI0O,EAQ5C,IAHIvf,KAAKggB,WACPT,EAAM,IAAMA,GAEPA,EAAI/c,OAASqd,IAAY,GAC9BN,EAAM,IAAMA,EAKd,OAHsB,IAAlBvf,KAAKkd,WACPqC,EAAM,IAAMA,GAEPA,EAGTjD,GAAO,EAAO,oCAGhBO,EAAG1d,UAAUghB,SAAW,WACtB,IAAIzc,EAAM1D,KAAKmd,MAAM,GASrB,OARoB,IAAhBnd,KAAKwC,OACPkB,GAAuB,SAAhB1D,KAAKmd,MAAM,GACO,IAAhBnd,KAAKwC,QAAkC,IAAlBxC,KAAKmd,MAAM,GAEzCzZ,GAAO,iBAAoC,SAAhB1D,KAAKmd,MAAM,GAC7Bnd,KAAKwC,OAAS,GACvB8Z,GAAO,EAAO,8CAEU,IAAlBtc,KAAKkd,UAAmBxZ,EAAMA,GAGxCmZ,EAAG1d,UAAUihB,OAAS,WACpB,OAAOpgB,KAAKoI,SAAS,KAGvByU,EAAG1d,UAAUkhB,SAAW,SAAmBrD,EAAQxa,GAEjD,OADA8Z,EAAyB,qBAAX1T,GACP5I,KAAKsgB,YAAY1X,EAAQoU,EAAQxa,IAG1Cqa,EAAG1d,UAAUkf,QAAU,SAAkBrB,EAAQxa,GAC/C,OAAOxC,KAAKsgB,YAAY3c,MAAOqZ,EAAQxa,IAGzCqa,EAAG1d,UAAUmhB,YAAc,SAAsBC,EAAWvD,EAAQxa,GAClE,IAAIgH,EAAaxJ,KAAKwJ,aAClBgX,EAAYhe,GAAUqP,KAAK+L,IAAI,EAAGpU,GACtC8S,EAAO9S,GAAcgX,EAAW,yCAChClE,EAAOkE,EAAY,EAAG,+BAEtBxgB,KAAKoe,QACL,IAGIlS,EAAG1N,EAHHiiB,EAA0B,OAAXzD,EACf0D,EAAM,IAAIH,EAAUC,GAGpBG,EAAI3gB,KAAKkY,QACb,GAAKuI,EAYE,CACL,IAAKjiB,EAAI,GAAImiB,EAAEX,SAAUxhB,IACvB0N,EAAIyU,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIliB,GAAK0N,EAGX,KAAO1N,EAAIgiB,EAAWhiB,IACpBkiB,EAAIliB,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAIgiB,EAAYhX,EAAYhL,IACtCkiB,EAAIliB,GAAK,EAGX,IAAKA,EAAI,GAAImiB,EAAEX,SAAUxhB,IACvB0N,EAAIyU,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIF,EAAYhiB,EAAI,GAAK0N,EAe7B,OAAOwU,GAGL7O,KAAKiP,MACPjE,EAAG1d,UAAU4hB,WAAa,SAAqBre,GAC7C,OAAO,GAAKmP,KAAKiP,MAAMpe,IAGzBma,EAAG1d,UAAU4hB,WAAa,SAAqBre,GAC7C,IAAIse,EAAIte,EACJmO,EAAI,EAiBR,OAhBImQ,GAAK,OACPnQ,GAAK,GACLmQ,KAAO,IAELA,GAAK,KACPnQ,GAAK,EACLmQ,KAAO,GAELA,GAAK,IACPnQ,GAAK,EACLmQ,KAAO,GAELA,GAAK,IACPnQ,GAAK,EACLmQ,KAAO,GAEFnQ,EAAImQ,GAIfnE,EAAG1d,UAAU8hB,UAAY,SAAoBve,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIse,EAAIte,EACJmO,EAAI,EAoBR,OAnBqB,KAAZ,KAAJmQ,KACHnQ,GAAK,GACLmQ,KAAO,IAEU,KAAV,IAAJA,KACHnQ,GAAK,EACLmQ,KAAO,GAES,KAAT,GAAJA,KACHnQ,GAAK,EACLmQ,KAAO,GAES,KAAT,EAAJA,KACHnQ,GAAK,EACLmQ,KAAO,GAES,KAAT,EAAJA,IACHnQ,IAEKA,GAITgM,EAAG1d,UAAU+hB,UAAY,WACvB,IAAIxe,EAAI1C,KAAKmd,MAAMnd,KAAKwC,OAAS,GAC7B2e,EAAKnhB,KAAK+gB,WAAWre,GACzB,OAA2B,IAAnB1C,KAAKwC,OAAS,GAAU2e,GAiBlCtE,EAAG1d,UAAUiiB,SAAW,WACtB,GAAIphB,KAAKggB,SAAU,OAAO,EAG1B,IADA,IAAInP,EAAI,EACCrS,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAAK,CACpC,IAAI0N,EAAIlM,KAAKihB,UAAUjhB,KAAKmd,MAAM3e,IAElC,GADAqS,GAAK3E,EACK,KAANA,EAAU,MAEhB,OAAO2E,GAGTgM,EAAG1d,UAAUqK,WAAa,WACxB,OAAOqI,KAAKyM,KAAKte,KAAKkhB,YAAc,IAGtCrE,EAAG1d,UAAUkiB,OAAS,SAAiBjQ,GACrC,OAAsB,IAAlBpR,KAAKkd,SACAld,KAAKshB,MAAMC,MAAMnQ,GAAOoQ,MAAM,GAEhCxhB,KAAKkY,SAGd2E,EAAG1d,UAAUsiB,SAAW,SAAmBrQ,GACzC,OAAIpR,KAAK0hB,MAAMtQ,EAAQ,GACdpR,KAAK2hB,KAAKvQ,GAAOoQ,MAAM,GAAGI,OAE5B5hB,KAAKkY,SAGd2E,EAAG1d,UAAU0iB,MAAQ,WACnB,OAAyB,IAAlB7hB,KAAKkd,UAIdL,EAAG1d,UAAU2iB,IAAM,WACjB,OAAO9hB,KAAKkY,QAAQ0J,QAGtB/E,EAAG1d,UAAUyiB,KAAO,WAKlB,OAJK5hB,KAAKggB,WACRhgB,KAAKkd,UAAY,GAGZld,MAIT6c,EAAG1d,UAAU4iB,KAAO,SAAepE,GACjC,KAAO3d,KAAKwC,OAASmb,EAAInb,QACvBxC,KAAKmd,MAAMnd,KAAKwC,UAAY,EAG9B,IAAK,IAAIhE,EAAI,EAAGA,EAAImf,EAAInb,OAAQhE,IAC9BwB,KAAKmd,MAAM3e,GAAKwB,KAAKmd,MAAM3e,GAAKmf,EAAIR,MAAM3e,GAG5C,OAAOwB,KAAKoe,SAGdvB,EAAG1d,UAAU6iB,IAAM,SAAcrE,GAE/B,OADArB,EAA0C,KAAlCtc,KAAKkd,SAAWS,EAAIT,WACrBld,KAAK+hB,KAAKpE,IAInBd,EAAG1d,UAAU8iB,GAAK,SAAatE,GAC7B,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQ8J,IAAIrE,GAC/CA,EAAIzF,QAAQ8J,IAAIhiB,OAGzB6c,EAAG1d,UAAU+iB,IAAM,SAAcvE,GAC/B,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQ6J,KAAKpE,GAChDA,EAAIzF,QAAQ6J,KAAK/hB,OAI1B6c,EAAG1d,UAAUgjB,MAAQ,SAAgBxE,GAEnC,IAAIzR,EAEFA,EADElM,KAAKwC,OAASmb,EAAInb,OAChBmb,EAEA3d,KAGN,IAAK,IAAIxB,EAAI,EAAGA,EAAI0N,EAAE1J,OAAQhE,IAC5BwB,KAAKmd,MAAM3e,GAAKwB,KAAKmd,MAAM3e,GAAKmf,EAAIR,MAAM3e,GAK5C,OAFAwB,KAAKwC,OAAS0J,EAAE1J,OAETxC,KAAKoe,SAGdvB,EAAG1d,UAAUijB,KAAO,SAAezE,GAEjC,OADArB,EAA0C,KAAlCtc,KAAKkd,SAAWS,EAAIT,WACrBld,KAAKmiB,MAAMxE,IAIpBd,EAAG1d,UAAUkjB,IAAM,SAAc1E,GAC/B,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQkK,KAAKzE,GAChDA,EAAIzF,QAAQkK,KAAKpiB,OAG1B6c,EAAG1d,UAAUmjB,KAAO,SAAe3E,GACjC,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQiK,MAAMxE,GACjDA,EAAIzF,QAAQiK,MAAMniB,OAI3B6c,EAAG1d,UAAUojB,MAAQ,SAAgB5E,GAEnC,IAAI5M,EACA7E,EACAlM,KAAKwC,OAASmb,EAAInb,QACpBuO,EAAI/Q,KACJkM,EAAIyR,IAEJ5M,EAAI4M,EACJzR,EAAIlM,MAGN,IAAK,IAAIxB,EAAI,EAAGA,EAAI0N,EAAE1J,OAAQhE,IAC5BwB,KAAKmd,MAAM3e,GAAKuS,EAAEoM,MAAM3e,GAAK0N,EAAEiR,MAAM3e,GAGvC,GAAIwB,OAAS+Q,EACX,KAAOvS,EAAIuS,EAAEvO,OAAQhE,IACnBwB,KAAKmd,MAAM3e,GAAKuS,EAAEoM,MAAM3e,GAM5B,OAFAwB,KAAKwC,OAASuO,EAAEvO,OAETxC,KAAKoe,SAGdvB,EAAG1d,UAAUqjB,KAAO,SAAe7E,GAEjC,OADArB,EAA0C,KAAlCtc,KAAKkd,SAAWS,EAAIT,WACrBld,KAAKuiB,MAAM5E,IAIpBd,EAAG1d,UAAUsjB,IAAM,SAAc9E,GAC/B,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQsK,KAAK7E,GAChDA,EAAIzF,QAAQsK,KAAKxiB,OAG1B6c,EAAG1d,UAAUujB,KAAO,SAAe/E,GACjC,OAAI3d,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQqK,MAAM5E,GACjDA,EAAIzF,QAAQqK,MAAMviB,OAI3B6c,EAAG1d,UAAUoiB,MAAQ,SAAgBnQ,GACnCkL,EAAwB,kBAAVlL,GAAsBA,GAAS,GAE7C,IAAIuR,EAAsC,EAAxB9Q,KAAKyM,KAAKlN,EAAQ,IAChCwR,EAAWxR,EAAQ,GAGvBpR,KAAKgf,QAAQ2D,GAETC,EAAW,GACbD,IAIF,IAAK,IAAInkB,EAAI,EAAGA,EAAImkB,EAAankB,IAC/BwB,KAAKmd,MAAM3e,GAAsB,UAAhBwB,KAAKmd,MAAM3e,GAS9B,OALIokB,EAAW,IACb5iB,KAAKmd,MAAM3e,IAAMwB,KAAKmd,MAAM3e,GAAM,UAAc,GAAKokB,GAIhD5iB,KAAKoe,SAGdvB,EAAG1d,UAAUwiB,KAAO,SAAevQ,GACjC,OAAOpR,KAAKkY,QAAQqJ,MAAMnQ,IAI5ByL,EAAG1d,UAAU0jB,KAAO,SAAevb,EAAK6C,GACtCmS,EAAsB,kBAARhV,GAAoBA,GAAO,GAEzC,IAAIxB,EAAOwB,EAAM,GAAM,EACnBwb,EAAOxb,EAAM,GAUjB,OARAtH,KAAKgf,QAAQlZ,EAAM,GAGjB9F,KAAKmd,MAAMrX,GADTqE,EACgBnK,KAAKmd,MAAMrX,GAAQ,GAAKgd,EAExB9iB,KAAKmd,MAAMrX,KAAS,GAAKgd,GAGtC9iB,KAAKoe,SAIdvB,EAAG1d,UAAU4jB,KAAO,SAAepF,GACjC,IAAI9M,EAkBAE,EAAG7E,EAfP,GAAsB,IAAlBlM,KAAKkd,UAAmC,IAAjBS,EAAIT,SAI7B,OAHAld,KAAKkd,SAAW,EAChBrM,EAAI7Q,KAAKgjB,KAAKrF,GACd3d,KAAKkd,UAAY,EACVld,KAAKif,YAGP,GAAsB,IAAlBjf,KAAKkd,UAAmC,IAAjBS,EAAIT,SAIpC,OAHAS,EAAIT,SAAW,EACfrM,EAAI7Q,KAAKgjB,KAAKrF,GACdA,EAAIT,SAAW,EACRrM,EAAEoO,YAKPjf,KAAKwC,OAASmb,EAAInb,QACpBuO,EAAI/Q,KACJkM,EAAIyR,IAEJ5M,EAAI4M,EACJzR,EAAIlM,MAIN,IADA,IAAIyf,EAAQ,EACHjhB,EAAI,EAAGA,EAAI0N,EAAE1J,OAAQhE,IAC5BqS,GAAkB,EAAbE,EAAEoM,MAAM3e,KAAwB,EAAb0N,EAAEiR,MAAM3e,IAAUihB,EAC1Czf,KAAKmd,MAAM3e,GAAS,SAAJqS,EAChB4O,EAAQ5O,IAAM,GAEhB,KAAiB,IAAV4O,GAAejhB,EAAIuS,EAAEvO,OAAQhE,IAClCqS,GAAkB,EAAbE,EAAEoM,MAAM3e,IAAUihB,EACvBzf,KAAKmd,MAAM3e,GAAS,SAAJqS,EAChB4O,EAAQ5O,IAAM,GAIhB,GADA7Q,KAAKwC,OAASuO,EAAEvO,OACF,IAAVid,EACFzf,KAAKmd,MAAMnd,KAAKwC,QAAUid,EAC1Bzf,KAAKwC,cAEA,GAAIuO,IAAM/Q,KACf,KAAOxB,EAAIuS,EAAEvO,OAAQhE,IACnBwB,KAAKmd,MAAM3e,GAAKuS,EAAEoM,MAAM3e,GAI5B,OAAOwB,MAIT6c,EAAG1d,UAAU8jB,IAAM,SAActF,GAC/B,IAAI+C,EACJ,OAAqB,IAAjB/C,EAAIT,UAAoC,IAAlBld,KAAKkd,UAC7BS,EAAIT,SAAW,EACfwD,EAAM1gB,KAAKkjB,IAAIvF,GACfA,EAAIT,UAAY,EACTwD,GACmB,IAAjB/C,EAAIT,UAAoC,IAAlBld,KAAKkd,UACpCld,KAAKkd,SAAW,EAChBwD,EAAM/C,EAAIuF,IAAIljB,MACdA,KAAKkd,SAAW,EACTwD,GAGL1gB,KAAKwC,OAASmb,EAAInb,OAAexC,KAAKkY,QAAQ6K,KAAKpF,GAEhDA,EAAIzF,QAAQ6K,KAAK/iB,OAI1B6c,EAAG1d,UAAU6jB,KAAO,SAAerF,GAEjC,GAAqB,IAAjBA,EAAIT,SAAgB,CACtBS,EAAIT,SAAW,EACf,IAAIrM,EAAI7Q,KAAK+iB,KAAKpF,GAElB,OADAA,EAAIT,SAAW,EACRrM,EAAEoO,YAGJ,GAAsB,IAAlBjf,KAAKkd,SAId,OAHAld,KAAKkd,SAAW,EAChBld,KAAK+iB,KAAKpF,GACV3d,KAAKkd,SAAW,EACTld,KAAKif,YAId,IAWIlO,EAAG7E,EAXH6R,EAAM/d,KAAK+d,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA/d,KAAKkd,SAAW,EAChBld,KAAKwC,OAAS,EACdxC,KAAKmd,MAAM,GAAK,EACTnd,KAKL+d,EAAM,GACRhN,EAAI/Q,KACJkM,EAAIyR,IAEJ5M,EAAI4M,EACJzR,EAAIlM,MAIN,IADA,IAAIyf,EAAQ,EACHjhB,EAAI,EAAGA,EAAI0N,EAAE1J,OAAQhE,IAE5BihB,GADA5O,GAAkB,EAAbE,EAAEoM,MAAM3e,KAAwB,EAAb0N,EAAEiR,MAAM3e,IAAUihB,IAC7B,GACbzf,KAAKmd,MAAM3e,GAAS,SAAJqS,EAElB,KAAiB,IAAV4O,GAAejhB,EAAIuS,EAAEvO,OAAQhE,IAElCihB,GADA5O,GAAkB,EAAbE,EAAEoM,MAAM3e,IAAUihB,IACV,GACbzf,KAAKmd,MAAM3e,GAAS,SAAJqS,EAIlB,GAAc,IAAV4O,GAAejhB,EAAIuS,EAAEvO,QAAUuO,IAAM/Q,KACvC,KAAOxB,EAAIuS,EAAEvO,OAAQhE,IACnBwB,KAAKmd,MAAM3e,GAAKuS,EAAEoM,MAAM3e,GAU5B,OANAwB,KAAKwC,OAASqP,KAAK+L,IAAI5d,KAAKwC,OAAQhE,GAEhCuS,IAAM/Q,OACRA,KAAKkd,SAAW,GAGXld,KAAKoe,SAIdvB,EAAG1d,UAAU+jB,IAAM,SAAcvF,GAC/B,OAAO3d,KAAKkY,QAAQ8K,KAAKrF,IA+C3B,IAAIwF,EAAc,SAAsBzQ,EAAMiL,EAAK4B,GACjD,IAIIC,EACA4D,EACAjC,EANApQ,EAAI2B,EAAKyK,MACTjR,EAAIyR,EAAIR,MACRzQ,EAAI6S,EAAIpC,MACR1M,EAAI,EAIJ4S,EAAY,EAAPtS,EAAE,GACPuS,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzS,EAAE,GACP0S,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5S,EAAE,GACP6S,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/S,EAAE,GACPgT,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlT,EAAE,GACPmT,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrT,EAAE,GACPsT,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxT,EAAE,GACPyT,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3T,EAAE,GACP4T,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9T,EAAE,GACP+T,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjU,EAAE,GACPkU,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjZ,EAAE,GACPkZ,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpZ,EAAE,GACPqZ,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvZ,EAAE,GACPwZ,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1Z,EAAE,GACP2Z,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7Z,EAAE,GACP8Z,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPha,EAAE,GACPia,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPna,EAAE,GACPoa,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPta,EAAE,GACPua,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPza,EAAE,GACP0a,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5a,EAAE,GACP6a,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjBvH,EAAIrC,SAAWxK,EAAKwK,SAAWS,EAAIT,SACnCqC,EAAI/c,OAAS,GAMb,IAAIykB,IAAQxW,GAJZ+O,EAAK3N,KAAKqV,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAMvR,KAAKqV,KAAK5D,EAAK+B,IACRxT,KAAKqV,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrD3U,IAFA0Q,EAAKtP,KAAKqV,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAK3N,KAAKqV,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKzD,EAAK4B,IACRxT,KAAKqV,KAAKxD,EAAK0B,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQ1W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKkC,GAAQ,GACvB3T,KAAKqV,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrD9U,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAK3N,KAAKqV,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKtD,EAAKyB,IACRxT,KAAKqV,KAAKrD,EAAKuB,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKrD,EAAKwB,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAK+B,GAAQ,GACvB3T,KAAKqV,KAAKxD,EAAK6B,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQ3W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKqC,GAAQ,GACvB9T,KAAKqV,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrDjV,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAK3N,KAAKqV,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKnD,EAAKsB,IACRxT,KAAKqV,KAAKlD,EAAKoB,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKlD,EAAKqB,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAK4B,GAAQ,GACvB3T,KAAKqV,KAAKrD,EAAK0B,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAK2B,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKkC,GAAQ,GACvB9T,KAAKqV,KAAKxD,EAAKgC,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ5W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKwC,GAAQ,GACvBjU,KAAKqV,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDpV,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAK3N,KAAKqV,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKhD,EAAKmB,IACRxT,KAAKqV,KAAK/C,EAAKiB,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAK/C,EAAKkB,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAKyB,GAAQ,GACvB3T,KAAKqV,KAAKlD,EAAKuB,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAKwB,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAK+B,GAAQ,GACvB9T,KAAKqV,KAAKrD,EAAK6B,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAK8B,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKqC,GAAQ,GACvBjU,KAAKqV,KAAKxD,EAAKmC,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQ7W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAK2C,IAAQ,GACvBpU,KAAKqV,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDvV,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN9H,EAAK3N,KAAKqV,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAK7C,EAAKgB,IACRxT,KAAKqV,KAAK5C,EAAKc,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAK5C,EAAKe,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAKsB,GAAQ,GACvB3T,KAAKqV,KAAK/C,EAAKoB,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAKqB,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAK4B,GAAQ,GACvB9T,KAAKqV,KAAKlD,EAAK0B,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAK2B,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAKkC,GAAQ,GACvBjU,KAAKqV,KAAKrD,EAAKgC,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAKiC,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKwC,IAAQ,GACvBpU,KAAKqV,KAAKxD,EAAKsC,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQ9W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAK8C,IAAQ,GACvBvU,KAAKqV,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrD1V,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAK3N,KAAKqV,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAK1C,EAAKa,IACRxT,KAAKqV,KAAKzC,EAAKW,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKzC,EAAKY,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKmB,GAAQ,GACvB3T,KAAKqV,KAAK5C,EAAKiB,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKkB,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAKyB,GAAQ,GACvB9T,KAAKqV,KAAK/C,EAAKuB,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAKwB,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAK+B,GAAQ,GACvBjU,KAAKqV,KAAKlD,EAAK6B,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAK8B,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAKqC,IAAQ,GACvBpU,KAAKqV,KAAKrD,EAAKmC,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAK2C,IAAQ,GACvBvU,KAAKqV,KAAKxD,EAAKyC,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ/W,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKiD,IAAQ,GACvB1U,KAAKqV,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrD7V,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAK3N,KAAKqV,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKvC,EAAKU,IACRxT,KAAKqV,KAAKtC,EAAKQ,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKtC,EAAKS,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKgB,GAAQ,GACvB3T,KAAKqV,KAAKzC,EAAKc,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKe,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKsB,GAAQ,GACvB9T,KAAKqV,KAAK5C,EAAKoB,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKqB,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAK4B,GAAQ,GACvBjU,KAAKqV,KAAK/C,EAAK0B,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAK2B,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAKkC,IAAQ,GACvBpU,KAAKqV,KAAKlD,EAAKgC,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAKwC,IAAQ,GACvBvU,KAAKqV,KAAKrD,EAAKsC,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAK8C,IAAQ,GACvB1U,KAAKqV,KAAKxD,EAAK4C,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQhX,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKoD,IAAQ,GACvB7U,KAAKqV,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrDhW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAK3N,KAAKqV,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKpC,EAAKO,IACRxT,KAAKqV,KAAKnC,EAAKK,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKnC,EAAKM,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKa,GAAQ,GACvB3T,KAAKqV,KAAKtC,EAAKW,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKY,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKmB,GAAQ,GACvB9T,KAAKqV,KAAKzC,EAAKiB,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKkB,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKyB,GAAQ,GACvBjU,KAAKqV,KAAK5C,EAAKuB,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKwB,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAK+B,IAAQ,GACvBpU,KAAKqV,KAAK/C,EAAK6B,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAKqC,IAAQ,GACvBvU,KAAKqV,KAAKlD,EAAKmC,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAK2C,IAAQ,GACvB1U,KAAKqV,KAAKrD,EAAKyC,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAK0C,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKiD,IAAQ,GACvB7U,KAAKqV,KAAKxD,EAAK+C,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQjX,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAKuD,IAAQ,GACvBhV,KAAKqV,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDnW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAK3N,KAAKqV,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKI,IACRxT,KAAKqV,KAAKhC,EAAKE,GAAQ,EACpCjE,EAAKtP,KAAKqV,KAAKhC,EAAKG,GACpB7F,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKU,GAAQ,GACvB3T,KAAKqV,KAAKnC,EAAKQ,GAAQ,EACpCpE,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKS,GAAQ,EAClChG,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKgB,GAAQ,GACvB9T,KAAKqV,KAAKtC,EAAKc,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKe,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKsB,GAAQ,GACvBjU,KAAKqV,KAAKzC,EAAKoB,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKqB,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAK4B,IAAQ,GACvBpU,KAAKqV,KAAK5C,EAAK0B,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAKkC,IAAQ,GACvBvU,KAAKqV,KAAK/C,EAAKgC,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAKwC,IAAQ,GACvB1U,KAAKqV,KAAKlD,EAAKsC,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAKuC,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAK8C,IAAQ,GACvB7U,KAAKqV,KAAKrD,EAAK4C,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAK6C,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKoD,IAAQ,GACvBhV,KAAKqV,KAAKxD,EAAKkD,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQlX,GAJZ+O,EAAMA,EAAK3N,KAAKqV,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK5D,EAAK0D,IAAQ,GACvBnV,KAAKqV,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAK3N,KAAKqV,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKO,IACR3T,KAAKqV,KAAKhC,EAAKK,GAAQ,EACpCpE,EAAKtP,KAAKqV,KAAKhC,EAAKM,GACpBhG,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKa,GAAQ,GACvB9T,KAAKqV,KAAKnC,EAAKW,GAAQ,EACpCvE,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKY,GAAQ,EAClCnG,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKmB,GAAQ,GACvBjU,KAAKqV,KAAKtC,EAAKiB,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKkB,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKyB,IAAQ,GACvBpU,KAAKqV,KAAKzC,EAAKuB,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKwB,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAK+B,IAAQ,GACvBvU,KAAKqV,KAAK5C,EAAK6B,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAKqC,IAAQ,GACvB1U,KAAKqV,KAAK/C,EAAKmC,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAKoC,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAK2C,IAAQ,GACvB7U,KAAKqV,KAAKlD,EAAKyC,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAK0C,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAKiD,IAAQ,GACvBhV,KAAKqV,KAAKrD,EAAK+C,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAASnX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKzD,EAAKuD,IAAQ,GACvBnV,KAAKqV,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPpI,EAAK3N,KAAKqV,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKU,IACR9T,KAAKqV,KAAKhC,EAAKQ,GAAQ,EACpCvE,EAAKtP,KAAKqV,KAAKhC,EAAKS,GACpBnG,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKgB,GAAQ,GACvBjU,KAAKqV,KAAKnC,EAAKc,GAAQ,EACpC1E,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKe,GAAQ,EAClCtG,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKsB,IAAQ,GACvBpU,KAAKqV,KAAKtC,EAAKoB,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKqB,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAK4B,IAAQ,GACvBvU,KAAKqV,KAAKzC,EAAK0B,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKkC,IAAQ,GACvB1U,KAAKqV,KAAK5C,EAAKgC,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKiC,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAKwC,IAAQ,GACvB7U,KAAKqV,KAAK/C,EAAKsC,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAKuC,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAK8C,IAAQ,GACvBhV,KAAKqV,KAAKlD,EAAK4C,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASpX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKtD,EAAKoD,IAAQ,GACvBnV,KAAKqV,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPrI,EAAK3N,KAAKqV,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKa,IACRjU,KAAKqV,KAAKhC,EAAKW,GAAQ,EACpC1E,EAAKtP,KAAKqV,KAAKhC,EAAKY,GACpBtG,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKmB,IAAQ,GACvBpU,KAAKqV,KAAKnC,EAAKiB,GAAQ,EACpC7E,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKkB,IAAQ,EAClCzG,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKyB,IAAQ,GACvBvU,KAAKqV,KAAKtC,EAAKuB,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKwB,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAK+B,IAAQ,GACvB1U,KAAKqV,KAAKzC,EAAK6B,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAK8B,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKqC,IAAQ,GACvB7U,KAAKqV,KAAK5C,EAAKmC,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKoC,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAK2C,IAAQ,GACvBhV,KAAKqV,KAAK/C,EAAKyC,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAASrX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKnD,EAAKiD,IAAQ,GACvBnV,KAAKqV,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPtI,EAAK3N,KAAKqV,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKgB,KACRpU,KAAKqV,KAAKhC,EAAKc,GAAQ,EACpC7E,EAAKtP,KAAKqV,KAAKhC,EAAKe,IACpBzG,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKsB,IAAQ,GACvBvU,KAAKqV,KAAKnC,EAAKoB,IAAQ,EACpChF,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKqB,IAAQ,EAClC5G,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAK4B,IAAQ,GACvB1U,KAAKqV,KAAKtC,EAAK0B,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAK2B,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKkC,IAAQ,GACvB7U,KAAKqV,KAAKzC,EAAKgC,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKiC,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAKwC,IAAQ,GACvBhV,KAAKqV,KAAK5C,EAAKsC,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAAStX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKhD,EAAK8C,IAAQ,GACvBnV,KAAKqV,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPvI,EAAK3N,KAAKqV,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKmB,KACRvU,KAAKqV,KAAKhC,EAAKiB,IAAQ,EACpChF,EAAKtP,KAAKqV,KAAKhC,EAAKkB,IACpB5G,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKyB,IAAQ,GACvB1U,KAAKqV,KAAKnC,EAAKuB,IAAQ,EACpCnF,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKwB,IAAQ,EAClC/G,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAK+B,IAAQ,GACvB7U,KAAKqV,KAAKtC,EAAK6B,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAK8B,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKqC,IAAQ,GACvBhV,KAAKqV,KAAKzC,EAAKmC,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASvX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK7C,EAAK2C,IAAQ,GACvBnV,KAAKqV,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAK3N,KAAKqV,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKsB,KACR1U,KAAKqV,KAAKhC,EAAKoB,IAAQ,EACpCnF,EAAKtP,KAAKqV,KAAKhC,EAAKqB,IACpB/G,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAK4B,IAAQ,GACvB7U,KAAKqV,KAAKnC,EAAK0B,IAAQ,EACpCtF,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAK2B,IAAQ,EAClClH,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKkC,IAAQ,GACvBhV,KAAKqV,KAAKtC,EAAKgC,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASxX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAK1C,EAAKwC,IAAQ,GACvBnV,KAAKqV,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAK3N,KAAKqV,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAKyB,KACR7U,KAAKqV,KAAKhC,EAAKuB,IAAQ,EACpCtF,EAAKtP,KAAKqV,KAAKhC,EAAKwB,IACpBlH,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAK+B,IAAQ,GACvBhV,KAAKqV,KAAKnC,EAAK6B,IAAQ,EACpCzF,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASzX,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKvC,EAAKqC,IAAQ,GACvBnV,KAAKqV,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAK3N,KAAKqV,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAK4B,KACRhV,KAAKqV,KAAKhC,EAAK0B,IAAQ,EACpCzF,EAAKtP,KAAKqV,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAAS1X,GAJb+O,EAAMA,EAAK3N,KAAKqV,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMvR,KAAKqV,KAAKpC,EAAKkC,IAAQ,GACvBnV,KAAKqV,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDtW,IAFA0Q,EAAMA,EAAKtP,KAAKqV,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS3X,GAJb+O,EAAK3N,KAAKqV,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAMvR,KAAKqV,KAAKjC,EAAK+B,KACRnV,KAAKqV,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAtW,IAFA0Q,EAAKtP,KAAKqV,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACP1b,EAAE,GAAKua,GACPva,EAAE,GAAKya,GACPza,EAAE,GAAK0a,GACP1a,EAAE,GAAK2a,GACP3a,EAAE,GAAK4a,GACP5a,EAAE,GAAK6a,GACP7a,EAAE,GAAK8a,GACP9a,EAAE,GAAK+a,GACP/a,EAAE,GAAKgb,GACPhb,EAAE,GAAKib,GACPjb,EAAE,IAAMkb,GACRlb,EAAE,IAAMmb,GACRnb,EAAE,IAAMob,GACRpb,EAAE,IAAMqb,GACRrb,EAAE,IAAMsb,GACRtb,EAAE,IAAMub,GACRvb,EAAE,IAAMwb,GACRxb,EAAE,IAAMyb,GACRzb,EAAE,IAAM0b,GACE,IAAN3X,IACF/D,EAAE,IAAM+D,EACR8O,EAAI/c,UAEC+c,GAiDT,SAAS8I,EAAY3V,EAAMiL,EAAK4B,GAE9B,OADW,IAAI+I,GACHC,KAAK7V,EAAMiL,EAAK4B,GAsB9B,SAAS+I,EAAME,EAAGC,GAChBzoB,KAAKwoB,EAAIA,EACTxoB,KAAKyoB,EAAIA,EAvEN5W,KAAKqV,OACR/D,EAAc7D,GAiDhBzC,EAAG1d,UAAUupB,MAAQ,SAAgB/K,EAAK4B,GACxC,IAAImB,EACAxb,EAAMlF,KAAKwC,OAASmb,EAAInb,OAW5B,OATEke,EADkB,KAAhB1gB,KAAKwC,QAAgC,KAAfmb,EAAInb,OACtB2gB,EAAYnjB,KAAM2d,EAAK4B,GACpBra,EAAM,GACToa,EAAWtf,KAAM2d,EAAK4B,GACnBra,EAAM,KArDnB,SAAmBwN,EAAMiL,EAAK4B,GAC5BA,EAAIrC,SAAWS,EAAIT,SAAWxK,EAAKwK,SACnCqC,EAAI/c,OAASkQ,EAAKlQ,OAASmb,EAAInb,OAI/B,IAFA,IAAIid,EAAQ,EACRkJ,EAAU,EACL1O,EAAI,EAAGA,EAAIsF,EAAI/c,OAAS,EAAGyX,IAAK,CAGvC,IAAIyF,EAASiJ,EACbA,EAAU,EAGV,IAFA,IAAIhJ,EAAgB,SAARF,EACRG,EAAO/N,KAAK2L,IAAIvD,EAAG0D,EAAInb,OAAS,GAC3B8P,EAAIT,KAAK+L,IAAI,EAAG3D,EAAIvH,EAAKlQ,OAAS,GAAI8P,GAAKsN,EAAMtN,IAAK,CAC7D,IAAI9T,EAAIyb,EAAI3H,EAGRzB,GAFoB,EAAhB6B,EAAKyK,MAAM3e,KACI,EAAfmf,EAAIR,MAAM7K,IAGdkN,EAAS,SAAJ3O,EAGT8O,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBgJ,IAFAjJ,GAHAA,EAAUA,GAAW7O,EAAI,SAAa,GAAM,IAGxB2O,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZH,EAAIpC,MAAMlD,GAAK0F,EACfF,EAAQC,EACRA,EAASiJ,EAQX,OANc,IAAVlJ,EACFF,EAAIpC,MAAMlD,GAAKwF,EAEfF,EAAI/c,SAGC+c,EAAInB,QAgBHwK,CAAS5oB,KAAM2d,EAAK4B,GAEpB8I,EAAWroB,KAAM2d,EAAK4B,GAGvBmB,GAWT4H,EAAKnpB,UAAU0pB,QAAU,SAAkBC,GAGzC,IAFA,IAAI9H,EAAI,IAAIrd,MAAMmlB,GACdC,EAAIlM,EAAG1d,UAAU4hB,WAAW+H,GAAK,EAC5BtqB,EAAI,EAAGA,EAAIsqB,EAAGtqB,IACrBwiB,EAAExiB,GAAKwB,KAAKgpB,OAAOxqB,EAAGuqB,EAAGD,GAG3B,OAAO9H,GAITsH,EAAKnpB,UAAU6pB,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACAzqB,EAAI,EAAGA,EAAIuqB,EAAGvqB,IACrByqB,IAAW,EAAJT,IAAWO,EAAIvqB,EAAI,EAC1BgqB,IAAM,EAGR,OAAOS,GAKTX,EAAKnpB,UAAU+pB,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAItqB,EAAI,EAAGA,EAAIsqB,EAAGtqB,IACrB8qB,EAAK9qB,GAAK4qB,EAAID,EAAI3qB,IAClB+qB,EAAK/qB,GAAK6qB,EAAIF,EAAI3qB,KAItB8pB,EAAKnpB,UAAUqqB,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtEnpB,KAAKkpB,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAI/b,EAAI,EAAGA,EAAI+b,EAAG/b,IAAM,EAM3B,IALA,IAAIgc,EAAIhc,GAAK,EAET0c,EAAQ5X,KAAK6X,IAAI,EAAI7X,KAAK8X,GAAKZ,GAC/Ba,EAAQ/X,KAAKgY,IAAI,EAAIhY,KAAK8X,GAAKZ,GAE1Be,EAAI,EAAGA,EAAIhB,EAAGgB,GAAKf,EAI1B,IAHA,IAAIgB,EAASN,EACTO,EAASJ,EAEJtX,EAAI,EAAGA,EAAIvF,EAAGuF,IAAK,CAC1B,IAAI2X,EAAKX,EAAKQ,EAAIxX,GACd4X,EAAKX,EAAKO,EAAIxX,GAEd6X,EAAKb,EAAKQ,EAAIxX,EAAIvF,GAClBqd,EAAKb,EAAKO,EAAIxX,EAAIvF,GAElBsd,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELf,EAAKQ,EAAIxX,GAAK2X,EAAKE,EACnBZ,EAAKO,EAAIxX,GAAK4X,EAAKE,EAEnBd,EAAKQ,EAAIxX,EAAIvF,GAAKkd,EAAKE,EACvBZ,EAAKO,EAAIxX,EAAIvF,GAAKmd,EAAKE,EAGnB9X,IAAMyW,IACRsB,EAAKZ,EAAQM,EAASH,EAAQI,EAE9BA,EAASP,EAAQO,EAASJ,EAAQG,EAClCA,EAASM,KAOnB/B,EAAKnpB,UAAUmrB,YAAc,SAAsBvmB,EAAGhC,GACpD,IAAI+mB,EAAqB,EAAjBjX,KAAK+L,IAAI7b,EAAGgC,GAChBwmB,EAAU,EAAJzB,EACNtqB,EAAI,EACR,IAAKsqB,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BtqB,IAGF,OAAO,GAAKA,EAAI,EAAI+rB,GAGtBjC,EAAKnpB,UAAUqrB,UAAY,SAAoBpB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAItqB,EAAI,EAAGA,EAAIsqB,EAAI,EAAGtqB,IAAK,CAC9B,IAAIwiB,EAAIoI,EAAI5qB,GAEZ4qB,EAAI5qB,GAAK4qB,EAAIN,EAAItqB,EAAI,GACrB4qB,EAAIN,EAAItqB,EAAI,GAAKwiB,EAEjBA,EAAIqI,EAAI7qB,GAER6qB,EAAI7qB,IAAM6qB,EAAIP,EAAItqB,EAAI,GACtB6qB,EAAIP,EAAItqB,EAAI,IAAMwiB,IAItBsH,EAAKnpB,UAAUsrB,aAAe,SAAuBC,EAAI5B,GAEvD,IADA,IAAIrJ,EAAQ,EACHjhB,EAAI,EAAGA,EAAIsqB,EAAI,EAAGtqB,IAAK,CAC9B,IAAIkE,EAAoC,KAAhCmP,KAAK8Y,MAAMD,EAAG,EAAIlsB,EAAI,GAAKsqB,GACjCjX,KAAK8Y,MAAMD,EAAG,EAAIlsB,GAAKsqB,GACvBrJ,EAEFiL,EAAGlsB,GAAS,SAAJkE,EAGN+c,EADE/c,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOgoB,GAGTpC,EAAKnpB,UAAUyrB,WAAa,SAAqBF,EAAIxlB,EAAKkkB,EAAKN,GAE7D,IADA,IAAIrJ,EAAQ,EACHjhB,EAAI,EAAGA,EAAI0G,EAAK1G,IACvBihB,GAAyB,EAARiL,EAAGlsB,GAEpB4qB,EAAI,EAAI5qB,GAAa,KAARihB,EAAgBA,KAAkB,GAC/C2J,EAAI,EAAI5qB,EAAI,GAAa,KAARihB,EAAgBA,KAAkB,GAIrD,IAAKjhB,EAAI,EAAI0G,EAAK1G,EAAIsqB,IAAKtqB,EACzB4qB,EAAI5qB,GAAK,EAGX8d,EAAiB,IAAVmD,GACPnD,EAA6B,MAAb,KAARmD,KAGV6I,EAAKnpB,UAAU0rB,KAAO,SAAe/B,GAEnC,IADA,IAAIgC,EAAK,IAAInnB,MAAMmlB,GACVtqB,EAAI,EAAGA,EAAIsqB,EAAGtqB,IACrBssB,EAAGtsB,GAAK,EAGV,OAAOssB,GAGTxC,EAAKnpB,UAAUopB,KAAO,SAAeC,EAAGC,EAAGlJ,GACzC,IAAIuJ,EAAI,EAAI9oB,KAAKsqB,YAAY9B,EAAEhmB,OAAQimB,EAAEjmB,QAErC2mB,EAAMnpB,KAAK6oB,QAAQC,GAEnBiC,EAAI/qB,KAAK6qB,KAAK/B,GAEdM,EAAM,IAAIzlB,MAAMmlB,GAChBkC,EAAO,IAAIrnB,MAAMmlB,GACjBmC,EAAO,IAAItnB,MAAMmlB,GAEjBoC,EAAO,IAAIvnB,MAAMmlB,GACjBqC,EAAQ,IAAIxnB,MAAMmlB,GAClBsC,EAAQ,IAAIznB,MAAMmlB,GAElBuC,EAAO9L,EAAIpC,MACfkO,EAAK7oB,OAASsmB,EAEd9oB,KAAK4qB,WAAWpC,EAAErL,MAAOqL,EAAEhmB,OAAQ4mB,EAAKN,GACxC9oB,KAAK4qB,WAAWnC,EAAEtL,MAAOsL,EAAEjmB,OAAQ0oB,EAAMpC,GAEzC9oB,KAAKwpB,UAAUJ,EAAK2B,EAAGC,EAAMC,EAAMnC,EAAGK,GACtCnpB,KAAKwpB,UAAU0B,EAAMH,EAAGI,EAAOC,EAAOtC,EAAGK,GAEzC,IAAK,IAAI3qB,EAAI,EAAGA,EAAIsqB,EAAGtqB,IAAK,CAC1B,IAAI6rB,EAAKW,EAAKxsB,GAAK2sB,EAAM3sB,GAAKysB,EAAKzsB,GAAK4sB,EAAM5sB,GAC9CysB,EAAKzsB,GAAKwsB,EAAKxsB,GAAK4sB,EAAM5sB,GAAKysB,EAAKzsB,GAAK2sB,EAAM3sB,GAC/CwsB,EAAKxsB,GAAK6rB,EAUZ,OAPArqB,KAAKwqB,UAAUQ,EAAMC,EAAMnC,GAC3B9oB,KAAKwpB,UAAUwB,EAAMC,EAAMI,EAAMN,EAAGjC,EAAGK,GACvCnpB,KAAKwqB,UAAUa,EAAMN,EAAGjC,GACxB9oB,KAAKyqB,aAAaY,EAAMvC,GAExBvJ,EAAIrC,SAAWsL,EAAEtL,SAAWuL,EAAEvL,SAC9BqC,EAAI/c,OAASgmB,EAAEhmB,OAASimB,EAAEjmB,OACnB+c,EAAInB,SAIbvB,EAAG1d,UAAUue,IAAM,SAAcC,GAC/B,IAAI4B,EAAM,IAAI1C,EAAG,MAEjB,OADA0C,EAAIpC,MAAQ,IAAIxZ,MAAM3D,KAAKwC,OAASmb,EAAInb,QACjCxC,KAAK0oB,MAAM/K,EAAK4B,IAIzB1C,EAAG1d,UAAUmsB,KAAO,SAAe3N,GACjC,IAAI4B,EAAM,IAAI1C,EAAG,MAEjB,OADA0C,EAAIpC,MAAQ,IAAIxZ,MAAM3D,KAAKwC,OAASmb,EAAInb,QACjC6lB,EAAWroB,KAAM2d,EAAK4B,IAI/B1C,EAAG1d,UAAU+nB,KAAO,SAAevJ,GACjC,OAAO3d,KAAKkY,QAAQwQ,MAAM/K,EAAK3d,OAGjC6c,EAAG1d,UAAUyf,MAAQ,SAAgBjB,GACnCrB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UAIb,IADA,IAAI8B,EAAQ,EACHjhB,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAAK,CACpC,IAAIkE,GAAqB,EAAhB1C,KAAKmd,MAAM3e,IAAUmf,EAC1B6B,GAAU,SAAJ9c,IAA0B,SAAR+c,GAC5BA,IAAU,GACVA,GAAU/c,EAAI,SAAa,EAE3B+c,GAASD,IAAO,GAChBxf,KAAKmd,MAAM3e,GAAU,SAALghB,EAQlB,OALc,IAAVC,IACFzf,KAAKmd,MAAM3e,GAAKihB,EAChBzf,KAAKwC,UAGAxC,MAGT6c,EAAG1d,UAAUosB,KAAO,SAAe5N,GACjC,OAAO3d,KAAKkY,QAAQ0G,MAAMjB,IAI5Bd,EAAG1d,UAAUqsB,IAAM,WACjB,OAAOxrB,KAAK0d,IAAI1d,OAIlB6c,EAAG1d,UAAUssB,KAAO,WAClB,OAAOzrB,KAAKknB,KAAKlnB,KAAKkY,UAIxB2E,EAAG1d,UAAU2f,IAAM,SAAcnB,GAC/B,IAAIjb,EAxxCN,SAAqBib,GAGnB,IAFA,IAAIjb,EAAI,IAAIiB,MAAMga,EAAIuD,aAEb5Z,EAAM,EAAGA,EAAM5E,EAAEF,OAAQ8E,IAAO,CACvC,IAAIxB,EAAOwB,EAAM,GAAM,EACnBwb,EAAOxb,EAAM,GAEjB5E,EAAE4E,IAAQqW,EAAIR,MAAMrX,GAAQ,GAAKgd,KAAWA,EAG9C,OAAOpgB,EA8wCCgpB,CAAW/N,GACnB,GAAiB,IAAbjb,EAAEF,OAAc,OAAO,IAAIqa,EAAG,GAIlC,IADA,IAAI6D,EAAM1gB,KACDxB,EAAI,EAAGA,EAAIkE,EAAEF,QACP,IAATE,EAAElE,GADsBA,IAAKkiB,EAAMA,EAAI8K,OAI7C,KAAMhtB,EAAIkE,EAAEF,OACV,IAAK,IAAIme,EAAID,EAAI8K,MAAOhtB,EAAIkE,EAAEF,OAAQhE,IAAKmiB,EAAIA,EAAE6K,MAClC,IAAT9oB,EAAElE,KAENkiB,EAAMA,EAAIhD,IAAIiD,IAIlB,OAAOD,GAIT7D,EAAG1d,UAAUwsB,OAAS,SAAiBC,GACrCtP,EAAuB,kBAATsP,GAAqBA,GAAQ,GAC3C,IAGIptB,EAHAqS,EAAI+a,EAAO,GACX7e,GAAK6e,EAAO/a,GAAK,GACjBgb,EAAa,WAAe,GAAKhb,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAI4O,EAAQ,EAEZ,IAAKjhB,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAAK,CAChC,IAAIstB,EAAW9rB,KAAKmd,MAAM3e,GAAKqtB,EAC3Bpb,GAAsB,EAAhBzQ,KAAKmd,MAAM3e,IAAUstB,GAAajb,EAC5C7Q,KAAKmd,MAAM3e,GAAKiS,EAAIgP,EACpBA,EAAQqM,IAAc,GAAKjb,EAGzB4O,IACFzf,KAAKmd,MAAM3e,GAAKihB,EAChBzf,KAAKwC,UAIT,GAAU,IAANuK,EAAS,CACX,IAAKvO,EAAIwB,KAAKwC,OAAS,EAAGhE,GAAK,EAAGA,IAChCwB,KAAKmd,MAAM3e,EAAIuO,GAAK/M,KAAKmd,MAAM3e,GAGjC,IAAKA,EAAI,EAAGA,EAAIuO,EAAGvO,IACjBwB,KAAKmd,MAAM3e,GAAK,EAGlBwB,KAAKwC,QAAUuK,EAGjB,OAAO/M,KAAKoe,SAGdvB,EAAG1d,UAAU4sB,MAAQ,SAAgBH,GAGnC,OADAtP,EAAyB,IAAlBtc,KAAKkd,UACLld,KAAK2rB,OAAOC,IAMrB/O,EAAG1d,UAAU0hB,OAAS,SAAiB+K,EAAMI,EAAMC,GAEjD,IAAIC,EADJ5P,EAAuB,kBAATsP,GAAqBA,GAAQ,GAGzCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAInb,EAAI+a,EAAO,GACX7e,EAAI8E,KAAK2L,KAAKoO,EAAO/a,GAAK,GAAI7Q,KAAKwC,QACnC2pB,EAAO,SAAc,WAActb,GAAMA,EACzCub,EAAcH,EAMlB,GAJAC,GAAKnf,EACLmf,EAAIra,KAAK+L,IAAI,EAAGsO,GAGZE,EAAa,CACf,IAAK,IAAI5tB,EAAI,EAAGA,EAAIuO,EAAGvO,IACrB4tB,EAAYjP,MAAM3e,GAAKwB,KAAKmd,MAAM3e,GAEpC4tB,EAAY5pB,OAASuK,EAGvB,GAAU,IAANA,QAEG,GAAI/M,KAAKwC,OAASuK,EAEvB,IADA/M,KAAKwC,QAAUuK,EACVvO,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAC3BwB,KAAKmd,MAAM3e,GAAKwB,KAAKmd,MAAM3e,EAAIuO,QAGjC/M,KAAKmd,MAAM,GAAK,EAChBnd,KAAKwC,OAAS,EAGhB,IAAIid,EAAQ,EACZ,IAAKjhB,EAAIwB,KAAKwC,OAAS,EAAGhE,GAAK,IAAgB,IAAVihB,GAAejhB,GAAK0tB,GAAI1tB,IAAK,CAChE,IAAImgB,EAAuB,EAAhB3e,KAAKmd,MAAM3e,GACtBwB,KAAKmd,MAAM3e,GAAMihB,GAAU,GAAK5O,EAAO8N,IAAS9N,EAChD4O,EAAQd,EAAOwN,EAajB,OATIC,GAAyB,IAAV3M,IACjB2M,EAAYjP,MAAMiP,EAAY5pB,UAAYid,GAGxB,IAAhBzf,KAAKwC,SACPxC,KAAKmd,MAAM,GAAK,EAChBnd,KAAKwC,OAAS,GAGTxC,KAAKoe,SAGdvB,EAAG1d,UAAUktB,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADA3P,EAAyB,IAAlBtc,KAAKkd,UACLld,KAAK6gB,OAAO+K,EAAMI,EAAMC,IAIjCpP,EAAG1d,UAAUmtB,KAAO,SAAeV,GACjC,OAAO5rB,KAAKkY,QAAQ6T,MAAMH,IAG5B/O,EAAG1d,UAAUotB,MAAQ,SAAgBX,GACnC,OAAO5rB,KAAKkY,QAAQyT,OAAOC,IAI7B/O,EAAG1d,UAAUqtB,KAAO,SAAeZ,GACjC,OAAO5rB,KAAKkY,QAAQmU,MAAMT,IAG5B/O,EAAG1d,UAAUstB,MAAQ,SAAgBb,GACnC,OAAO5rB,KAAKkY,QAAQ2I,OAAO+K,IAI7B/O,EAAG1d,UAAUuiB,MAAQ,SAAgBpa,GACnCgV,EAAsB,kBAARhV,GAAoBA,GAAO,GACzC,IAAIuJ,EAAIvJ,EAAM,GACVyF,GAAKzF,EAAMuJ,GAAK,GAChB8P,EAAI,GAAK9P,EAGb,QAAI7Q,KAAKwC,QAAUuK,OAGX/M,KAAKmd,MAAMpQ,GAEL4T,IAIhB9D,EAAG1d,UAAUutB,OAAS,SAAiBd,GACrCtP,EAAuB,kBAATsP,GAAqBA,GAAQ,GAC3C,IAAI/a,EAAI+a,EAAO,GACX7e,GAAK6e,EAAO/a,GAAK,GAIrB,GAFAyL,EAAyB,IAAlBtc,KAAKkd,SAAgB,2CAExBld,KAAKwC,QAAUuK,EACjB,OAAO/M,KAQT,GALU,IAAN6Q,GACF9D,IAEF/M,KAAKwC,OAASqP,KAAK2L,IAAIzQ,EAAG/M,KAAKwC,QAErB,IAANqO,EAAS,CACX,IAAIsb,EAAO,SAAc,WAActb,GAAMA,EAC7C7Q,KAAKmd,MAAMnd,KAAKwC,OAAS,IAAM2pB,EAGjC,OAAOnsB,KAAKoe,SAIdvB,EAAG1d,UAAUwtB,MAAQ,SAAgBf,GACnC,OAAO5rB,KAAKkY,QAAQwU,OAAOd,IAI7B/O,EAAG1d,UAAUqiB,MAAQ,SAAgB7D,GAGnC,OAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAU3d,KAAK4sB,OAAOjP,GAGV,IAAlB3d,KAAKkd,SACa,IAAhBld,KAAKwC,SAAiC,EAAhBxC,KAAKmd,MAAM,IAAUQ,GAC7C3d,KAAKmd,MAAM,GAAKQ,GAAuB,EAAhB3d,KAAKmd,MAAM,IAClCnd,KAAKkd,SAAW,EACTld,OAGTA,KAAKkd,SAAW,EAChBld,KAAK4sB,MAAMjP,GACX3d,KAAKkd,SAAW,EACTld,MAIFA,KAAK6e,OAAOlB,IAGrBd,EAAG1d,UAAU0f,OAAS,SAAiBlB,GACrC3d,KAAKmd,MAAM,IAAMQ,EAGjB,IAAK,IAAInf,EAAI,EAAGA,EAAIwB,KAAKwC,QAAUxC,KAAKmd,MAAM3e,IAAM,SAAWA,IAC7DwB,KAAKmd,MAAM3e,IAAM,SACbA,IAAMwB,KAAKwC,OAAS,EACtBxC,KAAKmd,MAAM3e,EAAI,GAAK,EAEpBwB,KAAKmd,MAAM3e,EAAI,KAKnB,OAFAwB,KAAKwC,OAASqP,KAAK+L,IAAI5d,KAAKwC,OAAQhE,EAAI,GAEjCwB,MAIT6c,EAAG1d,UAAUytB,MAAQ,SAAgBjP,GAGnC,GAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAG,OAAO3d,KAAKwhB,OAAO7D,GAEhC,GAAsB,IAAlB3d,KAAKkd,SAIP,OAHAld,KAAKkd,SAAW,EAChBld,KAAKwhB,MAAM7D,GACX3d,KAAKkd,SAAW,EACTld,KAKT,GAFAA,KAAKmd,MAAM,IAAMQ,EAEG,IAAhB3d,KAAKwC,QAAgBxC,KAAKmd,MAAM,GAAK,EACvCnd,KAAKmd,MAAM,IAAMnd,KAAKmd,MAAM,GAC5Bnd,KAAKkd,SAAW,OAGhB,IAAK,IAAI1e,EAAI,EAAGA,EAAIwB,KAAKwC,QAAUxC,KAAKmd,MAAM3e,GAAK,EAAGA,IACpDwB,KAAKmd,MAAM3e,IAAM,SACjBwB,KAAKmd,MAAM3e,EAAI,IAAM,EAIzB,OAAOwB,KAAKoe,SAGdvB,EAAG1d,UAAU0tB,KAAO,SAAelP,GACjC,OAAO3d,KAAKkY,QAAQsJ,MAAM7D,IAG5Bd,EAAG1d,UAAU2tB,KAAO,SAAenP,GACjC,OAAO3d,KAAKkY,QAAQ0U,MAAMjP,IAG5Bd,EAAG1d,UAAU4tB,KAAO,WAGlB,OAFA/sB,KAAKkd,SAAW,EAETld,MAGT6c,EAAG1d,UAAUmiB,IAAM,WACjB,OAAOthB,KAAKkY,QAAQ6U,QAGtBlQ,EAAG1d,UAAU6tB,aAAe,SAAuBrP,EAAKD,EAAKhY,GAC3D,IACIlH,EAIAkE,EALAwC,EAAMyY,EAAInb,OAASkD,EAGvB1F,KAAKgf,QAAQ9Z,GAGb,IAAIua,EAAQ,EACZ,IAAKjhB,EAAI,EAAGA,EAAImf,EAAInb,OAAQhE,IAAK,CAC/BkE,GAA6B,EAAxB1C,KAAKmd,MAAM3e,EAAIkH,IAAc+Z,EAClC,IAAI3B,GAAwB,EAAfH,EAAIR,MAAM3e,IAAUkf,EAEjC+B,IADA/c,GAAa,SAARob,IACS,KAAQA,EAAQ,SAAa,GAC3C9d,KAAKmd,MAAM3e,EAAIkH,GAAa,SAAJhD,EAE1B,KAAOlE,EAAIwB,KAAKwC,OAASkD,EAAOlH,IAE9BihB,GADA/c,GAA6B,EAAxB1C,KAAKmd,MAAM3e,EAAIkH,IAAc+Z,IACrB,GACbzf,KAAKmd,MAAM3e,EAAIkH,GAAa,SAAJhD,EAG1B,GAAc,IAAV+c,EAAa,OAAOzf,KAAKoe,QAK7B,IAFA9B,GAAkB,IAAXmD,GACPA,EAAQ,EACHjhB,EAAI,EAAGA,EAAIwB,KAAKwC,OAAQhE,IAE3BihB,GADA/c,IAAsB,EAAhB1C,KAAKmd,MAAM3e,IAAUihB,IACd,GACbzf,KAAKmd,MAAM3e,GAAS,SAAJkE,EAIlB,OAFA1C,KAAKkd,SAAW,EAETld,KAAKoe,SAGdvB,EAAG1d,UAAU8tB,SAAW,SAAmBtP,EAAK9V,GAC9C,IAAInC,GAAQ1F,KAAKwC,OAASmb,EAAInb,QAE1BuO,EAAI/Q,KAAKkY,QACThM,EAAIyR,EAGJuP,EAA8B,EAAxBhhB,EAAEiR,MAAMjR,EAAE1J,OAAS,GAGf,KADdkD,EAAQ,GADM1F,KAAK+gB,WAAWmM,MAG5BhhB,EAAIA,EAAEqgB,MAAM7mB,GACZqL,EAAE4a,OAAOjmB,GACTwnB,EAA8B,EAAxBhhB,EAAEiR,MAAMjR,EAAE1J,OAAS,IAI3B,IACIme,EADA5e,EAAIgP,EAAEvO,OAAS0J,EAAE1J,OAGrB,GAAa,QAATqF,EAAgB,EAClB8Y,EAAI,IAAI9D,EAAG,OACTra,OAAST,EAAI,EACf4e,EAAExD,MAAQ,IAAIxZ,MAAMgd,EAAEne,QACtB,IAAK,IAAIhE,EAAI,EAAGA,EAAImiB,EAAEne,OAAQhE,IAC5BmiB,EAAExD,MAAM3e,GAAK,EAIjB,IAAI2uB,EAAOpc,EAAEmH,QAAQ8U,aAAa9gB,EAAG,EAAGnK,GAClB,IAAlBorB,EAAKjQ,WACPnM,EAAIoc,EACAxM,IACFA,EAAExD,MAAMpb,GAAK,IAIjB,IAAK,IAAIuQ,EAAIvQ,EAAI,EAAGuQ,GAAK,EAAGA,IAAK,CAC/B,IAAI8a,EAAmC,UAAL,EAAxBrc,EAAEoM,MAAMjR,EAAE1J,OAAS8P,KACE,EAA5BvB,EAAEoM,MAAMjR,EAAE1J,OAAS8P,EAAI,IAO1B,IAHA8a,EAAKvb,KAAK2L,IAAK4P,EAAKF,EAAO,EAAG,UAE9Bnc,EAAEic,aAAa9gB,EAAGkhB,EAAI9a,GACA,IAAfvB,EAAEmM,UACPkQ,IACArc,EAAEmM,SAAW,EACbnM,EAAEic,aAAa9gB,EAAG,EAAGoG,GAChBvB,EAAEiP,WACLjP,EAAEmM,UAAY,GAGdyD,IACFA,EAAExD,MAAM7K,GAAK8a,GAajB,OAVIzM,GACFA,EAAEvC,QAEJrN,EAAEqN,QAGW,QAATvW,GAA4B,IAAVnC,GACpBqL,EAAE8P,OAAOnb,GAGJ,CACL2nB,IAAK1M,GAAK,KACVjC,IAAK3N,IAQT8L,EAAG1d,UAAUmuB,OAAS,SAAiB3P,EAAK9V,EAAM0lB,GAGhD,OAFAjR,GAAQqB,EAAIqC,UAERhgB,KAAKggB,SACA,CACLqN,IAAK,IAAIxQ,EAAG,GACZ6B,IAAK,IAAI7B,EAAG,IAKM,IAAlB7c,KAAKkd,UAAmC,IAAjBS,EAAIT,UAC7BwD,EAAM1gB,KAAK8hB,MAAMwL,OAAO3P,EAAK9V,GAEhB,QAATA,IACFwlB,EAAM3M,EAAI2M,IAAIvL,OAGH,QAATja,IACF6W,EAAMgC,EAAIhC,IAAIoD,MACVyL,GAA6B,IAAjB7O,EAAIxB,UAClBwB,EAAIqE,KAAKpF,IAIN,CACL0P,IAAKA,EACL3O,IAAKA,IAIa,IAAlB1e,KAAKkd,UAAmC,IAAjBS,EAAIT,UAC7BwD,EAAM1gB,KAAKstB,OAAO3P,EAAImE,MAAOja,GAEhB,QAATA,IACFwlB,EAAM3M,EAAI2M,IAAIvL,OAGT,CACLuL,IAAKA,EACL3O,IAAKgC,EAAIhC,MAI0B,KAAlC1e,KAAKkd,SAAWS,EAAIT,WACvBwD,EAAM1gB,KAAK8hB,MAAMwL,OAAO3P,EAAImE,MAAOja,GAEtB,QAATA,IACF6W,EAAMgC,EAAIhC,IAAIoD,MACVyL,GAA6B,IAAjB7O,EAAIxB,UAClBwB,EAAIsE,KAAKrF,IAIN,CACL0P,IAAK3M,EAAI2M,IACT3O,IAAKA,IAOLf,EAAInb,OAASxC,KAAKwC,QAAUxC,KAAK+d,IAAIJ,GAAO,EACvC,CACL0P,IAAK,IAAIxQ,EAAG,GACZ6B,IAAK1e,MAKU,IAAf2d,EAAInb,OACO,QAATqF,EACK,CACLwlB,IAAKrtB,KAAKwtB,KAAK7P,EAAIR,MAAM,IACzBuB,IAAK,MAII,QAAT7W,EACK,CACLwlB,IAAK,KACL3O,IAAK,IAAI7B,EAAG7c,KAAKigB,KAAKtC,EAAIR,MAAM,MAI7B,CACLkQ,IAAKrtB,KAAKwtB,KAAK7P,EAAIR,MAAM,IACzBuB,IAAK,IAAI7B,EAAG7c,KAAKigB,KAAKtC,EAAIR,MAAM,MAI7Bnd,KAAKitB,SAAStP,EAAK9V,GAlF1B,IAAIwlB,EAAK3O,EAAKgC,GAsFhB7D,EAAG1d,UAAUkuB,IAAM,SAAc1P,GAC/B,OAAO3d,KAAKstB,OAAO3P,EAAK,OAAO,GAAO0P,KAIxCxQ,EAAG1d,UAAUuf,IAAM,SAAcf,GAC/B,OAAO3d,KAAKstB,OAAO3P,EAAK,OAAO,GAAOe,KAGxC7B,EAAG1d,UAAUsuB,KAAO,SAAe9P,GACjC,OAAO3d,KAAKstB,OAAO3P,EAAK,OAAO,GAAMe,KAIvC7B,EAAG1d,UAAUuuB,SAAW,SAAmB/P,GACzC,IAAIgQ,EAAK3tB,KAAKstB,OAAO3P,GAGrB,GAAIgQ,EAAGjP,IAAIsB,SAAU,OAAO2N,EAAGN,IAE/B,IAAI3O,EAA0B,IAApBiP,EAAGN,IAAInQ,SAAiByQ,EAAGjP,IAAIsE,KAAKrF,GAAOgQ,EAAGjP,IAEpDkP,EAAOjQ,EAAI8O,MAAM,GACjBoB,EAAKlQ,EAAIiD,MAAM,GACf7C,EAAMW,EAAIX,IAAI6P,GAGlB,OAAI7P,EAAM,GAAY,IAAP8P,GAAoB,IAAR9P,EAAkB4P,EAAGN,IAGrB,IAApBM,EAAGN,IAAInQ,SAAiByQ,EAAGN,IAAIT,MAAM,GAAKe,EAAGN,IAAI7L,MAAM,IAGhE3E,EAAG1d,UAAU8gB,KAAO,SAAetC,GACjCrB,EAAOqB,GAAO,UAId,IAHA,IAAImM,GAAK,GAAK,IAAMnM,EAEhBmQ,EAAM,EACDtvB,EAAIwB,KAAKwC,OAAS,EAAGhE,GAAK,EAAGA,IACpCsvB,GAAOhE,EAAIgE,GAAuB,EAAhB9tB,KAAKmd,MAAM3e,KAAWmf,EAG1C,OAAOmQ,GAITjR,EAAG1d,UAAU+gB,MAAQ,SAAgBvC,GACnCrB,EAAOqB,GAAO,UAGd,IADA,IAAI8B,EAAQ,EACHjhB,EAAIwB,KAAKwC,OAAS,EAAGhE,GAAK,EAAGA,IAAK,CACzC,IAAIkE,GAAqB,EAAhB1C,KAAKmd,MAAM3e,IAAkB,SAARihB,EAC9Bzf,KAAKmd,MAAM3e,GAAMkE,EAAIib,EAAO,EAC5B8B,EAAQ/c,EAAIib,EAGd,OAAO3d,KAAKoe,SAGdvB,EAAG1d,UAAUquB,KAAO,SAAe7P,GACjC,OAAO3d,KAAKkY,QAAQgI,MAAMvC,IAG5Bd,EAAG1d,UAAU4uB,KAAO,SAAejE,GACjCxN,EAAsB,IAAfwN,EAAE5M,UACTZ,GAAQwN,EAAE9J,UAEV,IAAIwI,EAAIxoB,KACJyoB,EAAIqB,EAAE5R,QAGRsQ,EADiB,IAAfA,EAAEtL,SACAsL,EAAEiF,KAAK3D,GAEPtB,EAAEtQ,QAaR,IATA,IAAI8V,EAAI,IAAInR,EAAG,GACXoR,EAAI,IAAIpR,EAAG,GAGXqR,EAAI,IAAIrR,EAAG,GACXsR,EAAI,IAAItR,EAAG,GAEX/L,EAAI,EAED0X,EAAE4F,UAAY3F,EAAE2F,UACrB5F,EAAE3H,OAAO,GACT4H,EAAE5H,OAAO,KACP/P,EAMJ,IAHA,IAAIud,EAAK5F,EAAEvQ,QACPoW,EAAK9F,EAAEtQ,SAEHsQ,EAAExI,UAAU,CAClB,IAAK,IAAIxhB,EAAI,EAAG+vB,EAAK,EAAyB,KAArB/F,EAAErL,MAAM,GAAKoR,IAAa/vB,EAAI,KAAMA,EAAG+vB,IAAO,GACvE,GAAI/vB,EAAI,EAEN,IADAgqB,EAAE3H,OAAOriB,GACFA,KAAM,IACPwvB,EAAEQ,SAAWP,EAAEO,WACjBR,EAAEjL,KAAKsL,GACPJ,EAAEjL,KAAKsL,IAGTN,EAAEnN,OAAO,GACToN,EAAEpN,OAAO,GAIb,IAAK,IAAIvO,EAAI,EAAGmc,EAAK,EAAyB,KAArBhG,EAAEtL,MAAM,GAAKsR,IAAanc,EAAI,KAAMA,EAAGmc,IAAO,GACvE,GAAInc,EAAI,EAEN,IADAmW,EAAE5H,OAAOvO,GACFA,KAAM,IACP4b,EAAEM,SAAWL,EAAEK,WACjBN,EAAEnL,KAAKsL,GACPF,EAAEnL,KAAKsL,IAGTJ,EAAErN,OAAO,GACTsN,EAAEtN,OAAO,GAIT2H,EAAEzK,IAAI0K,IAAM,GACdD,EAAExF,KAAKyF,GACPuF,EAAEhL,KAAKkL,GACPD,EAAEjL,KAAKmL,KAEP1F,EAAEzF,KAAKwF,GACP0F,EAAElL,KAAKgL,GACPG,EAAEnL,KAAKiL,IAIX,MAAO,CACLld,EAAGmd,EACHhiB,EAAGiiB,EACHO,IAAKjG,EAAEkD,OAAO7a,KAOlB+L,EAAG1d,UAAUwvB,OAAS,SAAiB7E,GACrCxN,EAAsB,IAAfwN,EAAE5M,UACTZ,GAAQwN,EAAE9J,UAEV,IAAIjP,EAAI/Q,KACJkM,EAAI4d,EAAE5R,QAGRnH,EADiB,IAAfA,EAAEmM,SACAnM,EAAE0c,KAAK3D,GAEP/Y,EAAEmH,QAQR,IALA,IAuCIwI,EAvCAkO,EAAK,IAAI/R,EAAG,GACZgS,EAAK,IAAIhS,EAAG,GAEZiS,EAAQ5iB,EAAEgM,QAEPnH,EAAEge,KAAK,GAAK,GAAK7iB,EAAE6iB,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIvwB,EAAI,EAAG+vB,EAAK,EAAyB,KAArBxd,EAAEoM,MAAM,GAAKoR,IAAa/vB,EAAI,KAAMA,EAAG+vB,IAAO,GACvE,GAAI/vB,EAAI,EAEN,IADAuS,EAAE8P,OAAOriB,GACFA,KAAM,GACPowB,EAAGJ,SACLI,EAAG7L,KAAK+L,GAGVF,EAAG/N,OAAO,GAId,IAAK,IAAIvO,EAAI,EAAGmc,EAAK,EAAyB,KAArBviB,EAAEiR,MAAM,GAAKsR,IAAanc,EAAI,KAAMA,EAAGmc,IAAO,GACvE,GAAInc,EAAI,EAEN,IADApG,EAAE2U,OAAOvO,GACFA,KAAM,GACPuc,EAAGL,SACLK,EAAG9L,KAAK+L,GAGVD,EAAGhO,OAAO,GAIV9P,EAAEgN,IAAI7R,IAAM,GACd6E,EAAEiS,KAAK9W,GACP0iB,EAAG5L,KAAK6L,KAER3iB,EAAE8W,KAAKjS,GACP8d,EAAG7L,KAAK4L,IAeZ,OATElO,EADgB,IAAd3P,EAAEge,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBrO,EAAIqC,KAAK+G,GAGJpJ,GAGT7D,EAAG1d,UAAUuvB,IAAM,SAAc/Q,GAC/B,GAAI3d,KAAKggB,SAAU,OAAOrC,EAAI2D,MAC9B,GAAI3D,EAAIqC,SAAU,OAAOhgB,KAAKshB,MAE9B,IAAIvQ,EAAI/Q,KAAKkY,QACThM,EAAIyR,EAAIzF,QACZnH,EAAEmM,SAAW,EACbhR,EAAEgR,SAAW,EAGb,IAAK,IAAIxX,EAAQ,EAAGqL,EAAEqd,UAAYliB,EAAEkiB,SAAU1oB,IAC5CqL,EAAE8P,OAAO,GACT3U,EAAE2U,OAAO,GAGX,OAAG,CACD,KAAO9P,EAAEqd,UACPrd,EAAE8P,OAAO,GAEX,KAAO3U,EAAEkiB,UACPliB,EAAE2U,OAAO,GAGX,IAAIhQ,EAAIE,EAAEgN,IAAI7R,GACd,GAAI2E,EAAI,EAAG,CAET,IAAImQ,EAAIjQ,EACRA,EAAI7E,EACJA,EAAI8U,OACC,GAAU,IAANnQ,GAAyB,IAAd3E,EAAE6iB,KAAK,GAC3B,MAGFhe,EAAEiS,KAAK9W,GAGT,OAAOA,EAAEyf,OAAOjmB,IAIlBmX,EAAG1d,UAAU6vB,KAAO,SAAerR,GACjC,OAAO3d,KAAK+tB,KAAKpQ,GAAK5M,EAAE0c,KAAK9P,IAG/Bd,EAAG1d,UAAUivB,OAAS,WACpB,OAA+B,KAAP,EAAhBpuB,KAAKmd,MAAM,KAGrBN,EAAG1d,UAAUqvB,MAAQ,WACnB,OAA+B,KAAP,EAAhBxuB,KAAKmd,MAAM,KAIrBN,EAAG1d,UAAUyhB,MAAQ,SAAgBjD,GACnC,OAAO3d,KAAKmd,MAAM,GAAKQ,GAIzBd,EAAG1d,UAAU8vB,MAAQ,SAAgB3nB,GACnCgV,EAAsB,kBAARhV,GACd,IAAIuJ,EAAIvJ,EAAM,GACVyF,GAAKzF,EAAMuJ,GAAK,GAChB8P,EAAI,GAAK9P,EAGb,GAAI7Q,KAAKwC,QAAUuK,EAGjB,OAFA/M,KAAKgf,QAAQjS,EAAI,GACjB/M,KAAKmd,MAAMpQ,IAAM4T,EACV3gB,KAKT,IADA,IAAIyf,EAAQkB,EACHniB,EAAIuO,EAAa,IAAV0S,GAAejhB,EAAIwB,KAAKwC,OAAQhE,IAAK,CACnD,IAAIkE,EAAoB,EAAhB1C,KAAKmd,MAAM3e,GAEnBihB,GADA/c,GAAK+c,KACS,GACd/c,GAAK,SACL1C,KAAKmd,MAAM3e,GAAKkE,EAMlB,OAJc,IAAV+c,IACFzf,KAAKmd,MAAM3e,GAAKihB,EAChBzf,KAAKwC,UAEAxC,MAGT6c,EAAG1d,UAAU6gB,OAAS,WACpB,OAAuB,IAAhBhgB,KAAKwC,QAAkC,IAAlBxC,KAAKmd,MAAM,IAGzCN,EAAG1d,UAAU4vB,KAAO,SAAepR,GACjC,IAOI+C,EAPAxD,EAAWS,EAAM,EAErB,GAAsB,IAAlB3d,KAAKkd,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBld,KAAKkd,UAAkBA,EAAU,OAAO,EAK5C,GAHAld,KAAKoe,QAGDpe,KAAKwC,OAAS,EAChBke,EAAM,MACD,CACDxD,IACFS,GAAOA,GAGTrB,EAAOqB,GAAO,SAAW,qBAEzB,IAAIjb,EAAoB,EAAhB1C,KAAKmd,MAAM,GACnBuD,EAAMhe,IAAMib,EAAM,EAAIjb,EAAIib,GAAO,EAAI,EAEvC,OAAsB,IAAlB3d,KAAKkd,SAA8B,GAANwD,EAC1BA,GAOT7D,EAAG1d,UAAU4e,IAAM,SAAcJ,GAC/B,GAAsB,IAAlB3d,KAAKkd,UAAmC,IAAjBS,EAAIT,SAAgB,OAAQ,EACvD,GAAsB,IAAlBld,KAAKkd,UAAmC,IAAjBS,EAAIT,SAAgB,OAAO,EAEtD,IAAIwD,EAAM1gB,KAAKkvB,KAAKvR,GACpB,OAAsB,IAAlB3d,KAAKkd,SAA8B,GAANwD,EAC1BA,GAIT7D,EAAG1d,UAAU+vB,KAAO,SAAevR,GAEjC,GAAI3d,KAAKwC,OAASmb,EAAInb,OAAQ,OAAO,EACrC,GAAIxC,KAAKwC,OAASmb,EAAInb,OAAQ,OAAQ,EAGtC,IADA,IAAIke,EAAM,EACDliB,EAAIwB,KAAKwC,OAAS,EAAGhE,GAAK,EAAGA,IAAK,CACzC,IAAIuS,EAAoB,EAAhB/Q,KAAKmd,MAAM3e,GACf0N,EAAmB,EAAfyR,EAAIR,MAAM3e,GAElB,GAAIuS,IAAM7E,EAAV,CACI6E,EAAI7E,EACNwU,GAAO,EACE3P,EAAI7E,IACbwU,EAAM,GAER,OAEF,OAAOA,GAGT7D,EAAG1d,UAAUgwB,IAAM,SAAcxR,GAC/B,OAA0B,IAAnB3d,KAAK+uB,KAAKpR,IAGnBd,EAAG1d,UAAUiwB,GAAK,SAAazR,GAC7B,OAAyB,IAAlB3d,KAAK+d,IAAIJ,IAGlBd,EAAG1d,UAAUkwB,KAAO,SAAe1R,GACjC,OAAO3d,KAAK+uB,KAAKpR,IAAQ,GAG3Bd,EAAG1d,UAAUmwB,IAAM,SAAc3R,GAC/B,OAAO3d,KAAK+d,IAAIJ,IAAQ,GAG1Bd,EAAG1d,UAAUowB,IAAM,SAAc5R,GAC/B,OAA2B,IAApB3d,KAAK+uB,KAAKpR,IAGnBd,EAAG1d,UAAUqwB,GAAK,SAAa7R,GAC7B,OAA0B,IAAnB3d,KAAK+d,IAAIJ,IAGlBd,EAAG1d,UAAUswB,KAAO,SAAe9R,GACjC,OAAO3d,KAAK+uB,KAAKpR,IAAQ,GAG3Bd,EAAG1d,UAAUuwB,IAAM,SAAc/R,GAC/B,OAAO3d,KAAK+d,IAAIJ,IAAQ,GAG1Bd,EAAG1d,UAAUwwB,IAAM,SAAchS,GAC/B,OAA0B,IAAnB3d,KAAK+uB,KAAKpR,IAGnBd,EAAG1d,UAAUywB,GAAK,SAAajS,GAC7B,OAAyB,IAAlB3d,KAAK+d,IAAIJ,IAOlBd,EAAGO,IAAM,SAAcO,GACrB,OAAO,IAAIkS,EAAIlS,IAGjBd,EAAG1d,UAAU2wB,MAAQ,SAAgBjW,GAGnC,OAFAyC,GAAQtc,KAAKod,IAAK,yCAClBd,EAAyB,IAAlBtc,KAAKkd,SAAgB,iCACrBrD,EAAIkW,UAAU/vB,MAAMgwB,UAAUnW,IAGvCgD,EAAG1d,UAAU8wB,QAAU,WAErB,OADA3T,EAAOtc,KAAKod,IAAK,wDACVpd,KAAKod,IAAI8S,YAAYlwB,OAG9B6c,EAAG1d,UAAU6wB,UAAY,SAAoBnW,GAE3C,OADA7Z,KAAKod,IAAMvD,EACJ7Z,MAGT6c,EAAG1d,UAAUgxB,SAAW,SAAmBtW,GAEzC,OADAyC,GAAQtc,KAAKod,IAAK,yCACXpd,KAAKgwB,UAAUnW,IAGxBgD,EAAG1d,UAAUixB,OAAS,SAAiBzS,GAErC,OADArB,EAAOtc,KAAKod,IAAK,sCACVpd,KAAKod,IAAI6F,IAAIjjB,KAAM2d,IAG5Bd,EAAG1d,UAAUkxB,QAAU,SAAkB1S,GAEvC,OADArB,EAAOtc,KAAKod,IAAK,uCACVpd,KAAKod,IAAI2F,KAAK/iB,KAAM2d,IAG7Bd,EAAG1d,UAAUmxB,OAAS,SAAiB3S,GAErC,OADArB,EAAOtc,KAAKod,IAAK,sCACVpd,KAAKod,IAAI8F,IAAIljB,KAAM2d,IAG5Bd,EAAG1d,UAAUoxB,QAAU,SAAkB5S,GAEvC,OADArB,EAAOtc,KAAKod,IAAK,uCACVpd,KAAKod,IAAI4F,KAAKhjB,KAAM2d,IAG7Bd,EAAG1d,UAAUqxB,OAAS,SAAiB7S,GAErC,OADArB,EAAOtc,KAAKod,IAAK,sCACVpd,KAAKod,IAAIqT,IAAIzwB,KAAM2d,IAG5Bd,EAAG1d,UAAUuxB,OAAS,SAAiB/S,GAGrC,OAFArB,EAAOtc,KAAKod,IAAK,sCACjBpd,KAAKod,IAAIuT,SAAS3wB,KAAM2d,GACjB3d,KAAKod,IAAIM,IAAI1d,KAAM2d,IAG5Bd,EAAG1d,UAAUyxB,QAAU,SAAkBjT,GAGvC,OAFArB,EAAOtc,KAAKod,IAAK,sCACjBpd,KAAKod,IAAIuT,SAAS3wB,KAAM2d,GACjB3d,KAAKod,IAAI8J,KAAKlnB,KAAM2d,IAG7Bd,EAAG1d,UAAU0xB,OAAS,WAGpB,OAFAvU,EAAOtc,KAAKod,IAAK,sCACjBpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAIoO,IAAIxrB,OAGtB6c,EAAG1d,UAAU4xB,QAAU,WAGrB,OAFAzU,EAAOtc,KAAKod,IAAK,uCACjBpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAIqO,KAAKzrB,OAIvB6c,EAAG1d,UAAU6xB,QAAU,WAGrB,OAFA1U,EAAOtc,KAAKod,IAAK,uCACjBpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAI6T,KAAKjxB,OAGvB6c,EAAG1d,UAAU+xB,QAAU,WAGrB,OAFA5U,EAAOtc,KAAKod,IAAK,uCACjBpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAI4R,KAAKhvB,OAIvB6c,EAAG1d,UAAUgyB,OAAS,WAGpB,OAFA7U,EAAOtc,KAAKod,IAAK,sCACjBpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAI0E,IAAI9hB,OAGtB6c,EAAG1d,UAAUiyB,OAAS,SAAiBzT,GAGrC,OAFArB,EAAOtc,KAAKod,MAAQO,EAAIP,IAAK,qBAC7Bpd,KAAKod,IAAI0T,SAAS9wB,MACXA,KAAKod,IAAI0B,IAAI9e,KAAM2d,IAI5B,IAAI0T,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQvxB,EAAM2pB,GAErB9pB,KAAKG,KAAOA,EACZH,KAAK8pB,EAAI,IAAIjN,EAAGiN,EAAG,IACnB9pB,KAAK+D,EAAI/D,KAAK8pB,EAAE5I,YAChBlhB,KAAKia,EAAI,IAAI4C,EAAG,GAAG8O,OAAO3rB,KAAK+D,GAAGif,KAAKhjB,KAAK8pB,GAE5C9pB,KAAK2xB,IAAM3xB,KAAK4xB,OA2ClB,SAASC,IACPH,EAAOtyB,KACLY,KACA,OACA,2EA+DJ,SAAS8xB,IACPJ,EAAOtyB,KACLY,KACA,OACA,kEAIJ,SAAS+xB,IACPL,EAAOtyB,KACLY,KACA,OACA,yDAIJ,SAASgyB,IAEPN,EAAOtyB,KACLY,KACA,QACA,uEA8CJ,SAAS6vB,EAAK9tB,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAIkwB,EAAQpV,EAAGqV,OAAOnwB,GACtB/B,KAAK+B,EAAIkwB,EAAMnI,EACf9pB,KAAKiyB,MAAQA,OAEb3V,EAAOva,EAAEotB,IAAI,GAAI,kCACjBnvB,KAAK+B,EAAIA,EACT/B,KAAKiyB,MAAQ,KAkOjB,SAASE,EAAMpwB,GACb8tB,EAAIzwB,KAAKY,KAAM+B,GAEf/B,KAAK0F,MAAQ1F,KAAK+B,EAAEmf,YAChBlhB,KAAK0F,MAAQ,KAAO,IACtB1F,KAAK0F,OAAS,GAAM1F,KAAK0F,MAAQ,IAGnC1F,KAAK6Q,EAAI,IAAIgM,EAAG,GAAG8O,OAAO3rB,KAAK0F,OAC/B1F,KAAK6tB,GAAK7tB,KAAKoyB,KAAKpyB,KAAK6Q,EAAE2a,OAC3BxrB,KAAKqyB,KAAOryB,KAAK6Q,EAAE8d,OAAO3uB,KAAK+B,GAE/B/B,KAAKsyB,KAAOtyB,KAAKqyB,KAAK3U,IAAI1d,KAAK6Q,GAAG+b,MAAM,GAAGS,IAAIrtB,KAAK+B,GACpD/B,KAAKsyB,KAAOtyB,KAAKsyB,KAAK7E,KAAKztB,KAAK6Q,GAChC7Q,KAAKsyB,KAAOtyB,KAAK6Q,EAAEqS,IAAIljB,KAAKsyB,MAta9BZ,EAAOvyB,UAAUyyB,KAAO,WACtB,IAAID,EAAM,IAAI9U,EAAG,MAEjB,OADA8U,EAAIxU,MAAQ,IAAIxZ,MAAMkO,KAAKyM,KAAKte,KAAK+D,EAAI,KAClC4tB,GAGTD,EAAOvyB,UAAUozB,QAAU,SAAkB5U,GAG3C,IACI6U,EADA3hB,EAAI8M,EAGR,GACE3d,KAAKuQ,MAAMM,EAAG7Q,KAAK2xB,KAGnBa,GADA3hB,GADAA,EAAI7Q,KAAKyyB,MAAM5hB,IACTkS,KAAK/iB,KAAK2xB,MACPzQ,kBACFsR,EAAOxyB,KAAK+D,GAErB,IAAIga,EAAMyU,EAAOxyB,KAAK+D,GAAK,EAAI8M,EAAEqe,KAAKlvB,KAAK8pB,GAU3C,OATY,IAAR/L,GACFlN,EAAEsM,MAAM,GAAK,EACbtM,EAAErO,OAAS,GACFub,EAAM,EACflN,EAAEmS,KAAKhjB,KAAK8pB,GAEZjZ,EAAEuN,QAGGvN,GAGT6gB,EAAOvyB,UAAUoR,MAAQ,SAAgBsG,EAAO0I,GAC9C1I,EAAMgK,OAAO7gB,KAAK+D,EAAG,EAAGwb,IAG1BmS,EAAOvyB,UAAUszB,MAAQ,SAAgB9U,GACvC,OAAOA,EAAIuJ,KAAKlnB,KAAKia,IASvBuC,EAASqV,EAAMH,GAEfG,EAAK1yB,UAAUoR,MAAQ,SAAgBsG,EAAOoF,GAK5C,IAHA,IAAIkQ,EAAO,QAEPuG,EAAS7gB,KAAK2L,IAAI3G,EAAMrU,OAAQ,GAC3BhE,EAAI,EAAGA,EAAIk0B,EAAQl0B,IAC1Byd,EAAOkB,MAAM3e,GAAKqY,EAAMsG,MAAM3e,GAIhC,GAFAyd,EAAOzZ,OAASkwB,EAEZ7b,EAAMrU,QAAU,EAGlB,OAFAqU,EAAMsG,MAAM,GAAK,OACjBtG,EAAMrU,OAAS,GAKjB,IAAImwB,EAAO9b,EAAMsG,MAAM,GAGvB,IAFAlB,EAAOkB,MAAMlB,EAAOzZ,UAAYmwB,EAAOxG,EAElC3tB,EAAI,GAAIA,EAAIqY,EAAMrU,OAAQhE,IAAK,CAClC,IAAI6O,EAAwB,EAAjBwJ,EAAMsG,MAAM3e,GACvBqY,EAAMsG,MAAM3e,EAAI,KAAQ6O,EAAO8e,IAAS,EAAMwG,IAAS,GACvDA,EAAOtlB,EAETslB,KAAU,GACV9b,EAAMsG,MAAM3e,EAAI,IAAMm0B,EACT,IAATA,GAAc9b,EAAMrU,OAAS,GAC/BqU,EAAMrU,QAAU,GAEhBqU,EAAMrU,QAAU,GAIpBqvB,EAAK1yB,UAAUszB,MAAQ,SAAgB9U,GAErCA,EAAIR,MAAMQ,EAAInb,QAAU,EACxBmb,EAAIR,MAAMQ,EAAInb,OAAS,GAAK,EAC5Bmb,EAAInb,QAAU,EAId,IADA,IAAIgd,EAAK,EACAhhB,EAAI,EAAGA,EAAImf,EAAInb,OAAQhE,IAAK,CACnC,IAAIkE,EAAmB,EAAfib,EAAIR,MAAM3e,GAClBghB,GAAU,IAAJ9c,EACNib,EAAIR,MAAM3e,GAAU,SAALghB,EACfA,EAAS,GAAJ9c,GAAa8c,EAAK,SAAa,GAUtC,OANkC,IAA9B7B,EAAIR,MAAMQ,EAAInb,OAAS,KACzBmb,EAAInb,SAC8B,IAA9Bmb,EAAIR,MAAMQ,EAAInb,OAAS,IACzBmb,EAAInb,UAGDmb,GASTnB,EAASsV,EAAMJ,GAQflV,EAASuV,EAAML,GASflV,EAASwV,EAAQN,GAEjBM,EAAO7yB,UAAUszB,MAAQ,SAAgB9U,GAGvC,IADA,IAAI8B,EAAQ,EACHjhB,EAAI,EAAGA,EAAImf,EAAInb,OAAQhE,IAAK,CACnC,IAAI2iB,EAA0B,IAAL,EAAfxD,EAAIR,MAAM3e,IAAiBihB,EACjCD,EAAU,SAAL2B,EACTA,KAAQ,GAERxD,EAAIR,MAAM3e,GAAKghB,EACfC,EAAQ0B,EAKV,OAHc,IAAV1B,IACF9B,EAAIR,MAAMQ,EAAInb,UAAYid,GAErB9B,GAITd,EAAGqV,OAAS,SAAgB/xB,GAE1B,GAAIkxB,EAAOlxB,GAAO,OAAOkxB,EAAOlxB,GAEhC,IAAI8xB,EACJ,GAAa,SAAT9xB,EACF8xB,EAAQ,IAAIJ,OACP,GAAa,SAAT1xB,EACT8xB,EAAQ,IAAIH,OACP,GAAa,SAAT3xB,EACT8xB,EAAQ,IAAIF,MACP,IAAa,WAAT5xB,EAGT,MAAM,IAAIwC,MAAM,iBAAmBxC,GAFnC8xB,EAAQ,IAAID,EAMd,OAFAX,EAAOlxB,GAAQ8xB,EAERA,GAkBTpC,EAAI1wB,UAAU2xB,SAAW,SAAmB/f,GAC1CuL,EAAsB,IAAfvL,EAAEmM,SAAgB,iCACzBZ,EAAOvL,EAAEqM,IAAK,oCAGhByS,EAAI1wB,UAAUwxB,SAAW,SAAmB5f,EAAG7E,GAC7CoQ,EAAqC,KAA7BvL,EAAEmM,SAAWhR,EAAEgR,UAAiB,iCACxCZ,EAAOvL,EAAEqM,KAAOrM,EAAEqM,MAAQlR,EAAEkR,IAC1B,oCAGJyS,EAAI1wB,UAAUizB,KAAO,SAAerhB,GAClC,OAAI/Q,KAAKiyB,MAAcjyB,KAAKiyB,MAAMM,QAAQxhB,GAAGif,UAAUhwB,MAChD+Q,EAAE0c,KAAKztB,KAAK+B,GAAGiuB,UAAUhwB,OAGlC6vB,EAAI1wB,UAAU2iB,IAAM,SAAc/Q,GAChC,OAAIA,EAAEiP,SACGjP,EAAEmH,QAGJlY,KAAK+B,EAAEmhB,IAAInS,GAAGif,UAAUhwB,OAGjC6vB,EAAI1wB,UAAU8jB,IAAM,SAAclS,EAAG7E,GACnClM,KAAK2wB,SAAS5f,EAAG7E,GAEjB,IAAIwU,EAAM3P,EAAEkS,IAAI/W,GAIhB,OAHIwU,EAAI3C,IAAI/d,KAAK+B,IAAM,GACrB2e,EAAIsC,KAAKhjB,KAAK+B,GAET2e,EAAIsP,UAAUhwB,OAGvB6vB,EAAI1wB,UAAU4jB,KAAO,SAAehS,EAAG7E,GACrClM,KAAK2wB,SAAS5f,EAAG7E,GAEjB,IAAIwU,EAAM3P,EAAEgS,KAAK7W,GAIjB,OAHIwU,EAAI3C,IAAI/d,KAAK+B,IAAM,GACrB2e,EAAIsC,KAAKhjB,KAAK+B,GAET2e,GAGTmP,EAAI1wB,UAAU+jB,IAAM,SAAcnS,EAAG7E,GACnClM,KAAK2wB,SAAS5f,EAAG7E,GAEjB,IAAIwU,EAAM3P,EAAEmS,IAAIhX,GAIhB,OAHIwU,EAAIqO,KAAK,GAAK,GAChBrO,EAAIqC,KAAK/iB,KAAK+B,GAET2e,EAAIsP,UAAUhwB,OAGvB6vB,EAAI1wB,UAAU6jB,KAAO,SAAejS,EAAG7E,GACrClM,KAAK2wB,SAAS5f,EAAG7E,GAEjB,IAAIwU,EAAM3P,EAAEiS,KAAK9W,GAIjB,OAHIwU,EAAIqO,KAAK,GAAK,GAChBrO,EAAIqC,KAAK/iB,KAAK+B,GAET2e,GAGTmP,EAAI1wB,UAAUsxB,IAAM,SAAc1f,EAAG4M,GAEnC,OADA3d,KAAK8wB,SAAS/f,GACP/Q,KAAKoyB,KAAKrhB,EAAEwb,MAAM5O,KAG3BkS,EAAI1wB,UAAU+nB,KAAO,SAAenW,EAAG7E,GAErC,OADAlM,KAAK2wB,SAAS5f,EAAG7E,GACVlM,KAAKoyB,KAAKrhB,EAAEmW,KAAKhb,KAG1B2jB,EAAI1wB,UAAUue,IAAM,SAAc3M,EAAG7E,GAEnC,OADAlM,KAAK2wB,SAAS5f,EAAG7E,GACVlM,KAAKoyB,KAAKrhB,EAAE2M,IAAIxR,KAGzB2jB,EAAI1wB,UAAUssB,KAAO,SAAe1a,GAClC,OAAO/Q,KAAKknB,KAAKnW,EAAGA,EAAEmH,UAGxB2X,EAAI1wB,UAAUqsB,IAAM,SAAcza,GAChC,OAAO/Q,KAAK0d,IAAI3M,EAAGA,IAGrB8e,EAAI1wB,UAAU8xB,KAAO,SAAelgB,GAClC,GAAIA,EAAEiP,SAAU,OAAOjP,EAAEmH,QAEzB,IAAI0a,EAAO5yB,KAAK+B,EAAE6e,MAAM,GAIxB,GAHAtE,EAAOsW,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI9T,EAAM9e,KAAK+B,EAAEkhB,IAAI,IAAIpG,EAAG,IAAIgE,OAAO,GACvC,OAAO7gB,KAAK8e,IAAI/N,EAAG+N,GAQrB,IAFA,IAAI6B,EAAI3gB,KAAK+B,EAAE+qB,KAAK,GAChB/f,EAAI,GACA4T,EAAEX,UAA2B,IAAfW,EAAEC,MAAM,IAC5B7T,IACA4T,EAAEE,OAAO,GAEXvE,GAAQqE,EAAEX,UAEV,IAAI6S,EAAM,IAAIhW,EAAG,GAAGiT,MAAM9vB,MACtB8yB,EAAOD,EAAI1B,SAIX4B,EAAO/yB,KAAK+B,EAAE+qB,KAAK,GAAGjM,OAAO,GAC7BmS,EAAIhzB,KAAK+B,EAAEmf,YAGf,IAFA8R,EAAI,IAAInW,EAAG,EAAImW,EAAIA,GAAGlD,MAAM9vB,MAEW,IAAhCA,KAAK8e,IAAIkU,EAAGD,GAAMhV,IAAI+U,IAC3BE,EAAE3C,QAAQyC,GAOZ,IAJA,IAAIriB,EAAIzQ,KAAK8e,IAAIkU,EAAGrS,GAChB9P,EAAI7Q,KAAK8e,IAAI/N,EAAG4P,EAAEkM,KAAK,GAAGhM,OAAO,IACjCG,EAAIhhB,KAAK8e,IAAI/N,EAAG4P,GAChB5e,EAAIgL,EACc,IAAfiU,EAAEjD,IAAI8U,IAAY,CAEvB,IADA,IAAIlB,EAAM3Q,EACDxiB,EAAI,EAAoB,IAAjBmzB,EAAI5T,IAAI8U,GAAYr0B,IAClCmzB,EAAMA,EAAId,SAEZvU,EAAO9d,EAAIuD,GACX,IAAImK,EAAIlM,KAAK8e,IAAIrO,EAAG,IAAIoM,EAAG,GAAG8O,OAAO5pB,EAAIvD,EAAI,IAE7CqS,EAAIA,EAAE6f,OAAOxkB,GACbuE,EAAIvE,EAAE2kB,SACN7P,EAAIA,EAAE0P,OAAOjgB,GACb1O,EAAIvD,EAGN,OAAOqS,GAGTgf,EAAI1wB,UAAU6vB,KAAO,SAAeje,GAClC,IAAIkiB,EAAMliB,EAAE4d,OAAO3uB,KAAK+B,GACxB,OAAqB,IAAjBkxB,EAAI/V,UACN+V,EAAI/V,SAAW,EACRld,KAAKoyB,KAAKa,GAAK9B,UAEfnxB,KAAKoyB,KAAKa,IAIrBpD,EAAI1wB,UAAU2f,IAAM,SAAc/N,EAAG4M,GACnC,GAAIA,EAAIqC,SAAU,OAAO,IAAInD,EAAG,GAAGiT,MAAM9vB,MACzC,GAAoB,IAAhB2d,EAAIoR,KAAK,GAAU,OAAOhe,EAAEmH,QAEhC,IACIgb,EAAM,IAAIvvB,MAAM,IACpBuvB,EAAI,GAAK,IAAIrW,EAAG,GAAGiT,MAAM9vB,MACzBkzB,EAAI,GAAKniB,EACT,IAAK,IAAIvS,EAAI,EAAGA,EAAI00B,EAAI1wB,OAAQhE,IAC9B00B,EAAI10B,GAAKwB,KAAK0d,IAAIwV,EAAI10B,EAAI,GAAIuS,GAGhC,IAAI2P,EAAMwS,EAAI,GACVC,EAAU,EACVC,EAAa,EACb5nB,EAAQmS,EAAIuD,YAAc,GAK9B,IAJc,IAAV1V,IACFA,EAAQ,IAGLhN,EAAImf,EAAInb,OAAS,EAAGhE,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAImgB,EAAOhB,EAAIR,MAAM3e,GACZ8T,EAAI9G,EAAQ,EAAG8G,GAAK,EAAGA,IAAK,CACnC,IAAIhL,EAAOqX,GAAQrM,EAAK,EACpBoO,IAAQwS,EAAI,KACdxS,EAAM1gB,KAAKwrB,IAAI9K,IAGL,IAARpZ,GAAyB,IAAZ6rB,GAKjBA,IAAY,EACZA,GAAW7rB,GA9BE,MA+Bb8rB,GACwC,IAAN50B,GAAiB,IAAN8T,KAE7CoO,EAAM1gB,KAAK0d,IAAIgD,EAAKwS,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,EAajB5nB,EAAQ,GAGV,OAAOkV,GAGTmP,EAAI1wB,UAAU4wB,UAAY,SAAoBpS,GAC5C,IAAI9M,EAAI8M,EAAI8P,KAAKztB,KAAK+B,GAEtB,OAAO8O,IAAM8M,EAAM9M,EAAEqH,QAAUrH,GAGjCgf,EAAI1wB,UAAU+wB,YAAc,SAAsBvS,GAChD,IAAI+C,EAAM/C,EAAIzF,QAEd,OADAwI,EAAItD,IAAM,KACHsD,GAOT7D,EAAGwW,KAAO,SAAe1V,GACvB,OAAO,IAAIwU,EAAKxU,IAmBlBnB,EAAS2V,EAAMtC,GAEfsC,EAAKhzB,UAAU4wB,UAAY,SAAoBpS,GAC7C,OAAO3d,KAAKoyB,KAAKzU,EAAI4O,MAAMvsB,KAAK0F,SAGlCysB,EAAKhzB,UAAU+wB,YAAc,SAAsBvS,GACjD,IAAI9M,EAAI7Q,KAAKoyB,KAAKzU,EAAID,IAAI1d,KAAKqyB,OAE/B,OADAxhB,EAAEuM,IAAM,KACDvM,GAGTshB,EAAKhzB,UAAU+nB,KAAO,SAAenW,EAAG7E,GACtC,GAAI6E,EAAEiP,UAAY9T,EAAE8T,SAGlB,OAFAjP,EAAEoM,MAAM,GAAK,EACbpM,EAAEvO,OAAS,EACJuO,EAGT,IAAIiQ,EAAIjQ,EAAEmW,KAAKhb,GACXuE,EAAIuQ,EAAE2L,MAAM3sB,KAAK0F,OAAOgY,IAAI1d,KAAKsyB,MAAM5F,OAAO1sB,KAAK0F,OAAOgY,IAAI1d,KAAK+B,GACnEuxB,EAAItS,EAAEgC,KAAKvS,GAAGoQ,OAAO7gB,KAAK0F,OAC1Bgb,EAAM4S,EAQV,OANIA,EAAEvV,IAAI/d,KAAK+B,IAAM,EACnB2e,EAAM4S,EAAEtQ,KAAKhjB,KAAK+B,GACTuxB,EAAEvE,KAAK,GAAK,IACrBrO,EAAM4S,EAAEvQ,KAAK/iB,KAAK+B,IAGb2e,EAAIsP,UAAUhwB,OAGvBmyB,EAAKhzB,UAAUue,IAAM,SAAc3M,EAAG7E,GACpC,GAAI6E,EAAEiP,UAAY9T,EAAE8T,SAAU,OAAO,IAAInD,EAAG,GAAGmT,UAAUhwB,MAEzD,IAAIghB,EAAIjQ,EAAE2M,IAAIxR,GACVuE,EAAIuQ,EAAE2L,MAAM3sB,KAAK0F,OAAOgY,IAAI1d,KAAKsyB,MAAM5F,OAAO1sB,KAAK0F,OAAOgY,IAAI1d,KAAK+B,GACnEuxB,EAAItS,EAAEgC,KAAKvS,GAAGoQ,OAAO7gB,KAAK0F,OAC1Bgb,EAAM4S,EAOV,OANIA,EAAEvV,IAAI/d,KAAK+B,IAAM,EACnB2e,EAAM4S,EAAEtQ,KAAKhjB,KAAK+B,GACTuxB,EAAEvE,KAAK,GAAK,IACrBrO,EAAM4S,EAAEvQ,KAAK/iB,KAAK+B,IAGb2e,EAAIsP,UAAUhwB,OAGvBmyB,EAAKhzB,UAAU6vB,KAAO,SAAeje,GAGnC,OADU/Q,KAAKoyB,KAAKrhB,EAAE4d,OAAO3uB,KAAK+B,GAAG2b,IAAI1d,KAAK6tB,KACnCmC,UAAUhwB,OAh2GzB,CAk2GoC3B,EAAQ2B,Q,2CCl2G5C,YASA,IAAIuO,EAAerH,EAAQ,KAAiBsH,OAE5CnQ,EAAOC,QAAU,SAA6BC,GAC5C,GAAIgQ,EAAahQ,GAAM,CAErB,IAAIkL,EAAMb,EAAOP,KAAK9J,EAAI2L,QAK1B,OAJI3L,EAAIiL,aAAejL,EAAI2L,OAAOV,aAEhCC,EAAMA,EAAI9I,MAAMpC,EAAIgL,WAAYhL,EAAIgL,WAAahL,EAAIiL,aAEhDC,EAGP,OAAOb,EAAOP,KAAK9J,M,kHCrBjBg1B,EAAkBrsB,EAAQ,KAC1BssB,EAAkBtsB,EAAQ,KAC1BusB,EAAevsB,EAAQ,KA0I7B,SAASwsB,EAA6B7zB,GACrC,GAAqB,kBAAVA,GAAuC,IAAjBA,EAAM2C,OACtC,MAAM,IAAIf,UAAU,wDAItB,SAASkyB,EAAO9zB,EAAOoR,GACtB,OAAIA,EAAQ0iB,OACJ1iB,EAAQzC,OAAS+kB,EAAgB1zB,GAAS+zB,mBAAmB/zB,GAG9DA,EAGR,SAASmW,EAAOnW,EAAOoR,GACtB,OAAIA,EAAQ+E,OACJwd,EAAgB3zB,GAGjBA,EAGR,SAASg0B,EAAWhd,GACnB,OAAIlT,MAAMgF,QAAQkO,GACVA,EAAMid,OAGO,kBAAVjd,EACHgd,EAAWv0B,OAAO2G,KAAK4Q,IAC5Bid,MAAK,SAAC/iB,EAAG7E,GAAJ,OAAUvM,OAAOoR,GAAKpR,OAAOuM,MAClCsE,KAAI,SAAAxK,GAAG,OAAI6Q,EAAM7Q,MAGb6Q,EAGR,SAASkd,EAAWld,GACnB,IAAMmd,EAAYnd,EAAM3D,QAAQ,KAKhC,OAJmB,IAAf8gB,IACHnd,EAAQA,EAAMlW,MAAM,EAAGqzB,IAGjBnd,EAaR,SAASod,EAAQpd,GAEhB,IAAMqd,GADNrd,EAAQkd,EAAWld,IACM3D,QAAQ,KACjC,OAAoB,IAAhBghB,EACI,GAGDrd,EAAMlW,MAAMuzB,EAAa,GAGjC,SAASC,EAAWt0B,EAAOoR,GAO1B,OANIA,EAAQmjB,eAAiBz0B,OAAOC,MAAMD,OAAOE,KAA6B,kBAAVA,GAAuC,KAAjBA,EAAM0X,OAC/F1X,EAAQF,OAAOE,IACLoR,EAAQojB,eAA2B,OAAVx0B,GAA2C,SAAxBA,EAAM2I,eAAoD,UAAxB3I,EAAM2I,gBAC9F3I,EAAgC,SAAxBA,EAAM2I,eAGR3I,EAGR,SAASsW,EAAMU,EAAO5F,GAUrByiB,GATAziB,EAAU3R,OAAOg1B,OAAO,CACvBte,QAAQ,EACR8d,MAAM,EACNS,YAAa,OACbC,qBAAsB,IACtBJ,cAAc,EACdC,eAAe,GACbpjB,IAEkCujB,sBAErC,IAAMC,EAnJP,SAA8BxjB,GAC7B,IAAIiD,EAEJ,OAAQjD,EAAQsjB,aACf,IAAK,QACJ,OAAO,SAACvuB,EAAKnG,EAAO60B,GACnBxgB,EAAS,aAAa2H,KAAK7V,GAE3BA,EAAMA,EAAI6J,QAAQ,WAAY,IAEzBqE,QAKoB/S,IAArBuzB,EAAY1uB,KACf0uB,EAAY1uB,GAAO,IAGpB0uB,EAAY1uB,GAAKkO,EAAO,IAAMrU,GAR7B60B,EAAY1uB,GAAOnG,GAWtB,IAAK,UACJ,OAAO,SAACmG,EAAKnG,EAAO60B,GACnBxgB,EAAS,UAAU2H,KAAK7V,GACxBA,EAAMA,EAAI6J,QAAQ,QAAS,IAEtBqE,OAKoB/S,IAArBuzB,EAAY1uB,GAKhB0uB,EAAY1uB,GAAO,GAAGvG,OAAOi1B,EAAY1uB,GAAMnG,GAJ9C60B,EAAY1uB,GAAO,CAACnG,GALpB60B,EAAY1uB,GAAOnG,GAYtB,IAAK,QACL,IAAK,YACJ,OAAO,SAACmG,EAAKnG,EAAO60B,GACnB,IACMC,EAD2B,kBAAV90B,GAAsBA,EAAM0Q,MAAM,IAAI2C,QAAQjC,EAAQujB,uBAAyB,EAC3E30B,EAAM0Q,MAAMU,EAAQujB,sBAAsBhkB,KAAI,SAAAokB,GAAI,OAAI5e,EAAO4e,EAAM3jB,MAAsB,OAAVpR,EAAiBA,EAAQmW,EAAOnW,EAAOoR,GACjJyjB,EAAY1uB,GAAO2uB,GAGrB,QACC,OAAO,SAAC3uB,EAAKnG,EAAO60B,QACMvzB,IAArBuzB,EAAY1uB,GAKhB0uB,EAAY1uB,GAAO,GAAGvG,OAAOi1B,EAAY1uB,GAAMnG,GAJ9C60B,EAAY1uB,GAAOnG,IAgGLg1B,CAAqB5jB,GAGjCvN,EAAMpE,OAAO6C,OAAO,MAE1B,GAAqB,kBAAV0U,EACV,OAAOnT,EAKR,KAFAmT,EAAQA,EAAMU,OAAO1H,QAAQ,SAAU,KAGtC,OAAOnM,EAxBsB,UA2BVmT,EAAMtG,MAAM,MA3BF,IA2B9B,IAAK,EAAL,qBAAsC,KAA3BukB,EAA2B,QACrC,EAAmBrB,EAAaxiB,EAAQ+E,OAAS8e,EAAMjlB,QAAQ,MAAO,KAAOilB,EAAO,KAApF,SAAK9uB,EAAL,KAAUnG,EAAV,KAIAA,OAAkBsB,IAAVtB,EAAsB,KAAO,CAAC,QAAS,aAAak1B,SAAS9jB,EAAQsjB,aAAe10B,EAAQmW,EAAOnW,EAAOoR,GAClHwjB,EAAUze,EAAOhQ,EAAKiL,GAAUpR,EAAO6D,IAjCV,8BAoC9B,IAAK,IAAL,MAAkBpE,OAAO2G,KAAKvC,GAA9B,eAAoC,CAA/B,IAAMsC,EAAG,KACPnG,EAAQ6D,EAAIsC,GAClB,GAAqB,kBAAVnG,GAAgC,OAAVA,EAChC,IAAK,IAAL,MAAgBP,OAAO2G,KAAKpG,GAA5B,eAAoC,CAA/B,IAAMoa,EAAC,KACXpa,EAAMoa,GAAKka,EAAWt0B,EAAMoa,GAAIhJ,QAGjCvN,EAAIsC,GAAOmuB,EAAWt0B,EAAOoR,GAI/B,OAAqB,IAAjBA,EAAQ6iB,KACJpwB,IAGiB,IAAjBuN,EAAQ6iB,KAAgBx0B,OAAO2G,KAAKvC,GAAKowB,OAASx0B,OAAO2G,KAAKvC,GAAKowB,KAAK7iB,EAAQ6iB,OAAOvY,QAAO,SAACrH,EAAQlO,GAC9G,IAAMnG,EAAQ6D,EAAIsC,GAQlB,OAPIgvB,QAAQn1B,IAA2B,kBAAVA,IAAuB8D,MAAMgF,QAAQ9I,GAEjEqU,EAAOlO,GAAO6tB,EAAWh0B,GAEzBqU,EAAOlO,GAAOnG,EAGRqU,IACL5U,OAAO6C,OAAO,OAGlB7D,EAAQ21B,QAAUA,EAClB31B,EAAQ6X,MAAQA,EAEhB7X,EAAQ22B,UAAY,SAACC,EAAQjkB,GAC5B,IAAKikB,EACJ,MAAO,GAURxB,GAPAziB,EAAU3R,OAAOg1B,OAAO,CACvBX,QAAQ,EACRnlB,QAAQ,EACR+lB,YAAa,OACbC,qBAAsB,KACpBvjB,IAEkCujB,sBAWrC,IATA,IAAMW,EAAe,SAAAnvB,GAAG,OACtBiL,EAAQmkB,WArSkC,QAAnBv1B,EAqSeq1B,EAAOlvB,UArSe7E,IAAVtB,IAsSlDoR,EAAQokB,iBAAmC,KAAhBH,EAAOlvB,GAtSX,IAAAnG,GAySnB40B,EAvSP,SAA+BxjB,GAC9B,OAAQA,EAAQsjB,aACf,IAAK,QACJ,OAAO,SAAAvuB,GAAG,OAAI,SAACkO,EAAQrU,GACtB,IAAM8F,EAAQuO,EAAO1R,OAErB,YACWrB,IAAVtB,GACCoR,EAAQmkB,UAAsB,OAAVv1B,GACpBoR,EAAQokB,iBAA6B,KAAVx1B,EAErBqU,EAIA,GAAP,SAAWA,GADE,OAAVrU,EACH,CAAmB,CAAC8zB,EAAO3tB,EAAKiL,GAAU,IAAKtL,EAAO,KAAKiL,KAAK,KAGjE,CAEC,CAAC+iB,EAAO3tB,EAAKiL,GAAU,IAAK0iB,EAAOhuB,EAAOsL,GAAU,KAAM0iB,EAAO9zB,EAAOoR,IAAUL,KAAK,QAI1F,IAAK,UACJ,OAAO,SAAA5K,GAAG,OAAI,SAACkO,EAAQrU,GACtB,YACWsB,IAAVtB,GACCoR,EAAQmkB,UAAsB,OAAVv1B,GACpBoR,EAAQokB,iBAA6B,KAAVx1B,EAErBqU,EAIA,GAAP,SAAWA,GADE,OAAVrU,EACH,CAAmB,CAAC8zB,EAAO3tB,EAAKiL,GAAU,MAAML,KAAK,KAGtD,CAAmB,CAAC+iB,EAAO3tB,EAAKiL,GAAU,MAAO0iB,EAAO9zB,EAAOoR,IAAUL,KAAK,QAGhF,IAAK,QACL,IAAK,YACJ,OAAO,SAAA5K,GAAG,OAAI,SAACkO,EAAQrU,GACtB,OAAc,OAAVA,QAA4BsB,IAAVtB,GAAwC,IAAjBA,EAAM2C,OAC3C0R,EAGc,IAAlBA,EAAO1R,OACH,CAAC,CAACmxB,EAAO3tB,EAAKiL,GAAU,IAAK0iB,EAAO9zB,EAAOoR,IAAUL,KAAK,KAG3D,CAAC,CAACsD,EAAQyf,EAAO9zB,EAAOoR,IAAUL,KAAKK,EAAQujB,yBAGxD,QACC,OAAO,SAAAxuB,GAAG,OAAI,SAACkO,EAAQrU,GACtB,YACWsB,IAAVtB,GACCoR,EAAQmkB,UAAsB,OAAVv1B,GACpBoR,EAAQokB,iBAA6B,KAAVx1B,EAErBqU,EAIA,GAAP,SAAWA,GADE,OAAVrU,EACH,CAAmB8zB,EAAO3tB,EAAKiL,IAGhC,CAAmB,CAAC0iB,EAAO3tB,EAAKiL,GAAU,IAAK0iB,EAAO9zB,EAAOoR,IAAUL,KAAK,SAkO7D0kB,CAAsBrkB,GAElCskB,EAAa,GAEnB,MAAkBj2B,OAAO2G,KAAKivB,GAA9B,eAAuC,CAAlC,IAAMlvB,EAAG,KACRmvB,EAAanvB,KACjBuvB,EAAWvvB,GAAOkvB,EAAOlvB,IAI3B,IAAMC,EAAO3G,OAAO2G,KAAKsvB,GAMzB,OAJqB,IAAjBtkB,EAAQ6iB,MACX7tB,EAAK6tB,KAAK7iB,EAAQ6iB,MAGZ7tB,EAAKuK,KAAI,SAAAxK,GACf,IAAMnG,EAAQq1B,EAAOlvB,GAErB,YAAc7E,IAAVtB,EACI,GAGM,OAAVA,EACI8zB,EAAO3tB,EAAKiL,GAGhBtN,MAAMgF,QAAQ9I,GACVA,EACL0b,OAAOkZ,EAAUzuB,GAAM,IACvB4K,KAAK,KAGD+iB,EAAO3tB,EAAKiL,GAAW,IAAM0iB,EAAO9zB,EAAOoR,MAChDukB,QAAO,SAAAhN,GAAC,OAAIA,EAAEhmB,OAAS,KAAGoO,KAAK,MAGnCtS,EAAQm3B,SAAW,SAAC5e,EAAO5F,GAC1BA,EAAU3R,OAAOg1B,OAAO,CACvBte,QAAQ,GACN/E,GAEH,MAAoBwiB,EAAa5c,EAAO,KAAxC,SAAOC,EAAP,KAAY4e,EAAZ,KAEA,OAAOp2B,OAAOg1B,OACb,CACCxd,IAAKA,EAAIvG,MAAM,KAAK,IAAM,GAC1BolB,MAAOxf,EAAM8d,EAAQpd,GAAQ5F,IAE9BA,GAAWA,EAAQ2kB,yBAA2BF,EAAO,CAACG,mBAAoB7f,EAAO0f,EAAMzkB,IAAY,KAIrG3S,EAAQw3B,aAAe,SAACjf,EAAO5F,GAC9BA,EAAU3R,OAAOg1B,OAAO,CACvBX,QAAQ,EACRnlB,QAAQ,GACNyC,GAEH,IAAM6F,EAAMid,EAAWld,EAAMC,KAAKvG,MAAM,KAAK,IAAM,GAC7CwlB,EAAez3B,EAAQ21B,QAAQpd,EAAMC,KACrCkf,EAAqB13B,EAAQ6X,MAAM4f,EAAc,CAACjC,MAAM,IAExD6B,EAAQr2B,OAAOg1B,OAAO0B,EAAoBnf,EAAM8e,OAClDM,EAAc33B,EAAQ22B,UAAUU,EAAO1kB,GACvCglB,IACHA,EAAc,IAAH,OAAOA,IAGnB,IAAIP,EAzLL,SAAiB5e,GAChB,IAAI4e,EAAO,GACL1B,EAAYld,EAAI5D,QAAQ,KAK9B,OAJmB,IAAf8gB,IACH0B,EAAO5e,EAAInW,MAAMqzB,IAGX0B,EAkLIQ,CAAQrf,EAAMC,KAKzB,OAJID,EAAMgf,qBACTH,EAAO,IAAH,OAAO/B,EAAO9c,EAAMgf,mBAAoB5kB,KAGtC,GAAP,OAAU6F,GAAV,OAAgBmf,GAAhB,OAA8BP,K,iCCvX/Br3B,EAAOC,QAAU,SAAA6R,GAAG,OAAIyjB,mBAAmBzjB,GAAKN,QAAQ,YAAY,SAAA2Y,GAAC,iBAAQA,EAAE5d,WAAW,GAAGxC,SAAS,IAAI+O,oB,iCCA1G,IAAIgf,EAAQ,eACRC,EAAgB,IAAItmB,OAAOqmB,EAAO,MAClCE,EAAe,IAAIvmB,OAAO,IAAMqmB,EAAQ,KAAM,MAElD,SAASG,EAAiBC,EAAYhmB,GACrC,IAEC,OAAOiH,mBAAmB+e,EAAW3lB,KAAK,KACzC,MAAOpQ,IAIT,GAA0B,IAAtB+1B,EAAW/zB,OACd,OAAO+zB,EAGRhmB,EAAQA,GAAS,EAGjB,IAAIsN,EAAO0Y,EAAW51B,MAAM,EAAG4P,GAC3BuN,EAAQyY,EAAW51B,MAAM4P,GAE7B,OAAO5M,MAAMxE,UAAUM,OAAOL,KAAK,GAAIk3B,EAAiBzY,GAAOyY,EAAiBxY,IAGjF,SAAS9H,EAAOa,GACf,IACC,OAAOW,mBAAmBX,GACzB,MAAOrW,GAGR,IAFA,IAAIg2B,EAAS3f,EAAMkF,MAAMqa,GAEhB53B,EAAI,EAAGA,EAAIg4B,EAAOh0B,OAAQhE,IAGlCg4B,GAFA3f,EAAQyf,EAAiBE,EAAQh4B,GAAGoS,KAAK,KAE1BmL,MAAMqa,GAGtB,OAAOvf,GAyCTxY,EAAOC,QAAU,SAAUm4B,GAC1B,GAA0B,kBAAfA,EACV,MAAM,IAAIh1B,UAAU,6DAA+Dg1B,EAAa,KAGjG,IAIC,OAHAA,EAAaA,EAAW5mB,QAAQ,MAAO,KAGhC2H,mBAAmBif,GACzB,MAAOj2B,GAER,OAjDF,SAAkCqW,GAQjC,IANA,IAAI6f,EAAa,CAChB,SAAU,eACV,SAAU,gBAGP3a,EAAQsa,EAAaxa,KAAKhF,GACvBkF,GAAO,CACb,IAEC2a,EAAW3a,EAAM,IAAMvE,mBAAmBuE,EAAM,IAC/C,MAAOvb,GACR,IAAI0T,EAAS8B,EAAO+F,EAAM,IAEtB7H,IAAW6H,EAAM,KACpB2a,EAAW3a,EAAM,IAAM7H,GAIzB6H,EAAQsa,EAAaxa,KAAKhF,GAI3B6f,EAAW,OAAS,SAIpB,IAFA,IAAIhgB,EAAUpX,OAAO2G,KAAKywB,GAEjBl4B,EAAI,EAAGA,EAAIkY,EAAQlU,OAAQhE,IAAK,CAExC,IAAIwH,EAAM0Q,EAAQlY,GAClBqY,EAAQA,EAAMhH,QAAQ,IAAIC,OAAO9J,EAAK,KAAM0wB,EAAW1wB,IAGxD,OAAO6Q,EAeC8f,CAAyBF,M,iCCzFlCp4B,EAAOC,QAAU,SAACiK,EAAQquB,GACzB,GAAwB,kBAAXruB,GAA4C,kBAAdquB,EAC1C,MAAM,IAAIn1B,UAAU,iDAGrB,GAAkB,KAAdm1B,EACH,MAAO,CAACruB,GAGT,IAAMsuB,EAAiBtuB,EAAO2K,QAAQ0jB,GAEtC,OAAwB,IAApBC,EACI,CAACtuB,GAGF,CACNA,EAAO5H,MAAM,EAAGk2B,GAChBtuB,EAAO5H,MAAMk2B,EAAiBD,EAAUp0B,W,kGnDDpC,EAAiC,qBAArB,EAAO,UAA4B,EAAO,UAAY,EAAQ,KAI1E,E,WAaJ,WAAoB,GAA6B,WAU/C,GAV+C,oBAA7B,YANZ,YAA2B,GAC3B,aAA6B,GAC7B,oBAA2B,GAKjC,KAAK,UAAY,EAAK,SACtB,KAAK,SAAW,EAAK,QACrB,KAAK,KAAO,GACZ,KAAK,YAAc,KACnB,KAAK,QAAU,KACf,KAAK,YAAc,KACnB,KAAK,eAAiB,EAAK,eAAiB,GAC5C,KAAK,YAAc,EAAK,YAAc,IAAI,KAErC,EAAK,KAA2B,kBAAb,EAAK,IAC3B,MAAM,IAAI,MAAM,oCAGlB,KAAK,KAAO,EAAK,IAEjB,KAAK,YAAY,GAAG,UAAU,kBAAM,EAAK,mB,4CAO3C,WACE,OAAO,KAAK,QAAU,KAAK,QAAQ,YAAc,G,IALnD,SAAe,M,sBAYf,WACE,OAA2B,IAApB,KAAK,Y,IALd,SAAe,M,qBAYf,WACE,OAA2B,IAApB,KAAK,Y,IALd,SAAc,M,mBAYd,WACE,OAA2B,IAApB,KAAK,Y,IALd,SAAY,M,kBAYZ,WACE,OAA2B,IAApB,KAAK,Y,IALd,SAAW,M,kBAUJ,WACL,KAAK,kB,mBAGA,WACL,KAAK,iB,kBAGA,SAAK,EAAiB,EAAgB,GAC3C,IAAK,GAA0B,kBAAV,EACnB,MAAM,IAAI,MAAM,kCAGlB,KAAK,YAAY,CACf,MAAO,EACP,KAAM,MACN,QAAS,EACT,SAAU,M,uBAIP,SAAU,GACf,KAAK,YAAY,CACf,MAAO,EACP,KAAM,MACN,QAAS,GACT,QAAQ,M,gBAIL,SAAG,EAAe,GACvB,KAAK,QAAQ,KAAK,CAAE,QAAO,e,2BAKrB,WAAa,WACnB,IAAI,KAAK,YAAT,CAIA,IAAM,EA6GV,SAAyB,EAAc,EAAkB,G,QAMjD,GALM,EAAK,WAAW,SACxB,EAAK,QAAQ,QAAS,OACtB,EAAK,WAAW,QAChB,EAAK,QAAQ,OAAQ,MACrB,GACiB,MAAM,KACrB,EAAS,cACX,CACE,WACA,UACA,IAAK,UACL,MAAmB,QAAb,uBAAa,eAAE,OAAQ,IAE/B,CACE,WACA,UACA,KAAgB,QAAX,uBAAW,eAAE,OAAQ,IAE1B,EAAc,YAAoB,YAAe,EAAS,IAAM,IAAK,GAC3E,OAAO,EAAS,GAAK,IAAM,EAjIb,CAAgB,KAAK,KAAM,KAAK,UAAW,KAAK,UAI5D,GAFA,KAAK,YAAc,IAAI,EAAG,IAErB,KAAK,YACR,MAAM,IAAI,MAAM,2BAGlB,KAAK,YAAY,UAAY,SAAC,GAAD,OAAyB,EAAK,eAAe,IAE1E,KAAK,YAAY,OAAS,kBAAM,EAAK,eAErC,KAAK,YAAY,QAAU,SAAC,GAAD,OAAkB,EAAK,aAAa,IAE/D,KAAK,YAAY,QAAU,WACzB,YAAW,WACT,EAAK,YAAc,KACnB,EAAK,kBACJ,S,yBAIC,WACN,KAAK,eACL,KAAK,QAAU,KAAK,YACpB,KAAK,YAAc,KACnB,KAAK,sBACL,KAAK,e,0BAGC,WACF,KAAK,UACP,KAAK,QAAQ,QAAU,aAGvB,KAAK,QAAQ,W,yBAIT,SAAY,GAClB,IAAM,EAAkB,KAAK,UAAU,GAEnC,KAAK,SAAuC,IAA5B,KAAK,QAAQ,WAC/B,KAAK,QAAQ,KAAK,IAElB,KAAK,YAAY,GACjB,KAAK,mB,6EAID,WAAqB,GAArB,4FAIJ,EAAgB,KAAK,MAAM,EAAM,MAJ7B,gFASN,KAAK,YAAY,CACf,MAAO,EAAc,MACrB,KAAM,MACN,QAAS,GACT,QAAQ,IAGN,KAAK,SAAuC,IAA5B,KAAK,QAAQ,aACzB,EAAS,KAAK,QAAQ,QAAO,YAAK,MAAoB,YAAhB,EAAM,SAC9C,GAAU,EAAO,QACnB,EAAO,SAAQ,YAAK,OAAI,EAAM,SAAS,OAnBrC,wD,iFAwBA,SAAa,GACnB,IAAM,EAAS,KAAK,QAAQ,QAAO,YAAK,MAAoB,UAAhB,EAAM,SAC9C,GAAU,EAAO,QACnB,EAAO,SAAQ,YAAK,OAAI,EAAM,SAAS,Q,iCAInC,WAAmB,WACH,KAAK,eAEb,SAAQ,SAAC,GAAD,OACpB,EAAK,OAAO,KAAK,CACf,MAAO,EACP,KAAM,MACN,QAAS,GACT,QAAQ,OAIZ,KAAK,eAAiB,KAAK,KAAK,eAAiB,K,yBAG3C,SAAY,GAClB,KAAK,OAAO,KAAK,K,wBAGX,WAAU,WACF,KAAK,OAEb,SAAQ,SAAC,GAAD,OAAmC,EAAK,YAAY,MAElE,KAAK,OAAS,O,KA2BH,Q,wEoDzQT,E,WAGJ,4CACE,KAAK,eAAiB,GAEA,qBAAX,QAAsE,qBAApC,OAAe,mBAC1D,OAAO,iBAAiB,UAAU,kBAAM,EAAK,QAAQ,aACrD,OAAO,iBAAiB,WAAW,kBAAM,EAAK,QAAQ,e,sCAInD,SAAGs0B,EAAqB,GAC7B,KAAK,eAAe,KAAK,CACvB,QACA,e,qBAIG,SAAQ,GACb,IAAI,EAAwC,GAExC,IACF,EAAgB,KAAK,eAAe,QAClC,SAAC,GAAD,OAAwC,EAAa,QAAU,MAInE,EAAc,SAAQ,SAAC,GACrB,EAAa,kB,KAKJ,O,iCCpCfz4B,EAAOC,QAAU,WACf,MAAM,IAAIqE,MACR,2F,iCnBJJ,4P,sJoBoK+D,qBAAXmI,SAA0BA,kBAAoBA,gBAAkBA,OAAvE,qBA6DuB,qBAAXA,SAA0BA,uBAAyBA,qBAAuBA,OAAjF,0BCjO3CisB,ICKMC,EAAND,wBACME,EAANF,4BACMG,EAANH,6BAEMI,EAANJ,4BCCP,SAASK,EAAOC,G,OAEZ,uBAAKC,UAAU,+BACb,uBAAKlsB,IFbJ2rB,iiDEaqCO,UAAU,oCAChDC,yBDdCR,iBCeD,uBAAKO,UAAU,sCAAsCE,QAASH,EAAMI,SAClE,uBAAKpwB,GDRN0vB,6BCQyCO,UAAU,oCAChD,uBAAKA,UAAU,sCACf,uBAAKA,UAAU,yCCPzB,SAASI,EAAcL,G,OAEnB,qBACEC,UAAU,gCACVK,KAAMN,EAAMM,KACZtwB,GAAOuwB,gCAAmCP,EAAMl3B,KAChDq3B,QAASH,EAAMG,QACfK,IAAI,sBACJC,MAAO,CAAEC,gBAAiBV,EAAMnmB,OAChCnS,OAAO,UAENs4B,EAVL,MCDF,SAASW,EAAaX,GACZnmB,cAAOymB,SAAMx3B,SAAM83B,SAAMT,Y,OAE/B,qBACEF,UAAU,iCACVK,KAAMA,EACNH,QAASA,EACTK,IAAI,sBACJ94B,OAAO,UAEP,sBAAIu4B,UAAW,sCAPjB,GAQE,uBAAKA,UAAU,yCACb,uBACEA,UAAS,kDACTQ,MAAO,CAAEI,WAAY,QAAQD,QAAtB,EAAyCE,eAAgB,UAElE,uBAAK/sB,IC3BN2rB,yhBD2B0BO,UAAU,mDEjB3C,SAASc,EAAWf,GACVnmB,cAAOymB,SAAMx3B,SAAM83B,SAAMT,YAC3Ba,EAAWC,uBAA6Bn4B,eAAwB,UAAtE,U,OAEE,qBACEm3B,UAAU,6CACVK,KAAMA,EACNH,QAASA,EACTK,IAAI,sBACJ94B,OAAO,UAEP,uBACEu4B,UAAU,sCACVQ,MAAO,CAAEI,WAAY,QAAQD,QAAtB,EAAyCE,eAAgB,UAElE,uBAAKL,MAAO,C,SAAEO,GAAYf,UAAW,uCAZzC,ICaF,SAASiB,EAAYlB,G,IACbmB,EAAUC,EAAhB,Y,EAC0BlB,EAAMA,SAASA,IAAlC1gB,OAAO6hB,O,EACcnB,EAAMA,SAASA,IAApC/B,OAAQmD,O,EACSpB,EAAMA,SAASA,GAAhCqB,OAAMC,OACPC,EAAQtD,EACV6B,yBAAmB0B,UAAQA,8BAAiCvD,EAAjCuD,kBAC3B1B,EAFJ,MAGM2B,EAAe3B,EAArB,aACM4B,EAAOzD,GAAUsD,SAZzB/B,EAaQmC,EAAQrnB,UAAUinB,SAZ1B/B,IAaQoC,EAAQ,CAbhBpC,IAakB6B,EAAD,GAAD,EAbhB7B,GAakD6B,GAC1CQ,EAAYN,SACdA,mBAAa,YAAcnzB,KAAawzB,EAAbxzB,IAAyBA,KAAawzB,EAAM,MAD3E,GAGME,IAAgBb,KAAWU,EAAjC,IACII,OAAJ,E,OAiBE,2BACE,qBAAGjyB,GAAI8vB,EAA2BG,UAAU,8BACzCkB,EAAUnB,OAAH,sBAAsCA,OAFlD,0BAIImB,GACA,yBACElB,UAAS,8BACTiC,YAAY,SACZ15B,MAAOgX,EACP2iB,S,SAzBR,GACEd,EAAShwB,SAATgwB,OACAe,gBACI/wB,SAAJ,MACE4wB,EAAgBI,YAAW,WACzBf,EAAUjwB,SAAViwB,OACAE,OAFFS,MAKAZ,MACAC,MACAE,SAiBA,uBACEvB,UAAS,2CACPkB,EAAU,YAAcS,GAAQH,EAARG,gBAAkC,KAG1DT,EAyCA,mBACEr4B,KAAMk3B,OAAWsC,QACjBzoB,MNpHL6lB,oBMqHKY,KAAMN,EAAMuC,IACZpC,QAASD,EAAMsC,aAAY,WACzBC,qBAAmB,CACjB35B,KADiB,UAEjBw3B,KAAMN,EAAMuC,QAHP,MA5CXR,EAAA,OACEA,EAAA,cAAeW,GACL7oB,cAAO/Q,SAAM65B,cAAW/B,SAC1BN,EAAOsC,kBAAgB5C,EAAD,IAA5B,GACM6C,EAAiB3C,EAAMsC,aAAY,WACvCC,qBAAmB,C,KAAA,E,KAEjBnC,MAED,CALH,I,OAMQsB,EASN,mBACE/nB,MAAOA,EACPymB,KAAMA,EACNx3B,KAAM65B,GAAa75B,EACnB83B,KAAMA,EACNT,QAAS0C,IAbX,mBACEhpB,MAAOA,EACPymB,KAAMA,EACNx3B,KAAMA,EACN83B,KAAMA,EACNT,QAAS0C,OAaf3C,gCACEA,yBACGyB,SACG3B,EADH2B,aAEK3B,QAAF,SAAyByB,EAAzB,OACAzB,OADA,iBAEAA,OApCX,WAsDFgC,GACC,uBAAK/B,UAAU,+BACZ3zB,MAAA,yBAEM,K,IACGw2B,EAAax0B,EAAnB,EACMy0B,EAAWxB,IAAjB,E,OAEE,qBACEd,MAAO,CAAE3mB,OAAF,YAAuBkpB,WAAYD,EAAW,OAAS,UAC9D5C,QAAO,kBAAQqB,EAAQsB,KAH3B,QClId,SAASG,EAAajD,G,IACdkD,IAASlD,UAAf,O,OAEE,uBAAKC,UAAS,sCAAuCiD,EAAO,sBAAwB,KACjFlD,EAFL,SCgBF,SAASmD,EAAcnD,G,MACmBE,EAAMA,SAASA,IAAhDkD,OAAcC,O,EACCnD,EAAMA,SAASA,IAA9BoD,OAAKC,OAEZrD,EAAMA,WAAUA,W,2BAlBHsD,SAAkBn0B,G,QAC3BwN,EAAJ,G,uBACyB4mB,EAAA,WAAsB,CAAE3pB,OAAF,EAAatP,KAAM,SAAzC,eAAnBk5B,G,MACN,kBAAWA,IACT7mB,EAAS6mB,iBAAT7mB,6CAEF,K,mCAciB2mB,CAAkBxD,EAAD,wBAA9BuD,Q,8BAFJrD,I,OAkBE,2BACE,qBAAGlwB,GAAI8vB,EAA2BG,UAAU,8BACzCD,OAFL,yBAIE,uBAAK2D,wBAAyB,CAAEC,OAAQN,KACxC,uBAAKrD,UAAU,+BACb,qBAAGE,QAlBe,WACNxzB,EAAKqzB,EAArB,MAEEqD,EAAgBrD,OAAhBqD,qBACAQ,aAAY,WAAD,OAAOR,EAAgB,MAAlCQ,QAEAR,WACAQ,aAAY,WAAD,OAAOR,EAAgB,MAAlCQ,SAWgC7D,OANlC,oBAQE,mBAAcryB,QAASy1B,KCrB7B,SAASU,EAAM9D,G,IACPmB,EAAUC,EAAhB,YACM2C,EAASC,EAAf,WAEMC,EAAYF,EACd/D,sBAA4BA,qBAA5BA,YACEA,qBADFA,iBADoB,EAIpBA,sBAA4BA,qBAA5BA,aACAA,qBADAA,kBAJJ,E,EAO8BE,EAAMA,UAASA,GAAtCgE,OAASC,O,EACcjE,EAAMA,UAASA,GAAtCkE,OAASC,O,EAC0BnE,EAAMA,UAANA,GAAnCoE,OAAeC,OAChBC,EAAe,C,OAAA,EAEnBpmB,KAAM4hB,EAFa,KAGnBuC,IAAKvC,EAHc,IAInByE,mBAAoBzE,EAAMyE,oB,EAGgBvE,EAAMA,SAASA,IAApDwE,OAAgBC,O,EACmBzE,EAAMA,UAASA,GAAlD0E,OAAeC,O,EACI3E,EAAMA,SAANA,IAAnBuB,OAAOqD,O,EAC0B5E,EAAMA,SAASA,IAAhDyB,OAAcoD,OAEfC,EAAmB,WACnBZ,MAAuBH,IAAcA,EAArCG,QAA0D3C,SAA9D,GAIAvB,EAAMA,WAAUA,YACI,W,OAChB,EAAa,yBACbiE,M,MX8eD,SAAgB3nB,EAAMyoB,G,QAEvBpoB,EAASL,IACZ,S,OACMyoB,EAAP,G,OAEGpoB,GAAUA,EAAd,KACQA,YAAY,EAAnB,GAED,E,iBWrfe4C,EACJugB,sBAA4BA,qBAA5BA,YACIA,qBADJA,YAEIkF,EAHN,uB,uBAI+B3pB,MAL7B,sB,uBAMsB4pB,EANtB,0B,IAMIC,EAAW,EAAjB,SACMliB,EAAW6gB,EAAS,SAA1B,UACMsB,EAASC,wBAAsBC,uBAAoB,EAArB,GAApC,GACApB,MACAE,MACAU,EAAiBM,EAAD,OAAhBN,GAAiC/E,OAAjB,sBAChB8E,K,IACMF,EAAN,IAAsBS,SACtB,IACEV,EAAkB/B,kBAAgB5C,EAAD,IAAYqF,EAA7CV,KACAJ,OAEFM,c,SACOxzB,GACP8yB,MACAE,MACAU,EAAgB/E,OAAhB+E,sBACAt5B,oB,yDA1BW,S,0BA6Bf+5B,OAIJR,I,IAEMS,EAAgB1B,EAASO,GAA/B,E,OAEE,uBAAKt0B,GAAI6vB,EAAwBI,UAAU,8CACzC,uBAAKA,UAAU,6BACb,mBAAQG,QAASJ,EAAMI,UACtBwE,KACC,uBAAK3E,UAAU,sCACb,qBACEE,QAAO,kBAAQsC,qBAAmB,CAAE35B,KAAM24B,KAAR,KAAuBnB,KAAMoE,KAC/DpE,KAAMoE,EACNlE,IAAI,sBACJ94B,OAAO,UAENs4B,yBAAiC4E,EAAgBnD,KAAH,KAA9CzB,IARN4E,YAWGzD,GAAA,IAAwB+C,GAAWzC,EAAnC,OACF,uBACExB,UAAS,uCACPwF,EAAgB,mBAAqB,KAGvC,uBAAKxF,UAAU,iDACd8D,EACC7D,gCACE,qBAAGC,QAAO,kBAASoE,MAAyBS,MACzChF,OAFLE,QAIE,qBAAGC,QAAO,kBAAQoE,GAAiB,KAAQvE,OALxC,SAQL,gCACE,qBAAGG,QAAO,kBAAQoE,GAAiB,KAAQvE,OAD7C,QAEE,qBAAGG,QAAO,kBAASoE,MAAyBS,MACzChF,OAlBP,WAbN,KAsCE,2BACGsE,IAAmBnD,IAAD,IAAyBM,EAA3C6C,OACCpE,mCADDoE,IAGC,mCAAiBE,E,CAAc/C,MAAOA,EAAOE,aA5CvD,QCpGFjC,ICSMgG,EAAyC,C,GDT3B,CAClBC,wBADkB,6BAElBC,sBAFkB,6BAGlBC,wBAHkB,gEAIlBvD,QAJkB,YAKlBwD,OALkB,UAMlB/B,OANkB,SAOlBgC,QAPkB,UAQlBC,kBARkB,iCASlBC,oBATkB,iCAUlBC,aAVkB,0BAWlBhC,QAXkB,WAYlBiC,qBAZkB,4BAalBC,qBAbkB,6CAclBC,iBAAkB,yB,GEdA,CAClBV,wBADkB,+BAElBC,sBAFkB,2BAGlBC,wBAHkB,sDAIlBvD,QAJkB,UAKlBwD,OALkB,UAMlB/B,OANkB,SAOlBgC,QAPkB,UAQlBC,kBARkB,oBASlBC,oBATkB,uBAUlBC,aAVkB,eAWlBhC,QAXkB,aAYlBiC,qBAZkB,uBAalBC,qBAbkB,qCAclBC,iBAAkB,oB,GCdA,CAClBV,wBADkB,+BAElBC,sBAFkB,gCAGlBC,wBAHkB,yEAIlBvD,QAJkB,WAKlBwD,OALkB,eAMlB/B,OANkB,WAOlBgC,QAPkB,UAQlBC,kBARkB,SASlBC,oBATkB,WAUlBC,aAVkB,oBAWlBhC,QAXkB,cAYlBiC,qBAZkB,oBAalBC,qBAbkB,2CAclBC,iBAAkB,gC,GCdA,CAClBV,wBADkB,iDAElBC,sBAFkB,sCAGlBC,wBAHkB,mEAIlBvD,QAJkB,eAKlBwD,OALkB,UAMlB/B,OANkB,SAOlBgC,QAPkB,UAQlBC,kBARkB,SASlBC,oBATkB,YAUlBC,aAVkB,gCAWlBhC,QAXkB,gBAYlBiC,qBAZkB,gCAalBC,qBAbkB,sDAclBC,iBAAkB,gC,GCdA,CAClBV,wBADkB,uEAElBC,sBAFkB,qDAGlBC,wBAHkB,0GAIlBvD,QAJkB,eAKlBwD,OALkB,kBAMlB/B,OANkB,qBAOlBgC,QAPkB,2BAQlBC,kBARkB,8CASlBC,oBATkB,6EAUlBC,aAVkB,kCAWlBhC,QAXkB,yBAYlBiC,qBAZkB,2DAalBC,qBAbkB,oFAclBC,iBAAkB,mE,GCdA,CAClBV,wBADkB,iCAElBC,sBAFkB,qCAGlBC,wBAHkB,sEAIlBvD,QAJkB,WAKlBwD,OALkB,eAMlB/B,OANkB,WAOlBgC,QAPkB,UAQlBC,kBARkB,SASlBC,oBATkB,WAUlBC,aAVkB,oBAWlBhC,QAXkB,kBAYlBiC,qBAZkB,kBAalBC,qBAbkB,0CAclBC,iBAAkB,+B,GCdA,CAClBV,wBADkB,uCAElBC,sBAFkB,mDAGlBC,wBAHkB,0FAIlBvD,QAJkB,eAKlBwD,OALkB,qBAMlB/B,OANkB,eAOlBgC,QAPkB,eAQlBC,kBARkB,uCASlBC,oBATkB,yDAUlBC,aAVkB,mDAWlBhC,QAXkB,8BAYlBiC,qBAZkB,2BAalBC,qBAbkB,+DAclBC,iBAAkB,wC,GCdA,CAClBV,wBADkB,kLAElBC,sBAFkB,sIAGlBC,wBAHkB,iNAIlBvD,QAJkB,iCAKlBwD,OALkB,kBAMlB/B,OANkB,2BAOlBgC,QAPkB,uCAQlBC,kBARkB,oFASlBC,oBATkB,kGAUlBC,aAVkB,oDAWlBhC,QAXkB,sDAYlBiC,qBAZkB,uEAalBC,qBAbkB,6NAclBC,iBAAkB,+GCuBpB,SAASC,I,IACDC,EAAMC,EAAZ,qBACMC,EAAQF,iBAAd,GACA,IACEE,YAAkBA,6BAAlBA,WACApE,YAAW,W,IACHqE,EAAUH,iBAAhB,GACA,GACEA,wBnB7CD7G,MmBmDP,SAASiH,EAAmBC,G,kBAExBN,IACA,GACEM,KAKN,SAASC,I,IACDC,EAAOC,gDAAb,K,OACOC,MAAmBA,EAAS,GAGrC,SAAgBjlB,EAAKwgB,EAAaqE,EAASnC,IAhD3C,W,IACQ8B,EAAMC,EAAZ,qBACMlL,EAAOiL,iBAAb,GACA,GACEA,sB,IAEI9F,EAAQ8F,gBAAd,SACA9F,uBACAA,YC3BKf,gzUD4BL6G,sBAwCAU,G,IACMP,EAtCR,W,IACQH,EAAMC,EAAZ,qBACME,EAAUH,gBAAhB,O,OACAG,uBACAH,sBACA,EAiCgBW,GAChBC,SACE,mBACE/oB,KAAMyoB,IACNtE,IAAKA,EACLnC,QAASuG,EAAmBC,GAC5BnC,mBAAoBA,IALxB0C,G3EjEFzH,IAAM0H,EAAM,iBACV,6CACOnkB,EAAP,UACiC,qBAA1BA,WAAP,MAoBF,MAAe,C,KAlBf,gBAEExX,eACI27B,I,S6EXe7E,GAEnBkB,aAAqB,CAAEj5B,KAAM,aAA7Bi5B,KAAgDh4B,QAAhDg4B,K7EUE4D,IAEAC,U,MAIJ,WACMF,K2E6DJd,M,qDGjFF,IAAIiB,EAAa13B,EAAQ,KAErB4zB,EAAS5zB,EAAQ,KACjB23B,EAAiB33B,EAAQ,KACzB43B,EAAc53B,EAAQ,KAE1B,SAAS63B,EAAcC,EAAYC,EAAQxpB,EAAM9D,EAAMssB,GACrD,IAAIh/B,EAAO,GAAG0B,MAAMvB,KAAKwB,UAAW,GAChCs+B,EAAUjgC,EAAKuD,OACf28B,EAA2C,oBAAtBlgC,EAAKigC,EAAU,GAExC,IAAKC,IAAgBP,IACnB,MAAM,IAAIj8B,MAAM,sCAGlB,IAAIw8B,EAoBG,CACL,GAAID,EAAU,EACZ,MAAM,IAAIv8B,MAAM,8BAYlB,OATgB,IAAZu8B,GACFzpB,EAAOwpB,EACPA,EAASttB,OAAOxQ,GACK,IAAZ+9B,GAAkBD,EAAOG,aAClCztB,EAAO8D,EACPA,EAAOwpB,EACPA,OAAS99B,GAGJ,IAAIf,SAAQ,SAAUC,EAASC,GACpC,IACE,IAAIoG,EAAOo0B,EAAO34B,OAAOsT,EAAM9D,GAC/BtR,EAAQ2+B,EAAWt4B,EAAMu4B,EAAQttB,IACjC,MAAOjJ,GACPpI,EAAOoI,OAtCX,GAAIw2B,EAAU,EACZ,MAAM,IAAIv8B,MAAM,8BAGF,IAAZu8B,GACFjB,EAAKxoB,EACLA,EAAOwpB,EACPA,EAASttB,OAAOxQ,GACK,IAAZ+9B,IACLD,EAAOG,YAA4B,qBAAPnB,GAC9BA,EAAKtsB,EACLA,OAAOxQ,IAEP88B,EAAKtsB,EACLA,EAAO8D,EACPA,EAAOwpB,EACPA,OAAS99B,IA2Bf,IACE,IAAIuF,EAAOo0B,EAAO34B,OAAOsT,EAAM9D,GAC/BssB,EAAG,KAAMe,EAAWt4B,EAAMu4B,EAAQttB,IAClC,MAAOjJ,GACPu1B,EAAGv1B,IAIPpK,EAAQ6D,OAAS24B,EAAO34B,OACxB7D,EAAQ+gC,SAAWN,EAAaz7B,KAAK,KAAMu7B,EAAeS,QAC1DhhC,EAAQihC,UAAYR,EAAaz7B,KAAK,KAAMu7B,EAAeW,iBAG3DlhC,EAAQ8J,SAAW22B,EAAaz7B,KAAK,MAAM,SAAUoD,EAAMqkB,EAAGpZ,GAC5D,OAAOmtB,EAAYQ,OAAO54B,EAAMiL,O,kBCtElCtT,EAAOC,QAAU,WACf,MAA0B,oBAAZ8B,SAA0BA,QAAQjB,WAAaiB,QAAQjB,UAAUqW,O,oBCLjF,IAAIiqB,EAAav4B,EAAQ,KACrBw4B,EAAQx4B,EAAQ,KAChBmI,EAAUnI,EAAQ,KAClBy4B,EAAYz4B,EAAQ,KACpB04B,EAAY14B,EAAQ,KACpB24B,EAAmB34B,EAAQ,KAC3B44B,EAAgB54B,EAAQ,KACxB64B,EAAc74B,EAAQ,KACtB84B,EAAS94B,EAAQ,KACjB+4B,EAAqB/4B,EAAQ,KAC7Bg5B,EAAUh5B,EAAQ,KAClBi5B,EAAaj5B,EAAQ,KACrBk5B,EAAOl5B,EAAQ,KACfm5B,EAAWn5B,EAAQ,KACnByB,EAAUzB,EAAQ,KAqItB,SAASo5B,EAAiBC,EAAQ9wB,EAAsB+wB,GACtD,IAEIhiC,EAAGkgB,EAFHrU,EAAOk2B,EAAOl2B,KACduhB,EAAOuU,EAAWM,eAAehxB,EAAsB+wB,GAG3D,IAAKhiC,EAAI,EAAGA,EAAI,GAAIA,IAClBkgB,EAA4B,KAApBkN,GAAQptB,EAAK,GAGjBA,EAAI,EACN+hC,EAAO/7B,IAAIhG,EAAG,EAAGkgB,GAAK,GACblgB,EAAI,EACb+hC,EAAO/7B,IAAIhG,EAAI,EAAG,EAAGkgB,GAAK,GAE1B6hB,EAAO/7B,IAAI6F,EAAO,GAAK7L,EAAG,EAAGkgB,GAAK,GAIhClgB,EAAI,EACN+hC,EAAO/7B,IAAI,EAAG6F,EAAO7L,EAAI,EAAGkgB,GAAK,GACxBlgB,EAAI,EACb+hC,EAAO/7B,IAAI,EAAG,GAAKhG,EAAI,EAAI,EAAGkgB,GAAK,GAEnC6hB,EAAO/7B,IAAI,EAAG,GAAKhG,EAAI,EAAGkgB,GAAK,GAKnC6hB,EAAO/7B,IAAI6F,EAAO,EAAG,EAAG,GAAG,GAyD7B,SAASq2B,EAAYn6B,EAASkJ,EAAsBkxB,GAElD,IAAIz2B,EAAS,IAAIy1B,EAEjBgB,EAASltB,SAAQ,SAAU/M,GAEzBwD,EAAO02B,IAAIl6B,EAAKmB,KAAKP,IAAK,GAS1B4C,EAAO02B,IAAIl6B,EAAKm6B,YAAaT,EAAKx4B,sBAAsBlB,EAAKmB,KAAMtB,IAGnEG,EAAKoD,MAAMI,MAIb,IAEI42B,EAA+D,GAF9CpB,EAAMl5B,wBAAwBD,GAC5By5B,EAAOtwB,uBAAuBnJ,EAASkJ,IAiB9D,IATIvF,EAAO62B,kBAAoB,GAAKD,GAClC52B,EAAO02B,IAAI,EAAG,GAQT12B,EAAO62B,kBAAoB,IAAM,GACtC72B,EAAO82B,OAAO,GAQhB,IADA,IAAIC,GAAiBH,EAAyB52B,EAAO62B,mBAAqB,EACjEviC,EAAI,EAAGA,EAAIyiC,EAAeziC,IACjC0L,EAAO02B,IAAIpiC,EAAI,EAAI,GAAO,IAAM,GAGlC,OAYF,SAA0B0iC,EAAW36B,EAASkJ,GAmC5C,IAjCA,IAAI0xB,EAAiBzB,EAAMl5B,wBAAwBD,GAG/C66B,EAAmBpB,EAAOtwB,uBAAuBnJ,EAASkJ,GAG1D4xB,EAAqBF,EAAiBC,EAGtCE,EAAgBtB,EAAOxwB,eAAejJ,EAASkJ,GAI/C8xB,EAAiBD,EADAH,EAAiBG,EAGlCE,EAAyB3vB,KAAKC,MAAMqvB,EAAiBG,GAErDG,EAAwB5vB,KAAKC,MAAMuvB,EAAqBC,GACxDI,EAAwBD,EAAwB,EAGhDE,EAAUH,EAAyBC,EAGnCG,EAAK,IAAI3B,EAAmB0B,GAE5Bx4B,EAAS,EACT04B,EAAS,IAAIl+B,MAAM29B,GACnBQ,EAAS,IAAIn+B,MAAM29B,GACnBS,EAAc,EACd73B,EAASu1B,EAAWp3B,KAAK64B,EAAUh3B,QAG9BgC,EAAI,EAAGA,EAAIo1B,EAAep1B,IAAK,CACtC,IAAI81B,EAAW91B,EAAIq1B,EAAiBE,EAAwBC,EAG5DG,EAAO31B,GAAKhC,EAAOvJ,MAAMwI,EAAQA,EAAS64B,GAG1CF,EAAO51B,GAAK01B,EAAGjO,OAAOkO,EAAO31B,IAE7B/C,GAAU64B,EACVD,EAAclwB,KAAK+L,IAAImkB,EAAaC,GAKtC,IAEIxjC,EAAGqS,EAFHnK,EAAO+4B,EAAWtzB,MAAMg1B,GACxBx7B,EAAQ,EAIZ,IAAKnH,EAAI,EAAGA,EAAIujC,EAAavjC,IAC3B,IAAKqS,EAAI,EAAGA,EAAIywB,EAAezwB,IACzBrS,EAAIqjC,EAAOhxB,GAAGrO,SAChBkE,EAAKf,KAAWk8B,EAAOhxB,GAAGrS,IAMhC,IAAKA,EAAI,EAAGA,EAAImjC,EAASnjC,IACvB,IAAKqS,EAAI,EAAGA,EAAIywB,EAAezwB,IAC7BnK,EAAKf,KAAWm8B,EAAOjxB,GAAGrS,GAI9B,OAAOkI,EAlFAu7B,CAAgB/3B,EAAQ3D,EAASkJ,GA8F1C,SAASyyB,EAAcx7B,EAAMH,EAASkJ,EAAsB+wB,GAC1D,IAAIG,EAEJ,GAAIh4B,EAAQjC,GACVi6B,EAAWN,EAAS8B,UAAUz7B,OACzB,IAAoB,kBAATA,EAehB,MAAM,IAAI/D,MAAM,gBAdhB,IAAIy/B,EAAmB77B,EAEvB,IAAK67B,EAAkB,CACrB,IAAIC,EAAchC,EAASiC,SAAS57B,GAGpC07B,EAAmBlC,EAAQqC,sBAAsBF,EAC/C5yB,GAKJkxB,EAAWN,EAAS53B,WAAW/B,EAAM07B,GAAoB,IAM3D,IAAII,EAActC,EAAQqC,sBAAsB5B,EAC5ClxB,GAGJ,IAAK+yB,EACH,MAAM,IAAI7/B,MAAM,2DAIlB,GAAK4D,GAIE,GAAIA,EAAUi8B,EACnB,MAAM,IAAI7/B,MAAM,wHAE0C6/B,EAAc,YANxEj8B,EAAUi8B,EAUZ,IAAIC,EAAW/B,EAAWn6B,EAASkJ,EAAsBkxB,GAGrD+B,EAAchD,EAAMp5B,cAAcC,GAClC2L,EAAU,IAAI0tB,EAAU8C,GAgC5B,OA3ZF,SAA6BnC,EAAQh6B,GAInC,IAHA,IAAI8D,EAAOk2B,EAAOl2B,KACd2B,EAAM8zB,EAAc6C,aAAap8B,GAE5B/H,EAAI,EAAGA,EAAIwN,EAAIxJ,OAAQhE,IAI9B,IAHA,IAAIokC,EAAM52B,EAAIxN,GAAG,GACbqkC,EAAM72B,EAAIxN,GAAG,GAERqS,GAAK,EAAGA,GAAK,EAAGA,IACvB,KAAI+xB,EAAM/xB,IAAM,GAAKxG,GAAQu4B,EAAM/xB,GAEnC,IAAK,IAAIJ,GAAK,EAAGA,GAAK,EAAGA,IACnBoyB,EAAMpyB,IAAM,GAAKpG,GAAQw4B,EAAMpyB,IAE9BI,GAAK,GAAKA,GAAK,IAAY,IAANJ,GAAiB,IAANA,IAClCA,GAAK,GAAKA,GAAK,IAAY,IAANI,GAAiB,IAANA,IAChCA,GAAK,GAAKA,GAAK,GAAKJ,GAAK,GAAKA,GAAK,EACpC8vB,EAAO/7B,IAAIo+B,EAAM/xB,EAAGgyB,EAAMpyB,GAAG,GAAM,GAEnC8vB,EAAO/7B,IAAIo+B,EAAM/xB,EAAGgyB,EAAMpyB,GAAG,GAAO,IA2W5CqyB,CAAmB5wB,EAAS3L,GA7V9B,SAA6Bg6B,GAG3B,IAFA,IAAIl2B,EAAOk2B,EAAOl2B,KAETwG,EAAI,EAAGA,EAAIxG,EAAO,EAAGwG,IAAK,CACjC,IAAIhR,EAAQgR,EAAI,IAAM,EACtB0vB,EAAO/7B,IAAIqM,EAAG,EAAGhR,GAAO,GACxB0gC,EAAO/7B,IAAI,EAAGqM,EAAGhR,GAAO,IAwV1BkjC,CAAmB7wB,GA5UrB,SAAgCquB,EAAQh6B,GAGtC,IAFA,IAAIyF,EAAM6zB,EAAiB8C,aAAap8B,GAE/B/H,EAAI,EAAGA,EAAIwN,EAAIxJ,OAAQhE,IAI9B,IAHA,IAAIokC,EAAM52B,EAAIxN,GAAG,GACbqkC,EAAM72B,EAAIxN,GAAG,GAERqS,GAAK,EAAGA,GAAK,EAAGA,IACvB,IAAK,IAAIJ,GAAK,EAAGA,GAAK,EAAGA,KACZ,IAAPI,GAAkB,IAANA,IAAkB,IAAPJ,GAAkB,IAANA,GAC9B,IAANI,GAAiB,IAANJ,EACZ8vB,EAAO/7B,IAAIo+B,EAAM/xB,EAAGgyB,EAAMpyB,GAAG,GAAM,GAEnC8vB,EAAO/7B,IAAIo+B,EAAM/xB,EAAGgyB,EAAMpyB,GAAG,GAAO,GAgU5CuyB,CAAsB9wB,EAAS3L,GAM/B+5B,EAAgBpuB,EAASzC,EAAsB,GAE3ClJ,GAAW,GA3TjB,SAA2Bg6B,EAAQh6B,GAKjC,IAJA,IAEIq8B,EAAKC,EAAKnkB,EAFVrU,EAAOk2B,EAAOl2B,KACduhB,EAAOsU,EAAQO,eAAel6B,GAGzB/H,EAAI,EAAGA,EAAI,GAAIA,IACtBokC,EAAM/wB,KAAKC,MAAMtT,EAAI,GACrBqkC,EAAMrkC,EAAI,EAAI6L,EAAO,EAAI,EACzBqU,EAA4B,KAApBkN,GAAQptB,EAAK,GAErB+hC,EAAO/7B,IAAIo+B,EAAKC,EAAKnkB,GAAK,GAC1B6hB,EAAO/7B,IAAIq+B,EAAKD,EAAKlkB,GAAK,GAiT1BukB,CAAiB/wB,EAAS3L,GAjQ9B,SAAoBg6B,EAAQ75B,GAO1B,IANA,IAAI2D,EAAOk2B,EAAOl2B,KACd64B,GAAO,EACPN,EAAMv4B,EAAO,EACb84B,EAAW,EACXC,EAAY,EAEPP,EAAMx4B,EAAO,EAAGw4B,EAAM,EAAGA,GAAO,EAGvC,IAFY,IAARA,GAAWA,MAEF,CACX,IAAK,IAAIpyB,EAAI,EAAGA,EAAI,EAAGA,IACrB,IAAK8vB,EAAO8C,WAAWT,EAAKC,EAAMpyB,GAAI,CACpC,IAAIa,GAAO,EAEP8xB,EAAY18B,EAAKlE,SACnB8O,EAAiD,KAAvC5K,EAAK08B,KAAeD,EAAY,IAG5C5C,EAAO/7B,IAAIo+B,EAAKC,EAAMpyB,EAAGa,IAGP,MAFlB6xB,IAGEC,IACAD,EAAW,GAOjB,IAFAP,GAAOM,GAEG,GAAK74B,GAAQu4B,EAAK,CAC1BA,GAAOM,EACPA,GAAOA,EACP,QAmONI,CAAUpxB,EAASuwB,GAEf7iC,MAAM4gC,KAERA,EAAcT,EAAYwD,YAAYrxB,EACpCouB,EAAgBh9B,KAAK,KAAM4O,EAASzC,KAIxCswB,EAAYyD,UAAUhD,EAAatuB,GAGnCouB,EAAgBpuB,EAASzC,EAAsB+wB,GAExC,CACLtuB,QAASA,EACT3L,QAASA,EACTkJ,qBAAsBA,EACtB+wB,YAAaA,EACbG,SAAUA,GAadriC,EAAQ6D,OAAS,SAAiBuE,EAAMuK,GACtC,GAAoB,qBAATvK,GAAiC,KAATA,EACjC,MAAM,IAAI/D,MAAM,iBAGlB,IACI4D,EACA4lB,EAFA1c,EAAuBJ,EAAQtB,EAenC,MAXuB,qBAAZkD,IAETxB,EAAuBJ,EAAQhH,KAAK4I,EAAQxB,qBAAsBJ,EAAQtB,GAC1ExH,EAAU25B,EAAQ73B,KAAK4I,EAAQ1K,SAC/B4lB,EAAO4T,EAAY13B,KAAK4I,EAAQuvB,aAE5BvvB,EAAQwyB,YACV/D,EAAM94B,kBAAkBqK,EAAQwyB,aAI7BvB,EAAax7B,EAAMH,EAASkJ,EAAsB0c,K,kBCjf3D,SAASwT,IACP3/B,KAAKkK,OAAS,GACdlK,KAAKwC,OAAS,EAGhBm9B,EAAUxgC,UAAY,CAEpBoF,IAAK,SAAUoB,GACb,IAAI+9B,EAAW7xB,KAAKC,MAAMnM,EAAQ,GAClC,OAA6D,KAApD3F,KAAKkK,OAAOw5B,KAAe,EAAI/9B,EAAQ,EAAM,IAGxDi7B,IAAK,SAAUjjB,EAAKnb,GAClB,IAAK,IAAIhE,EAAI,EAAGA,EAAIgE,EAAQhE,IAC1BwB,KAAKghC,OAA4C,KAAnCrjB,IAASnb,EAAShE,EAAI,EAAM,KAI9CuiC,gBAAiB,WACf,OAAO/gC,KAAKwC,QAGdw+B,OAAQ,SAAU15B,GAChB,IAAIo8B,EAAW7xB,KAAKC,MAAM9R,KAAKwC,OAAS,GACpCxC,KAAKkK,OAAO1H,QAAUkhC,GACxB1jC,KAAKkK,OAAO3H,KAAK,GAGf+E,IACFtH,KAAKkK,OAAOw5B,IAAc,MAAU1jC,KAAKwC,OAAS,GAGpDxC,KAAKwC,WAITnE,EAAOC,QAAUqhC,G,oBCpCjB,IAAIF,EAAav4B,EAAQ,KAOzB,SAAS04B,EAAWv1B,GAClB,IAAKA,GAAQA,EAAO,EAClB,MAAM,IAAI1H,MAAM,qDAGlB3C,KAAKqK,KAAOA,EACZrK,KAAK0G,KAAO+4B,EAAWtzB,MAAM9B,EAAOA,GACpCrK,KAAK2jC,YAAclE,EAAWtzB,MAAM9B,EAAOA,GAY7Cu1B,EAAUzgC,UAAUqF,IAAM,SAAUo+B,EAAKC,EAAKhjC,EAAO+jC,GACnD,IAAIj+B,EAAQi9B,EAAM5iC,KAAKqK,KAAOw4B,EAC9B7iC,KAAK0G,KAAKf,GAAS9F,EACf+jC,IAAU5jC,KAAK2jC,YAAYh+B,IAAS,IAU1Ci6B,EAAUzgC,UAAUoF,IAAM,SAAUq+B,EAAKC,GACvC,OAAO7iC,KAAK0G,KAAKk8B,EAAM5iC,KAAKqK,KAAOw4B,IAWrCjD,EAAUzgC,UAAUsjB,IAAM,SAAUmgB,EAAKC,EAAKhjC,GAC5CG,KAAK0G,KAAKk8B,EAAM5iC,KAAKqK,KAAOw4B,IAAQhjC,GAUtC+/B,EAAUzgC,UAAUkkC,WAAa,SAAUT,EAAKC,GAC9C,OAAO7iC,KAAK2jC,YAAYf,EAAM5iC,KAAKqK,KAAOw4B,IAG5CxkC,EAAOC,QAAUshC,G,oBCxDjB,IAAIt5B,EAAgBY,EAAQ,KAAWZ,cAgBvChI,EAAQulC,gBAAkB,SAA0Bt9B,GAClD,GAAgB,IAAZA,EAAe,MAAO,GAO1B,IALA,IAAIu9B,EAAWjyB,KAAKC,MAAMvL,EAAU,GAAK,EACrC8D,EAAO/D,EAAcC,GACrBw9B,EAAqB,MAAT15B,EAAe,GAAmD,EAA9CwH,KAAKyM,MAAMjU,EAAO,KAAO,EAAIy5B,EAAW,IACxEE,EAAY,CAAC35B,EAAO,GAEf7L,EAAI,EAAGA,EAAIslC,EAAW,EAAGtlC,IAChCwlC,EAAUxlC,GAAKwlC,EAAUxlC,EAAI,GAAKulC,EAKpC,OAFAC,EAAUzhC,KAAK,GAERyhC,EAAUC,WAuBnB3lC,EAAQqkC,aAAe,SAAuBp8B,GAK5C,IAJA,IAAI29B,EAAS,GACTl4B,EAAM1N,EAAQulC,gBAAgBt9B,GAC9B49B,EAAYn4B,EAAIxJ,OAEXhE,EAAI,EAAGA,EAAI2lC,EAAW3lC,IAC7B,IAAK,IAAI8T,EAAI,EAAGA,EAAI6xB,EAAW7xB,IAElB,IAAN9T,GAAiB,IAAN8T,GACL,IAAN9T,GAAW8T,IAAM6xB,EAAY,GAC7B3lC,IAAM2lC,EAAY,GAAW,IAAN7xB,GAI5B4xB,EAAO3hC,KAAK,CAACyJ,EAAIxN,GAAIwN,EAAIsG,KAI7B,OAAO4xB,I,oBCjFT,IAAI59B,EAAgBY,EAAQ,KAAWZ,cAUvChI,EAAQqkC,aAAe,SAAuBp8B,GAC5C,IAAI8D,EAAO/D,EAAcC,GAEzB,MAAO,CAEL,CAAC,EAAG,GAEJ,CAAC8D,EAhBqB,EAgBO,GAE7B,CAAC,EAAGA,EAlBkB,M,kBCG1B/L,EAAQ8lC,SAAW,CACjBC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZC,WAAY,EACZC,WAAY,GAOd,IAAIC,EACE,EADFA,EAEE,EAFFA,EAGE,GAHFA,EAIE,GAkJN,SAASC,EAAWtE,EAAahiC,EAAG8T,GAClC,OAAQkuB,GACN,KAAKliC,EAAQ8lC,SAASC,WAAY,OAAQ7lC,EAAI8T,GAAK,IAAM,EACzD,KAAKhU,EAAQ8lC,SAASE,WAAY,OAAO9lC,EAAI,IAAM,EACnD,KAAKF,EAAQ8lC,SAASG,WAAY,OAAOjyB,EAAI,IAAM,EACnD,KAAKhU,EAAQ8lC,SAASI,WAAY,OAAQhmC,EAAI8T,GAAK,IAAM,EACzD,KAAKhU,EAAQ8lC,SAASK,WAAY,OAAQ5yB,KAAKC,MAAMtT,EAAI,GAAKqT,KAAKC,MAAMQ,EAAI,IAAM,IAAM,EACzF,KAAKhU,EAAQ8lC,SAASM,WAAY,OAAQlmC,EAAI8T,EAAK,EAAK9T,EAAI8T,EAAK,IAAM,EACvE,KAAKhU,EAAQ8lC,SAASO,WAAY,OAASnmC,EAAI8T,EAAK,EAAK9T,EAAI8T,EAAK,GAAK,IAAM,EAC7E,KAAKhU,EAAQ8lC,SAASQ,WAAY,OAASpmC,EAAI8T,EAAK,GAAK9T,EAAI8T,GAAK,GAAK,IAAM,EAE7E,QAAS,MAAM,IAAI3P,MAAM,mBAAqB69B,IApJlDliC,EAAQwJ,QAAU,SAAkBqkB,GAClC,OAAe,MAARA,GAAyB,KAATA,IAAgBvsB,MAAMusB,IAASA,GAAQ,GAAKA,GAAQ,GAU7E7tB,EAAQ+J,KAAO,SAAexI,GAC5B,OAAOvB,EAAQwJ,QAAQjI,GAAS8Q,SAAS9Q,EAAO,SAAMsB,GAUxD7C,EAAQymC,aAAe,SAAuBr+B,GAQ5C,IAPA,IAAI2D,EAAO3D,EAAK2D,KACZ26B,EAAS,EACTC,EAAe,EACfC,EAAe,EACfC,EAAU,KACVC,EAAU,KAELxC,EAAM,EAAGA,EAAMv4B,EAAMu4B,IAAO,CACnCqC,EAAeC,EAAe,EAC9BC,EAAUC,EAAU,KAEpB,IAAK,IAAIvC,EAAM,EAAGA,EAAMx4B,EAAMw4B,IAAO,CACnC,IAAIxkC,EAASqI,EAAKnC,IAAIq+B,EAAKC,GACvBxkC,IAAW8mC,EACbF,KAEIA,GAAgB,IAAGD,GAAUH,GAAoBI,EAAe,IACpEE,EAAU9mC,EACV4mC,EAAe,IAGjB5mC,EAASqI,EAAKnC,IAAIs+B,EAAKD,MACRwC,EACbF,KAEIA,GAAgB,IAAGF,GAAUH,GAAoBK,EAAe,IACpEE,EAAU/mC,EACV6mC,EAAe,GAIfD,GAAgB,IAAGD,GAAUH,GAAoBI,EAAe,IAChEC,GAAgB,IAAGF,GAAUH,GAAoBK,EAAe,IAGtE,OAAOF,GAQT1mC,EAAQ+mC,aAAe,SAAuB3+B,GAI5C,IAHA,IAAI2D,EAAO3D,EAAK2D,KACZ26B,EAAS,EAEJpC,EAAM,EAAGA,EAAMv4B,EAAO,EAAGu4B,IAChC,IAAK,IAAIC,EAAM,EAAGA,EAAMx4B,EAAO,EAAGw4B,IAAO,CACvC,IAAIyC,EAAO5+B,EAAKnC,IAAIq+B,EAAKC,GACvBn8B,EAAKnC,IAAIq+B,EAAKC,EAAM,GACpBn8B,EAAKnC,IAAIq+B,EAAM,EAAGC,GAClBn8B,EAAKnC,IAAIq+B,EAAM,EAAGC,EAAM,GAEb,IAATyC,GAAuB,IAATA,GAAYN,IAIlC,OAAOA,EAASH,GASlBvmC,EAAQinC,aAAe,SAAuB7+B,GAM5C,IALA,IAAI2D,EAAO3D,EAAK2D,KACZ26B,EAAS,EACTQ,EAAU,EACVC,EAAU,EAEL7C,EAAM,EAAGA,EAAMv4B,EAAMu4B,IAAO,CACnC4C,EAAUC,EAAU,EACpB,IAAK,IAAI5C,EAAM,EAAGA,EAAMx4B,EAAMw4B,IAC5B2C,EAAYA,GAAW,EAAK,KAAS9+B,EAAKnC,IAAIq+B,EAAKC,GAC/CA,GAAO,KAAmB,OAAZ2C,GAAiC,KAAZA,IAAoBR,IAE3DS,EAAYA,GAAW,EAAK,KAAS/+B,EAAKnC,IAAIs+B,EAAKD,GAC/CC,GAAO,KAAmB,OAAZ4C,GAAiC,KAAZA,IAAoBT,IAI/D,OAAOA,EAASH,GAWlBvmC,EAAQonC,aAAe,SAAuBh/B,GAI5C,IAHA,IAAIi/B,EAAY,EACZC,EAAel/B,EAAKA,KAAKlE,OAEpBhE,EAAI,EAAGA,EAAIonC,EAAcpnC,IAAKmnC,GAAaj/B,EAAKA,KAAKlI,GAI9D,OAFQqT,KAAKyP,IAAIzP,KAAKyM,KAAkB,IAAZqnB,EAAkBC,EAAgB,GAAK,IAExDf,GAgCbvmC,EAAQklC,UAAY,SAAoBqC,EAASn/B,GAG/C,IAFA,IAAI2D,EAAO3D,EAAK2D,KAEPw4B,EAAM,EAAGA,EAAMx4B,EAAMw4B,IAC5B,IAAK,IAAID,EAAM,EAAGA,EAAMv4B,EAAMu4B,IACxBl8B,EAAK28B,WAAWT,EAAKC,IACzBn8B,EAAK+b,IAAImgB,EAAKC,EAAKiC,EAAUe,EAASjD,EAAKC,KAWjDvkC,EAAQilC,YAAc,SAAsB78B,EAAMo/B,GAKhD,IAJA,IAAIC,EAAczmC,OAAO2G,KAAK3H,EAAQ8lC,UAAU5hC,OAC5CwjC,EAAc,EACdC,EAAex7B,IAEVqf,EAAI,EAAGA,EAAIic,EAAajc,IAAK,CACpCgc,EAAgBhc,GAChBxrB,EAAQklC,UAAU1Z,EAAGpjB,GAGrB,IAAIw/B,EACF5nC,EAAQymC,aAAar+B,GACrBpI,EAAQ+mC,aAAa3+B,GACrBpI,EAAQinC,aAAa7+B,GACrBpI,EAAQonC,aAAah/B,GAGvBpI,EAAQklC,UAAU1Z,EAAGpjB,GAEjBw/B,EAAUD,IACZA,EAAeC,EACfF,EAAclc,GAIlB,OAAOkc,I,oBCxOT,IAAIvG,EAAav4B,EAAQ,KACrBi/B,EAAaj/B,EAAQ,KACrB0B,EAAS1B,EAAQ,KAAU0B,OAE/B,SAASq3B,EAAoBmG,GAC3BpmC,KAAKqmC,aAAUllC,EACfnB,KAAKomC,OAASA,EAEVpmC,KAAKomC,QAAQpmC,KAAKsmC,WAAWtmC,KAAKomC,QASxCnG,EAAmB9gC,UAAUmnC,WAAa,SAAqBF,GAE7DpmC,KAAKomC,OAASA,EACdpmC,KAAKqmC,QAAUF,EAAWI,qBAAqBvmC,KAAKomC,SAStDnG,EAAmB9gC,UAAUw0B,OAAS,SAAiBjtB,GACrD,IAAK1G,KAAKqmC,QACR,MAAM,IAAI1jC,MAAM,2BAKlB,IAAI6jC,EAAM/G,EAAWtzB,MAAMnM,KAAKomC,QAC5BK,EAAa79B,EAAOnJ,OAAO,CAACiH,EAAM8/B,GAAM9/B,EAAKlE,OAASxC,KAAKomC,QAI3DM,EAAYP,EAAWznB,IAAI+nB,EAAYzmC,KAAKqmC,SAK5C76B,EAAQxL,KAAKomC,OAASM,EAAUlkC,OACpC,GAAIgJ,EAAQ,EAAG,CACb,IAAIm7B,EAAOlH,EAAWtzB,MAAMnM,KAAKomC,QAGjC,OAFAM,EAAU1iC,KAAK2iC,EAAMn7B,GAEdm7B,EAGT,OAAOD,GAGTroC,EAAOC,QAAU2hC,G,oBCzDjB,IAAIR,EAAav4B,EAAQ,KACrB0/B,EAAK1/B,EAAQ,KASjB5I,EAAQof,IAAM,SAAcmpB,EAAIC,GAG9B,IAFA,IAAIC,EAAQtH,EAAWtzB,MAAM06B,EAAGrkC,OAASskC,EAAGtkC,OAAS,GAE5ChE,EAAI,EAAGA,EAAIqoC,EAAGrkC,OAAQhE,IAC7B,IAAK,IAAI8T,EAAI,EAAGA,EAAIw0B,EAAGtkC,OAAQ8P,IAC7By0B,EAAMvoC,EAAI8T,IAAMs0B,EAAGlpB,IAAImpB,EAAGroC,GAAIsoC,EAAGx0B,IAIrC,OAAOy0B,GAUTzoC,EAAQogB,IAAM,SAAcsoB,EAAUC,GAGpC,IAFA,IAAI/yB,EAASurB,EAAWp3B,KAAK2+B,GAErB9yB,EAAO1R,OAASykC,EAAQzkC,QAAW,GAAG,CAG5C,IAFA,IAAIukC,EAAQ7yB,EAAO,GAEV1V,EAAI,EAAGA,EAAIyoC,EAAQzkC,OAAQhE,IAClC0V,EAAO1V,IAAMooC,EAAGlpB,IAAIupB,EAAQzoC,GAAIuoC,GAKlC,IADA,IAAI59B,EAAS,EACNA,EAAS+K,EAAO1R,QAA6B,IAAnB0R,EAAO/K,IAAeA,IACvD+K,EAASA,EAAOvT,MAAMwI,GAGxB,OAAO+K,GAUT5V,EAAQioC,qBAAuB,SAA+BH,GAE5D,IADA,IAAIc,EAAOzH,EAAWp3B,KAAK,CAAC,IACnB7J,EAAI,EAAGA,EAAI4nC,EAAQ5nC,IAC1B0oC,EAAO5oC,EAAQof,IAAIwpB,EAAM,CAAC,EAAGN,EAAGO,IAAI3oC,KAGtC,OAAO0oC,I,oBC7DT,IAAIzH,EAAav4B,EAAQ,KAErBkgC,EAAY3H,EAAWtzB,MAAM,KAC7Bk7B,EAAY5H,EAAWtzB,MAAM,MAS/B,WAEA,IADA,IAAIqc,EAAI,EACChqB,EAAI,EAAGA,EAAI,IAAKA,IACvB4oC,EAAU5oC,GAAKgqB,EACf6e,EAAU7e,GAAKhqB,EAMP,KAJRgqB,IAAM,KAKJA,GAAK,KAQT,IAAKhqB,EAAI,IAAKA,EAAI,IAAKA,IACrB4oC,EAAU5oC,GAAK4oC,EAAU5oC,EAAI,KApB/B,GA8BFF,EAAQgpC,IAAM,SAAcvjC,GAC1B,GAAIA,EAAI,EAAG,MAAM,IAAIpB,MAAM,OAASoB,EAAI,KACxC,OAAOsjC,EAAUtjC,IASnBzF,EAAQ6oC,IAAM,SAAcpjC,GAC1B,OAAOqjC,EAAUrjC,IAUnBzF,EAAQof,IAAM,SAAc8K,EAAGC,GAC7B,OAAU,IAAND,GAAiB,IAANC,EAAgB,EAIxB2e,EAAUC,EAAU7e,GAAK6e,EAAU5e,M,oBCrE5C,IAAIiX,EAAQx4B,EAAQ,KAChB84B,EAAS94B,EAAQ,KACjBmI,EAAUnI,EAAQ,KAClBk5B,EAAOl5B,EAAQ,KACfD,EAAeC,EAAQ,KACvByB,EAAUzB,EAAQ,KAIlBqgC,EAAU7H,EAAMj5B,YADT,MAaX,SAAS+gC,EAAsB3/B,EAAMtB,GAEnC,OAAO65B,EAAKx4B,sBAAsBC,EAAMtB,GAAW,EAGrD,SAASkhC,EAA2B9G,EAAUp6B,GAC5C,IAAImhC,EAAY,EAOhB,OALA/G,EAASltB,SAAQ,SAAU/M,GACzB,IAAIihC,EAAeH,EAAqB9gC,EAAKmB,KAAMtB,GACnDmhC,GAAaC,EAAejhC,EAAKkhC,mBAG5BF,EAsBTppC,EAAQ+J,KAAO,SAAexI,EAAOyI,GACnC,OAAIrB,EAAaa,QAAQjI,GAChB8Q,SAAS9Q,EAAO,IAGlByI,GAYThK,EAAQupC,YAAc,SAAsBthC,EAASkJ,EAAsB5H,GACzE,IAAKZ,EAAaa,QAAQvB,GACxB,MAAM,IAAI5D,MAAM,2BAIE,qBAATkF,IAAsBA,EAAOu4B,EAAK34B,MAG7C,IAMIq5B,EAA+D,GAN9CpB,EAAMl5B,wBAAwBD,GAG5By5B,EAAOtwB,uBAAuBnJ,EAASkJ,IAK9D,GAAI5H,IAASu4B,EAAKz4B,MAAO,OAAOm5B,EAEhC,IAAIgH,EAAahH,EAAyB0G,EAAqB3/B,EAAMtB,GAGrE,OAAQsB,GACN,KAAKu4B,EAAKh5B,QACR,OAAOyK,KAAKC,MAAOg2B,EAAa,GAAM,GAExC,KAAK1H,EAAK54B,aACR,OAAOqK,KAAKC,MAAOg2B,EAAa,GAAM,GAExC,KAAK1H,EAAK14B,MACR,OAAOmK,KAAKC,MAAMg2B,EAAa,IAEjC,KAAK1H,EAAK34B,KACV,QACE,OAAOoK,KAAKC,MAAMg2B,EAAa,KAYrCxpC,EAAQikC,sBAAwB,SAAgC77B,EAAM+I,GACpE,IAAIs4B,EAEAC,EAAM34B,EAAQhH,KAAKoH,EAAsBJ,EAAQtB,GAErD,GAAIpF,EAAQjC,GAAO,CACjB,GAAIA,EAAKlE,OAAS,EAChB,OAzFN,SAAqCm+B,EAAUlxB,GAC7C,IAAK,IAAIw4B,EAAiB,EAAGA,GAAkB,GAAIA,IAEjD,GADaR,EAA0B9G,EAAUsH,IACnC3pC,EAAQupC,YAAYI,EAAgBx4B,EAAsB2wB,EAAKz4B,OAC3E,OAAOsgC,EAqFAC,CAA2BxhC,EAAMshC,GAG1C,GAAoB,IAAhBthC,EAAKlE,OACP,OAAO,EAGTulC,EAAMrhC,EAAK,QAEXqhC,EAAMrhC,EAGR,OA/HF,SAAsCmB,EAAMrF,EAAQiN,GAClD,IAAK,IAAIw4B,EAAiB,EAAGA,GAAkB,GAAIA,IACjD,GAAIzlC,GAAUlE,EAAQupC,YAAYI,EAAgBx4B,EAAsB5H,GACtE,OAAOogC,EA4HJE,CAA4BJ,EAAIlgC,KAAMkgC,EAAIlH,YAAamH,IAahE1pC,EAAQmiC,eAAiB,SAAyBl6B,GAChD,IAAKU,EAAaa,QAAQvB,IAAYA,EAAU,EAC9C,MAAM,IAAI5D,MAAM,2BAKlB,IAFA,IAAIylC,EAAI7hC,GAAW,GAEZm5B,EAAMj5B,YAAY2hC,GAAKb,GAAW,GACvCa,GAvJO,MAuJO1I,EAAMj5B,YAAY2hC,GAAKb,EAGvC,OAAQhhC,GAAW,GAAM6hC,I,oBClK3B,IAAI1I,EAAQx4B,EAAQ,KAIhBmhC,EAAU3I,EAAMj5B,YAFT,MAcXnI,EAAQmiC,eAAiB,SAAyBhxB,EAAsB0c,GAItE,IAHA,IAAIzlB,EAAS+I,EAAqBnI,KAAO,EAAK6kB,EAC1Cic,EAAI1hC,GAAQ,GAETg5B,EAAMj5B,YAAY2hC,GAAKC,GAAW,GACvCD,GAnBO,MAmBO1I,EAAMj5B,YAAY2hC,GAAKC,EAMvC,OAxBc,OAwBL3hC,GAAQ,GAAM0hC,K,oBC3BzB,IAAIhI,EAAOl5B,EAAQ,KACfohC,EAAcphC,EAAQ,KACtBqhC,EAAmBrhC,EAAQ,KAC3BshC,EAAWthC,EAAQ,KACnBuhC,EAAYvhC,EAAQ,KACpBC,EAAQD,EAAQ,KAChBw4B,EAAQx4B,EAAQ,KAChBwhC,EAAWxhC,EAAQ,KAQvB,SAASyhC,EAAqBx4B,GAC5B,OAAOy4B,SAAShV,mBAAmBzjB,IAAM3N,OAW3C,SAASqmC,EAAaltB,EAAO9T,EAAMsI,GAIjC,IAHA,IACI+D,EADAysB,EAAW,GAGuB,QAA9BzsB,EAASyH,EAAME,KAAK1L,KAC1BwwB,EAASp+B,KAAK,CACZmE,KAAMwN,EAAO,GACbvO,MAAOuO,EAAOvO,MACdkC,KAAMA,EACNrF,OAAQ0R,EAAO,GAAG1R,SAItB,OAAOm+B,EAUT,SAASmI,EAAuB9gC,GAC9B,IAEI+gC,EACAC,EAHAC,EAAUJ,EAAY1hC,EAAMC,QAASg5B,EAAKh5B,QAASY,GACnDkhC,EAAeL,EAAY1hC,EAAMK,aAAc44B,EAAK54B,aAAcQ,GActE,OAVI03B,EAAM54B,sBACRiiC,EAAWF,EAAY1hC,EAAMM,KAAM24B,EAAK34B,KAAMO,GAC9CghC,EAAYH,EAAY1hC,EAAMO,MAAO04B,EAAK14B,MAAOM,KAEjD+gC,EAAWF,EAAY1hC,EAAM4I,WAAYqwB,EAAK34B,KAAMO,GACpDghC,EAAY,IAGHC,EAAQxpC,OAAOypC,EAAcH,EAAUC,GAG/ClV,MAAK,SAAUqV,EAAIC,GAClB,OAAOD,EAAGxjC,MAAQyjC,EAAGzjC,SAEtB6K,KAAI,SAAUzG,GACb,MAAO,CACLrD,KAAMqD,EAAIrD,KACVmB,KAAMkC,EAAIlC,KACVrF,OAAQuH,EAAIvH,WAapB,SAAS6mC,EAAsB7mC,EAAQqF,GACrC,OAAQA,GACN,KAAKu4B,EAAKh5B,QACR,OAAOkhC,EAAYV,cAAcplC,GACnC,KAAK49B,EAAK54B,aACR,OAAO+gC,EAAiBX,cAAcplC,GACxC,KAAK49B,EAAK14B,MACR,OAAO+gC,EAAUb,cAAcplC,GACjC,KAAK49B,EAAK34B,KACR,OAAO+gC,EAASZ,cAAcplC,IAwIpC,SAAS8mC,EAAoB5iC,EAAM6iC,GACjC,IAAI1hC,EACA2hC,EAAWpJ,EAAKr4B,mBAAmBrB,GAKvC,IAHAmB,EAAOu4B,EAAK/3B,KAAKkhC,EAAWC,MAGfpJ,EAAK34B,MAAQI,EAAKP,IAAMkiC,EAASliC,IAC5C,MAAM,IAAI3E,MAAM,IAAM+D,EAAN,iCACoB05B,EAAKh4B,SAASP,GAChD,0BAA4Bu4B,EAAKh4B,SAASohC,IAQ9C,OAJI3hC,IAASu4B,EAAK14B,OAAUg4B,EAAM54B,uBAChCe,EAAOu4B,EAAK34B,MAGNI,GACN,KAAKu4B,EAAKh5B,QACR,OAAO,IAAIkhC,EAAY5hC,GAEzB,KAAK05B,EAAK54B,aACR,OAAO,IAAI+gC,EAAiB7hC,GAE9B,KAAK05B,EAAK14B,MACR,OAAO,IAAI+gC,EAAU/hC,GAEvB,KAAK05B,EAAK34B,KACR,OAAO,IAAI+gC,EAAS9hC,IAmB1BpI,EAAQ6jC,UAAY,SAAoB74B,GACtC,OAAOA,EAAMiS,QAAO,SAAUuS,EAAKia,GAOjC,MANmB,kBAARA,EACTja,EAAIvrB,KAAK+mC,EAAmBvB,EAAK,OACxBA,EAAIrhC,MACbonB,EAAIvrB,KAAK+mC,EAAmBvB,EAAIrhC,KAAMqhC,EAAIlgC,OAGrCimB,IACN,KAWLxvB,EAAQmK,WAAa,SAAqB/B,EAAMH,GAQ9C,IAPA,IAEIkjC,EAxKN,SAAqBC,GAEnB,IADA,IAAID,EAAQ,GACHjrC,EAAI,EAAGA,EAAIkrC,EAAKlnC,OAAQhE,IAAK,CACpC,IAAIupC,EAAM2B,EAAKlrC,GAEf,OAAQupC,EAAIlgC,MACV,KAAKu4B,EAAKh5B,QACRqiC,EAAMlnC,KAAK,CAACwlC,EACV,CAAErhC,KAAMqhC,EAAIrhC,KAAMmB,KAAMu4B,EAAK54B,aAAchF,OAAQulC,EAAIvlC,QACvD,CAAEkE,KAAMqhC,EAAIrhC,KAAMmB,KAAMu4B,EAAK34B,KAAMjF,OAAQulC,EAAIvlC,UAEjD,MACF,KAAK49B,EAAK54B,aACRiiC,EAAMlnC,KAAK,CAACwlC,EACV,CAAErhC,KAAMqhC,EAAIrhC,KAAMmB,KAAMu4B,EAAK34B,KAAMjF,OAAQulC,EAAIvlC,UAEjD,MACF,KAAK49B,EAAK14B,MACR+hC,EAAMlnC,KAAK,CAACwlC,EACV,CAAErhC,KAAMqhC,EAAIrhC,KAAMmB,KAAMu4B,EAAK34B,KAAMjF,OAAQmmC,EAAoBZ,EAAIrhC,SAErE,MACF,KAAK05B,EAAK34B,KACRgiC,EAAMlnC,KAAK,CACT,CAAEmE,KAAMqhC,EAAIrhC,KAAMmB,KAAMu4B,EAAK34B,KAAMjF,OAAQmmC,EAAoBZ,EAAIrhC,UAK3E,OAAO+iC,EA2IKE,CAFDb,EAAsBpiC,EAAMg5B,EAAM54B,uBAGzC8iC,EA7HN,SAAqBH,EAAOljC,GAK1B,IAJA,IAAIsjC,EAAQ,GACRD,EAAQ,CAAC,MAAS,IAClBE,EAAc,CAAC,SAEVtrC,EAAI,EAAGA,EAAIirC,EAAMjnC,OAAQhE,IAAK,CAIrC,IAHA,IAAIurC,EAAYN,EAAMjrC,GAClBwrC,EAAiB,GAEZ13B,EAAI,EAAGA,EAAIy3B,EAAUvnC,OAAQ8P,IAAK,CACzC,IAAI23B,EAAOF,EAAUz3B,GACjBtM,EAAM,GAAKxH,EAAI8T,EAEnB03B,EAAeznC,KAAKyD,GACpB6jC,EAAM7jC,GAAO,CAAEikC,KAAMA,EAAMC,UAAW,GACtCN,EAAM5jC,GAAO,GAEb,IAAK,IAAIjC,EAAI,EAAGA,EAAI+lC,EAAYtnC,OAAQuB,IAAK,CAC3C,IAAIomC,EAAaL,EAAY/lC,GAEzB8lC,EAAMM,IAAeN,EAAMM,GAAYF,KAAKpiC,OAASoiC,EAAKpiC,MAC5D+hC,EAAMO,GAAYnkC,GAChBqjC,EAAqBQ,EAAMM,GAAYD,UAAYD,EAAKznC,OAAQynC,EAAKpiC,MACrEwhC,EAAqBQ,EAAMM,GAAYD,UAAWD,EAAKpiC,MAEzDgiC,EAAMM,GAAYD,WAAaD,EAAKznC,SAEhCqnC,EAAMM,KAAaN,EAAMM,GAAYD,UAAYD,EAAKznC,QAE1DonC,EAAMO,GAAYnkC,GAAOqjC,EAAqBY,EAAKznC,OAAQynC,EAAKpiC,MAC9D,EAAIu4B,EAAKx4B,sBAAsBqiC,EAAKpiC,KAAMtB,KAKlDujC,EAAcE,EAGhB,IAAKjmC,EAAI,EAAGA,EAAI+lC,EAAYtnC,OAAQuB,IAClC6lC,EAAME,EAAY/lC,IAAlB,IAA+B,EAGjC,MAAO,CAAEyM,IAAKo5B,EAAOC,MAAOA,GAmFhBO,CAAWX,EAAOljC,GAC1B8jC,EAAO3B,EAAS4B,UAAUV,EAAMp5B,IAAK,QAAS,OAE9C+5B,EAAgB,GACX/rC,EAAI,EAAGA,EAAI6rC,EAAK7nC,OAAS,EAAGhE,IACnC+rC,EAAchoC,KAAKqnC,EAAMC,MAAMQ,EAAK7rC,IAAIyrC,MAG1C,OAAO3rC,EAAQ6jC,UA9MjB,SAAwBuH,GACtB,OAAOA,EAAKnuB,QAAO,SAAUuS,EAAK0c,GAChC,IAAIC,EAAU3c,EAAItrB,OAAS,GAAK,EAAIsrB,EAAIA,EAAItrB,OAAS,GAAK,KAC1D,OAAIioC,GAAWA,EAAQ5iC,OAAS2iC,EAAK3iC,MACnCimB,EAAIA,EAAItrB,OAAS,GAAGkE,MAAQ8jC,EAAK9jC,KAC1BonB,IAGTA,EAAIvrB,KAAKioC,GACF1c,KACN,IAoMsB4c,CAAcH,KAazCjsC,EAAQgkC,SAAW,SAAmB57B,GACpC,OAAOpI,EAAQ6jC,UACb2G,EAAsBpiC,EAAMg5B,EAAM54B,yB,oBCvUtC,IAAIs5B,EAAOl5B,EAAQ,KAEnB,SAASohC,EAAa5hC,GACpB1G,KAAK6H,KAAOu4B,EAAKh5B,QACjBpH,KAAK0G,KAAOA,EAAK0B,WAGnBkgC,EAAYV,cAAgB,SAAwBplC,GAClD,OAAO,GAAKqP,KAAKC,MAAMtP,EAAS,IAAOA,EAAS,EAAOA,EAAS,EAAK,EAAI,EAAK,IAGhF8lC,EAAYnpC,UAAU0hC,UAAY,WAChC,OAAO7gC,KAAK0G,KAAKlE,QAGnB8lC,EAAYnpC,UAAUyoC,cAAgB,WACpC,OAAOU,EAAYV,cAAc5nC,KAAK0G,KAAKlE,SAG7C8lC,EAAYnpC,UAAU2K,MAAQ,SAAgBo3B,GAC5C,IAAI1iC,EAAGmsC,EAAO9qC,EAId,IAAKrB,EAAI,EAAGA,EAAI,GAAKwB,KAAK0G,KAAKlE,OAAQhE,GAAK,EAC1CmsC,EAAQ3qC,KAAK0G,KAAKkkC,OAAOpsC,EAAG,GAC5BqB,EAAQ8Q,SAASg6B,EAAO,IAExBzJ,EAAUN,IAAI/gC,EAAO,IAKvB,IAAIgrC,EAAe7qC,KAAK0G,KAAKlE,OAAShE,EAClCqsC,EAAe,IACjBF,EAAQ3qC,KAAK0G,KAAKkkC,OAAOpsC,GACzBqB,EAAQ8Q,SAASg6B,EAAO,IAExBzJ,EAAUN,IAAI/gC,EAAsB,EAAfgrC,EAAmB,KAI5CxsC,EAAOC,QAAUgqC,G,oBC1CjB,IAAIlI,EAAOl5B,EAAQ,KAWf4jC,EAAkB,CACpB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAG1C,SAASvC,EAAkB7hC,GACzB1G,KAAK6H,KAAOu4B,EAAK54B,aACjBxH,KAAK0G,KAAOA,EAGd6hC,EAAiBX,cAAgB,SAAwBplC,GACvD,OAAO,GAAKqP,KAAKC,MAAMtP,EAAS,GAAUA,EAAS,EAAd,GAGvC+lC,EAAiBppC,UAAU0hC,UAAY,WACrC,OAAO7gC,KAAK0G,KAAKlE,QAGnB+lC,EAAiBppC,UAAUyoC,cAAgB,WACzC,OAAOW,EAAiBX,cAAc5nC,KAAK0G,KAAKlE,SAGlD+lC,EAAiBppC,UAAU2K,MAAQ,SAAgBo3B,GACjD,IAAI1iC,EAIJ,IAAKA,EAAI,EAAGA,EAAI,GAAKwB,KAAK0G,KAAKlE,OAAQhE,GAAK,EAAG,CAE7C,IAAIqB,EAAgD,GAAxCirC,EAAgB53B,QAAQlT,KAAK0G,KAAKlI,IAG9CqB,GAASirC,EAAgB53B,QAAQlT,KAAK0G,KAAKlI,EAAI,IAG/C0iC,EAAUN,IAAI/gC,EAAO,IAKnBG,KAAK0G,KAAKlE,OAAS,GACrB0+B,EAAUN,IAAIkK,EAAgB53B,QAAQlT,KAAK0G,KAAKlI,IAAK,IAIzDH,EAAOC,QAAUiqC,G,oBC1DjB,IAAI9I,EAAav4B,EAAQ,KACrBk5B,EAAOl5B,EAAQ,KAEnB,SAASshC,EAAU9hC,GACjB1G,KAAK6H,KAAOu4B,EAAK34B,KACjBzH,KAAK0G,KAAO+4B,EAAWp3B,KAAK3B,GAG9B8hC,EAASZ,cAAgB,SAAwBplC,GAC/C,OAAgB,EAATA,GAGTgmC,EAASrpC,UAAU0hC,UAAY,WAC7B,OAAO7gC,KAAK0G,KAAKlE,QAGnBgmC,EAASrpC,UAAUyoC,cAAgB,WACjC,OAAOY,EAASZ,cAAc5nC,KAAK0G,KAAKlE,SAG1CgmC,EAASrpC,UAAU2K,MAAQ,SAAUo3B,GACnC,IAAK,IAAI1iC,EAAI,EAAGuqB,EAAI/oB,KAAK0G,KAAKlE,OAAQhE,EAAIuqB,EAAGvqB,IAC3C0iC,EAAUN,IAAI5gC,KAAK0G,KAAKlI,GAAI,IAIhCH,EAAOC,QAAUkqC,G,oBC1BjB,IAAIpI,EAAOl5B,EAAQ,KACfw4B,EAAQx4B,EAAQ,KAEpB,SAASuhC,EAAW/hC,GAClB1G,KAAK6H,KAAOu4B,EAAK14B,MACjB1H,KAAK0G,KAAOA,EAGd+hC,EAAUb,cAAgB,SAAwBplC,GAChD,OAAgB,GAATA,GAGTimC,EAAUtpC,UAAU0hC,UAAY,WAC9B,OAAO7gC,KAAK0G,KAAKlE,QAGnBimC,EAAUtpC,UAAUyoC,cAAgB,WAClC,OAAOa,EAAUb,cAAc5nC,KAAK0G,KAAKlE,SAG3CimC,EAAUtpC,UAAU2K,MAAQ,SAAUo3B,GACpC,IAAI1iC,EAKJ,IAAKA,EAAI,EAAGA,EAAIwB,KAAK0G,KAAKlE,OAAQhE,IAAK,CACrC,IAAIqB,EAAQ6/B,EAAM34B,OAAO/G,KAAK0G,KAAKlI,IAGnC,GAAIqB,GAAS,OAAUA,GAAS,MAE9BA,GAAS,UAGJ,MAAIA,GAAS,OAAUA,GAAS,OAIrC,MAAM,IAAI8C,MACR,2BAA6B3C,KAAK0G,KAAKlI,GAAvC,qCAHFqB,GAAS,MASXA,EAAkC,KAAvBA,IAAU,EAAK,MAAyB,IAARA,GAG3CqhC,EAAUN,IAAI/gC,EAAO,MAIzBxB,EAAOC,QAAUmqC,G,oBCrDjB,IAAI/I,EAAQx4B,EAAQ,KAoBpB5I,EAAQghC,OAAS,SAAiByL,EAAQ9L,EAAQhuB,GAChD,IAAIU,EAAOV,EACP+5B,EAAW/L,EAEK,qBAATttB,GAA0BstB,GAAWA,EAAOG,aACrDztB,EAAOstB,EACPA,OAAS99B,GAGN89B,IACH+L,EAlBJ,WACE,IACE,OAAO9vB,SAAS+vB,cAAc,UAC9B,MAAOviC,GACP,MAAM,IAAI/F,MAAM,yCAcLuoC,IAGbv5B,EAAO+tB,EAAM1uB,WAAWW,GACxB,IAAItH,EAAOq1B,EAAM9tB,cAAcm5B,EAAO74B,QAAQ7H,KAAMsH,GAEhDkI,EAAMmxB,EAAS5L,WAAW,MAC1B+L,EAAQtxB,EAAIuxB,gBAAgB/gC,EAAMA,GAMtC,OALAq1B,EAAM3tB,cAAco5B,EAAMzkC,KAAMqkC,EAAQp5B,GApC1C,SAAsBkI,EAAKolB,EAAQ50B,GACjCwP,EAAIwxB,UAAU,EAAG,EAAGpM,EAAO7tB,MAAO6tB,EAAOqM,QAEpCrM,EAAOnH,QAAOmH,EAAOnH,MAAQ,IAClCmH,EAAOqM,OAASjhC,EAChB40B,EAAO7tB,MAAQ/G,EACf40B,EAAOnH,MAAMwT,OAASjhC,EAAO,KAC7B40B,EAAOnH,MAAM1mB,MAAQ/G,EAAO,KA+B5BkhC,CAAY1xB,EAAKmxB,EAAU3gC,GAC3BwP,EAAI2xB,aAAaL,EAAO,EAAG,GAEpBH,GAGT1sC,EAAQkhC,gBAAkB,SAA0BuL,EAAQ9L,EAAQhuB,GAClE,IAAIU,EAAOV,EAES,qBAATU,GAA0BstB,GAAWA,EAAOG,aACrDztB,EAAOstB,EACPA,OAAS99B,GAGNwQ,IAAMA,EAAO,IAElB,IAAIq5B,EAAW1sC,EAAQghC,OAAOyL,EAAQ9L,EAAQttB,GAE1C9P,EAAO8P,EAAK9P,MAAQ,YACpB2P,EAAeG,EAAKH,cAAgB,GAExC,OAAOw5B,EAASzL,UAAU19B,EAAM2P,EAAai6B,W,oBC7D/C,IAAI/L,EAAQx4B,EAAQ,KAEpB,SAASwkC,EAAgBx6B,EAAOy6B,GAC9B,IAAIC,EAAQ16B,EAAMH,EAAI,IAClBZ,EAAMw7B,EAAS,KAAOz6B,EAAMb,IAAM,IAEtC,OAAOu7B,EAAQ,EACXz7B,EAAM,IAAMw7B,EAAS,aAAeC,EAAMC,QAAQ,GAAGlrC,MAAM,GAAK,IAChEwP,EAGN,SAAS27B,EAAQC,EAAKvjB,EAAGC,GACvB,IAAItY,EAAM47B,EAAMvjB,EAGhB,MAFiB,qBAANC,IAAmBtY,GAAO,IAAMsY,GAEpCtY,EAuCT7R,EAAQghC,OAAS,SAAiByL,EAAQ95B,EAASgtB,GACjD,IAAItsB,EAAO+tB,EAAM1uB,WAAWC,GACxB5G,EAAO0gC,EAAO74B,QAAQ7H,KACtB3D,EAAOqkC,EAAO74B,QAAQxL,KACtBslC,EAAa3hC,EAAqB,EAAdsH,EAAKR,OAEzB86B,EAAMt6B,EAAKT,MAAMK,MAAMR,EAEvB,SAAW26B,EAAe/5B,EAAKT,MAAMK,MAAO,QAC5C,YAAcy6B,EAAa,IAAMA,EAAa,SAF9C,GAIA3B,EACF,SAAWqB,EAAe/5B,EAAKT,MAAMI,KAAM,UAC3C,OAjDJ,SAAmB5K,EAAM2D,EAAM8G,GAM7B,IALA,IAAIk5B,EAAO,GACP6B,EAAS,EACTC,GAAS,EACTC,EAAa,EAER5tC,EAAI,EAAGA,EAAIkI,EAAKlE,OAAQhE,IAAK,CACpC,IAAIqkC,EAAMhxB,KAAKC,MAAMtT,EAAI6L,GACrBu4B,EAAM/wB,KAAKC,MAAMtT,EAAI6L,GAEpBw4B,GAAQsJ,IAAQA,GAAS,GAE1BzlC,EAAKlI,IACP4tC,IAEM5tC,EAAI,GAAKqkC,EAAM,GAAKn8B,EAAKlI,EAAI,KACjC6rC,GAAQ8B,EACJL,EAAO,IAAKjJ,EAAM1xB,EAAQ,GAAMyxB,EAAMzxB,GACtC26B,EAAO,IAAKI,EAAQ,GAExBA,EAAS,EACTC,GAAS,GAGLtJ,EAAM,EAAIx4B,GAAQ3D,EAAKlI,EAAI,KAC/B6rC,GAAQyB,EAAO,IAAKM,GACpBA,EAAa,IAGfF,IAIJ,OAAO7B,EAgBIgC,CAAS3lC,EAAM2D,EAAMsH,EAAKR,QAAU,MAE3Cm7B,EAAU,gBAAuBN,EAAa,IAAMA,EAAa,IAIjEO,EAAS,4CAFA56B,EAAKP,MAAa,UAAYO,EAAKP,MAAQ,aAAeO,EAAKP,MAAQ,KAA1D,IAEwCk7B,EAAU,iCAAmCL,EAAK5B,EAAO,WAM3H,MAJkB,oBAAPpM,GACTA,EAAG,KAAMsO,GAGJA,I,iCC7ET,IAAIC,EAAkBtlC,EAAQ,KAE1BulC,EAA4B,CAC9B,aAAc,OACd,YAAa,MACb,QAAW,QAyGbpuC,EAAOC,QA/FP,SAAcmX,EAAMxE,GAClB,IAAIy7B,EACF1nC,EACA2nC,EACAxT,EACAyT,EACAC,EACAC,GAAU,EACP77B,IACHA,EAAU,IAEZy7B,EAAQz7B,EAAQy7B,QAAS,EACzB,IAgDE,GA/CAC,EAAmBH,IAEnBrT,EAAQje,SAAS6xB,cACjBH,EAAY1xB,SAAS8xB,gBAErBH,EAAO3xB,SAAS+vB,cAAc,SACzBgC,YAAcx3B,EAEnBo3B,EAAK/U,MAAMoV,IAAM,QAEjBL,EAAK/U,MAAMtyB,SAAW,QACtBqnC,EAAK/U,MAAMqV,IAAM,EACjBN,EAAK/U,MAAMsV,KAAO,mBAElBP,EAAK/U,MAAMuV,WAAa,MAExBR,EAAK/U,MAAMwV,iBAAmB,OAC9BT,EAAK/U,MAAMyV,cAAgB,OAC3BV,EAAK/U,MAAM0V,aAAe,OAC1BX,EAAK/U,MAAM2V,WAAa,OACxBZ,EAAK5oC,iBAAiB,QAAQ,SAASyE,GAErC,GADAA,EAAEglC,kBACEz8B,EAAQ08B,OAEV,GADAjlC,EAAEklC,iBAC6B,qBAApBllC,EAAEmlC,cAA+B,CAC1CnB,GAAS5pC,QAAQC,KAAK,iCACtB2pC,GAAS5pC,QAAQC,KAAK,4BACtBu1B,OAAOuV,cAAcC,YACrB,IAAIH,EAASlB,EAA0Bx7B,EAAQ08B,SAAWlB,EAAyB,QACnFnU,OAAOuV,cAAcE,QAAQJ,EAAQl4B,QAErC/M,EAAEmlC,cAAcC,YAChBplC,EAAEmlC,cAAcE,QAAQ98B,EAAQ08B,OAAQl4B,GAGxCxE,EAAQ+8B,SACVtlC,EAAEklC,iBACF38B,EAAQ+8B,OAAOtlC,EAAEmlC,mBAIrB3yB,SAASrH,KAAKo6B,YAAYpB,GAE1B1T,EAAM+U,mBAAmBrB,GACzBD,EAAUuB,SAAShV,IAEFje,SAASkzB,YAAY,QAEpC,MAAM,IAAIzrC,MAAM,iCAElBmqC,GAAU,EACV,MAAOtsC,GACPksC,GAAS5pC,QAAQgC,MAAM,qCAAsCtE,GAC7DksC,GAAS5pC,QAAQC,KAAK,4BACtB,IACEu1B,OAAOuV,cAAcE,QAAQ98B,EAAQ08B,QAAU,OAAQl4B,GACvDxE,EAAQ+8B,QAAU/8B,EAAQ+8B,OAAO1V,OAAOuV,eACxCf,GAAU,EACV,MAAOtsC,GACPksC,GAAS5pC,QAAQgC,MAAM,uCAAwCtE,GAC/DksC,GAAS5pC,QAAQgC,MAAM,0BACvBE,EA/EN,SAAgBA,GACd,IAAIqpC,GAAW,YAAY9hC,KAAK4O,UAAUH,WAAa,SAAM,QAAU,KACvE,OAAOhW,EAAQ6K,QAAQ,gBAAiBw+B,GA6E1BV,CAAO,YAAa18B,EAAUA,EAAQjM,QAjFjC,oCAkFfszB,OAAOgW,OAAOtpC,EAASyQ,IA/D3B,QAkEMm3B,IACkC,mBAAzBA,EAAU2B,YACnB3B,EAAU2B,YAAYpV,GAEtByT,EAAU4B,mBAIV3B,GACF3xB,SAASrH,KAAK46B,YAAY5B,GAE5BF,IAGF,OAAOG,I,kBC5GTzuC,EAAOC,QAAU,WACf,IAAIsuC,EAAY1xB,SAAS8xB,eACzB,IAAKJ,EAAU8B,WACb,OAAO,aAKT,IAHA,IAAIC,EAASzzB,SAAS0zB,cAElBC,EAAS,GACJrwC,EAAI,EAAGA,EAAIouC,EAAU8B,WAAYlwC,IACxCqwC,EAAOtsC,KAAKqqC,EAAUkC,WAAWtwC,IAGnC,OAAQmwC,EAAOI,QAAQ53B,eACrB,IAAK,QACL,IAAK,WACHw3B,EAAOK,OACP,MAEF,QACEL,EAAS,KAKb,OADA/B,EAAU4B,kBACH,WACc,UAAnB5B,EAAU/qC,MACV+qC,EAAU4B,kBAEL5B,EAAU8B,YACbG,EAAOp7B,SAAQ,SAAS0lB,GACtByT,EAAUuB,SAAShV,MAIvBwV,GACAA,EAAOM,W,0+CCpCJ,ICWDh+B,EC0JFi+B,EACAC,EAQEC,EAcFC,ECvLEC,ECHK9wC,EJFE+wC,EAAY,GACZC,EAAY,GACZC,EAAqB,8DKK3B,SAASnb,EAAOvqB,EAAKstB,OACtB,IAAI74B,KAAK64B,EAAOttB,EAAIvL,GAAK64B,EAAM74B,YAU9B,SAASkxC,EAAWzF,OACtB0F,EAAa1F,EAAK0F,WAClBA,GAAYA,EAAWlB,YAAYxE,GCVxC,SAAgBgB,EAAcppC,EAAMw1B,EAAOuY,GAA3C,IAEEpxC,cADGqxC,EAAkB,OAEjBrxC,KAAK64B,EACC,QAAN74B,GAAqB,QAANA,IAAaqxC,EAAgBrxC,GAAK64B,EAAM74B,OAGxDoC,UAAU4B,OAAS,MACtBotC,EAAW,CAACA,GAEPpxC,EAAI,EAAGA,EAAIoC,UAAU4B,OAAQhE,IACjCoxC,EAASrtC,KAAK3B,EAAUpC,OAGV,MAAZoxC,IACHC,EAAgBD,SAAWA,GAKT,mBAAR/tC,GAA2C,MAArBA,EAAKiuC,iBAChCtxC,KAAKqD,EAAKiuC,sBACVD,EAAgBrxC,KACnBqxC,EAAgBrxC,GAAKqD,EAAKiuC,aAAatxC,WAKnCuxC,EACNluC,EACAguC,EACAxY,GAASA,EAAMrxB,IACfqxB,GAASA,EAAM2Y,IACf,MAgBK,SAASD,EAAYluC,EAAMw1B,EAAOrxB,EAAKgqC,EAAKC,OAG5CC,EAAQ,CACbruC,OACAw1B,QACArxB,MACAgqC,MACAG,IAAW,KACXC,GAAS,KACTC,IAAQ,EACRC,IAAM,KAKNC,WACAC,IAAY,KACZh4B,iBAAaA,EACbi4B,IAAWR,UAGI,MAAZA,IAAkBC,EAAMO,IAAYP,GACpCj/B,EAAQi/B,OAAOj/B,EAAQi/B,MAAMA,GAE1BA,EAGR,SAAgBQ,UACR,GAGD,SAASC,EAAStZ,UACjBA,EAAMuY,SJhFP,SAASgB,EAAUvZ,EAAOpyB,QAC3BoyB,MAAQA,OACRpyB,QAAUA,EAqET,SAAS4rC,EAAcX,EAAOY,MAClB,MAAdA,SAEIZ,EAAME,GACVS,EAAcX,EAAME,GAASF,EAAME,GAAQD,IAAUj9B,QAAQg9B,GAAS,GACtE,aAGAa,EACGD,EAAaZ,EAAMC,IAAU3tC,OAAQsuC,OAG5B,OAFfC,EAAUb,EAAMC,IAAUW,KAEa,MAAhBC,EAAQT,WAIvBS,EAAQT,UASW,mBAAdJ,EAAMruC,KAAqBgvC,EAAcX,GAAS,KAsCjE,SAASc,EAAwBd,GAAjC,IAGW1xC,EACJyyC,KAHyB,OAA1Bf,EAAQA,EAAME,KAAwC,MAApBF,EAAMM,IAAoB,KAChEN,EAAMI,IAAOJ,EAAMM,IAAWzzB,KAAO,KAC5Bve,EAAI,EAAGA,EAAI0xC,EAAMC,IAAU3tC,OAAQhE,OAE9B,OADTyyC,EAAQf,EAAMC,IAAU3xC,KACO,MAAdyyC,EAAMX,IAAc,CACxCJ,EAAMI,IAAOJ,EAAMM,IAAWzzB,KAAOk0B,EAAMX,iBAKtCU,EAAwBd,IAqC1B,SAASgB,EAAczgC,KAE1BA,EAAE0gC,MACF1gC,EAAE0gC,SACHjC,EAAc3sC,KAAKkO,KAClB0+B,KACFE,IAAiBp+B,EAAQmgC,sBAEzB/B,EAAep+B,EAAQmgC,oBACNhC,GAAO90B,GAK1B,SAASA,YACJ+2B,EACIlC,EAAgBD,EAAc1sC,QACrC6uC,EAAQnC,EAAcpb,MAAK,SAAC/iB,EAAG7E,UAAM6E,EAAEugC,IAAOjB,IAASnkC,EAAEolC,IAAOjB,OAChEnB,EAAgB,GAGhBmC,EAAME,MAAK,YApGb,IAAyBC,EAMnBC,EACEC,EAGFC,EATDzB,EACH0B,EACAC,EAkGKphC,EAAE0gC,MAnGPS,GADG1B,GADoBsB,EAqGQ/gC,GApGV6gC,KACNhB,KACfuB,EAAYL,EAAUM,OAGlBL,EAAc,IACZC,EAAWpd,EAAO,GAAI4b,IACnBO,IAAYiB,EAEjBC,EAASxkB,EACZ0kB,EACA3B,EACAwB,EACAF,EAAUO,aACVF,EAAUG,gBACV,KACAP,EACU,MAAVG,EAAiBf,EAAcX,GAAS0B,GAEzCK,EAAWR,EAAavB,GAEpByB,GAAUC,GACbZ,EAAwBd,QKjH3B,SAAgBgC,EACfL,EACAM,EACAC,EACAC,EACAC,EACAC,EACAd,EACAG,EACAY,GATD,IAWKh0C,EAAG8T,EAAGo/B,EAAUC,EAAQc,EAAQC,EAAeC,EAI/CC,EAAeR,GAAkBA,EAAejC,KAAcX,EAE9DqD,EAAoBD,EAAYpwC,UAMhCovC,GAAUrC,IAEZqC,EADwB,MAArBW,EACMA,EAAkB,GACjBM,EACDhC,EAAcuB,EAAgB,GAE9B,MAIX5zC,EAAI,EACJ2zC,EAAehC,IAAY2C,EAC1BX,EAAehC,KACf,eACmB,MAAd4C,EAAoB,IACvBA,EAAW3C,GAAU+B,EACrBY,EAAW1C,IAAS8B,EAAe9B,IAAS,EAS9B,QAHdqB,EAAWkB,EAAYp0C,KAIrBkzC,GACAqB,EAAW/sC,KAAO0rC,EAAS1rC,KAC3B+sC,EAAWlxC,OAAS6vC,EAAS7vC,KAE9B+wC,EAAYp0C,eAAK2C,IAIZmR,EAAI,EAAGA,EAAIugC,EAAmBvgC,IAAK,KACvCo/B,EAAWkB,EAAYtgC,KAKtBygC,EAAW/sC,KAAO0rC,EAAS1rC,KAC3B+sC,EAAWlxC,OAAS6vC,EAAS7vC,KAC5B,CACD+wC,EAAYtgC,UAAKnR,MAGlBuwC,EAAW,QAObC,EAASxkB,EACR0kB,EACAkB,EALDrB,EAAWA,GAAYnC,EAOtB8C,EACAC,EACAC,EACAd,EACAG,EACAY,IAGIlgC,EAAIygC,EAAW/C,MAAQ0B,EAAS1B,KAAO19B,IACtCqgC,IAAMA,EAAO,IACdjB,EAAS1B,KAAK2C,EAAKpwC,KAAKmvC,EAAS1B,IAAK,KAAM+C,GAChDJ,EAAKpwC,KAAK+P,EAAGygC,EAAWvC,KAAcmB,EAAQoB,IAIjC,MAAVpB,EAAgB,KAKfqB,KAJiB,MAAjBN,IACHA,EAAgBf,YAIboB,EAAWxC,IAIdyC,EAAUD,EAAWxC,IAMrBwC,EAAWxC,gBACL,GACNgC,GAAqBb,GACrBC,GAAUC,GACW,MAArBD,EAAOhC,WACN,CAKDsD,EAAO,GAAc,MAAVrB,GAAkBA,EAAOjC,aAAekC,EAClDA,EAAU5D,YAAY0D,GACtBqB,EAAU,SACJ,KAGLP,EAASb,EAAQt/B,EAAI,GACpBmgC,EAASA,EAAOS,cAAgB5gC,EAAIugC,EACrCvgC,GAAK,KAEDmgC,GAAUd,QACPsB,EAGRpB,EAAUsB,aAAaxB,EAAQC,GAC/BoB,EAAUpB,EAagB,UAAvBO,EAAetwC,OAClBgwC,EAAUhyC,MAAQ,IAQnB+xC,WADGoB,EACMA,EAEArB,EAAOuB,YAGiB,mBAAvBf,EAAetwC,OASzBswC,EAAe5B,IAAWqB,QAG3BA,GACAF,EAASpB,KAAQsB,GACjBA,EAAOjC,YAAckC,IAIrBD,EAASf,EAAca,WAIzBlzC,IACOu0C,KAITZ,EAAe7B,IAAOoC,EAGG,MAArBH,GAA2D,mBAAvBJ,EAAetwC,SACjDrD,EAAI+zC,EAAkB/vC,OAAQhE,KACN,MAAxB+zC,EAAkB/zC,IAAYkxC,EAAW6C,EAAkB/zC,QAK5DA,EAAIq0C,EAAmBr0C,KACL,MAAlBo0C,EAAYp0C,IAAY40C,EAAQR,EAAYp0C,GAAIo0C,EAAYp0C,OAI7Dm0C,MACEn0C,EAAI,EAAGA,EAAIm0C,EAAKnwC,OAAQhE,IAC5B60C,EAASV,EAAKn0C,GAAIm0C,IAAOn0C,GAAIm0C,IAAOn0C,IAcvC,SAAgBs0C,EAAalD,EAAUr5B,EAAU+8B,MAC/B,MAAbA,IAAmBA,EAAY,IAEnB,MAAZ1D,GAAuC,kBAAZA,EAC1Br5B,GAAU+8B,EAAU/wC,KAAKgU,EAAS,YAChC,GAAI5S,MAAMgF,QAAQinC,OACnB,IAAIpxC,EAAI,EAAGA,EAAIoxC,EAASptC,OAAQhE,IACpCs0C,EAAalD,EAASpxC,GAAI+X,EAAU+8B,QAKrCA,EAAU/wC,KAHCgU,EAGIA,EADc,iBAAZq5B,GAA2C,iBAAZA,EACxBG,EAAY,KAAMH,EAAU,KAAM,KAAMA,GACrC,MAAjBA,EAASU,KAAuC,MAAvBV,EAASY,IAG1CT,EACCH,EAAS/tC,KACT+tC,EAASvY,MACTuY,EAAS5pC,IACT,KACA4pC,EAASa,KAKYb,GAhBTA,UAmBT0D,EChPR,SAASC,EAASzb,EAAO9xB,EAAKnG,GACd,MAAXmG,EAAI,GACP8xB,EAAM0b,YAAYxtC,EAAKnG,GAKvBi4B,EAAM9xB,GAHU,iBAATnG,QACP4vC,EAAmBljC,KAAKvG,GAEXnG,EAAQ,KACF,MAATA,EACG,GAEAA,EAYR,SAAS2zC,EAAYC,EAAKtzC,EAAMN,EAAOuW,EAAUk8B,GAAjD,IACFvlC,EAAG2mC,EAAYC,EAsBPn1C,EAQAA,KA5BR8zC,EACU,cAATnyC,IACHA,EAAO,SAEW,UAATA,IACVA,EAAO,aAGK,UAATA,KACH4M,EAAI0mC,EAAI3b,MAEY,iBAATj4B,EACVkN,EAAE6mC,QAAU/zC,MACN,IACiB,iBAAZuW,IACVrJ,EAAE6mC,QAAU,GACZx9B,EAAW,MAGRA,MACM5X,KAAK4X,EACPvW,GAASrB,KAAKqB,GACnB0zC,EAASxmC,EAAGvO,EAAG,OAKdqB,MACMrB,KAAKqB,EACRuW,GAAYvW,EAAMrB,KAAO4X,EAAS5X,IACtC+0C,EAASxmC,EAAGvO,EAAGqB,EAAMrB,QAOL,MAAZ2B,EAAK,IAA0B,MAAZA,EAAK,IAChCuzC,EAAavzC,KAAUA,EAAOA,EAAK0P,QAAQ,WAAY,KACvD8jC,EAAYxzC,EAAKqI,cACjBrI,GAAQwzC,KAAaF,EAAME,EAAYxzC,GAAMQ,MAAM,GAE/Cd,GACEuW,GAAUq9B,EAAIxvC,iBAAiB9D,EAAM0zC,EAAYH,IACrDD,EAAIlwC,IAAekwC,EAAIlwC,EAAa,KAAKpD,GAAQN,GAElD4zC,EAAIrvC,oBAAoBjE,EAAM0zC,EAAYH,IAGlC,SAATvzC,GACS,YAATA,GAGS,SAATA,GACS,SAATA,GACS,SAATA,IACCmyC,GACDnyC,KAAQszC,EAERA,EAAItzC,GAAiB,MAATN,EAAgB,GAAKA,EACP,mBAATA,GAAgC,4BAATM,IACpCA,KAAUA,EAAOA,EAAK0P,QAAQ,WAAY,KAChC,MAAThQ,QAAiBA,EACpB4zC,EAAIK,kBACH,+BACA3zC,EAAKqI,eAGNirC,EAAIM,eACH,+BACA5zC,EAAKqI,cACL3I,GAIO,MAATA,QACCA,IAOC,MAAM0M,KAAKpM,GAEbszC,EAAIO,gBAAgB7zC,GAEpBszC,EAAIQ,aAAa9zC,EAAMN,IAU1B,SAASg0C,EAAWnrC,QACdnF,EAAWmF,EAAE7G,MAAMoP,EAAQ6lB,MAAQ7lB,EAAQ6lB,MAAMpuB,GAAKA,GCvI5D,SAAgBykB,EACf0kB,EACAqC,EACAxC,EACAW,EACAC,EACAC,EACAd,EACAG,EACAY,GATD,IAWK7gB,EAWElhB,EAAG0jC,EAAOC,EAAUC,EAAUC,EAAUC,EACxCC,EAKAC,EACAC,EAjBLC,EAAUT,EAASryC,iBAIhBqyC,EAAS17B,YAA2B,OAAO,MAE1CmZ,EAAM1gB,EAAQ2jC,MAAQjjB,EAAIuiB,OAG9BjB,EAAO,GAAsB,mBAAX0B,EAAuB,IAEpCH,EAAWN,EAAS7c,MAKpBod,GADJ9iB,EAAMgjB,EAAQE,cACQxC,EAAc1gB,EAAImjB,KACpCJ,EAAmB/iB,EACpB8iB,EACCA,EAASpd,MAAMx3B,MACf8xB,EAAIojB,GACL1C,EAGCX,EAASlB,IAEZ+D,GADA9jC,EAAIyjC,EAAS1D,IAAakB,EAASlB,KACNwE,GAAuBvkC,EAAEwkC,KAGlD,cAAeN,GAAWA,EAAQx1C,UAAUmgC,OAC/C4U,EAAS1D,IAAa//B,EAAI,IAAIkkC,EAAQH,EAAUE,IAEhDR,EAAS1D,IAAa//B,EAAI,IAAImgC,EAAU4D,EAAUE,GAClDjkC,EAAE+H,YAAcm8B,EAChBlkC,EAAE6uB,OAAS4V,GAERT,GAAUA,EAASvxB,IAAIzS,GAE3BA,EAAE4mB,MAAQmd,EACL/jC,EAAErN,QAAOqN,EAAErN,MAAQ,IACxBqN,EAAExL,QAAUyvC,EACZjkC,EAAEshC,IAAiBM,EACnB8B,EAAQ1jC,EAAE0gC,OACV1gC,EAAE0kC,IAAmB,IAIF,MAAhB1kC,EAAE2kC,MACL3kC,EAAE2kC,IAAa3kC,EAAErN,OAEsB,MAApCuxC,EAAQU,2BACP5kC,EAAE2kC,KAAc3kC,EAAErN,QACrBqN,EAAE2kC,IAAa9gB,EAAO,GAAI7jB,EAAE2kC,MAG7B9gB,EACC7jB,EAAE2kC,IACFT,EAAQU,yBAAyBb,EAAU/jC,EAAE2kC,OAI/ChB,EAAW3jC,EAAE4mB,MACbgd,EAAW5jC,EAAErN,MAGT+wC,EAEkC,MAApCQ,EAAQU,0BACgB,MAAxB5kC,EAAE6kC,oBAEF7kC,EAAE6kC,qBAGwB,MAAvB7kC,EAAE8kC,mBACL9kC,EAAE0kC,IAAiB5yC,KAAKkO,EAAE8kC,uBAErB,IAE+B,MAApCZ,EAAQU,0BACRb,IAAaJ,GACkB,MAA/B3jC,EAAE+kC,2BAEF/kC,EAAE+kC,0BAA0BhB,EAAUE,IAIpCjkC,EAAEglC,KACwB,MAA3BhlC,EAAEilC,4BACFjlC,EAAEilC,sBACDlB,EACA/jC,EAAE2kC,IACFV,IAEDR,EAASzD,MAAciB,EAASjB,MAAchgC,EAAEukC,GAChD,KACDvkC,EAAE4mB,MAAQmd,EACV/jC,EAAErN,MAAQqN,EAAE2kC,IAERlB,EAASzD,MAAciB,EAASjB,MAAWhgC,EAAE0gC,QACjD1gC,EAAE6gC,IAAS4C,EACXA,EAAS5D,IAAOoB,EAASpB,IACzB4D,EAAS/D,IAAYuB,EAASvB,IAC1B1/B,EAAE0kC,IAAiB3yC,QACtBivC,EAAYlvC,KAAKkO,GAGbkhB,EAAM,EAAGA,EAAMuiB,EAAS/D,IAAU3tC,OAAQmvB,IAC1CuiB,EAAS/D,IAAUxe,KACtBuiB,EAAS/D,IAAUxe,GAAKye,GAAU8D,SAI9BjB,EAGsB,MAAzBxiC,EAAEklC,qBACLllC,EAAEklC,oBAAoBnB,EAAU/jC,EAAE2kC,IAAYV,GAGnB,MAAxBjkC,EAAEmlC,oBACLnlC,EAAE0kC,IAAiB5yC,MAAK,WACvBkO,EAAEmlC,mBAAmBxB,EAAUC,EAAUC,MAK5C7jC,EAAExL,QAAUyvC,EACZjkC,EAAE4mB,MAAQmd,EACV/jC,EAAErN,MAAQqN,EAAE2kC,KAEPzjB,EAAM1gB,EAAQ4kC,MAAUlkB,EAAIuiB,GAEjCzjC,EAAE0gC,OACF1gC,EAAE6gC,IAAS4C,EACXzjC,EAAEqhC,IAAaD,EAEflgB,EAAMlhB,EAAE6uB,OAAO7uB,EAAE4mB,MAAO5mB,EAAErN,MAAOqN,EAAExL,SAGnCivC,EAAS/D,IADD,MAAPxe,GAAeA,EAAI9vB,MAAQ8uC,GAAuB,MAAXhf,EAAI3rB,IAEzC2rB,EAAI0F,MAAMuY,SACVjsC,MAAMgF,QAAQgpB,GACdA,EACA,CAACA,GAEqB,MAArBlhB,EAAEqlC,kBACLzD,EAAgB/d,EAAOA,EAAO,GAAI+d,GAAgB5hC,EAAEqlC,oBAGhD3B,GAAsC,MAA7B1jC,EAAEslC,0BACfzB,EAAW7jC,EAAEslC,wBAAwB3B,EAAUC,IAGhDnC,EACCL,EACAqC,EACAxC,EACAW,EACAC,EACAC,EACAd,EACAG,EACAY,GAGD/hC,EAAEsM,KAAOm3B,EAAS5D,IAEd7/B,EAAE0kC,IAAiB3yC,QACtBivC,EAAYlvC,KAAKkO,GAGd8jC,IACH9jC,EAAEwkC,IAAgBxkC,EAAEukC,GAAuB,MAG5CvkC,EAAEglC,YAEmB,MAArBlD,GACA2B,EAASzD,MAAciB,EAASjB,KAEhCyD,EAAS/D,IAAYuB,EAASvB,IAC9B+D,EAAS5D,IAAOoB,EAASpB,KAEzB4D,EAAS5D,IAAO0F,EACftE,EAASpB,IACT4D,EACAxC,EACAW,EACAC,EACAC,EACAd,EACAe,IAIG7gB,EAAM1gB,EAAQglC,SAAStkB,EAAIuiB,GAC/B,MAAOxrC,GACRwrC,EAASzD,IAAY,KACrBx/B,EAAQilC,IAAYxtC,EAAGwrC,EAAUxC,UAG3BwC,EAAS5D,IAQV,SAAS2B,EAAWR,EAAa0E,GACnCllC,EAAQmlC,KAASnlC,EAAQmlC,IAAQD,EAAM1E,GAE3CA,EAAYF,MAAK,gBAEfE,EAAchhC,EAAE0kC,IAChB1kC,EAAE0kC,IAAmB,GACrB1D,EAAYF,MAAK,YAChBtT,EAAG7+B,KAAKqR,MAER,MAAO/H,GACRuI,EAAQilC,IAAYxtC,EAAG+H,EAAE6gC,SAmB5B,SAAS0E,EACRvC,EACAS,EACAxC,EACAW,EACAC,EACAC,EACAd,EACAe,GARD,IAUKh0C,EASIyyC,EA+CHoF,EACAC,EAOO93C,EA/DR41C,EAAW1C,EAASra,MACpBmd,EAAWN,EAAS7c,SAGxBib,EAA0B,QAAlB4B,EAASryC,MAAkBywC,EAEV,MAArBC,MACE/zC,EAAI,EAAGA,EAAI+zC,EAAkB/vC,OAAQhE,OAO/B,OANJyyC,EAAQsB,EAAkB/zC,OAOX,OAAlB01C,EAASryC,KACW,IAAnBovC,EAAMsF,SACNtF,EAAMuF,YAActC,EAASryC,OAC/B4xC,GAAOxC,GACP,CACDwC,EAAMxC,EACNsB,EAAkB/zC,GAAK,cAMf,MAAPi1C,EAAa,IACM,OAAlBS,EAASryC,YACLqZ,SAASu7B,eAAejC,GAGhCf,EAAMnB,EACHp3B,SAASw7B,gBAAgB,6BAA8BxC,EAASryC,MAChEqZ,SAAS+vB,cACTiJ,EAASryC,KACT2yC,EAASmC,IAAM,CAAEA,GAAInC,EAASmC,KAGjCpE,EAAoB,KAEpBC,KAAc,GAGO,OAAlB0B,EAASryC,KACRuyC,IAAaI,GAAYf,EAAI/sC,MAAQ8tC,IACxCf,EAAI/sC,KAAO8tC,OAEN,IACmB,MAArBjC,IACHA,EAAoB/C,EAAU7uC,MAAMvB,KAAKq0C,EAAImD,aAK1CP,GAFJjC,EAAW1C,EAASra,OAASkY,GAENvU,wBACnBsb,EAAU9B,EAASxZ,yBAIlBwX,EAAa,IACb4B,IAAa7E,MAChB6E,EAAW,GACF51C,EAAI,EAAGA,EAAIi1C,EAAIoD,WAAWr0C,OAAQhE,IAC1C41C,EAASX,EAAIoD,WAAWr4C,GAAG2B,MAAQszC,EAAIoD,WAAWr4C,GAAGqB,OAInDy2C,GAAWD,KAETC,GAAYD,GAAWC,EAAQrb,QAAUob,EAAQpb,SACrDwY,EAAIqD,UAAaR,GAAWA,EAAQrb,QAAW,MDzV7C,SAAmBwY,EAAKe,EAAUJ,EAAU9B,EAAOyE,OACrDv4C,MAECA,KAAK41C,EACC,aAAN51C,GAA0B,QAANA,GAAiBA,KAAKg2C,GAC7ChB,EAAYC,EAAKj1C,EAAG,KAAM41C,EAAS51C,GAAI8zC,OAIpC9zC,KAAKg2C,EAENuC,GAAiC,mBAAfvC,EAASh2C,IACvB,aAANA,GACM,QAANA,GACM,UAANA,GACM,YAANA,GACA41C,EAAS51C,KAAOg2C,EAASh2C,IAEzBg1C,EAAYC,EAAKj1C,EAAGg2C,EAASh2C,GAAI41C,EAAS51C,GAAI8zC,IC4U/C0E,CAAUvD,EAAKe,EAAUJ,EAAU9B,EAAOE,GAGtC8D,EACHpC,EAAS/D,IAAY,IAErB+D,EAAS/D,IAAY+D,EAAS7c,MAAMuY,SACpCsC,EACCuB,EACAS,EACAxC,EACAW,EACkB,kBAAlB6B,EAASryC,MAAmCywC,EAC5CC,EACAd,EACAlC,EACAiD,IAKGA,IAEH,UAAWgC,aACVh2C,EAAIg2C,EAAS30C,QACdrB,IAAMi1C,EAAI5zC,OAEV2zC,EAAYC,EAAK,QAASj1C,EAAG41C,EAASv0C,UAGtC,YAAa20C,aACZh2C,EAAIg2C,EAASvqC,UACdzL,IAAMi1C,EAAIxpC,SAEVupC,EAAYC,EAAK,UAAWj1C,EAAG41C,EAASnqC,aAAS,OAK7CwpC,EASR,SAAgBJ,EAASrD,EAAKnwC,EAAOqwC,OAEjB,mBAAPF,EAAmBA,EAAInwC,GAC7BmwC,EAAI7c,QAAUtzB,EAClB,MAAO6I,GACRuI,EAAQilC,IAAYxtC,EAAGwnC,IAYzB,SAAgBkD,EAAQlD,EAAO+G,EAAaC,GAA5C,IACKrmC,EAOA4iC,EAsBMj1C,KA5BNyS,EAAQmiC,SAASniC,EAAQmiC,QAAQlD,IAEhCr/B,EAAIq/B,EAAMF,OACTn/B,EAAEsiB,SAAWtiB,EAAEsiB,UAAY+c,EAAMI,KAAM+C,EAASxiC,EAAG,KAAMomC,IAI1DC,GAAmC,mBAAdhH,EAAMruC,OAC/Bq1C,EAAmC,OAArBzD,EAAMvD,EAAMI,MAK3BJ,EAAMI,IAAOJ,EAAMK,WAEW,OAAzB1/B,EAAIq/B,EAAMM,KAAqB,IAC/B3/B,EAAEsmC,yBAEJtmC,EAAEsmC,uBACD,MAAOzuC,GACRuI,EAAQilC,IAAYxtC,EAAGuuC,GAIzBpmC,EAAEkM,KAAOlM,EAAEihC,IAAa,QAGpBjhC,EAAIq/B,EAAMC,QACL3xC,EAAI,EAAGA,EAAIqS,EAAErO,OAAQhE,IACzBqS,EAAErS,IAAI40C,EAAQviC,EAAErS,GAAIy4C,EAAaC,GAI5B,MAAPzD,GAAa/D,EAAW+D,GAI7B,SAASyB,EAAS7d,EAAOj0B,EAAO6B,UACxBjF,KAAKwY,YAAY6e,EAAOpyB,GNpchC,SAAgBq6B,EAAO4Q,EAAO2B,EAAWuF,GAAzC,IAMK5E,EAOAd,EAMAD,EAlBAxgC,EAAQomC,IAAOpmC,EAAQomC,GAAMnH,EAAO2B,GAYpCH,GAPAc,EAAc4E,IAAgB9H,GAQ/B,KACC8H,GAAeA,EAAYjH,KAAc0B,EAAU1B,IACvDD,EAAQjF,EAAc0F,EAAU,KAAM,CAACT,IAGnCuB,EAAc,GAClBtkB,EACC0kB,GAGEW,EAAcX,EAAYuF,GAAevF,GAAW1B,IAAYD,EAClEwB,GAAYnC,EACZA,WACAsC,EAAUG,gBACVoF,IAAgB5E,EACb,CAAC4E,GACD1F,EACA,KACAlC,EAAU7uC,MAAMvB,KAAKyyC,EAAU+E,YAClCnF,EACA2F,GAAe7H,EACfiD,GAIDP,EAAWR,EAAavB,GASlB,SAAS6G,EAAQ7G,EAAO2B,GAC9BvS,EAAO4Q,EAAO2B,EAAWvC,GOrDnB,SAASgI,EAAapH,EAAO7Y,GAA7B,IAGFwY,EACOrxC,WAHX64B,EAAQ/C,EAAOA,EAAO,GAAI4b,EAAM7Y,OAAQA,GACpCz2B,UAAU4B,OAAS,IAAG60B,EAAMuY,SAAWJ,EAAU7uC,MAAMvB,KAAKwB,UAAW,IACvEivC,EAAkB,GACNxY,EACL,QAAN74B,GAAqB,QAANA,IAAaqxC,EAAgBrxC,GAAK64B,EAAM74B,WAGrDuxC,EACNG,EAAMruC,KACNguC,EACAxY,EAAMrxB,KAAOkqC,EAAMlqC,IACnBqxB,EAAM2Y,KAAOE,EAAMF,IACnB,MNpBK,SAASuH,EAAcjvC,GAAvB,IACAuR,EAAM,GAEN5U,EAAU,CACf6vC,IAAK,OAASt2C,IACdu2C,GAAezsC,EACfkvC,kBAASngB,EAAOpyB,UACRoyB,EAAMuY,SAAS3qC,IAEvBwyC,kBAASpgB,OAEDqgB,gBADF13C,KAAK81C,kBACH4B,EAAO,QACR5B,gBAAkB,kBACtBj8B,EAAI5U,EAAQ6vC,KAAO6C,EACZ99B,QAGH67B,sBAAwB,YACxBiC,EAAKtgB,MAAMx3B,QAAU+3C,EAAO/3C,OAC/B63C,EAAKnG,MAAK,YACT9gC,EAAExL,QAAU2yC,EAAO/3C,MACnBqxC,EAAczgC,YAKZyS,IAAM,YACVw0B,EAAKn1C,KAAKkO,OACNonC,EAAMpnC,EAAE0mC,qBACZ1mC,EAAE0mC,qBAAuB,WACxBO,EAAKI,OAAOJ,EAAKxkC,QAAQzC,GAAI,GAC7BonC,GAAOA,EAAIz4C,KAAKqR,MAKZ4mB,EAAMuY,kBAIf3qC,EAAQuyC,SAAS3C,YAAc5vC,EAO/BA,EAAQwyC,SAASM,GAAc9yC,EAExBA,EH1CFgM,EAAU,CACfilC,IUHM,SAAqBpxC,EAAOorC,WAE9BsB,EAAWwG,EAEP9H,EAAQA,EAAME,QAChBoB,EAAYtB,EAAMM,OAAgBgB,EAAUwD,UAG9CxD,EAAUh5B,aACwC,MAAlDg5B,EAAUh5B,YAAYy/B,2BAEtBD,KACAxG,EAAU0G,SACT1G,EAAUh5B,YAAYy/B,yBAAyBnzC,KAId,MAA/B0sC,EAAU2G,oBACbH,KACAxG,EAAU2G,kBAAkBrzC,IAGzBkzC,EACH,OAAO9G,EAAeM,EAAUyD,IAAgBzD,GAChD,MAAO9oC,GACR5D,EAAQ4D,QAKL5D,ITdP8rC,EAAUzxC,UAAU+4C,SAAW,SAASE,EAAQ7hC,OAE3CxJ,EAEHA,EADG/M,KAAKo1C,MAAep1C,KAAKoD,MACxBpD,KAAKo1C,IAELp1C,KAAKo1C,IAAa9gB,EAAO,GAAIt0B,KAAKoD,OAGlB,mBAAVg1C,IACVA,EAASA,EAAOrrC,EAAG/M,KAAKq3B,QAGrB+gB,GACH9jB,EAAOvnB,EAAGqrC,GAIG,MAAVA,GAEAp4C,KAAKsxC,MACJ/6B,GAAUvW,KAAKm1C,IAAiB5yC,KAAKgU,GACzC26B,EAAclxC,QAShB4wC,EAAUzxC,UAAUk5C,YAAc,SAAS9hC,GACtCvW,KAAKsxC,WAIHmE,OACDl/B,GAAUvW,KAAKm1C,IAAiB5yC,KAAKgU,GACzC26B,EAAclxC,QAchB4wC,EAAUzxC,UAAUmgC,OAASqR,EAwFzBzB,EAAgB,GAChBC,EAAgB,EAQdC,EACa,mBAAXhvC,QACJA,QAAQjB,UAAUqW,KAAKlS,KAAKlD,QAAQC,WACpCq5B,WC5KE4V,EAAaC,ECHR/wC,EAAI,EQCf,IAAI85C,EAGAC,EAcAC,EAXAC,EAAc,EAGdC,EAAoB,GAEpBC,EAAkB1nC,EAAQ4kC,IAC1B+C,EAAe3nC,EAAQglC,OACvB4C,EAAY5nC,EAAQmlC,IACpB0C,EAAmB7nC,EAAQmiC,QAyE/B,SAAS2F,EAAapzC,EAAO9D,GACxBoP,EAAQ+nC,KACX/nC,EAAQ+nC,IAAMT,EAAkB5yC,EAAO8yC,GAAe52C,GAEvD42C,EAAc,MAORQ,EACLV,EAAiBW,MAChBX,EAAiBW,IAAU,CAC3BC,GAAO,GACPC,IAAiB,YAGfzzC,GAASszC,EAAME,GAAM32C,QACxBy2C,EAAME,GAAM52C,KAAK,IAEX02C,EAAME,GAAMxzC,GAMb,SAAS0zC,EAASC,UACxBb,EAAc,EACPc,EAAWC,GAAgBF,GASnC,SAAgBC,EAAWE,EAASH,EAAcv5C,OAE3C25C,EAAYX,EAAaT,IAAgB,UAC1CoB,EAAUlJ,MACdkJ,EAAUlJ,IAAa+H,EAEvBmB,EAAUC,GAAS,CACjB55C,EAAiDA,EAAKu5C,GAA/CE,UAA0BF,GAElC,gBACOM,EAAYH,EAAQC,EAAUC,GAAO,GAAIE,GAC3CH,EAAUC,GAAO,KAAOC,IAC3BF,EAAUC,GAAO,GAAKC,EACtBF,EAAUlJ,IAAW0H,SAAS,QAM3BwB,EAAUC,GAOX,SAASG,EAAUvjC,EAAUtX,OAE7BmE,EAAQ21C,EAAaT,IAAgB,IACtCrnC,EAAQ8oC,KAAgBC,GAAY52C,EAAM62C,IAAOh7C,KACrDmE,EAAMu2C,GAASpjC,EACfnT,EAAM62C,IAAQh7C,EAEds5C,EAAiBW,IAAQE,IAAgB72C,KAAKa,IAQzC,SAAS82C,EAAgB3jC,EAAUtX,OAEnCmE,EAAQ21C,EAAaT,IAAgB,IACtCrnC,EAAQ8oC,KAAgBC,GAAY52C,EAAM62C,IAAOh7C,KACrDmE,EAAMu2C,GAASpjC,EACfnT,EAAM62C,IAAQh7C,EAEds5C,EAAiBpD,IAAiB5yC,KAAKa,IAIlC,SAAS+2C,EAAOC,UACtB3B,EAAc,EACP4B,IAAQ,iBAAO,CAAElnB,QAASinB,KAAiB,IAQnD,SAAgBE,GAAoBtK,EAAKuK,EAAct7C,GACtDw5C,EAAc,EACdyB,GACC,WACmB,mBAAPlK,EAAmBA,EAAIuK,KACzBvK,IAAKA,EAAI7c,QAAUonB,OAErB,MAARt7C,EAAeA,EAAOA,EAAKQ,OAAOuwC,IAQ7B,SAASqK,GAAQG,EAASv7C,OAE1BmE,EAAQ21C,EAAaT,IAAgB,UACvC0B,GAAY52C,EAAM62C,IAAOh7C,IAC5BmE,EAAM62C,IAAQh7C,EACdmE,EAAMq3C,IAAWD,EACTp3C,EAAMu2C,GAASa,KAGjBp3C,EAAMu2C,GAOP,SAAS9f,GAAYtjB,EAAUtX,UACrCw5C,EAAc,EACP4B,IAAQ,kBAAM9jC,IAAUtX,GAMzB,SAASy7C,GAAWz1C,OACpBwvC,EAAW8D,EAAiBtzC,QAAQA,EAAQ6vC,KAI5C1xC,EAAQ21C,EAAaT,IAAgB,UAI3Cl1C,EAAMu3C,IAAW11C,EACZwvC,GAEe,MAAhBrxC,EAAMu2C,KACTv2C,EAAMu2C,MACNlF,EAASvxB,IAAIq1B,IAEP9D,EAASpd,MAAMx3B,OANAoF,EAAQ8vC,GAaxB,SAAS6F,GAAc/6C,EAAO40B,GAChCxjB,EAAQ2pC,eACX3pC,EAAQ2pC,cAAcnmB,EAAYA,EAAU50B,GAASA,GAIhD,SAASg7C,GAAiB5c,OAC1B76B,EAAQ21C,EAAaT,IAAgB,IACrCwC,EAAWzB,WACjBj2C,EAAMu2C,GAAS1b,EACVsa,EAAiBJ,oBACrBI,EAAiBJ,kBAAoB,YAChC/0C,EAAMu2C,IAAQv2C,EAAMu2C,GAAOn5C,GAC/Bs6C,EAAS,GAAGt6C,KAGP,CACNs6C,EAAS,GACT,WACCA,EAAS,aAQZ,SAASC,KACRrC,EAAkBnH,MAAK,eAClBC,EAAUM,QAEZN,EAAU0H,IAAQE,IAAgB3lC,QAAQunC,IAC1CxJ,EAAU0H,IAAQE,IAAgB3lC,QAAQwnC,IAC1CzJ,EAAU0H,IAAQE,IAAkB,GACnC,MAAO1wC,UACR8oC,EAAU0H,IAAQE,IAAkB,GACpCnoC,EAAQilC,IAAYxtC,EAAG8oC,EAAUF,YAKpCoH,EAAoB,GA4CrB,SAASsC,GAAcE,GAClBA,EAAKC,GAAUD,EAAKC,IAOzB,SAASF,GAAaC,OACfhnC,EAASgnC,EAAKvB,KACC,mBAAVzlC,IAAsBgnC,EAAKC,EAAWjnC,GAOlD,SAAS8lC,GAAYoB,EAASC,UACrBD,GAAWC,EAAQ9J,MAAK,SAACptC,EAAKwB,UAAUxB,IAAQi3C,EAAQz1C,MAGjE,SAAS6zC,GAAer1C,EAAK0C,SACT,mBAALA,EAAkBA,EAAE1C,GAAO0C,EPhWnC,SAASytB,GAAOvqB,EAAKstB,OACtB,IAAI74B,KAAK64B,EAAOttB,EAAIvL,GAAK64B,EAAM74B,YAU9B,SAAS88C,GAAevqC,EAAG7E,OAC5B,IAAI1N,KAAKuS,KAAa,aAANvS,KAAsBA,KAAK0N,GAAI,OAAO,MACtD,IAAI1N,KAAK0N,KAAa,aAAN1N,GAAoBuS,EAAEvS,KAAO0N,EAAE1N,GAAI,OAAO,WOEhEyS,EAAQ4kC,IAAU,YACb8C,GAAiBA,EAAgBzI,GAGrCoI,EAAe,GADfC,EAAmBrI,EAAMM,KAGJ0I,MACpBX,EAAiBW,IAAQE,IAAgB3lC,QAAQunC,IACjDzC,EAAiBW,IAAQE,IAAgB3lC,QAAQwnC,IACjD1C,EAAiBW,IAAQE,IAAkB,KAI7CnoC,EAAQglC,OAAS,YACZ2C,GAAcA,EAAa1I,OAEzBz/B,EAAIy/B,EAAMM,OACX//B,OAECwoC,EAAQxoC,EAAEyoC,IACZD,GACCA,EAAMG,IAAgB52C,SA6RJ,IA5RVk2C,EAAkBn2C,KAAKkO,IA4RR+nC,IAAYvnC,EAAQsqC,yBAC/C/C,EAAUvnC,EAAQsqC,wBAvBpB,SAAwBhlC,OAQnBilC,EAPExuC,EAAO,WACZysB,aAAagiB,GACbC,qBAAqBF,GACrB9hB,WAAWnjB,IAENklC,EAAU/hB,WAAW1sB,EArSR,KAwSE,oBAAVsrB,SACVkjB,EAAMD,sBAAsBvuC,MAcA+tC,OAzR9B9pC,EAAQmlC,IAAU,SAAClG,EAAOuB,GACzBA,EAAYF,MAAK,gBAEfC,EAAU2D,IAAiB1hC,QAAQunC,IACnCxJ,EAAU2D,IAAmB3D,EAAU2D,IAAiB3f,QAAO,mBAC9DyI,EAAG0b,IAASsB,GAAahd,MAEzB,MAAOv1B,GACR+oC,EAAYF,MAAK,YACZ9gC,EAAE0kC,MAAkB1kC,EAAE0kC,IAAmB,OAE9C1D,EAAc,GACdxgC,EAAQilC,IAAYxtC,EAAG8oC,EAAUF,SAI/BuH,GAAWA,EAAU3I,EAAOuB,IAGjCxgC,EAAQmiC,QAAU,YACb0F,GAAkBA,EAAiB5I,OAEjCz/B,EAAIy/B,EAAMM,OACX//B,OAECwoC,EAAQxoC,EAAEyoC,OACZD,MAEFA,EAAME,GAAM1lC,SAAQ,mBAAQynC,EAAKC,GAAYD,EAAKC,OACjD,MAAOzyC,GACRuI,EAAQilC,IAAYxtC,EAAG+H,EAAE6gC,QP1DpB,IQfKqK,GAAb,kBAAAjzC,EAAA,WACa2uB,8BACLA,UAEDukB,wBAAuB,cAAA56B,EAAA,wCAAAA,EAAA,sBAAAA,IAAA,wBAG7B00B,+BAAsBre,EAAOj0B,UAE3Bk4C,GAAet7C,KAAKq3B,MAAOA,IAAUikB,GAAet7C,KAAKoD,MAAOA,MATnE,CAAmCwtC,GCI5B,SAASiL,GAAKprC,EAAGqrC,YACdC,EAAaC,OACjBhM,EAAMhwC,KAAKq3B,MAAM2Y,IACjBiM,EAAYjM,GAAOgM,EAAUhM,WAC5BiM,GAAajM,IACjBA,EAAI5wC,KAAO4wC,EAAI,MAASA,EAAI7c,QAAU,MAGlC2oB,GAIGA,EAAS97C,KAAKq3B,MAAO2kB,KAAeC,EAHpCX,GAAet7C,KAAKq3B,MAAO2kB,YAM3BE,EAAO7kB,eACVqe,sBAAwBqG,EACtB9Q,EAAcx6B,EAAG6jB,GAAO,GAAI+C,WAEpC6kB,EAAO/8C,UAAUg9C,oBACjBD,EAAOE,YAAc,SAAW3rC,EAAE2rC,aAAe3rC,EAAEtQ,MAAQ,IAC3D+7C,EAAOG,KACAH,EC7BR,IAAII,GAAcrrC,EAAQ2jC,IAgBnB,SAAS2H,GAAWC,YACjBC,EAAUplB,OACdnf,EAAQoc,GAAO,GAAI+C,iBAChBnf,EAAM83B,IACNwM,EAAGtkC,EAAOmf,EAAM2Y,YAExByM,EAAUt9C,UAAUg9C,iBAAmBM,EAAUJ,KACjDI,EAAUL,YAAc,eAAiBI,EAAGJ,aAAeI,EAAGr8C,MAAQ,IAC/Ds8C,EAvBRxrC,EAAQ2jC,IAAQ,YACX1E,EAAMruC,MAAQquC,EAAMruC,KAAKw6C,GAAcnM,EAAMF,MAChDE,EAAM7Y,MAAM2Y,IAAME,EAAMF,IACxBE,EAAMF,IAAM,MAETsM,IAAaA,GAAYpM,QCPxBwM,GAAQ,SAAC9M,EAAU4M,UACnB5M,EACEkD,EAAalD,GAAUr0B,QAC7B,SAACuS,EAAKjuB,EAAO8F,UAAUmoB,EAAIruB,OAAO+8C,EAAG38C,EAAO8F,MAC5C,IAHqB,MAQVg3C,GAAW,CACvBnsC,IAAKksC,GACLjpC,QAASipC,GACT75C,eAAM+sC,UACEA,EAAWkD,EAAalD,GAAUptC,OAAS,GAEnDo6C,cAAKhN,MAEoB,KADxBA,EAAWkD,EAAalD,IACXptC,aACN,IAAIG,MAAM,kDAEVitC,EAAS,IAEjBvxB,QAASy0B,GCrBJ+J,GAAgB5rC,EAAQilC,IAiB9B,SAAS4G,GAAc5M,UAClBA,KACHA,EAAQ5b,GAAO,GAAI4b,IACbM,IAAa,KACnBN,EAAMC,IAAYD,EAAMC,KAAaD,EAAMC,IAAU3/B,IAAIssC,KAEnD5M,EAIR,SAAgB6M,UAEVC,IAA0B,OAC1BC,EAAc,UACdC,IAAsB,KA6FrB,SAASC,GAAUjN,OACrBsB,EAAYtB,EAAME,GAAQI,WACvBgB,GAAaA,EAAU4L,GAAc5L,EAAU4L,EAAWlN,GAG3D,SAASmN,GAAKC,OAChBC,EACA/L,EACA1sC,WAEK04C,EAAKnmB,MACRkmB,IACJA,EAAOD,KACF9nC,MACJ,YACCg8B,EAAYlzC,EAAQwb,SAAWxb,KAEhC,YACCwG,EAAQ4D,KAKP5D,QACGA,MAGF0sC,QACE+L,SAGAtS,EAAcuG,EAAWna,UAGjCmmB,EAAKpB,YAAc,OACnBoB,EAAKnB,KACEmB,EC1JR,SAAgBC,UACVC,EAAQ,UACRC,EAAO,KDPb1sC,EAAQilC,IAAc,SAASpxC,EAAOovC,EAAUxC,MAC3C5sC,EAAM0Q,aAELg8B,EACAtB,EAAQgE,EAEJhE,EAAQA,EAAME,QAChBoB,EAAYtB,EAAMM,MAAegB,EAAUoM,WAExCpM,EAAUoM,IAAiB94C,EAAOovC,EAAS1D,KAIrDqM,GAAc/3C,EAAOovC,EAAUxC,KAuBhCqL,GAAS59C,UAAY,IAAIyxC,GAMNgN,IAAmB,SAASrpC,EAASspC,OAEjDptC,EAAIzQ,KAEW,MAAjByQ,EAAEwsC,IACLxsC,EAAEwsC,EAAc,IAEjBxsC,EAAEwsC,EAAY16C,KAAKs7C,OAEbx9C,EAAU88C,GAAU1sC,EAAE6gC,KAExBwM,KACEC,EAAa,WACdD,IAEJA,KAEIz9C,EACHA,EAAQ29C,GAERA,MAIFH,EAAoBI,IACnBJ,EAAoB1G,qBACrB0G,EAAoB1G,qBAAuB,WAC1C4G,IAEIF,EAAoBI,KACvBJ,EAAoBI,WAIhBD,EAAuB,eAKvBb,QAJE1sC,EAAEusC,QACRvsC,EAAE6gC,IAAOnB,IAAU,GAAK1/B,EAAErN,MAAMg6C,EAChC3sC,EAAEynC,SAAS,CAAEkF,EAAa3sC,EAAEysC,IAAsB,OAG1CC,EAAY1sC,EAAEwsC,EAAYr3C,OACjCu3C,EAAU9E,eAKR5nC,EAAEusC,OACNvsC,EAAEynC,SAAS,CAAEkF,EAAa3sC,EAAEysC,IAAsBzsC,EAAE6gC,IAAOnB,IAAU,KAEtE57B,EAAQiB,KAAKuoC,EAAYA,IAG1BhB,GAAS59C,UAAUmgC,OAAS,SAASjI,EAAOj0B,UACvCpD,KAAKk9C,WACH5L,IAAOnB,IAAU,GAAK2M,GAAc98C,KAAKk9C,UACzCA,IAAsB,MAGrB,CACNjS,EAAc2F,EAAW,KAAMxtC,EAAMg6C,EAAa,KAAO/lB,EAAMuY,UAC/DxsC,EAAMg6C,GAAc/lB,EAAM6mB,WCxF5B,IAAM79C,GAAU,SAACkF,EAAM0rC,EAAOhH,QACvBA,EAdgB,KAcSA,EAfR,IAqBtB1kC,EAAKo4C,EAAKQ,OAAOlN,GAQhB1rC,EAAK8xB,MAAM+mB,cACmB,MAA9B74C,EAAK8xB,MAAM+mB,YAAY,KAAc74C,EAAKo4C,EAAKtzC,UAQjD4/B,EAAO1kC,EAAKm4C,EACLzT,GAAM,MACLA,EAAKznC,OAAS,GACpBynC,aAEGA,EA1CiB,GA0CMA,EA3CL,SA8CtB1kC,EAAKm4C,EAAQzT,EAAOA,EA5CJ,MAmDlBwT,GAAat+C,UAAY,IAAIyxC,GAENwM,EAAa,SAASnM,OACtC1rC,EAAOvF,KACPq+C,EAAYlB,GAAU53C,EAAK+rC,KAE7BrH,EAAO1kC,EAAKo4C,EAAKp5C,IAAI0sC,UACzBhH,EA5DuB,KA8DhB,gBACAqU,EAAmB,WACnB/4C,EAAK8xB,MAAM+mB,aAKfnU,EAAK1nC,KAAKg8C,GACVl+C,GAAQkF,EAAM0rC,EAAOhH,IAHrBsU,KAMEF,EACHA,EAAUC,GAEVA,MAKHb,GAAat+C,UAAUmgC,OAAS,SAASjI,QACnCqmB,EAAQ,UACRC,EAAO,IAAIa,QAEV5O,EAAWkD,EAAazb,EAAMuY,UAChCvY,EAAM+mB,aAAwC,MAAzB/mB,EAAM+mB,YAAY,IAI1CxO,EAAS3L,cAIL,IAAIzlC,EAAIoxC,EAASptC,OAAQhE,UAYxBm/C,EAAKn5C,IAAIorC,EAASpxC,GAAKwB,KAAK09C,EAAQ,CAAC,EAAG,EAAG19C,KAAK09C,WAE/CrmB,EAAMuY,UAGd6N,GAAat+C,UAAUy2C,mBAAqB6H,GAAat+C,UAAUo2C,kBAAoB,eAOhFhwC,EAAOvF,KACbuF,EAAKo4C,EAAKlqC,SAAQ,SAACw2B,EAAMgH,GACxB5wC,GAAQkF,EAAM0rC,EAAOhH,WC1HjBwU,uDACL3I,kCACQ91C,KAAKq3B,MAAMpyB,WAEnBq6B,gBAAOjI,UACCA,EAAMuY,YALT6O,GAaN,SAASC,GAAOrnB,OACXsgB,EAAQ33C,KACR2+C,EAAYtnB,EAAMsnB,UAClBC,EAAO3T,EACVwT,GACA,CAAEx5C,QAAS0yC,EAAM1yC,SACjBoyB,EAAM6Y,cAKHyH,EAAMkH,GAAclH,EAAMkH,IAAeF,IACxChH,EAAMmH,EAAMnP,YAAYgI,EAAMkH,EAAWpQ,YAAYkJ,EAAMmH,GAC/DC,EAASpH,EAAMqH,GACfrH,EAAMsH,MAKH5nB,EAAM6Y,MACJyH,EAAMsH,GAoBVN,EAAUxO,IAAYwH,EAAMxH,IAC5B7Q,EAAOsf,EAAMD,GACbhH,EAAMxH,IAAYwO,EAAUxO,MApB5BwH,EAAMmH,EAAQ5jC,SAASu7B,eAAe,IAGtCM,EAAQ,GAAI4H,GAEZA,EAAU1Q,YAAY0J,EAAMmH,GAE5BnH,EAAMsH,KACNtH,EAAMkH,EAAaF,EAEnBrf,EAAOsf,EAAMD,EAAWhH,EAAMmH,GAC9BnH,EAAMxH,IAAYwH,EAAMmH,EAAM3O,KAcvBwH,EAAMsH,IACVtH,EAAMmH,EAAMnP,YAAYgI,EAAMkH,EAAWpQ,YAAYkJ,EAAMmH,GAC/DC,EAASpH,EAAMqH,IAGhBrH,EAAMqH,EAAQJ,EAEdjH,EAAMR,qBAAuB,WACxBQ,EAAMmH,EAAMnP,YAAYgI,EAAMkH,EAAWpQ,YAAYkJ,EAAMmH,GAC/DC,EAASpH,EAAMqH,IAGT,KAQD,SAASE,GAAahP,EAAOyO,UAC5B1T,EAAcyT,GAAQ,CAAExO,QAAOyO,chB1EvC,IAAMQ,GAAc,mOAGpBvO,EAAUzxC,UAAUg9C,iBAAmB,GAEvC,IAAaiD,GACM,oBAAVt0C,QAAyBA,OAAOu0C,KAAOv0C,OAAOu0C,IAAI,kBAC1D,MASD,SAAgB/f,GAAO4Q,EAAOoP,EAAQ/oC,MAGb,MAApB+oC,EAAOnP,SACHmP,EAAOC,YACbD,EAAO7Q,YAAY6Q,EAAOC,mBAI5BC,EAAatP,EAAOoP,GACG,mBAAZ/oC,GAAwBA,IAE5B25B,EAAQA,EAAMM,IAAa,KAGnC,SAAgBuG,GAAQ7G,EAAOoP,EAAQ/oC,UACtCkpC,EAAcvP,EAAOoP,GACE,mBAAZ/oC,GAAwBA,IAE5B25B,EAAQA,EAAMM,IAAa,KAGnC,IAAIkP,GAAezuC,EAAQ6lB,MAyB3B,SAAS6oB,GAAkBC,EAAO55C,GAC7B45C,EAAM,UAAY55C,KAAS45C,EAAM55C,IACpC1G,OAAO+E,eAAeu7C,EAAO55C,EAAK,CACjCgF,cAAcA,EACdzG,sBACQvE,KAAK,UAAYgG,IAMzBxB,aAAIq7C,QACE,UAAY75C,GAAO65C,KApC5B5uC,EAAQ6lB,MAAQ,YACX4oB,KAAch3C,EAAIg3C,GAAah3C,IACnCA,EAAEo3C,QAAU,iBACRC,KACHC,KAEKC,EAAsBv3C,EAAEglC,gBAC9BhlC,EAAEglC,gBAAkB,WACnBuS,EAAoB7gD,KAAKsJ,GACzBq3C,MAAqB,IAGhBG,EAAqBx3C,EAAEklC,sBAC7BllC,EAAEklC,eAAiB,WAClBsS,EAAmB9gD,KAAKsJ,GACxBs3C,MAGDt3C,EAAEy3C,qBAAuB,kBAAMJ,GAC/Br3C,EAAE03C,mBAAqB,kBAAMJ,GACrBt3C,EAAE23C,YAAc33C,GAsBzB,IAAI43C,GAAsB,CACzBt1C,cAAcA,EACdzG,sBACQvE,KAAKugD,QAIVC,GAAevvC,EAAQi/B,MAC3Bj/B,EAAQi/B,MAAQ,YACfA,EAAMuQ,SAAWrB,OAEbv9C,EAAOquC,EAAMruC,KACbw1B,EAAQ6Y,EAAM7Y,SAEdx1B,EAAM,IAELw1B,EAAMkpB,OAASlpB,EAAMC,YACxBgpB,GAAoBh8C,WAAa,cAAe+yB,EACzB,MAAnBA,EAAMC,YAAmBD,EAAMkpB,MAAQlpB,EAAMC,WACjDh4B,OAAO+E,eAAegzB,EAAO,YAAaipB,KAIxB,mBAARz+C,EAAoB,KAoB1B6+C,EAAgBC,EAAOniD,MACtBA,KAnBD64B,EAAM/uB,uBAAgB+uB,EAAMx3B,QAC1Bw3B,EAAMx3B,OAAyB,IAAhBw3B,EAAMx3B,QACzBw3B,EAAMx3B,MAAQw3B,EAAM/uB,qBAEd+uB,EAAM/uB,cAIV3E,MAAMgF,QAAQ0uB,EAAMx3B,QAAUw3B,EAAMupB,UAAqB,WAAT/+C,IACnDixC,EAAazb,EAAMuY,UAAUn8B,SAAQ,aACW,GAA3C4jB,EAAMx3B,MAAMqT,QAAQ+9B,EAAM5Z,MAAMx3B,SACnCoxC,EAAM5Z,MAAM+C,uBAGP/C,EAAMx3B,OAKJw3B,KAAYqpB,EAAiBvB,GAAY5yC,KAAK/N,GAAK,SACzDkiD,MAEEliD,KADLmiD,EAAQzQ,EAAM7Y,MAAQ,GACZA,EACTspB,EACCxB,GAAY5yC,KAAK/N,GAAKA,EAAEqR,QAAQ,WAAY,OAAOrH,cAAgBhK,GAChE64B,EAAM74B,IiBxIR,gBAAmCqD,EjB8IhBquC,EiB9IgBruC,KAAMw1B,EjB8ItB6Y,EiB9IsB7Y,SAC1CA,GAAwB,iBAARx1B,OACjB2yC,EAAW,OAEV,IAAIh2C,KAAK64B,EACT,mBAAmB9qB,KAAK/N,KAC3B64B,EAAM74B,EAAEgK,eAAiB6uB,EAAM74B,UACxB64B,EAAM74B,IAEdg2C,EAASh2C,EAAEgK,eAAiBhK,KAEzBg2C,EAASqM,gBACZxpB,EAAMypB,WAAazpB,EAAMmd,EAASqM,sBAC3BxpB,EAAMmd,EAASqM,gBAEnBrM,EAASuM,gBACZ1pB,EAAM0pB,cAAgB1pB,EAAMmd,EAASuM,sBAC9B1pB,EAAMmd,EAASuM,gBAItBvM,EAASwM,WACC,aAATn/C,GACwB,UAAvBA,EAAK2G,gBAA8B,eAAe+D,KAAK8qB,EAAMx1B,OAC9D,KACGo/C,EAAazM,EAAS0M,SAAW,UAChC7pB,EAAM4pB,KACV5pB,EAAM4pB,GAAc5pB,EAAMmd,EAASwM,iBAC5B3pB,EAAMmd,EAASwM,aA5BlB,GjBqJW,mBAARn/C,IACNA,EAAKs/C,GACNt/C,EAAK1C,YAELwgD,GAAkB99C,EAAK1C,UAAW,sBAClCwgD,GAAkB99C,EAAK1C,UAAW,6BAClCwgD,GAAkB99C,EAAK1C,UAAW,uBAClC0C,EAAKs/C,MAIHX,IAAcA,GAAatQ,QStI1B3pC,GAAU,SAMhB,SAAS66C,GAAcv/C,UACfopC,EAAc3nC,KAAK,KAAMzB,GAQjC,SAASw/C,GAAeC,WACdA,GAAWA,EAAQb,WAAarB,GAU1C,SAAS9H,GAAagK,UAChBD,GAAeC,GACbC,EAAmBziD,MAAM,KAAM8B,WADD0gD,EAStC,SAASE,GAAuB7C,WAC3BA,EAAUxO,MACbqP,EAAa,KAAMb,OAWrB,SAAS8C,GAAYjQ,UAElBA,IACCA,EAAUz0B,MAAgC,IAAvBy0B,EAAU+E,UAAkB/E,IACjD,KAYF,IAAMkQ,GAA0B,SAACnrC,EAAUpS,UAAQoS,EAASpS,IA8B7C,WACdk1C,WACAE,aACAO,YACAI,kBACAC,SACAG,uBACAD,WACAxgB,eACA6gB,cACAE,iBACAr0C,QA1Ge,SA2Gfo2C,YACArd,UACAyX,QAASzX,GACTkiB,0BACAtC,gBACAjU,gBACAsM,gBACA6J,iBACA9J,gBACA5G,YACAC,WACA0Q,kBACAI,eACA7Q,YACA+K,iBACAE,QACAU,cACAmF,2BACA3E,YACAU,gBACAJ,U,qThFhJY,EAAb,kDAOE,WAAY,GAA8B,kCACxC,cAAM,IAPD,OAAS,IAAI,eAIZ,+BAA8B,EAIpC,EAAK,WAAa,EAAK,cAAc,GACjC,EAAK,WAAW,WAClB,EAAK,yBAJiC,EAP5C,4FAeS,iHAAc,EAAd,+BAAwD,KAAK,WAA7D,SACC,KAAK,KAAK,GADX,gDAfT,+HAmBS,wGACC,KAAK,QADN,gDAnBT,sEAuBS,SAAG,EAAe,GACvB,KAAK,OAAO,GAAG,EAAO,KAxB1B,kBA2BS,SAAK,EAAe,GACzB,KAAK,OAAO,KAAK,EAAO,KA5B5B,iBA+BS,SAAI,EAAe,GACxB,KAAK,OAAO,IAAI,EAAO,KAhC3B,4BAmCS,SAAe,EAAe,GACnC,KAAK,OAAO,eAAe,EAAO,KApCtC,sEAuCS,WACL,EACA,GAFK,oGAIE,KAAK,cAAc,+BAAqB,EAAQ,OAAQ,EAAQ,QAAU,IAAK,IAJjF,gDAvCT,qIAgDY,WACR,EACA,GAFQ,+GAID,IAAI,QAAJ,iDAAY,WAAO,EAAS,GAAhB,8EACZ,EAAK,WAAW,UADJ,yCAGP,EAAK,OAHE,sDAKb,EAAM,MALO,cAQjB,EAAK,OAAO,GAAZ,UAAkB,EAAQ,KAAM,YAC1B,yBAAe,GACjB,EAAO,EAAS,MAAM,SAEtB,EAAQ,EAAS,WAZJ,oBAgBT,EAAK,WAAW,KAAK,EAAS,GAhBrB,2DAkBf,EAAM,MAlBS,iEAAZ,0DAJC,2CAhDZ,oFA2EY,WAA8D,IAAhD,EAAgD,uDAAf,KAAK,WAC5D,OAAO,IA5EX,uBA+EY,SAAU,GAClB,KAAK,OAAO,KAAK,UAAW,GACxB,4BAAkB,GACpB,KAAK,OAAO,KAAZ,UAAoB,EAAQ,IAAM,GAElC,KAAK,OAAO,KAAK,UAAW,CAC1B,KAAM,EAAQ,OACd,KAAM,EAAQ,WAtFtB,mEA2FY,6GAAW,EAAX,+BAAqD,KAAK,WAC9D,KAAK,aAAe,IAAc,KAAK,WAAW,UAD9C,oDAEJ,KAAK,WAAW,WAAW,KAAK,QACV,kBAAf,EAHH,gCAIA,KAAK,WAAW,KAAK,GAJrB,OAKN,EAAa,KAAK,WALZ,cAOR,KAAK,WAAa,KAAK,cAAc,GAP7B,UAQF,KAAK,WAAW,OARd,QASR,KAAK,yBACL,KAAK,OAAO,KAAK,WAVT,iDA3FZ,0HAwGY,wGACF,KAAK,WAAW,QADd,gDAxGZ,0FA8GU,WAAsB,WACxB,KAAK,8BACT,KAAK,WAAW,GAAG,WAAW,SAAC,GAAD,OAA6B,EAAK,UAAU,MAC1E,KAAK,WAAW,GAAG,SAAS,kBAAM,EAAK,OAAO,KAAK,iBACnD,KAAK,WAAW,GAAG,SAAS,SAAC,GAAD,OAAkB,EAAK,OAAO,KAAK,QAAS,MACxE,KAAK,6BAA8B,OAnHvC,GAAqC,oB,2ByFK/B,EAAqB,CACzB,QAR2B,CAC3B,OAAQ,mBACR,eAAgB,oBAOhB,OAJ0B,QAOf,EAAb,WAOE,WAAmB,GACjB,GAD4B,oBAAX,WANZ,YAAS,IAAI,eAEZ,kBAAc,EAEd,kBAAc,GAGf,oBAAU,GACb,MAAM,IAAI,MAAJ,+DAAkE,IAE1E,KAAK,IAAM,EAXf,2CAcE,WACE,OAAO,KAAK,cAfhB,sBAkBE,WACE,OAAO,KAAK,cAnBhB,gBAsBS,SAAG,EAAe,GACvB,KAAK,OAAO,GAAG,EAAO,KAvB1B,kBA0BS,SAAK,EAAe,GACzB,KAAK,OAAO,KAAK,EAAO,KA3B5B,iBA8BS,SAAI,EAAe,GACxB,KAAK,OAAO,IAAI,EAAO,KA/B3B,4BAkCS,SAAe,EAAe,GACnC,KAAK,OAAO,eAAe,EAAO,KAnCtC,mEAsCS,iHAAW,EAAX,+BAAyB,KAAK,IAA9B,SACC,KAAK,SAAS,GADf,gDAtCT,0HA0CS,2FACA,KAAK,YADL,sBAEG,IAAI,MAAM,6BAFb,OAIL,KAAK,UAJA,gDA1CT,yHAiDS,WAAW,EAAyB,GAApC,wFACA,KAAK,YADL,gCAEG,KAAK,WAFR,uBAKG,EAAO,YAAkB,GAL5B,SAMe,IAAM,KAAK,IAAG,+BAAO,GAAkB,CAAE,UANxD,cAMG,EANH,iBAOgB,EAAI,OAPpB,QAOG,EAPH,OAQH,KAAK,UAAU,CAAE,SARd,kDAUH,KAAK,QAAQ,EAAQ,GAArB,MAVG,0DAjDT,gIAiEU,wHAAe,EAAf,+BAAqB,KAAK,IAC3B,oBAAU,GADT,sBAEE,IAAI,MAAJ,+DAAkE,IAFpE,WAIF,KAAK,YAJH,yCAKG,IAAI,SAAQ,SAAC,EAAS,GAC3B,EAAK,OAAO,KAAK,kBAAkB,YACjC,EAAO,MAET,EAAK,OAAO,KAAK,QAAQ,WACvB,GAAgC,qBAArB,EAAK,YACd,OAAO,EAAO,IAAI,MAAM,0CAE1B,WAbA,cAiBN,KAAK,IAAM,EACX,KAAK,aAAc,EAlBb,SAoBE,EAAO,YAAkB,CAAE,GAAI,EAAG,QAAS,MAAO,OAAQ,OAAQ,OAAQ,KApB5E,UAqBE,IAAM,EAAG,+BAAO,GAAkB,CAAE,UArBtC,QAsBJ,KAAK,SAtBD,wDAwBE,EAAQ,KAAK,WAAL,MACd,KAAK,OAAO,KAAK,iBAAkB,GACnC,KAAK,UACC,EA3BF,0DAjEV,0EAgGU,WACN,KAAK,aAAc,EACnB,KAAK,aAAc,EACnB,KAAK,OAAO,KAAK,UAnGrB,qBAsGU,WACN,KAAK,aAAc,EACnB,KAAK,aAAc,EACnB,KAAK,OAAO,KAAK,WAzGrB,uBA4GU,SAAU,GAChB,GAAsB,qBAAX,EAAE,KAAb,CACA,IAAM,EAA4C,kBAAX,EAAE,KAAoB,YAAc,EAAE,MAAQ,EAAE,KACvF,KAAK,OAAO,KAAK,UAAW,MA/GhC,qBAkHU,SAAQ,EAAY,GAC1B,IAAM,EAAQ,KAAK,WAAW,GACxB,EAAU,EAAM,SAAW,EAAM,WACjC,EAAU,6BAAmB,EAAI,GACvC,KAAK,OAAO,KAAK,UAAW,KAtHhC,wBAyHU,SAAW,GAAwB,IAAd,EAAc,uDAAR,KAAK,IACtC,OAAO,+BAAqB,EAAG,EAAK,YA1HxC,K,0BCvBasE,EAA0B,8BAC1BC,EAA6B,iCAW7B,EAAyB,sCAIzB,EAAiC,0BC2D/B,E,WAvDb,iCACE,KAAK,eAAiB,G,6CAGjB,SAAU,GACf,KAAK,eAAe,KAAK,K,yBAGpB,SAAY,GACjB,KAAK,eAAiB,KAAK,eAAe,QAAO,YAAC,OAAI,EAAE,QAAU,O,qBAG7D,SACL,GAEA,IACI,EADA,EAAiC,IAInC,EADE,YAAiB,GACX,EAAQ,OACP,YAAyB,IAAY,YAAuB,GAChE,mBAAe,EAAQ,IACnB,YAAgB,GACjB,EAAQ,MAER,MAIR,EAAgB,KAAK,eAAe,QAClC,SAAC,GAAD,OAAiC,EAAa,QAAU,MAKxD,GAAkB,EAAc,QACjC,YAAgB,IAChB,YAAgB,KAEjB,EAAgB,KAAK,eAAe,QAClC,SAAC,GAAD,MAAwD,iBAAvB,EAAa,UAIlD,EAAc,SAAQ,SAAC,GACrB,GAAI,YAAuB,GAAU,CACnC,IAAM,EAAQ,IAAI,MAAM,EAAQ,MAAM,SACtC,EAAa,SAAS,EAAO,WAE7B,EAAa,SAAS,KAAM,U,KClE9B,E,WACJ,aAAsD,IAAnC,EAAmC,uDAAf,gBAAe,oBAAnC,iB,8CAEZ,WACL,IAAI,EAAwC,KACtC,EAAO,YAAS,KAAK,WAI3B,OAHI,GAAQ,YAAuB,KACjC,EAAU,GAEL,I,wBAGF,SAAW,GAEhB,OADA,YAAS,KAAK,UAAW,GAClB,I,2BAGF,WACL,YAAY,KAAK,e,KAIN,IlHrBT,EAFiB,uCAEQ,MAAM,IAAI,KAAI,YAAI,wBAAe,EAAf,gCAuB3C,SAAU,IACd,OAAO,EAJA,KAAK,MAAM,KAAK,SAAW,EAAQ,S,IV6CtC,E,WAkDJ,WAAY,GAQV,GAR8B,oBAjDhB,cAAW,KACX,aAAU,EAIlB,aAAU,GACV,UAA2B,KAI3B,eAAY,GACZ,iBAAkC,KAIlC,aAAU,GACV,eAAgC,KAIhC,kBAAe,EACf,qBAAkB,GAIlB,iBAAa,EACb,eAAsB,GACtB,cAAW,EACX,gBAAa,EACb,aAAU,GAMV,mBAA8B,IAAI,EAexC,KAAK,YAAc,eAAmB,EAAK,cAAc,YAAc,KACvE,KAAK,WAAa,EAAK,UACvB,KAAK,gBAAkB,EAAK,gBAAkB,IAAI,EAAe,EAAK,cAAc,WACpF,KAAK,aAAe,EAAK,cAAc,YACvC,KAAK,oBAAsB,EAAK,cAAc,mBAC9C,KAAK,gBAAL,sBAA2B,KAA3B,YAA+C,EAAK,cAAc,gBAAkB,MAE/E,EAAK,cAAc,SAAW,EAAK,cAAc,MAAQ,EAAK,cAAc,QAC/E,MAAM,IAAI,M0HtHd,kEhHyBI,IAAuB,EVgGrB,EAAK,cAAc,SACrB,KAAK,OUrGL,SAA+B,GACnC,MAhCa,sBAgBT,SAA4B,GAChC,OAXI,SAA0B,GAE9B,IAAI,EAAW,EAAI,QAAQ,OAAS,EAAI,EAAI,MAAM,KAAK,GAAK,EAAI,MAAM,KAAK,GAK3E,OAHA,EAAW,EAAS,MAAM,KAAK,IAEX,MAAM,KAAK,GAKxB,CAAgB,GACpB,MAAM,KACN,OAAO,GACP,KAAK,KAYD,CAAkB,GAIrB,CADuB,EViGI,EAAK,cAAc,QU/FzC,IAEF,GVgGD,EAAK,cAAc,MACrB,KAAK,IAAM,EAAK,cAAc,KAGhC,IAAM,EAAU,EAAK,cAAc,SAAW,KAAK,qBAE/C,IACF,KAAK,QAAU,GAGb,KAAK,aACP,KAAK,4BAA4B,KAAK,YAAa,4BAGrD,KAAK,WACH,EAAK,WACL,IAAI,IAAgB,CAClB,SAAU,KAAK,SACf,QAAS,KAAK,QACd,IAAK,KAAK,OACV,cAAe,CAAC,KAAK,YAGzB,KAAK,6BACL,KAAK,iBAED,EAAK,cAAc,KACrB,KAAK,6BAGH,EAAK,gBACP,KAAK,oBAAoB,EAAK,gB,wCAalC,WACE,OAAO,KAAK,S,IARd,SAAW,GACJ,IAGL,KAAK,QAAU,K,eAejB,WACE,OAAI,KAAK,KACa,YAAwB,KAAK,MAAM,GAGlD,I,IAbT,SAAQ,GACN,GAAK,EAAL,CAGA,IAAM,EAAmB,YAAwB,GACjD,KAAK,KAAO,K,oBAkBd,WACE,IAAI,EAA0B,KAAK,UAKnC,OAJK,IACH,EAAW,KAAK,UAAY,eAGvB,KAAK,W,IAbd,SAAa,GACN,IAGL,KAAK,UAAY,K,kBAmBnB,WACE,OAAO,KAAK,S,IARd,SAAW,GACJ,IAGL,KAAK,QAAU,K,sBAWjB,WACE,IAAI,EAAiC,KAAK,YAI1C,OAHK,IACH,EAAa,KAAK,YAAc,eAE3B,G,IATT,SAAe,M,oBAgBf,WAEE,OADqC,KAAK,W,IAL5C,SAAa,GACX,KAAK,UAAY,I,0BAenB,WACE,OAAO,KAAK,iB,IARd,SAAmB,GACZ,IAGL,KAAK,gBAAkB,K,uBAczB,WACE,OAAO,KAAK,c,IARd,SAAgB,GACT,IAGL,KAAK,aAAe,K,eAOtB,WAEE,OADa,KAAK,c,IAIpB,SAAQ,GACN,GAAK,EAAL,CAGA,MAAwC,KAAK,UAAU,GAA/C,EAAR,EAAQ,eAAgB,EAAxB,EAAwB,OAAQ,EAAhC,EAAgC,IAChC,KAAK,eAAiB,EACtB,KAAK,OAAS,EACd,KAAK,IAAM,K,mBAOb,WAEE,OAD+B,KAAK,U,IALtC,SAAY,GACV,KAAK,SAAW,I,qBAYlB,WAEE,OADiC,KAAK,Y,IALxC,SAAc,GACZ,KAAK,WAAa,I,oBAYpB,WAEE,OADkC,KAAK,W,IALzC,SAAa,GACX,KAAK,UAAY,I,kBAYnB,WAEE,OAD8B,KAAK,S,IALrC,SAAW,GACT,KAAK,QAAU,I,qBAYjB,WACE,OAAO,KAAK,Y,IALd,SAAc,M,mBAYd,WACE,QAAS,KAAK,iB,IALhB,SAAY,M,mBAQZ,WACE,MAAO,CACL,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,IAAK,KAAK,IACV,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,YAAa,KAAK,YAClB,eAAgB,KAAK,iB,IAIzB,SAAY,GACL,IAGL,KAAK,WAAa,EAAM,UACxB,KAAK,SAAW,EAAM,SACtB,KAAK,QAAU,EAAM,QACrB,KAAK,OAAS,EAAM,OACpB,KAAK,IAAM,EAAM,IACjB,KAAK,SAAW,EAAM,SACtB,KAAK,WAAa,EAAM,WACxB,KAAK,OAAS,EAAM,OACpB,KAAK,SAAW,EAAM,SACtB,KAAK,YAAc,EAAM,YACzB,KAAK,eAAiB,EAAM,kB,gBAKvB,SAAG,EAAe,GACvB,IAAM,EAAe,CACnB,QACA,YAEF,KAAK,cAAc,UAAU,K,iBAGxB,SAAI,GACT,KAAK,cAAc,YAAY,K,mFAG1B,WAA2B,GAA3B,4GACa,KAAK,eADlB,cACL,KAAK,KADA,OAGC,EAA2B,KAAK,eAAe,CACnD,OAAQ,oBACR,OAAQ,CACN,CACE,OAAQ,KAAK,SACb,SAAU,KAAK,WACf,QAAS,KAAK,eAAe,OAKnC,KAAK,YAAc,EAAQ,GAC3B,KAAK,eAAiB,cAEtB,KAAK,cAAc,QAAQ,CACzB,MAAO,cACP,OAAQ,CAAC,KAAK,OAGhB,KAAK,GAAG,gBAAgB,WACtB,MAAM,IAAI,MAAM,MAGZ,EAAoB,WACxB,EAAK,eA3BF,mBA+BkB,KAAK,iBAAiB,GA/BxC,eA+BG,EA/BH,SAkCD,IAlCC,kBAqCI,GArCJ,wCAuCH,IAvCG,+D,6HA4CA,WAAc,GAAd,yFACA,KAAK,aADL,sBAEG,IAAI,M0H9Z+B,6B1H4ZtC,WAKD,KAAK,UALJ,yCAMI,CACL,QAAS,KAAK,QACd,SAAU,KAAK,WARd,uBAYC,KAAK,cAAc,GAZpB,gCAcE,IAAI,QAAJ,iDAA4B,WAAO,EAAS,GAAhB,2EACjC,EAAK,GAAG,gBAAgB,kBAAM,EAAO,IAAI,MAAM,OAE/C,EAAK,GAAG,WAAW,SAAC,EAAO,GACzB,GAAI,EACF,OAAO,EAAO,GAGhB,EAAQ,EAAQ,OAAO,OARQ,2CAA5B,0DAdF,gD,mIA2BA,WAAoB,GAApB,qFACD,KAAK,WADJ,sBAEG,IAAI,MAAM,GAFb,WAKD,KAAK,QALJ,iEASa,KAAK,eATlB,OASL,KAAK,KATA,OAWC,EAA2B,KAAK,eAAe,CACnD,OAAQ,oBACR,OAAQ,CACN,CACE,OAAQ,KAAK,SACb,SAAU,KAAK,WACf,QAAS,GAAQ,EAAK,QAAU,EAAK,QAAU,SAKrD,KAAK,YAAc,EAAQ,GAC3B,KAAK,eAAiB,cAEtB,KAAK,oBAAoB,EAAS,0BAA2B,CAC3D,MAAO,KAAK,iBAGd,KAAK,cAAc,QAAQ,CACzB,MAAO,cACP,OAAQ,CAAC,KAAK,OA/BX,iD,mFAmCA,SAAe,GACpB,GAAI,KAAK,WACP,MAAM,IAAI,MAAM,GAGlB,KAAK,QAAU,EAAc,QAC7B,KAAK,SAAW,EAAc,SAC9B,KAAK,UAAY,EAAc,WAAa,EAC5C,KAAK,OAAS,EAAc,QAAU,GAEtC,IAAM,EAAgC,CACpC,UAAU,EACV,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,OAAQ,KAAK,SACb,SAAU,KAAK,YAGX,EAAW,CACf,GAAI,KAAK,YACT,QAAS,MACT,OAAQ,GAGV,KAAK,cAAc,GAEnB,KAAK,YAAa,EAClB,KAAK,qBACL,KAAK,cAAc,QAAQ,CACzB,MAAO,UACP,OAAQ,CACN,CACE,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,SAAU,KAAK,e,2BAMhB,SAAc,GACnB,GAAI,KAAK,WACP,MAAM,IAAI,MAAM,GAGlB,IAAM,EACJ,GAAgB,EAAa,QAAU,EAAa,Q0HxhBpB,mB1H0hB5B,EAAW,KAAK,gBAAgB,CACpC,GAAI,KAAK,YACT,MAAO,CAAE,aAGX,KAAK,cAAc,GAEnB,KAAK,YAAa,EAClB,KAAK,cAAc,QAAQ,CACzB,MAAO,aACP,OAAQ,CAAC,CAAE,cAEb,KAAK,0B,2BAGA,SAAc,GACnB,IAAK,KAAK,WACR,MAAM,IAAI,MAAM,GAGlB,KAAK,QAAU,EAAc,QAC7B,KAAK,SAAW,EAAc,SAC9B,KAAK,UAAY,EAAc,WAAa,EAC5C,KAAK,OAAS,EAAc,QAAU,GAEtC,IAAM,EAAgC,CACpC,UAAU,EACV,QAAS,KAAK,QACd,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,OAAQ,KAAK,QAGT,EAAU,KAAK,eAAe,CAClC,OAAQ,mBACR,OAAQ,CAAC,KAGX,KAAK,oBAAoB,EAAS,2BAElC,KAAK,cAAc,QAAQ,CACzB,MAAO,iBACP,OAAQ,CACN,CACE,QAAS,KAAK,QACd,SAAU,KAAK,aAKrB,KAAK,0B,0EAGA,WAAkB,GAAlB,4FACC,EAAU,EAAe,EAAa,QAAU,uBAEhD,EAAgC,CACpC,UAAU,EACV,QAAS,KACT,UAAW,KACX,SAAU,MAGN,EAAU,KAAK,eAAe,CAClC,OAAQ,mBACR,OAAQ,CAAC,KAZN,SAeC,KAAK,aAAa,GAfnB,OAiBL,KAAK,yBAAyB,GAjBzB,gD,qIAoBA,WAAsB,GAAtB,wFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,cAKC,EAAW,YAAqB,GAEhC,EAAU,KAAK,eAAe,CAClC,OAAQ,sBACR,OAAQ,CAAC,KATN,SAYgB,KAAK,iBAAiB,GAZtC,cAYC,EAZD,yBAaE,GAbF,gD,qIAgBA,WAAsB,GAAtB,wFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,cAKC,EAAW,YAAqB,GAEhC,EAAU,KAAK,eAAe,CAClC,OAAQ,sBACR,OAAQ,CAAC,KATN,SAYgB,KAAK,iBAAiB,GAZtC,cAYC,EAZD,yBAaE,GAbF,gD,iIAgBA,WAAkB,GAAlB,sFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,cAKC,EAAU,KAAK,eAAe,CAClC,OAAQ,WACR,WAPG,SAUgB,KAAK,iBAAiB,GAVtC,cAUC,EAVD,yBAWE,GAXF,gD,yIAcA,WAA0B,GAA1B,sFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,cAKL,EAAS,YAAkB,GAErB,EAAU,KAAK,eAAe,CAClC,OAAQ,gBACR,WATG,SAYgB,KAAK,iBAAiB,GAZtC,cAYC,EAZD,yBAaE,GAbF,gD,mIAgBA,WAAoB,GAApB,sFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,cAKC,EAAU,KAAK,eAAe,CAClC,OAAQ,oBACR,WAPG,SAUgB,KAAK,iBAAiB,GAVtC,cAUC,EAVD,yBAWE,GAXF,gD,iIAcA,WAAkB,GAAlB,sFACA,KAAK,WADL,sBAEG,IAAI,MAAM,kCAFb,cAKC,EAAU,KAAK,eAAe,CAClC,OAAQ,qBACR,OAAQ,CAAC,KAPN,SAUgB,KAAK,iBAAiB,GAVtC,cAUC,EAVD,yBAWE,GAXF,gD,+EAcA,SACL,EACA,GAAyB,WASzB,OAPA,KAAK,aAAa,EAAS,GAE3B,KAAK,cAAc,QAAQ,CACzB,MAAO,oBACP,OAAQ,CAAC,CAAE,UAAS,cAGf,IAAI,SAAQ,SAAC,EAAS,GAC3B,EAAK,qBAAqB,EAAQ,IAAI,SAAC,EAAqB,GAC1D,GAAI,EACF,EAAO,OADT,CAIA,IAAK,EACH,MAAM,IAAI,M0H7sBkB,6B1H+sB9B,EAAQ,Y,gFAKP,WAAwB,EAAmC,GAA3D,sFACA,KAAK,WADL,sBAEG,IAAI,MAAM,GAFb,YAKG,EAAQ,OALX,OAME,iBANF,OAQE,gBARF,OAUE,wBAVF,MAWE,wBAXF,OAgBE,kBAhBF,gDAOM,KAAK,UAPX,gCASM,YAAmB,KAAK,UAT9B,cAYG,EAAQ,SACV,EAAQ,OAAO,GAAK,YAAqB,EAAQ,OAAO,KAbzD,mCAiBG,EAAQ,SACV,EAAQ,OAAS,YAAkB,EAAQ,SAlB5C,wEAyBC,EAAmB,KAAK,eAAe,GAzBxC,UA2BgB,KAAK,iBAAiB,EAAkB,GA3BxD,eA2BC,EA3BD,yBA4BE,GA5BF,iD,qFA+BA,SAAe,GACpB,IAAI,YAAyB,GAI3B,MAAM,IAAI,M0HvvBiB,yD1HovB3B,IAAM,EAAoB,KAAK,gBAAgB,GAC/C,KAAK,cAAc,K,2BAMhB,SAAc,GACnB,IAAI,YAAuB,GAIzB,MAAM,IAAI,M0H/vBgB,sD1H4vB1B,IAAM,EAAoB,KAAK,gBAAgB,GAC/C,KAAK,cAAc,K,4BAMhB,WACL,KAAK,WAAW,U,2EAKR,WACR,EACA,GAFQ,gGAIF,EAA+B,KAAK,eAAe,GAJjD,SAMmD,KAAK,SAAS,GANjE,OAMF,EANE,OAQF,EAA0C,qBAAZ,OAAP,QAAO,IAAP,OAAO,EAAP,EAAS,OAAwB,EAAQ,MAAQ,KAAK,OAC7E,EAAkB,KAAK,UAAU,GACjC,EACsC,qBAA5B,OAAP,QAAO,IAAP,OAAO,EAAP,EAAS,wBACX,EAAQ,sBACT,YAAgB,GAEtB,KAAK,WAAW,KAAK,EAAS,EAAO,GAf7B,gD,qIAkBA,WAAoB,GAApB,qGACmD,KAAK,SAAS,GADjE,OACF,EADE,OAGF,EAAgB,KAAK,OACrB,EAAkB,KAAK,UAAU,IACxB,EAEf,KAAK,WAAW,KAAK,EAAS,EAFf,MALP,gD,yIAUA,WACR,EACA,EACA,GAHQ,2EAKR,KAAK,aAAa,EAAS,GAC3B,KAAK,4BAA4B,EAAQ,GAAI,GANrC,gD,yFASA,SAAiB,EAA0B,GAQnD,OAPA,KAAK,aAAa,EAAS,GAE3B,KAAK,cAAc,QAAQ,CACzB,MAAO,oBACP,OAAQ,CAAC,CAAE,UAAS,cAGf,KAAK,yBAAyB,EAAQ,M,4BAGrC,SAAe,GACvB,GAA8B,qBAAnB,EAAQ,OACjB,MAAM,IAAI,M0H1zBiB,mD1Hk0B7B,MAN0C,CACxC,GAA0B,qBAAf,EAAQ,GAAqB,cAAc,EAAQ,GAC9D,QAAS,MACT,OAAQ,EAAQ,OAChB,OAAkC,qBAAnB,EAAQ,OAAyB,GAAK,EAAQ,U,6BAKvD,SACR,GAEA,GAA2B,qBAAhB,EAAS,GAClB,MAAM,IAAI,M0Hx0Ba,+C1H20BzB,IAAM,EAAe,CAAE,GAAI,EAAS,GAAI,QAAS,OAEjD,GAAI,YAAuB,GAAW,CACpC,IAAM,EAAQ,YAAe,EAAS,OAOtC,OALmB,6CACd,GACA,GAAQ,CACX,UAGG,GAAI,YAAyB,GAMlC,OALqB,+BAChB,GACA,GAMP,MAAM,IAAI,MAAM,K,sCAGV,SAAyB,GAC/B,IAAM,EAAU,GAAY,uBACvB,KAAK,aACJ,KAAK,cACP,KAAK,aAAa,QAEpB,YAAY,MAEV,KAAK,aACP,KAAK,YAAa,GAEhB,KAAK,eACP,KAAK,aAAe,GAElB,KAAK,kBACP,KAAK,gBAAkB,IAErB,KAAK,UACP,KAAK,QAAU,IAEjB,KAAK,cAAc,QAAQ,CACzB,MAAO,aACP,OAAQ,CAAC,CAAE,cAEb,KAAK,wBACL,KAAK,mB,oCAGC,SAAuB,EAAkB,GAC3C,GACE,EAAc,UACX,KAAK,YA+BJ,EAAc,UAChB,KAAK,QAAU,EAAc,SAE3B,EAAc,WAChB,KAAK,SAAW,EAAc,UAGhC,KAAK,cAAc,QAAQ,CACzB,MAAO,iBACP,OAAQ,CACN,CACE,QAAS,KAAK,QACd,SAAU,KAAK,eA1CrB,KAAK,YAAa,EAEd,EAAc,UAChB,KAAK,QAAU,EAAc,SAG3B,EAAc,WAChB,KAAK,SAAW,EAAc,UAG5B,EAAc,SAAW,KAAK,SAChC,KAAK,OAAS,EAAc,QAG1B,EAAc,WAAa,KAAK,WAClC,KAAK,SAAW,EAAc,UAGhC,KAAK,cAAc,QAAQ,CACzB,MAAO,UACP,OAAQ,CACN,CACE,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,SAAU,KAAK,cAuBvB,KAAK,yBAKP,KAAK,yBAAyB,K,sFAI1B,WAA8B,GAA9B,sFACe,CAAC,KAAK,SAAU,KAAK,gBAExB,SAAS,EAAc,OAHnC,0DASJ,EAAoB,KAAK,MAAM,EAAc,SATzC,mGAkBW,KAAK,SAAS,GAlBzB,SAcA,EAdA,SAqBJ,KAAK,cAAc,QAAQ,GArBvB,yD,+FAyBA,WACN,KAAK,WAAW,UAAU,KAAK,kB,kCAGzB,SACN,EACA,GAEA,KAAK,GAAL,mBAAoB,GAAM,K,yCAGpB,SAA4B,EAAY,GAAgB,WAC9D,KAAK,qBAAqB,GAAI,SAAC,EAAO,GAChC,EACF,EAAK,uBAAuB,EAAM,SAGhC,YAAyB,GAC3B,EAAK,uBAAuB,EAAU,EAAQ,QACrC,EAAQ,OAAS,EAAQ,MAAM,QACxC,EAAK,uBAAuB,EAAQ,MAAM,SAE1C,EAAK,uBAAuB,Q,sCAK1B,SAAyB,GAAU,WACzC,OAAO,IAAI,SAAQ,SAAC,EAAS,GAC3B,EAAK,qBAAqB,GAAI,SAAC,EAAO,GAChC,EACF,EAAO,GAGL,YAAyB,GAC3B,EAAQ,EAAQ,QACP,EAAQ,OAAS,EAAQ,MAAM,QACxC,EAAO,IAAI,MAAM,EAAQ,MAAM,UAE/B,EAAO,IAAI,MAAM,Y,wCAMjB,WAA0B,WAChC,KAAK,GAAG,eAAe,WACjB,EAAK,cACP,EAAK,aAAa,KAChB,EAAK,KACL,WACE,EAAK,cAAc,QAAQ,CACzB,MAAO,eACP,OAAQ,OAGZ,EAAK,wBAKX,KAAK,GAAG,WAAW,WACb,EAAK,cACP,EAAK,aAAa,WAItB,KAAK,GAAG,qBAAqB,SAAC,EAAO,GACnC,IAAQ,EAAY,EAAQ,OAAO,GAA3B,QACR,GAAI,eAAc,EAAK,gBAAgB,SAAS,EAAQ,QAAS,CAC/D,IAAM,EAAgB,YAAS,KAC3B,IACF,OAAO,SAAS,KAAO,EAAc,UAK3C,KAAK,GAAG,qBAAqB,SAAC,EAAO,GAC/B,GACF,EAAK,cAAc,QAAQ,CACzB,MAAO,QACP,OAAQ,CACN,CACE,KAAM,wBACN,QAAS,EAAM,eAKvB,EAAK,YAAc,EAAQ,GAC3B,EAAK,OAAS,EAAQ,OAAO,GAAG,OAChC,EAAK,SAAW,EAAQ,OAAO,GAAG,SAElC,IAAM,EAAe,+BAChB,GAAO,CACV,OAAQ,oBAEV,EAAK,cAAc,QAAQ,MAG7B,KAAK,GAAG,oBAAoB,SAAC,EAAO,GAC9B,GACF,EAAK,uBAAuB,EAAM,SAEpC,EAAK,uBAAuB,uBAAwB,EAAQ,OAAO,S,4BAI/D,WAAc,WACpB,KAAK,WAAW,GAAG,WAAW,SAAC,GAAD,OAC5B,EAAK,wBAAwB,MAG/B,KAAK,WAAW,GAAG,QAAQ,kBACzB,EAAK,cAAc,QAAQ,CAAE,MAAO,iBAAkB,OAAQ,QAGhE,KAAK,WAAW,GAAG,SAAS,kBAC1B,EAAK,cAAc,QAAQ,CAAE,MAAO,kBAAmB,OAAQ,QAGjE,KAAK,WAAW,GAAG,SAAS,kBAC1B,EAAK,cAAc,QAAQ,CACzB,MAAO,kBACP,OAAQ,CAAC,oCAIb,KAAK,WAAW,S,wBAKV,WACN,IAAM,EAAW,KAAK,SAChB,EAAiB,KAAK,eACtB,EAAU,KAAK,QACf,EAAS,mBAAmB,KAAK,QACjC,EAAM,KAAK,IAEjB,MADS,UAAM,EAAN,YAAkB,EAAlB,YAAoC,EAApC,mBAAsD,EAAtD,gBAAoE,K,uBAIvE,SAAU,GAChB,IAAM,EAA0B,YAAsB,GAEtD,GAAI,EAAO,WAAa,KAAK,SAAU,CACrC,IAAK,EAAO,eACV,MAAM,MAAM,qDAEd,IAAM,EAAiB,EAAO,eAE9B,IAAK,EAAO,OACV,MAAM,MAAM,iDAEd,IAAM,EAAS,mBAAmB,EAAO,QAEzC,IAAK,EAAO,IACV,MAAM,MAAM,0CAId,MAAO,CAAE,iBAAgB,SAAQ,IAFrB,EAAO,KAInB,MAAM,IAAI,M0HnnCiB,2B,2E1HynCvB,kGACF,KAAK,WADH,gCAEiB,KAAK,WAAW,cAFjC,cAEE,EAFF,yBAGG,GAHH,gCAKC,MALD,gD,6HAQA,WACN,GADM,sFAGA,EAA0B,KAAK,MACjC,KAAK,aAAc,EAJjB,gCAKqC,KAAK,WAAW,QAAQ,EAAM,GALnE,cAKE,EALF,yBAMG,GANH,gCAQC,MARD,gD,8HAWA,WACN,GADM,sFAGA,EAA0B,KAAK,MACjC,KAAK,aAAc,EAJjB,gCASa,KAAK,WAAW,QAAQ,EAAS,GAT9C,cAKE,EALF,yBAUG,GAVH,gCAYC,MAZD,gD,uFAiBA,WACN,IAAI,EAAuC,KAI3C,OAHI,KAAK,kBACP,EAAS,KAAK,gBAAgB,cAEzB,I,gCAGD,WACF,KAAK,iBACP,KAAK,gBAAgB,WAAW,KAAK,W,mCAIjC,WACF,KAAK,iBACP,KAAK,gBAAgB,kB,mCAIjB,WACF,KAAK,WACP,KAAK,qBAEL,KAAK,0B,iCAMD,SAAoB,GAC1B,IAAK,EAAe,KAAqC,kBAAvB,EAAe,IAC/C,MAAM,MAAM,yDAGd,IAAK,EAAe,MAAuC,kBAAxB,EAAe,KAChD,MAAM,MAAM,0DAGd,IAAK,EAAe,OAAyC,kBAAzB,EAAe,MACjD,MAAM,MAAM,2DAGd,IAAM,EAAsC,CAC1C,OAAQ,KAAK,OACb,MAAO,KAAK,SACZ,KAAM,EAAe,KACrB,MAAO,EAAe,MACtB,SAAU,GACV,SAAU,EAAe,UAAY,IAGvC,KAAK,GAAG,UAAR,iDAAmB,WAAO,EAAqB,GAA5B,uFACb,EADa,sBAET,EAFS,cAKb,EAAe,WACX,EAAW,EAAQ,OAAO,GAAG,SAAS,KAC5C,EAAiB,SAAW,GAPb,kBAWQ,MAAK,UAAI,EAAe,IAAnB,QAA8B,CACxD,OAAQ,OACR,QAAS,CACP,OAAQ,mBACR,eAAgB,oBAElB,KAAM,KAAK,UAAU,KAjBR,cAWT,EAXS,gBAoBI,EAAS,OApBb,iBAqBL,QArBK,uBAsBP,MAAM,qCAtBC,gEAyBT,MAAM,qCAzBG,0DAAnB,6D,KA8BW,I,kBAlvCf,SAAsB,EAAtB,kC,sDAAO,WAA2B,GAA3B,4FACC,GAAW,GAAU,KAAO,EAC5B,EAAQ,cAAmB,GAC3B,EAAS,YAA2B,gBAAuB,IAH5D,kBAKE,GALF,4C,sBAQP,SAAsB,EAAtB,oC,sDAAO,WAA0B,EAA6B,GAAvD,oGACC,EAAa,aAAoB,EAAQ,MACzC,EAAK,aAAoB,EAAQ,IACjC,EAAO,aAAoB,EAAQ,MACnC,EAAkB,aAAoB,GAAM,GAC5C,EAAW,eAAsB,EAAY,GAL9C,SAMe,iBAAsB,EAAK,GAN1C,UAMC,EAND,OAOC,EAAmB,aAAoB,GAAO,GAEhD,kBAAyB,KAAa,kBAAyB,GAT9D,2CAUI,GAVJ,kCAaE,GAbF,6C,sBAgBP,SAAsB,EAAtB,sC,sDAAO,WACL,EACA,EACA,GAHK,wGAKC,EAAO,gBAAuB,YAA2B,IAL1D,KAO8B,EAP9B,qCAOmD,EAAY,KAP/D,iCAOC,EAPD,KAQC,EAAK,gBAAuB,YAA2B,IACvD,EAAgB,aAAoB,GAAI,GAExC,EAAwB,KAAK,UAAU,GACvC,EAAU,cAAqB,GAZhC,UAcoB,gBAAqB,EAAI,EAAM,GAdnD,eAcC,EAdD,OAeC,EAAwB,aAAoB,GAAY,GAExD,EAAW,eAAsB,EAAY,GAjB9C,UAkBc,iBAAsB,EAAM,GAlB1C,eAkBC,EAlBD,OAmBC,EAAkB,aAAoB,GAAM,GAnB7C,kBAqBE,CACL,KAAM,EACN,KAAM,EACN,GAAI,IAxBD,6C,sBA4BP,SAAsB,EAAtB,oC,sDAAO,WACL,EACA,GAFK,8FAIC,EAAO,gBAAuB,YAA2B,IAJ1D,sBAOG,IAAI,MAAM,wCAPb,uBAU2B,EAAW,EAAS,GAV/C,0DAYI,MAZJ,cAeC,EAAa,aAAoB,EAAQ,MACzC,EAAK,aAAoB,EAAQ,IAhBlC,UAiBgB,gBAAqB,EAAI,EAAM,GAjB/C,QAiBC,EAjBD,OAkBC,EAAe,cAAqB,GAlBrC,UAqBH,EAAO,KAAK,MAAM,GArBf,4EAuBI,MAvBJ,iCA0BE,GA1BF,4D,0BAhDQ,E,kDATb,WAAY,EAAsC,GAAmC,uCAC7E,CACJ,YACA,gBACA,mB,uBALsB,G,kBASf,EAAb,kDAaE,WAAY,GAAiC,kCAC3C,gBAbK,OAAc,IAAI,IAElB,WAAqB,GACrB,UAAU,EAET,WAAU,EAEV,SAAS,mCACT,UAAS,EACT,0BAAsD,EAK5D,EAAK,KAAO,EACZ,EAAK,SAAc,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,UAAW,EAAK,QACrC,EAAK,GAAK,EAAK,SAAS,GAJmB,EAb/C,2CAoBE,WACE,MAA0B,qBAAZ,KAAK,IAAsB,KAAK,GAAG,YArBrD,sBAwBE,WACE,OAAO,KAAK,UAzBhB,qBA4BE,WAEE,OADA,KAAK,GAAK,KAAK,SAAS,KAAK,MACtB,KAAK,KA9BhB,gBAiCS,SAAG,EAAe,GACvB,KAAK,OAAO,GAAG,EAAO,KAlC1B,kBAqCS,SAAK,EAAe,GACzB,KAAK,OAAO,KAAK,EAAO,KAtC5B,iBAyCS,SAAI,EAAe,GACxB,KAAK,OAAO,IAAI,EAAO,KA1C3B,4BA6CS,SAAe,EAAe,GACnC,KAAK,OAAO,eAAe,EAAO,KA9CtC,mEAiDS,WAAW,GAAX,0FACD,KAAK,UADJ,uBAEH,KAAK,SAFF,mDAKE,IAAI,SAAQ,SAAC,EAAS,GAC3B,EAAK,GAAG,SAAS,YACf,EAAO,MAGT,EAAK,GAAG,QAAQ,WACd,OAGF,EAAK,OAAO,OAdT,gDAjDT,2HAmES,2FACkB,qBAAZ,KAAK,GADX,iDAED,KAAK,GAAG,WACV,KAAK,GAAG,cAEV,KAAK,UALA,gDAnET,yHA2ES,WAAW,GAAX,yFACL,KAAK,GAAK,KAAK,SAAS,KAAK,MAExB,KAAK,UAHL,gCAGsB,KAAK,OAH3B,OAIL,KAAK,YAAY,GACd,MAAK,SAAC,GAAD,OAAc,EAAK,OAAO,KAAK,UAAW,MAC/C,OAAM,YAAC,OAAI,EAAK,OAAO,KAAK,UAAW,6BAAmB,EAAQ,GAAI,EAAE,aANtE,gDA3ET,6EAsFU,SAAS,GACf,GAAI,KAAK,GAAI,OAAO,KAAK,GACzB,KAAK,KAAO,GAAQ,KAAK,KACzB,KAAK,QAAa,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,WAChB,EAAK,UAAU,QACX,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,SAAU,mCAEpB,KAAK,OAAiC,qBAAb,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,UAA0C,IAAhB,EAAK,OAC1D,KAAK,QAAmC,qBAAd,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,SAA0B,EAAK,QAAU,KAAK,QAC1E,KAAK,mBAAyB,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,mBAChC,IAAM,EAAgB,CACpB,OAAQ,KAAK,OACb,YAAa,KAAK,OAAS,SAAc,EACzC,mBAAoB,KAAK,mBACzB,UAAe,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,UACjB,eAAoB,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,eACtB,WAAgB,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,YAIpB,GAFA,KAAK,GACwB,qBAAhB,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,WAA4B,EAAK,UAAY,IAAI,EAAc,GACvD,qBAAZ,KAAK,GACd,MAAM,IAAI,MAAM,8CAWlB,OATI,KAAK,GAAG,SAAS,SACnB,KAAK,SAAW,KAAK,GAAG,UAEtB,KAAK,GAAG,UACV,KAAK,QAAU,KAAK,GAAG,SAIzB,KAAK,0BACE,KAAK,KAtHhB,oBAyHU,SAAO,GACb,KAAK,SAAU,EACX,IACF,KAAK,GAAK,GAEZ,KAAK,OAAO,KAAK,UA9HrB,qBAiIU,WACN,KAAK,SAAU,EACX,KAAK,KACP,KAAK,QAAK,GAEZ,KAAK,OAAO,KAAK,WAtIrB,qBAyIS,SACL,GAEa,IADb,EACa,uDADH,6BACV,EAAa,wDAAL,KAEF,EAAe,CACnB,GAAI,EAAQ,GACZ,QAAS,EAAQ,QACjB,MAAO,CAAE,OAAM,YAGjB,OADA,KAAK,OAAO,KAAK,UAAW,GACrB,IApJX,oBAuJU,SAAO,GAAgB,WAC7B,KAAK,GAAK,KAAK,SAAS,KAAK,MAC7B,KAAK,QAAU,GAAW,KAAK,QAC3B,KAAK,WAAa,KAAK,UAC3B,KAAK,SAAU,EACf,KAAK,0BACL,KAAK,GACF,cAAc,CAAE,QAAS,KAAK,UAC9B,MAAK,kBAAM,EAAK,OAAO,KAAK,cAC5B,OAAM,SAAC,GAAD,OAAc,EAAK,OAAO,KAAK,QAAS,SAhKrD,qCAmKU,WAAuB,WAC7B,KAAK,GAAK,KAAK,SAAS,KAAK,MAE7B,KAAK,GAAG,GAAG,WAAW,SAAC,G,QACjB,EACF,EAAK,OAAO,KAAK,QAAS,IAG5B,EAAK,UAAkB,QAAP,IAAK,UAAE,eAAE,WAAY,GACrC,EAAK,SAAiB,QAAP,IAAK,UAAE,eAAE,UAAW,EAAK,QAExC,EAAK,aAGP,KAAK,GAAG,GAAG,cAAc,SAAC,GACpB,EACF,EAAK,OAAO,KAAK,QAAS,GAI5B,EAAK,aAGP,KAAK,GAAG,GAAG,gBAAgB,WACzB,EAAK,OAAO,KAAK,QAAS,IAAI,MAAM,yBAGtC,KAAK,GAAG,GAAG,kBAAkB,SAAC,EAAO,GACnC,MAA8B,EAAQ,OAAO,GAArC,EAAR,EAAQ,SAAU,EAAlB,EAAkB,UACb,EAAK,UAAa,GAAY,EAAK,WAAa,KACnD,EAAK,SAAW,EAChB,EAAK,OAAO,KAAK,kBAAmB,MAEjC,EAAK,SAAY,GAAW,EAAK,UAAY,KAChD,EAAK,QAAU,EACf,EAAK,OAAO,KAAK,eAAgB,SAtMzC,0EA2MU,WAAkB,GAAlB,wFACN,KAAK,GAAK,KAAK,SAAS,KAAK,MADvB,kBAGmB,KAAK,GAAG,WAAW,GAHtC,cAGE,EAHF,yBAIG,KAAK,iBAAiB,IAJzB,yDAMG,KAAK,QAAQ,EAAU,KAAc,UANxC,yDA3MV,qFAqNU,SACN,GAEA,MAA4D,qBAA7C,EAAmC,OACU,qBAAlD,EAAmC,MAAM,KAC/C,6BAAmB,EAAS,GAAK,EAAmC,MAAM,SACzE,MA3NT,G,OAAsC,oBALhC,E,WAOJ,WAAY,GAAiC,oBANtC,YAAc,IAAI,IAOvB,KAAK,IAAM,CAAE,SAAc,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,SAAU,OAAY,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,KACrD,KAAK,OAAS,IAAI,EAAgB,IAAI,EAAiB,IACvD,IAAM,EAAW,KAAK,OAAO,WAAgC,UAAe,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAM,UAAW,EACzF,KAAK,KAAO,KAAK,gBAAgB,GACjC,KAAK,yB,2CAGP,WACE,OAAQ,KAAK,OAAO,WAAgC,Y,qBAGtD,WACE,OAAQ,KAAK,OAAO,WAAgC,Y,oBAGtD,WACE,OAAQ,KAAK,OAAO,WAAgC,W,mBAGtD,WACE,OAAQ,KAAK,OAAO,WAAgC,U,kBAGtD,W,MACE,OAAiB,QAAT,OAAK,YAAI,eAAE,YAA8B,KAAO,K,sEAGnD,WAA2B,GAA3B,gFACG,EAAK,OADR,OAEE,wBAFF,OAKE,iBALF,OAOE,gBAPF,sCAGK,KAAK,UAHV,uCAMO,KAAK,OAAO,WAAmB,UANtC,gCAQO,KAAK,OAAO,WAAmB,SARtC,6CAYD,IAAe,SAAS,EAAK,QAZ5B,0CAaI,KAAK,OAAO,QAAQ,IAbxB,WAeoB,qBAAd,KAAK,KAfX,uBAgBG,IAAI,MAAJ,0CAA6C,EAAK,OAAlD,+BAhBH,iCAkBE,KAAK,KAAK,QAAQ,IAlBpB,iD,8EAqBA,SACL,EACA,GAEA,KAAK,QAAQ,GACV,MAAK,YAAQ,OAAI,EAAS,KAAM,MAChC,OAAM,YAAK,OAAI,EAAS,OAAO,Q,qEAG7B,8GACkB,KAAK,QAAQ,CAAE,OAAQ,wBADzC,cACC,EADD,yBAEE,GAFF,gD,4HAKA,2FACA,KAAK,OAAO,WAAW,UADvB,gCAEG,KAAK,OAAO,UAFf,gD,+HAMA,4FACD5hD,KAAK6hD,OAAOC,WAAW,UADtB,gCAEG9hD,KAAK,OAAO,aAFf,gD,sEAMA,SAAG,EAAY,GACpB,KAAK,OAAO,GAAG,EAAO,K,kBAEjB,SAAK,EAAe,GACzB,KAAK,OAAO,KAAK,EAAO,K,4BAEnB,SAAe,EAAe,GACnC,KAAK,OAAO,eAAe,EAAO,K,iBAE7B,SAAI,EAAe,GACxB,KAAK,OAAO,IAAI,EAAO,K,2BAGzB,WACE,OAAO,I,oCAKD,WAAsB,WAC5B,KAAK,OAAO,WAAW,GAAG,mBAAmB,YAC3C,EAAK,OAAO,KAAK,kBAAmB,MAEtC,KAAK,OAAO,WAAW,GAAG,gBAAgB,YACxC,EAAK,KAAO,EAAK,gBAAgB,GACjC,EAAK,OAAO,KAAK,eAAgB,MAEnC,KAAK,OAAO,GAAG,cAAc,WAC3B,EAAK,OAAO,KAAK,mB,6BAIb,SAAgB,GACtB,IAAM,EAAS,YAAU,EAAS,KAAK,KACvC,GAAsB,qBAAX,EAEX,OADa,IAAI,EAAgB,IAAI,EAAe,Q,KAKzC","file":"static/js/4.02d4c575.chunk.js","sourcesContent":["var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import EventEmitter from \"eventemitter3\";\nimport { JsonRpcProvider } from \"@walletconnect/jsonrpc-provider\";\nimport { HttpConnection } from \"@walletconnect/jsonrpc-http-connection\";\nimport { getRpcUrl, signingMethods } from \"@walletconnect/utils\";\nimport { SignerConnection } from \"@walletconnect/signer-connection\";\nclass WalletConnectProvider {\n constructor(opts) {\n this.events = new EventEmitter();\n this.rpc = { infuraId: opts === null || opts === void 0 ? void 0 : opts.infuraId, custom: opts === null || opts === void 0 ? void 0 : opts.rpc };\n this.signer = new JsonRpcProvider(new SignerConnection(opts));\n const chainId = this.signer.connection.chainId || (opts === null || opts === void 0 ? void 0 : opts.chainId) || 1;\n this.http = this.setHttpProvider(chainId);\n this.registerEventListeners();\n }\n get connected() {\n return this.signer.connection.connected;\n }\n get connector() {\n return this.signer.connection.connector;\n }\n get accounts() {\n return this.signer.connection.accounts;\n }\n get chainId() {\n return this.signer.connection.chainId;\n }\n get rpcUrl() {\n var _a;\n return ((_a = this.http) === null || _a === void 0 ? void 0 : _a.connection).url || \"\";\n }\n async request(args) {\n switch (args.method) {\n case \"eth_requestAccounts\":\n await this.connect();\n return this.signer.connection.accounts;\n case \"eth_accounts\":\n return this.signer.connection.accounts;\n case \"eth_chainId\":\n return this.signer.connection.chainId;\n default:\n break;\n }\n if (signingMethods.includes(args.method)) {\n return this.signer.request(args);\n }\n if (typeof this.http === \"undefined\") {\n throw new Error(`Cannot request JSON-RPC method (${args.method}) without provided rpc url`);\n }\n return this.http.request(args);\n }\n sendAsync(args, callback) {\n this.request(args)\n .then(response => callback(null, response))\n .catch(error => callback(error, undefined));\n }\n async enable() {\n const accounts = await this.request({ method: \"eth_requestAccounts\" });\n return accounts;\n }\n async connect() {\n if (!this.signer.connection.connected) {\n await this.signer.connect();\n }\n }\n async disconnect() {\n if (this.signer.connection.connected) {\n await this.signer.disconnect();\n }\n }\n on(event, listener) {\n this.events.on(event, listener);\n }\n once(event, listener) {\n this.events.once(event, listener);\n }\n removeListener(event, listener) {\n this.events.removeListener(event, listener);\n }\n off(event, listener) {\n this.events.off(event, listener);\n }\n get isWalletConnect() {\n return true;\n }\n registerEventListeners() {\n this.signer.connection.on(\"accountsChanged\", accounts => {\n this.events.emit(\"accountsChanged\", accounts);\n });\n this.signer.connection.on(\"chainChanged\", chainId => {\n this.http = this.setHttpProvider(chainId);\n this.events.emit(\"chainChanged\", chainId);\n });\n this.signer.on(\"disconnect\", () => {\n this.events.emit(\"disconnect\");\n });\n }\n setHttpProvider(chainId) {\n const rpcUrl = getRpcUrl(chainId, this.rpc);\n if (typeof rpcUrl === \"undefined\")\n return undefined;\n const http = new JsonRpcProvider(new HttpConnection(rpcUrl));\n return http;\n }\n}\nexport default WalletConnectProvider;\n//# sourceMappingURL=index.js.map","var toSJISFunction\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n var digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","var VersionCheck = require('./version-check')\nvar Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","/**\n * Implementation of a subset of node.js Buffer methods for the browser.\n * Based on https://github.com/feross/buffer\n */\n\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar isArray = require('isarray')\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that\n if (buf === null) {\n buf = new Buffer(length)\n }\n buf.length = length\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0\n var buf = createBuffer(that, length)\n\n var actual = buf.write(string)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf)\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(that, len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction byteLength (string) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n return utf8ToBytes(string).length\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, offset)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n } else {\n length = undefined\n }\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n return utf8Write(this, string, offset, length)\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return createBuffer(null, 0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = allocUnsafe(null, length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nBuffer.byteLength = byteLength\n\nBuffer.prototype._isBuffer = true\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nmodule.exports.alloc = function (size) {\n var buffer = new Buffer(size)\n buffer.fill(0)\n return buffer\n}\n\nmodule.exports.from = function (data) {\n return new Buffer(data)\n}\n","export const PARSE_ERROR = \"PARSE_ERROR\";\nexport const INVALID_REQUEST = \"INVALID_REQUEST\";\nexport const METHOD_NOT_FOUND = \"METHOD_NOT_FOUND\";\nexport const INVALID_PARAMS = \"INVALID_PARAMS\";\nexport const INTERNAL_ERROR = \"INTERNAL_ERROR\";\nexport const SERVER_ERROR = \"SERVER_ERROR\";\nexport const RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nexport const SERVER_ERROR_CODE_RANGE = [-32000, -32099];\nexport const STANDARD_ERROR_MAP = {\n [PARSE_ERROR]: { code: -32700, message: \"Parse error\" },\n [INVALID_REQUEST]: { code: -32600, message: \"Invalid Request\" },\n [METHOD_NOT_FOUND]: { code: -32601, message: \"Method not found\" },\n [INVALID_PARAMS]: { code: -32602, message: \"Invalid params\" },\n [INTERNAL_ERROR]: { code: -32603, message: \"Internal error\" },\n [SERVER_ERROR]: { code: -32000, message: \"Server error\" },\n};\n//# sourceMappingURL=constants.js.map","import BN from \"bn.js\";\nimport * as encoding from \"@walletconnect/encoding\";\nexport function convertArrayBufferToBuffer(arrBuf) {\n return encoding.arrayToBuffer(new Uint8Array(arrBuf));\n}\nexport function convertArrayBufferToUtf8(arrBuf) {\n return encoding.arrayToUtf8(new Uint8Array(arrBuf));\n}\nexport function convertArrayBufferToHex(arrBuf, noPrefix) {\n return encoding.arrayToHex(new Uint8Array(arrBuf), !noPrefix);\n}\nexport function convertArrayBufferToNumber(arrBuf) {\n return encoding.arrayToNumber(new Uint8Array(arrBuf));\n}\nexport function concatArrayBuffers(...args) {\n return encoding.hexToArray(args.map(b => encoding.arrayToHex(new Uint8Array(b))).join(\"\")).buffer;\n}\nexport function convertBufferToArrayBuffer(buf) {\n return encoding.bufferToArray(buf).buffer;\n}\nexport function convertBufferToUtf8(buf) {\n return encoding.bufferToUtf8(buf);\n}\nexport function convertBufferToHex(buf, noPrefix) {\n return encoding.bufferToHex(buf, !noPrefix);\n}\nexport function convertBufferToNumber(buf) {\n return encoding.bufferToNumber(buf);\n}\nexport function concatBuffers(...args) {\n return encoding.concatBuffers(...args);\n}\nexport function convertUtf8ToArrayBuffer(utf8) {\n return encoding.utf8ToArray(utf8).buffer;\n}\nexport function convertUtf8ToBuffer(utf8) {\n return encoding.utf8ToBuffer(utf8);\n}\nexport function convertUtf8ToHex(utf8, noPrefix) {\n return encoding.utf8ToHex(utf8, !noPrefix);\n}\nexport function convertUtf8ToNumber(utf8) {\n return new BN(utf8, 10).toNumber();\n}\nexport function convertHexToBuffer(hex) {\n return encoding.hexToBuffer(hex);\n}\nexport function convertHexToArrayBuffer(hex) {\n return encoding.hexToArray(hex).buffer;\n}\nexport function convertHexToUtf8(hex) {\n return encoding.hexToUtf8(hex);\n}\nexport function convertHexToNumber(hex) {\n return new BN(encoding.removeHexPrefix(hex), \"hex\").toNumber();\n}\nexport function convertNumberToBuffer(num) {\n return encoding.numberToBuffer(num);\n}\nexport function convertNumberToArrayBuffer(num) {\n return encoding.numberToArray(num).buffer;\n}\nexport function convertNumberToUtf8(num) {\n return new BN(num).toString();\n}\nexport function convertNumberToHex(num, noPrefix) {\n const hex = encoding.removeHexPrefix(encoding.sanitizeHex(new BN(num).toString(16)));\n return noPrefix ? hex : encoding.addHexPrefix(hex);\n}\n//# sourceMappingURL=encoding.js.map","export class IEvents {\n}\n//# sourceMappingURL=misc.js.map","export function isJsonRpcPayload(payload) {\n return \"id\" in payload && \"jsonrpc\" in payload && payload.jsonrpc === \"2.0\";\n}\nexport function isJsonRpcRequest(payload) {\n return isJsonRpcPayload(payload) && \"method\" in payload;\n}\nexport function isJsonRpcResponse(payload) {\n return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nexport function isJsonRpcResult(payload) {\n return \"result\" in payload;\n}\nexport function isJsonRpcError(payload) {\n return \"error\" in payload;\n}\nexport function isJsonRpcValidationInvalid(validation) {\n return \"error\" in validation && validation.valid === false;\n}\n//# sourceMappingURL=validators.js.map","import { keccak_256 } from \"js-sha3\";\nimport { removeHexPrefix, addHexPrefix } from \"@walletconnect/encoding\";\nimport { convertUtf8ToHex, convertNumberToHex, convertUtf8ToBuffer } from \"./encoding\";\nimport { sanitizeHex, removeHexLeadingZeros } from \"./misc\";\nimport { isEmptyArray, isHexString, isEmptyString } from \"./validators\";\nexport function toChecksumAddress(address) {\n address = removeHexPrefix(address.toLowerCase());\n const hash = removeHexPrefix(keccak_256(convertUtf8ToBuffer(address)));\n let checksum = \"\";\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) > 7) {\n checksum += address[i].toUpperCase();\n }\n else {\n checksum += address[i];\n }\n }\n return addHexPrefix(checksum);\n}\nexport const isValidAddress = (address) => {\n if (!address) {\n return false;\n }\n else if (address.toLowerCase().substring(0, 2) !== \"0x\") {\n return false;\n }\n else if (!/^(0x)?[0-9a-f]{40}$/i.test(address)) {\n return false;\n }\n else if (/^(0x)?[0-9a-f]{40}$/.test(address) || /^(0x)?[0-9A-F]{40}$/.test(address)) {\n return true;\n }\n else {\n return address === toChecksumAddress(address);\n }\n};\nexport function parsePersonalSign(params) {\n if (!isEmptyArray(params) && !isHexString(params[0])) {\n params[0] = convertUtf8ToHex(params[0]);\n }\n return params;\n}\nexport function parseTransactionData(txData) {\n if (typeof txData.type !== \"undefined\" && txData.type !== \"0\")\n return txData;\n if (typeof txData.from === \"undefined\" || !isValidAddress(txData.from)) {\n throw new Error(`Transaction object must include a valid 'from' value.`);\n }\n function parseHexValues(value) {\n let result = value;\n if (typeof value === \"number\" || (typeof value === \"string\" && !isEmptyString(value))) {\n if (!isHexString(value)) {\n result = convertNumberToHex(value);\n }\n else if (typeof value === \"string\") {\n result = sanitizeHex(value);\n }\n }\n if (typeof result === \"string\") {\n result = removeHexLeadingZeros(result);\n }\n return result;\n }\n const txDataRPC = {\n from: sanitizeHex(txData.from),\n to: typeof txData.to === \"undefined\" ? undefined : sanitizeHex(txData.to),\n gasPrice: typeof txData.gasPrice === \"undefined\" ? \"\" : parseHexValues(txData.gasPrice),\n gas: typeof txData.gas === \"undefined\"\n ? typeof txData.gasLimit === \"undefined\"\n ? \"\"\n : parseHexValues(txData.gasLimit)\n : parseHexValues(txData.gas),\n value: typeof txData.value === \"undefined\" ? \"\" : parseHexValues(txData.value),\n nonce: typeof txData.nonce === \"undefined\" ? \"\" : parseHexValues(txData.nonce),\n data: typeof txData.data === \"undefined\" ? \"\" : sanitizeHex(txData.data) || \"0x\",\n };\n const prunable = [\"gasPrice\", \"gas\", \"value\", \"nonce\"];\n Object.keys(txDataRPC).forEach((key) => {\n if ((typeof txDataRPC[key] === \"undefined\" ||\n (typeof txDataRPC[key] === \"string\" && !txDataRPC[key].trim().length)) &&\n prunable.includes(key)) {\n delete txDataRPC[key];\n }\n });\n return txDataRPC;\n}\n//# sourceMappingURL=ethereum.js.map","export function promisify(originalFn, thisArg) {\n const promisifiedFunction = async (...callArgs) => {\n return new Promise((resolve, reject) => {\n const callback = (err, data) => {\n if (err === null || typeof err === \"undefined\") {\n reject(err);\n }\n resolve(data);\n };\n originalFn.apply(thisArg, [...callArgs, callback]);\n });\n };\n return promisifiedFunction;\n}\nexport function formatRpcError(error) {\n const message = error.message || \"Failed or Rejected Request\";\n let code = -32000;\n if (error && !error.code) {\n switch (message) {\n case \"Parse error\":\n code = -32700;\n break;\n case \"Invalid request\":\n code = -32600;\n break;\n case \"Method not found\":\n code = -32601;\n break;\n case \"Invalid params\":\n code = -32602;\n break;\n case \"Internal error\":\n code = -32603;\n break;\n default:\n code = -32000;\n break;\n }\n }\n const result = {\n code,\n message,\n };\n return result;\n}\n//# sourceMappingURL=payload.js.map","const domain = \"walletconnect.org\";\nconst alphanumerical = \"abcdefghijklmnopqrstuvwxyz0123456789\";\nconst bridges = alphanumerical.split(\"\").map(char => `https://${char}.bridge.walletconnect.org`);\nexport function extractHostname(url) {\n let hostname = url.indexOf(\"//\") > -1 ? url.split(\"/\")[2] : url.split(\"/\")[0];\n hostname = hostname.split(\":\")[0];\n hostname = hostname.split(\"?\")[0];\n return hostname;\n}\nexport function extractRootDomain(url) {\n return extractHostname(url)\n .split(\".\")\n .slice(-2)\n .join(\".\");\n}\nexport function randomBridgeIndex() {\n return Math.floor(Math.random() * bridges.length);\n}\nexport function selectRandomBridgeUrl() {\n return bridges[randomBridgeIndex()];\n}\nexport function shouldSelectRandomly(url) {\n return extractRootDomain(url) === domain;\n}\nexport function getBridgeUrl(url) {\n if (shouldSelectRandomly(url)) {\n return selectRandomBridgeUrl();\n }\n return url;\n}\n//# sourceMappingURL=url.js.map","import { parseQueryString } from \"./url\";\nexport function isWalletConnectSession(object) {\n return typeof object.bridge !== \"undefined\";\n}\nexport function parseWalletConnectUri(str) {\n const pathStart = str.indexOf(\":\");\n const pathEnd = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol = str.substring(0, pathStart);\n const path = str.substring(pathStart + 1, pathEnd);\n function parseRequiredParams(path) {\n const separator = \"@\";\n const values = path.split(separator);\n const requiredParams = {\n handshakeTopic: values[0],\n version: parseInt(values[1], 10),\n };\n return requiredParams;\n }\n const requiredParams = parseRequiredParams(path);\n const queryString = typeof pathEnd !== \"undefined\" ? str.substr(pathEnd) : \"\";\n function parseQueryParams(queryString) {\n const result = parseQueryString(queryString);\n const parameters = {\n key: result.key || \"\",\n bridge: result.bridge || \"\",\n };\n return parameters;\n }\n const queryParams = parseQueryParams(queryString);\n const result = Object.assign(Object.assign({ protocol }, requiredParams), queryParams);\n return result;\n}\n//# sourceMappingURL=session.js.map","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { INTERNAL_ERROR, SERVER_ERROR_CODE_RANGE, RESERVED_ERROR_CODES, STANDARD_ERROR_MAP, } from \"./constants\";\nexport function isServerErrorCode(code) {\n return code <= SERVER_ERROR_CODE_RANGE[0] && code >= SERVER_ERROR_CODE_RANGE[1];\n}\nexport function isReservedErrorCode(code) {\n return RESERVED_ERROR_CODES.includes(code);\n}\nexport function isValidErrorCode(code) {\n return typeof code === \"number\";\n}\nexport function getError(type) {\n if (!Object.keys(STANDARD_ERROR_MAP).includes(type)) {\n return STANDARD_ERROR_MAP[INTERNAL_ERROR];\n }\n return STANDARD_ERROR_MAP[type];\n}\nexport function getErrorByCode(code) {\n const match = Object.values(STANDARD_ERROR_MAP).find(e => e.code === code);\n if (!match) {\n return STANDARD_ERROR_MAP[INTERNAL_ERROR];\n }\n return match;\n}\nexport function validateJsonRpcError(response) {\n if (typeof response.error.code === \"undefined\") {\n return { valid: false, error: \"Missing code for JSON-RPC error\" };\n }\n if (typeof response.error.message === \"undefined\") {\n return { valid: false, error: \"Missing message for JSON-RPC error\" };\n }\n if (!isValidErrorCode(response.error.code)) {\n return {\n valid: false,\n error: `Invalid error code type for JSON-RPC: ${response.error.code}`,\n };\n }\n if (isReservedErrorCode(response.error.code)) {\n const error = getErrorByCode(response.error.code);\n if (error.message !== STANDARD_ERROR_MAP[INTERNAL_ERROR].message &&\n response.error.message === error.message) {\n return {\n valid: false,\n error: `Invalid error code message for JSON-RPC: ${response.error.code}`,\n };\n }\n }\n return { valid: true };\n}\nexport function parseConnectionError(e, url, type) {\n return e.message.includes(\"getaddrinfo ENOTFOUND\") || e.message.includes(\"connect ECONNREFUSED\")\n ? new Error(`Unavailable ${type} RPC url at ${url}`)\n : e;\n}\n//# sourceMappingURL=error.js.map","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import * as env from \"@walletconnect/environment\";\nimport { ENCRYPT_OP, DECRYPT_OP, SIGN_OP, VERIFY_OP, AES_BROWSER_ALGO, AES_LENGTH, HMAC_BROWSER_ALGO, HMAC_BROWSER, HMAC_LENGTH, SHA256_BROWSER_ALGO, SHA512_BROWSER_ALGO, LENGTH_512, } from \"../constants\";\nexport function getAlgo(type) {\n return type === AES_BROWSER_ALGO\n ? { length: AES_LENGTH, name: AES_BROWSER_ALGO }\n : {\n hash: { name: HMAC_BROWSER_ALGO },\n name: HMAC_BROWSER,\n };\n}\nexport function getOps(type) {\n return type === AES_BROWSER_ALGO\n ? [ENCRYPT_OP, DECRYPT_OP]\n : [SIGN_OP, VERIFY_OP];\n}\nexport async function browserExportKey(cryptoKey, type = AES_BROWSER_ALGO) {\n const subtle = env.getSubtleCrypto();\n return new Uint8Array(await subtle.exportKey(\"raw\", cryptoKey));\n}\nexport async function browserImportKey(buffer, type = AES_BROWSER_ALGO) {\n return env.getSubtleCrypto().importKey(\"raw\", buffer, getAlgo(type), true, getOps(type));\n}\nexport async function browserAesEncrypt(iv, key, data) {\n const subtle = env.getSubtleCrypto();\n const cryptoKey = await browserImportKey(key, AES_BROWSER_ALGO);\n const result = await subtle.encrypt({\n iv,\n name: AES_BROWSER_ALGO,\n }, cryptoKey, data);\n return new Uint8Array(result);\n}\nexport async function browserAesDecrypt(iv, key, data) {\n const subtle = env.getSubtleCrypto();\n const cryptoKey = await browserImportKey(key, AES_BROWSER_ALGO);\n const result = await subtle.decrypt({\n iv,\n name: AES_BROWSER_ALGO,\n }, cryptoKey, data);\n return new Uint8Array(result);\n}\nexport async function browserHmacSha256Sign(key, data) {\n const subtle = env.getSubtleCrypto();\n const cryptoKey = await browserImportKey(key, HMAC_BROWSER);\n const signature = await subtle.sign({\n length: HMAC_LENGTH,\n name: HMAC_BROWSER,\n }, cryptoKey, data);\n return new Uint8Array(signature);\n}\nexport async function browserHmacSha512Sign(key, data) {\n const subtle = env.getSubtleCrypto();\n const cryptoKey = await browserImportKey(key, HMAC_BROWSER);\n const signature = await subtle.sign({\n length: LENGTH_512,\n name: HMAC_BROWSER,\n }, cryptoKey, data);\n return new Uint8Array(signature);\n}\nexport async function browserSha256(data) {\n const subtle = env.getSubtleCrypto();\n const result = await subtle.digest({\n name: SHA256_BROWSER_ALGO,\n }, data);\n return new Uint8Array(result);\n}\nexport async function browserSha512(data) {\n const subtle = env.getSubtleCrypto();\n const result = await subtle.digest({\n name: SHA512_BROWSER_ALGO,\n }, data);\n return new Uint8Array(result);\n}\n//# sourceMappingURL=browser.js.map","export * from \"./env\";\nexport * from \"./pkcs7\";\nexport * from \"./types\";\nexport * from \"./validators\";\n//# sourceMappingURL=index.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","import * as windowMetadata from \"@walletconnect/window-metadata\";\nimport * as windowGetters from \"@walletconnect/window-getters\";\nimport { detect, } from \"detect-browser\";\nexport function detectEnv(userAgent) {\n return detect(userAgent);\n}\nexport function detectOS() {\n const env = detectEnv();\n return env && env.os ? env.os : undefined;\n}\nexport function isAndroid() {\n const os = detectOS();\n return os ? os.toLowerCase().includes(\"android\") : false;\n}\nexport function isIOS() {\n const os = detectOS();\n return os\n ? os.toLowerCase().includes(\"ios\") ||\n (os.toLowerCase().includes(\"mac\") && navigator.maxTouchPoints > 1)\n : false;\n}\nexport function isMobile() {\n const os = detectOS();\n return os ? isAndroid() || isIOS() : false;\n}\nexport function isNode() {\n const env = detectEnv();\n const result = env && env.name ? env.name.toLowerCase() === \"node\" : false;\n return result;\n}\nexport function isBrowser() {\n const result = !isNode() && !!getNavigator();\n return result;\n}\nexport const getFromWindow = windowGetters.getFromWindow;\nexport const getFromWindowOrThrow = windowGetters.getFromWindowOrThrow;\nexport const getDocumentOrThrow = windowGetters.getDocumentOrThrow;\nexport const getDocument = windowGetters.getDocument;\nexport const getNavigatorOrThrow = windowGetters.getNavigatorOrThrow;\nexport const getNavigator = windowGetters.getNavigator;\nexport const getLocationOrThrow = windowGetters.getLocationOrThrow;\nexport const getLocation = windowGetters.getLocation;\nexport const getCryptoOrThrow = windowGetters.getCryptoOrThrow;\nexport const getCrypto = windowGetters.getCrypto;\nexport const getLocalStorageOrThrow = windowGetters.getLocalStorageOrThrow;\nexport const getLocalStorage = windowGetters.getLocalStorage;\nexport function getClientMeta() {\n return windowMetadata.getWindowMetadata();\n}\n//# sourceMappingURL=browser.js.map","import * as safeJson from \"@walletconnect/safe-json\";\nexport const safeJsonParse = safeJson.safeJsonParse;\nexport const safeJsonStringify = safeJson.safeJsonStringify;\n//# sourceMappingURL=json.js.map","import { safeJsonParse, safeJsonStringify } from \"./json\";\nimport { getLocalStorage } from \"./browser\";\nexport function setLocal(key, data) {\n const raw = safeJsonStringify(data);\n const local = getLocalStorage();\n if (local) {\n local.setItem(key, raw);\n }\n}\nexport function getLocal(key) {\n let data = null;\n let raw = null;\n const local = getLocalStorage();\n if (local) {\n raw = local.getItem(key);\n }\n data = raw ? safeJsonParse(raw) : raw;\n return data;\n}\nexport function removeLocal(key) {\n const local = getLocalStorage();\n if (local) {\n local.removeItem(key);\n }\n}\n//# sourceMappingURL=local.js.map","import { setLocal } from \"./local\";\nexport const mobileLinkChoiceKey = \"WALLETCONNECT_DEEPLINK_CHOICE\";\nexport function formatIOSMobile(uri, entry) {\n const encodedUri = encodeURIComponent(uri);\n return entry.universalLink\n ? `${entry.universalLink}/wc?uri=${encodedUri}`\n : entry.deepLink\n ? `${entry.deepLink}${entry.deepLink.endsWith(\":\") ? \"//\" : \"/\"}wc?uri=${encodedUri}`\n : \"\";\n}\nexport function saveMobileLinkInfo(data) {\n const focusUri = data.href.split(\"?\")[0];\n setLocal(mobileLinkChoiceKey, Object.assign(Object.assign({}, data), { href: focusUri }));\n}\nexport function getMobileRegistryEntry(registry, name) {\n return registry.filter((entry) => entry.name.toLowerCase().includes(name.toLowerCase()))[0];\n}\nexport function getMobileLinkRegistry(registry, whitelist) {\n let links = registry;\n if (whitelist) {\n links = whitelist.map((name) => getMobileRegistryEntry(registry, name)).filter(Boolean);\n }\n return links;\n}\n//# sourceMappingURL=mobile.js.map","const API_URL = \"https://registry.walletconnect.com\";\nexport function getWalletRegistryUrl() {\n return API_URL + \"/api/v2/wallets\";\n}\nexport function getDappRegistryUrl() {\n return API_URL + \"/api/v2/dapps\";\n}\nexport function formatMobileRegistryEntry(entry, platform = \"mobile\") {\n var _a;\n return {\n name: entry.name || \"\",\n shortName: entry.metadata.shortName || \"\",\n color: entry.metadata.colors.primary || \"\",\n logo: (_a = entry.image_url.sm) !== null && _a !== void 0 ? _a : \"\",\n universalLink: entry[platform].universal || \"\",\n deepLink: entry[platform].native || \"\",\n };\n}\nexport function formatMobileRegistry(registry, platform = \"mobile\") {\n return Object.values(registry)\n .filter(entry => !!entry[platform].universal || !!entry[platform].native)\n .map((entry) => formatMobileRegistryEntry(entry, platform));\n}\n//# sourceMappingURL=registry.js.map","export const LENGTH_0 = 0;\nexport const LENGTH_1 = 1;\nexport const LENGTH_16 = 16;\nexport const LENGTH_32 = 32;\nexport const LENGTH_64 = 64;\nexport const LENGTH_128 = 128;\nexport const LENGTH_256 = 256;\nexport const LENGTH_512 = 512;\nexport const LENGTH_1024 = 1024;\n//# sourceMappingURL=length.js.map","import { LENGTH_1, LENGTH_32, LENGTH_16, LENGTH_256 } from \"./length\";\nexport const AES_LENGTH = LENGTH_256;\nexport const HMAC_LENGTH = LENGTH_256;\nexport const AES_BROWSER_ALGO = \"AES-CBC\";\nexport const HMAC_BROWSER_ALGO = `SHA-${AES_LENGTH}`;\nexport const HMAC_BROWSER = \"HMAC\";\nexport const SHA256_BROWSER_ALGO = \"SHA-256\";\nexport const SHA512_BROWSER_ALGO = \"SHA-512\";\nexport const AES_NODE_ALGO = `aes-${AES_LENGTH}-cbc`;\nexport const HMAC_NODE_ALGO = `sha${HMAC_LENGTH}`;\nexport const SHA256_NODE_ALGO = \"sha256\";\nexport const SHA512_NODE_ALGO = \"sha512\";\nexport const RIPEMD160_NODE_ALGO = \"ripemd160\";\nexport const PREFIX_LENGTH = LENGTH_1;\nexport const KEY_LENGTH = LENGTH_32;\nexport const IV_LENGTH = LENGTH_16;\nexport const MAC_LENGTH = LENGTH_32;\n//# sourceMappingURL=default.js.map","export const ENCRYPT_OP = \"encrypt\";\nexport const DECRYPT_OP = \"decrypt\";\nexport const SIGN_OP = \"sign\";\nexport const VERIFY_OP = \"verify\";\n//# sourceMappingURL=operations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowser = exports.isNode = exports.isReactNative = void 0;\nfunction isReactNative() {\n return (typeof document === \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.product === \"ReactNative\");\n}\nexports.isReactNative = isReactNative;\nfunction isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexports.isNode = isNode;\nfunction isBrowser() {\n return !isReactNative() && !isNode();\n}\nexports.isBrowser = isBrowser;\n//# sourceMappingURL=env.js.map","import { getError, getErrorByCode, isReservedErrorCode } from \"./error\";\nimport { INTERNAL_ERROR, SERVER_ERROR } from \"./constants\";\nexport function payloadId() {\n const date = Date.now() * Math.pow(10, 3);\n const extra = Math.floor(Math.random() * Math.pow(10, 3));\n return date + extra;\n}\nexport function formatJsonRpcRequest(method, params, id) {\n return {\n id: id || payloadId(),\n jsonrpc: \"2.0\",\n method,\n params,\n };\n}\nexport function formatJsonRpcResult(id, result) {\n return {\n id,\n jsonrpc: \"2.0\",\n result,\n };\n}\nexport function formatJsonRpcError(id, error) {\n return {\n id,\n jsonrpc: \"2.0\",\n error: formatErrorMessage(error),\n };\n}\nexport function formatErrorMessage(error) {\n if (typeof error === \"undefined\") {\n return getError(INTERNAL_ERROR);\n }\n if (typeof error === \"string\") {\n error = Object.assign(Object.assign({}, getError(SERVER_ERROR)), { message: error });\n }\n if (isReservedErrorCode(error.code)) {\n error = getErrorByCode(error.code);\n }\n return error;\n}\n//# sourceMappingURL=format.js.map","export * from \"@walletconnect/jsonrpc-types\";\n//# sourceMappingURL=types.js.map","import { EventEmitter } from \"events\";\nimport { IJsonRpcProvider, isJsonRpcResponse, formatJsonRpcRequest, isJsonRpcError, } from \"@walletconnect/jsonrpc-utils\";\nexport class JsonRpcProvider extends IJsonRpcProvider {\n constructor(connection) {\n super(connection);\n this.events = new EventEmitter();\n this.hasRegisteredEventListeners = false;\n this.connection = this.setConnection(connection);\n if (this.connection.connected) {\n this.registerEventListeners();\n }\n }\n async connect(connection = this.connection) {\n await this.open(connection);\n }\n async disconnect() {\n await this.close();\n }\n on(event, listener) {\n this.events.on(event, listener);\n }\n once(event, listener) {\n this.events.once(event, listener);\n }\n off(event, listener) {\n this.events.off(event, listener);\n }\n removeListener(event, listener) {\n this.events.removeListener(event, listener);\n }\n async request(request, context) {\n return this.requestStrict(formatJsonRpcRequest(request.method, request.params || []), context);\n }\n async requestStrict(request, context) {\n return new Promise(async (resolve, reject) => {\n if (!this.connection.connected) {\n try {\n await this.open();\n }\n catch (e) {\n reject(e);\n }\n }\n this.events.on(`${request.id}`, response => {\n if (isJsonRpcError(response)) {\n reject(response.error.message);\n }\n else {\n resolve(response.result);\n }\n });\n try {\n await this.connection.send(request, context);\n }\n catch (e) {\n reject(e);\n }\n });\n }\n setConnection(connection = this.connection) {\n return connection;\n }\n onPayload(payload) {\n this.events.emit(\"payload\", payload);\n if (isJsonRpcResponse(payload)) {\n this.events.emit(`${payload.id}`, payload);\n }\n else {\n this.events.emit(\"message\", {\n type: payload.method,\n data: payload.params,\n });\n }\n }\n async open(connection = this.connection) {\n if (this.connection === connection && this.connection.connected)\n return;\n if (this.connection.connected)\n this.close();\n if (typeof connection === \"string\") {\n await this.connection.open(connection);\n connection = this.connection;\n }\n this.connection = this.setConnection(connection);\n await this.connection.open();\n this.registerEventListeners();\n this.events.emit(\"connect\");\n }\n async close() {\n await this.connection.close();\n }\n registerEventListeners() {\n if (this.hasRegisteredEventListeners)\n return;\n this.connection.on(\"payload\", (payload) => this.onPayload(payload));\n this.connection.on(\"close\", () => this.events.emit(\"disconnect\"));\n this.connection.on(\"error\", (error) => this.events.emit(\"error\", error));\n this.hasRegisteredEventListeners = true;\n }\n}\nexport default JsonRpcProvider;\n//# sourceMappingURL=provider.js.map","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","export * from \"@walletconnect/randombytes\";\nexport * from \"./aes\";\nexport * from \"./hmac\";\nexport * from \"./sha2\";\nexport * from \"../helpers\";\nexport * from \"../constants\";\n//# sourceMappingURL=index.js.map","import { browserAesDecrypt, browserAesEncrypt } from \"../lib/browser\";\nexport function aesCbcEncrypt(iv, key, data) {\n return browserAesEncrypt(iv, key, data);\n}\nexport function aesCbcDecrypt(iv, key, data) {\n return browserAesDecrypt(iv, key, data);\n}\n//# sourceMappingURL=aes.js.map","import { browserHmacSha256Sign, browserHmacSha512Sign } from \"../lib/browser\";\nimport { isConstantTime } from \"../helpers\";\nexport async function hmacSha256Sign(key, msg) {\n const result = await browserHmacSha256Sign(key, msg);\n return result;\n}\nexport async function hmacSha256Verify(key, msg, sig) {\n const expectedSig = await browserHmacSha256Sign(key, msg);\n const result = isConstantTime(expectedSig, sig);\n return result;\n}\nexport async function hmacSha512Sign(key, msg) {\n const result = await browserHmacSha512Sign(key, msg);\n return result;\n}\nexport async function hmacSha512Verify(key, msg, sig) {\n const expectedSig = await browserHmacSha512Sign(key, msg);\n const result = isConstantTime(expectedSig, sig);\n return result;\n}\n//# sourceMappingURL=hmac.js.map","export * from \"@walletconnect/environment\";\n//# sourceMappingURL=env.js.map","export function assert(condition, message) {\n if (!condition) {\n throw new Error(message || \"Assertion failed\");\n }\n}\nexport function isConstantTime(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n let res = 0;\n for (let i = 0; i < arr1.length; i++) {\n res |= arr1[i] ^ arr2[i];\n }\n return res === 0;\n}\n//# sourceMappingURL=validators.js.map","var ECLevel = require('./error-correction-level')\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","var numeric = '[0-9]+'\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+'\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$')\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$')\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n var hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin\n\n var width = options.width && options.width >= 21 ? options.width : undefined\n var scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n var scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size\n var data = qr.modules.data\n var scale = exports.getScale(size, opts)\n var symbolSize = Math.floor((size + opts.margin * 2) * scale)\n var scaledMargin = opts.margin * scale\n var palette = [opts.color.light, opts.color.dark]\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4\n var pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale)\n var jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\nfunction getBrowerCrypto() {\n return (global === null || global === void 0 ? void 0 : global.crypto) || (global === null || global === void 0 ? void 0 : global.msCrypto) || {};\n}\nexports.getBrowerCrypto = getBrowerCrypto;\nfunction getSubtleCrypto() {\n const browserCrypto = getBrowerCrypto();\n return browserCrypto.subtle || browserCrypto.webkitSubtle;\n}\nexports.getSubtleCrypto = getSubtleCrypto;\nfunction isBrowserCryptoAvailable() {\n return !!getBrowerCrypto() && !!getSubtleCrypto();\n}\nexports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n//# sourceMappingURL=crypto.js.map","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url, hash] = splitOnFirst(input, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url.split('?')[0] || '',\n\t\t\tquery: parse(extract(input), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(input.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(input.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, input.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(input.url);\n\tif (input.fragmentIdentifier) {\n\t\thash = `#${encode(input.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","class NetworkMonitor {\n constructor() {\n this._eventEmitters = [];\n if (typeof window !== \"undefined\" && typeof window.addEventListener !== \"undefined\") {\n window.addEventListener(\"online\", () => this.trigger(\"online\"));\n window.addEventListener(\"offline\", () => this.trigger(\"offline\"));\n }\n }\n on(event, callback) {\n this._eventEmitters.push({\n event,\n callback,\n });\n }\n trigger(event) {\n let eventEmitters = [];\n if (event) {\n eventEmitters = this._eventEmitters.filter((eventEmitter) => eventEmitter.event === event);\n }\n eventEmitters.forEach((eventEmitter) => {\n eventEmitter.callback();\n });\n }\n}\nexport default NetworkMonitor;\n//# sourceMappingURL=network.js.map","'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export const WALLETCONNECT_LOGO_SVG_URL = `data:image/svg+xml,%3Csvg height='185' viewBox='0 0 300 185' width='300' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m61.4385429 36.2562612c48.9112241-47.8881663 128.2119871-47.8881663 177.1232091 0l5.886545 5.7634174c2.445561 2.3944081 2.445561 6.2765112 0 8.6709204l-20.136695 19.715503c-1.222781 1.1972051-3.2053 1.1972051-4.428081 0l-8.100584-7.9311479c-34.121692-33.4079817-89.443886-33.4079817-123.5655788 0l-8.6750562 8.4936051c-1.2227816 1.1972041-3.205301 1.1972041-4.4280806 0l-20.1366949-19.7155031c-2.4455612-2.3944092-2.4455612-6.2765122 0-8.6709204zm218.7677961 40.7737449 17.921697 17.546897c2.445549 2.3943969 2.445563 6.2764769.000031 8.6708899l-80.810171 79.121134c-2.445544 2.394426-6.410582 2.394453-8.85616.000062-.00001-.00001-.000022-.000022-.000032-.000032l-57.354143-56.154572c-.61139-.598602-1.60265-.598602-2.21404 0-.000004.000004-.000007.000008-.000011.000011l-57.3529212 56.154531c-2.4455368 2.394432-6.4105755 2.394472-8.8561612.000087-.0000143-.000014-.0000296-.000028-.0000449-.000044l-80.81241943-79.122185c-2.44556021-2.394408-2.44556021-6.2765115 0-8.6709197l17.92172963-17.5468673c2.4455602-2.3944082 6.4105989-2.3944082 8.8561602 0l57.3549775 56.155357c.6113908.598602 1.602649.598602 2.2140398 0 .0000092-.000009.0000174-.000017.0000265-.000024l57.3521031-56.155333c2.445505-2.3944633 6.410544-2.3945531 8.856161-.0002.000034.0000336.000068.0000673.000101.000101l57.354902 56.155432c.61139.598601 1.60265.598601 2.21404 0l57.353975-56.1543249c2.445561-2.3944092 6.410599-2.3944092 8.85616 0z' fill='%233b99fc'/%3E%3C/svg%3E`;","export const WALLETCONNECT_HEADER_TEXT = \"WalletConnect\";\n\nexport const ANIMATION_DURATION = 300;\nexport const DEFAULT_BUTTON_COLOR = \"rgb(64, 153, 255)\";\n\nexport const WALLETCONNECT_WRAPPER_ID = \"walletconnect-wrapper\";\nexport const WALLETCONNECT_STYLE_ID = \"walletconnect-style-sheet\";\nexport const WALLETCONNECT_MODAL_ID = \"walletconnect-qrcode-modal\";\nexport const WALLETCONNECT_CLOSE_BUTTON_ID = \"walletconnect-qrcode-close\";\nexport const WALLETCONNECT_CTA_TEXT_ID = \"walletconnect-qrcode-text\";\nexport const WALLETCONNECT_CONNECT_BUTTON_ID = \"walletconnect-connect-button\";\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\nimport { WALLETCONNECT_LOGO_SVG_URL } from \"../assets/logo\";\nimport { WALLETCONNECT_HEADER_TEXT, WALLETCONNECT_CLOSE_BUTTON_ID } from \"../constants\";\n\ninterface HeaderProps {\n onClose: any;\n}\n\nfunction Header(props: HeaderProps) {\n return (\n
\n \n

{WALLETCONNECT_HEADER_TEXT}

\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default Header;\n","import * as React from \"react\";\n\nimport { WALLETCONNECT_CONNECT_BUTTON_ID } from \"../constants\";\n\ninterface ConnectButtonProps {\n name: string;\n color: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction ConnectButton(props: ConnectButtonProps) {\n return (\n \n {props.name}\n \n );\n}\n\nexport default ConnectButton;\n","import * as React from \"react\";\nimport { CARET_SVG_URL } from \"../assets/caret\";\n\ninterface WalletButtonProps {\n color: string;\n name: string;\n logo: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletButton(props: WalletButtonProps) {\n const { color, href, name, logo, onClick } = props;\n return (\n \n

{name}

\n
\n
\n \n \n \n );\n}\n\nexport default WalletButton;\n","export const CARET_SVG_URL = `data:image/svg+xml,%3Csvg fill='none' height='18' viewBox='0 0 8 18' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath clip-rule='evenodd' d='m.586301.213898c-.435947.33907-.5144813.967342-.175411 1.403292l4.87831 6.27212c.28087.36111.28087.86677 0 1.22788l-4.878311 6.27211c-.33907.436-.260536 1.0642.175412 1.4033.435949.3391 1.064219.2605 1.403289-.1754l4.87832-6.2721c.84259-1.08336.84259-2.60034 0-3.68367l-4.87832-6.27212c-.33907-.4359474-.96734-.514482-1.403289-.175412z' fill='%233c4252' fill-rule='evenodd'/%3E%3C/svg%3E`;","import * as React from \"react\";\n\ninterface WalletIconProps {\n color: string;\n logo: string;\n href: string;\n name: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletIcon(props: WalletIconProps) {\n const { color, href, name, logo, onClick } = props;\n const fontSize = window.innerWidth < 768 ? `${name.length > 8 ? 2.5 : 2.7}vw` : \"inherit\";\n return (\n \n \n
\n {name}\n
\n \n );\n}\n\nexport default WalletIcon;\n","import * as React from \"react\";\nimport { IMobileRegistryEntry, IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { isAndroid, formatIOSMobile, saveMobileLinkInfo } from \"@walletconnect/browser-utils\";\n\nimport { DEFAULT_BUTTON_COLOR, WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport ConnectButton from \"./ConnectButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletButton from \"./WalletButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletIcon from \"./WalletIcon\";\nimport { TextMap } from \"../types\";\n\ninterface LinkDisplayProps {\n mobile: boolean;\n text: TextMap;\n uri: string;\n qrcodeModalOptions?: IQRCodeModalOptions;\n links: IMobileRegistryEntry[];\n errorMessage: string;\n}\n\nconst GRID_MIN_COUNT = 5;\nconst LINKS_PER_PAGE = 12;\n\nfunction LinkDisplay(props: LinkDisplayProps) {\n const android = isAndroid();\n const [input, setInput] = React.useState(\"\");\n const [filter, setFilter] = React.useState(\"\");\n const [page, setPage] = React.useState(1);\n const links = filter\n ? props.links.filter(link => link.name.toLowerCase().includes(filter.toLowerCase()))\n : props.links;\n const errorMessage = props.errorMessage;\n const grid = filter || links.length > GRID_MIN_COUNT;\n const pages = Math.ceil(links.length / LINKS_PER_PAGE);\n const range = [(page - 1) * LINKS_PER_PAGE + 1, page * LINKS_PER_PAGE];\n const pageLinks = links.length\n ? links.filter((_, index) => index + 1 >= range[0] && index + 1 <= range[1])\n : [];\n const hasPaging = !!(!android && pages > 1);\n let filterTimeout: any = undefined;\n function handleInput(e) {\n setInput(e.target.value);\n clearTimeout(filterTimeout);\n if (e.target.value) {\n filterTimeout = setTimeout(() => {\n setFilter(e.target.value);\n setPage(1);\n }, 1000);\n } else {\n setInput(\"\");\n setFilter(\"\");\n setPage(1);\n }\n }\n\n return (\n
\n

\n {android ? props.text.connect_mobile_wallet : props.text.choose_preferred_wallet}\n

\n {!android && (\n \n )}\n \n {!android ? (\n pageLinks.length ? (\n pageLinks.map((entry: IMobileRegistryEntry) => {\n const { color, name, shortName, logo } = entry;\n const href = formatIOSMobile(props.uri, entry);\n const handleClickIOS = React.useCallback(() => {\n saveMobileLinkInfo({\n name,\n href,\n });\n }, [pageLinks]);\n return !grid ? (\n \n ) : (\n \n );\n })\n ) : (\n <>\n

\n {errorMessage.length\n ? props.errorMessage\n : !!props.links.length && !links.length\n ? props.text.no_wallets_found\n : props.text.loading}\n

\n \n )\n ) : (\n {\n saveMobileLinkInfo({\n name: \"Unknown\",\n href: props.uri,\n });\n }, [])}\n />\n )}\n
\n {hasPaging && (\n
\n {Array(pages)\n .fill(0)\n .map((_, index) => {\n const pageNumber = index + 1;\n const selected = page === pageNumber;\n return (\n setPage(pageNumber)}\n >\n {pageNumber}\n \n );\n })}\n
\n )}\n \n );\n}\n\nexport default LinkDisplay;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\ninterface NotificationProps {\n message: string;\n}\n\nfunction Notification(props: NotificationProps) {\n const show = !!props.message.trim();\n return (\n
\n {props.message}\n
\n );\n}\n\nexport default Notification;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\nimport QRCode from \"qrcode\";\nimport copy from \"copy-to-clipboard\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Notification from \"./Notification\";\n\nimport { WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\nasync function formatQRCodeImage(data: string) {\n let result = \"\";\n const dataString = await QRCode.toString(data, { margin: 0, type: \"svg\" });\n if (typeof dataString === \"string\") {\n result = dataString.replace(\" {\n (async () => {\n setSvg(await formatQRCodeImage(props.uri));\n })();\n }, []);\n\n const copyToClipboard = () => {\n const success = copy(props.uri);\n if (success) {\n setNotification(props.text.copied_to_clipboard);\n setInterval(() => setNotification(\"\"), 1200);\n } else {\n setNotification(\"Error\");\n setInterval(() => setNotification(\"\"), 1200);\n }\n };\n\n return (\n
\n

\n {props.text.scan_qrcode_with_wallet}\n

\n
\n \n \n
\n );\n}\n\nexport default QRCodeDisplay;\n","import * as React from \"react\";\nimport {\n IMobileRegistryEntry,\n IQRCodeModalOptions,\n IAppRegistry,\n IMobileLinkInfo,\n} from \"@walletconnect/types\";\nimport {\n isMobile,\n isAndroid,\n formatIOSMobile,\n saveMobileLinkInfo,\n getMobileLinkRegistry,\n getWalletRegistryUrl,\n formatMobileRegistry,\n} from \"@walletconnect/browser-utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Header from \"./Header\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport LinkDisplay from \"./LinkDisplay\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport QRCodeDisplay from \"./QRCodeDisplay\";\n\nimport { WALLETCONNECT_MODAL_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\ninterface ModalProps {\n text: TextMap;\n uri: string;\n onClose: any;\n qrcodeModalOptions?: IQRCodeModalOptions;\n}\n\nfunction Modal(props: ModalProps) {\n const android = isAndroid();\n const mobile = isMobile();\n\n const whitelist = mobile\n ? props.qrcodeModalOptions && props.qrcodeModalOptions.mobileLinks\n ? props.qrcodeModalOptions.mobileLinks\n : undefined\n : props.qrcodeModalOptions && props.qrcodeModalOptions.desktopLinks\n ? props.qrcodeModalOptions.desktopLinks\n : undefined;\n const [loading, setLoading] = React.useState(false);\n const [fetched, setFetched] = React.useState(false);\n const [displayQRCode, setDisplayQRCode] = React.useState(!mobile);\n const displayProps = {\n mobile,\n text: props.text,\n uri: props.uri,\n qrcodeModalOptions: props.qrcodeModalOptions,\n };\n\n const [singleLinkHref, setSingleLinkHref] = React.useState(\"\");\n const [hasSingleLink, setHasSingleLink] = React.useState(false);\n const [links, setLinks] = React.useState([]);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n\n const getLinksIfNeeded = () => {\n if (fetched || loading || (whitelist && !whitelist.length) || links.length > 0) {\n return;\n }\n\n React.useEffect(() => {\n const initLinks = async () => {\n if (android) return;\n setLoading(true);\n try {\n const url =\n props.qrcodeModalOptions && props.qrcodeModalOptions.registryUrl\n ? props.qrcodeModalOptions.registryUrl\n : getWalletRegistryUrl();\n const registryResponse = await fetch(url)\n const registry = (await registryResponse.json()).listings as IAppRegistry;\n const platform = mobile ? \"mobile\" : \"desktop\";\n const _links = getMobileLinkRegistry(formatMobileRegistry(registry, platform), whitelist);\n setLoading(false);\n setFetched(true);\n setErrorMessage(!_links.length ? props.text.no_supported_wallets : \"\");\n setLinks(_links);\n const hasSingleLink = _links.length === 1;\n if (hasSingleLink) {\n setSingleLinkHref(formatIOSMobile(props.uri, _links[0]));\n setDisplayQRCode(true);\n }\n setHasSingleLink(hasSingleLink);\n } catch (e) {\n setLoading(false);\n setFetched(true);\n setErrorMessage(props.text.something_went_wrong);\n console.error(e); // eslint-disable-line no-console\n }\n };\n initLinks();\n });\n };\n\n getLinksIfNeeded();\n\n const rightSelected = mobile ? displayQRCode : !displayQRCode;\n return (\n
\n
\n
\n {hasSingleLink && displayQRCode ? (\n
\n saveMobileLinkInfo({ name: links[0].name, href: singleLinkHref })}\n href={singleLinkHref}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.text.connect_with + \" \" + (hasSingleLink ? links[0].name : \"\") + \" ›\"}\n \n
\n ) : android || loading || (!loading && links.length) ? (\n \n \n ) : null}\n\n
\n {displayQRCode || (!android && !loading && !links.length) ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n}\n\nexport default Modal;\n","import { TextMap } from \"../types\";\n\nconst de: TextMap = {\n choose_preferred_wallet: \"Wähle bevorzugte Wallet\",\n connect_mobile_wallet: \"Verbinde mit Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scanne den QR-code mit einer WalletConnect kompatiblen Wallet\",\n connect: \"Verbinden\",\n qrcode: \"QR-Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"In die Zwischenablage kopieren\",\n copied_to_clipboard: \"In die Zwischenablage kopiert!\",\n connect_with: \"Verbinden mit Hilfe von\",\n loading: \"Laden...\",\n something_went_wrong: \"Etwas ist schief gelaufen\",\n no_supported_wallets: \"Es gibt noch keine unterstützten Wallet\",\n no_wallets_found: \"keine Wallet gefunden\",\n};\n\nexport default de;\n","import { TextMap } from \"../types\";\n\nimport de from \"./de\";\nimport en from \"./en\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport ko from \"./ko\";\nimport pt from \"./pt\";\nimport zh from \"./zh\";\nimport fa from \"./fa\";\n\nconst languages: { [lang: string]: TextMap } = { de, en, es, fr, ko, pt, zh, fa };\n\nexport default languages;\n","import { TextMap } from \"../types\";\n\nconst en: TextMap = {\n choose_preferred_wallet: \"Choose your preferred wallet\",\n connect_mobile_wallet: \"Connect to Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scan QR code with a WalletConnect-compatible wallet\",\n connect: \"Connect\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copy to clipboard\",\n copied_to_clipboard: \"Copied to clipboard!\",\n connect_with: \"Connect with\",\n loading: \"Loading...\",\n something_went_wrong: \"Something went wrong\",\n no_supported_wallets: \"There are no supported wallets yet\",\n no_wallets_found: \"No wallets found\",\n};\n\nexport default en;\n","import { TextMap } from \"../types\";\n\nconst es: TextMap = {\n choose_preferred_wallet: \"Elige tu billetera preferida\",\n connect_mobile_wallet: \"Conectar a billetera móvil\",\n scan_qrcode_with_wallet: \"Escanea el código QR con una billetera compatible con WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvil\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Conectar mediante\",\n loading: \"Cargando...\",\n something_went_wrong: \"Algo salió mal\",\n no_supported_wallets: \"Todavía no hay billeteras compatibles\",\n no_wallets_found: \"No se encontraron billeteras\",\n};\n\nexport default es;\n","import { TextMap } from \"../types\";\n\nconst fr: TextMap = {\n choose_preferred_wallet: \"Choisissez votre portefeuille préféré\",\n connect_mobile_wallet: \"Se connecter au portefeuille mobile\",\n scan_qrcode_with_wallet: \"Scannez le QR code avec un portefeuille compatible WalletConnect\",\n connect: \"Se connecter\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copier\",\n copied_to_clipboard: \"Copié!\",\n connect_with: \"Connectez-vous à l'aide de\",\n loading: \"Chargement...\",\n something_went_wrong: \"Quelque chose a mal tourné\",\n no_supported_wallets: \"Il n'y a pas encore de portefeuilles pris en charge\",\n no_wallets_found: \"Aucun portefeuille trouvé\",\n};\n\nexport default fr;\n","import { TextMap } from \"../types\";\n\nconst ko: TextMap = {\n choose_preferred_wallet: \"원하는 지갑을 선택하세요\",\n connect_mobile_wallet: \"모바일 지갑과 연결\",\n scan_qrcode_with_wallet: \"WalletConnect 지원 지갑에서 QR코드를 스캔하세요\",\n connect: \"연결\",\n qrcode: \"QR 코드\",\n mobile: \"모바일\",\n desktop: \"데스크탑\",\n copy_to_clipboard: \"클립보드에 복사\",\n copied_to_clipboard: \"클립보드에 복사되었습니다!\",\n connect_with: \"와 연결하다\",\n loading: \"로드 중...\",\n something_went_wrong: \"문제가 발생했습니다.\",\n no_supported_wallets: \"아직 지원되는 지갑이 없습니다\",\n no_wallets_found: \"지갑을 찾을 수 없습니다\",\n};\n\nexport default ko;\n","import { TextMap } from \"../types\";\n\nconst pt: TextMap = {\n choose_preferred_wallet: \"Escolha sua carteira preferida\",\n connect_mobile_wallet: \"Conectar-se à carteira móvel\",\n scan_qrcode_with_wallet: \"Ler o código QR com uma carteira compatível com WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvel\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Ligar por meio de\",\n loading: \"Carregamento...\",\n something_went_wrong: \"Algo correu mal\",\n no_supported_wallets: \"Ainda não há carteiras suportadas\",\n no_wallets_found: \"Nenhuma carteira encontrada\",\n};\n\nexport default pt;\n","import { TextMap } from \"../types\";\n\nconst zh: TextMap = {\n choose_preferred_wallet: \"选择你的钱包\",\n connect_mobile_wallet: \"连接至移动端钱包\",\n scan_qrcode_with_wallet: \"使用兼容 WalletConnect 的钱包扫描二维码\",\n connect: \"连接\",\n qrcode: \"二维码\",\n mobile: \"移动\",\n desktop: \"桌面\",\n copy_to_clipboard: \"复制到剪贴板\",\n copied_to_clipboard: \"复制到剪贴板成功!\",\n connect_with: \"通过以下方式连接\",\n loading: \"正在加载...\",\n something_went_wrong: \"出了问题\",\n no_supported_wallets: \"目前还没有支持的钱包\",\n no_wallets_found: \"没有找到钱包\",\n};\n\nexport default zh;\n","import { TextMap } from \"../types\";\n\nconst fa: TextMap = {\n choose_preferred_wallet: \"کیف پول مورد نظر خود را انتخاب کنید\",\n connect_mobile_wallet: \"به کیف پول موبایل وصل شوید\",\n scan_qrcode_with_wallet: \"کد QR را با یک کیف پول سازگار با WalletConnect اسکن کنید\",\n connect: \"اتصال\",\n qrcode: \"کد QR\",\n mobile: \"سیار\",\n desktop: \"دسکتاپ\",\n copy_to_clipboard: \"کپی به کلیپ بورد\",\n copied_to_clipboard: \"در کلیپ بورد کپی شد!\",\n connect_with: \"ارتباط با\",\n loading: \"...بارگذاری\",\n something_went_wrong: \"مشکلی پیش آمد\",\n no_supported_wallets: \"هنوز هیچ کیف پول پشتیبانی شده ای وجود ندارد\",\n no_wallets_found: \"هیچ کیف پولی پیدا نشد\",\n};\n\nexport default fa;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n// @ts-ignore\nimport * as ReactDOM from \"react-dom\";\nimport { getDocumentOrThrow, getNavigatorOrThrow } from \"@walletconnect/browser-utils\";\n\nimport { WALLETCONNECT_STYLE_SHEET } from \"./assets/style\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Modal from \"./components/Modal\";\nimport Languages from \"./languages\";\nimport {\n ANIMATION_DURATION,\n WALLETCONNECT_WRAPPER_ID,\n WALLETCONNECT_MODAL_ID,\n WALLETCONNECT_STYLE_ID,\n} from \"./constants\";\nimport { IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { TextMap } from \"./types\";\n\nfunction injectStyleSheet() {\n const doc = getDocumentOrThrow();\n const prev = doc.getElementById(WALLETCONNECT_STYLE_ID);\n if (prev) {\n doc.head.removeChild(prev);\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"id\", WALLETCONNECT_STYLE_ID);\n style.innerText = WALLETCONNECT_STYLE_SHEET;\n doc.head.appendChild(style);\n}\n\nfunction renderWrapper(): HTMLDivElement {\n const doc = getDocumentOrThrow();\n const wrapper = doc.createElement(\"div\");\n wrapper.setAttribute(\"id\", WALLETCONNECT_WRAPPER_ID);\n doc.body.appendChild(wrapper);\n return wrapper;\n}\n\nfunction triggerCloseAnimation(): void {\n const doc = getDocumentOrThrow();\n const modal = doc.getElementById(WALLETCONNECT_MODAL_ID);\n if (modal) {\n modal.className = modal.className.replace(\"fadeIn\", \"fadeOut\");\n setTimeout(() => {\n const wrapper = doc.getElementById(WALLETCONNECT_WRAPPER_ID);\n if (wrapper) {\n doc.body.removeChild(wrapper);\n }\n }, ANIMATION_DURATION);\n }\n}\n\nfunction getWrappedCallback(cb: any): any {\n return () => {\n triggerCloseAnimation();\n if (cb) {\n cb();\n }\n };\n}\n\nfunction getText(): TextMap {\n const lang = getNavigatorOrThrow().language.split(\"-\")[0] || \"en\";\n return Languages[lang] || Languages[\"en\"];\n}\n\nexport function open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n injectStyleSheet();\n const wrapper = renderWrapper();\n ReactDOM.render(\n ,\n wrapper,\n );\n}\n\nexport function close() {\n triggerCloseAnimation();\n}\n","export const WALLETCONNECT_STYLE_SHEET = `:root {\n --animation-duration: 300ms;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.animated {\n animation-duration: var(--animation-duration);\n animation-fill-mode: both;\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n\n.fadeOut {\n animation-name: fadeOut;\n}\n\n#walletconnect-wrapper {\n -webkit-user-select: none;\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n left: 0;\n pointer-events: none;\n position: fixed;\n top: 0;\n user-select: none;\n width: 100%;\n z-index: 99999999999999;\n}\n\n.walletconnect-modal__headerLogo {\n height: 21px;\n}\n\n.walletconnect-modal__header p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n align-items: flex-start;\n display: flex;\n flex: 1;\n margin-left: 5px;\n}\n\n.walletconnect-modal__close__wrapper {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 10000;\n background: white;\n border-radius: 26px;\n padding: 6px;\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n cursor: pointer;\n}\n\n.walletconnect-modal__close__icon {\n position: relative;\n top: 7px;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(45deg);\n}\n\n.walletconnect-modal__close__line1 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n}\n\n.walletconnect-modal__close__line2 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n transform: rotate(90deg);\n}\n\n.walletconnect-qrcode__base {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background: rgba(37, 41, 46, 0.95);\n height: 100%;\n left: 0;\n pointer-events: auto;\n position: fixed;\n top: 0;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n will-change: opacity;\n padding: 40px;\n box-sizing: border-box;\n}\n\n.walletconnect-qrcode__text {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 10px 0 20px 0;\n text-align: center;\n width: 100%;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-qrcode__text {\n font-size: 4vw;\n }\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-qrcode__text {\n font-size: 14px;\n }\n}\n\n.walletconnect-qrcode__image {\n width: calc(100% - 30px);\n box-sizing: border-box;\n cursor: none;\n margin: 0 auto;\n}\n\n.walletconnect-qrcode__notification {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n font-size: 16px;\n padding: 16px 20px;\n border-radius: 16px;\n text-align: center;\n transition: all 0.1s ease-in-out;\n background: white;\n color: black;\n margin-bottom: -60px;\n opacity: 0;\n}\n\n.walletconnect-qrcode__notification.notification__show {\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__header {\n height: 130px;\n }\n .walletconnect-modal__base {\n overflow: auto;\n }\n}\n\n@media only screen and (min-device-width: 415px) and (max-width: 768px) {\n #content {\n max-width: 768px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 375px) and (max-width: 415px) {\n #content {\n max-width: 414px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 320px) and (max-width: 375px) {\n #content {\n max-width: 375px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (max-width: 320px) {\n #content {\n max-width: 320px;\n box-sizing: border-box;\n }\n}\n\n.walletconnect-modal__base {\n -webkit-font-smoothing: antialiased;\n background: #ffffff;\n border-radius: 24px;\n box-shadow: 0 10px 50px 5px rgba(0, 0, 0, 0.4);\n font-family: ui-rounded, \"SF Pro Rounded\", \"SF Pro Text\", medium-content-sans-serif-font,\n -apple-system, BlinkMacSystemFont, ui-sans-serif, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell,\n \"Open Sans\", \"Helvetica Neue\", sans-serif;\n margin-top: 41px;\n padding: 24px 24px 22px;\n pointer-events: auto;\n position: relative;\n text-align: center;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n will-change: transform;\n overflow: visible;\n transform: translateY(-50%);\n top: 50%;\n max-width: 500px;\n margin: auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__base {\n padding: 24px 12px;\n }\n}\n\n.walletconnect-modal__base .hidden {\n transform: translateY(150%);\n transition: 0.125s cubic-bezier(0.4, 0, 1, 1);\n}\n\n.walletconnect-modal__header {\n align-items: center;\n display: flex;\n height: 26px;\n left: 0;\n justify-content: space-between;\n position: absolute;\n top: -42px;\n width: 100%;\n}\n\n.walletconnect-modal__base .wc-logo {\n align-items: center;\n display: flex;\n height: 26px;\n margin-top: 15px;\n padding-bottom: 15px;\n pointer-events: auto;\n}\n\n.walletconnect-modal__base .wc-logo div {\n background-color: #3399ff;\n height: 21px;\n margin-right: 5px;\n mask-image: url(\"images/wc-logo.svg\") center no-repeat;\n width: 32px;\n}\n\n.walletconnect-modal__base .wc-logo p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.walletconnect-modal__base h2 {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 0 0 19px 0;\n text-align: center;\n width: 100%;\n}\n\n.walletconnect-modal__base__row {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n align-items: center;\n border-radius: 20px;\n cursor: pointer;\n display: flex;\n height: 56px;\n justify-content: space-between;\n padding: 0 15px;\n position: relative;\n margin: 0px 0px 8px;\n text-align: left;\n transition: 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n text-decoration: none;\n}\n\n.walletconnect-modal__base__row:hover {\n background: rgba(60, 66, 82, 0.06);\n}\n\n.walletconnect-modal__base__row:active {\n background: rgba(60, 66, 82, 0.06);\n transform: scale(0.975);\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.walletconnect-modal__base__row__h3 {\n color: #25292e;\n font-size: 20px;\n font-weight: 700;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.walletconnect-modal__base__row__right {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n\n.walletconnect-modal__base__row__right__app-icon {\n border-radius: 8px;\n height: 34px;\n margin: 0 11px 2px 0;\n width: 34px;\n background-size: 100%;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-modal__base__row__right__caret {\n height: 18px;\n opacity: 0.3;\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n width: 8px;\n will-change: opacity;\n}\n\n.walletconnect-modal__base__row:hover .caret,\n.walletconnect-modal__base__row:active .caret {\n opacity: 0.6;\n}\n\n.walletconnect-modal__mobile__toggle {\n width: 80%;\n display: flex;\n margin: 0 auto;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n margin-bottom: 18px;\n background: #d4d5d9;\n}\n\n.walletconnect-modal__single_wallet {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 18px;\n}\n\n.walletconnect-modal__single_wallet a {\n cursor: pointer;\n color: rgb(64, 153, 255);\n font-size: 21px;\n font-weight: 800;\n text-decoration: none !important;\n margin: 0 auto;\n}\n\n.walletconnect-modal__mobile__toggle_selector {\n width: calc(50% - 8px);\n background: white;\n position: absolute;\n border-radius: 5px;\n height: calc(100% - 8px);\n top: 4px;\n transition: all 0.2s ease-in-out;\n transform: translate3d(4px, 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle.right__selected .walletconnect-modal__mobile__toggle_selector {\n transform: translate3d(calc(100% + 12px), 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle a {\n font-size: 12px;\n width: 50%;\n text-align: center;\n padding: 8px;\n margin: 0;\n font-weight: 600;\n z-index: 1;\n}\n\n.walletconnect-modal__footer {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__footer {\n margin-top: 5vw;\n }\n}\n\n.walletconnect-modal__footer a {\n cursor: pointer;\n color: #898d97;\n font-size: 15px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__footer a {\n font-size: 14px;\n }\n}\n\n.walletconnect-connect__buttons__wrapper {\n max-height: 44vh;\n}\n\n.walletconnect-connect__buttons__wrapper__android {\n margin: 50% 0;\n}\n\n.walletconnect-connect__buttons__wrapper__wrap {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin: 10px 0;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__buttons__wrapper__wrap {\n margin-top: 40px;\n }\n}\n\n.walletconnect-connect__button {\n background-color: rgb(64, 153, 255);\n padding: 12px;\n border-radius: 8px;\n text-decoration: none;\n color: rgb(255, 255, 255);\n font-weight: 500;\n}\n\n.walletconnect-connect__button__icon_anchor {\n cursor: pointer;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: 8px;\n width: 42px;\n justify-self: center;\n flex-direction: column;\n text-decoration: none !important;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-connect__button__icon_anchor {\n margin: 4px;\n }\n}\n\n.walletconnect-connect__button__icon {\n border-radius: 10px;\n height: 42px;\n margin: 0;\n width: 42px;\n background-size: cover !important;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-connect__button__text {\n color: #424952;\n font-size: 2.7vw;\n text-decoration: none !important;\n padding: 0;\n margin-top: 1.8vw;\n font-weight: 600;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__button__text {\n font-size: 16px;\n margin-top: 12px;\n }\n}\n\n.walletconnect-search__input {\n border: none;\n background: #d4d5d9;\n border-style: none;\n padding: 8px 16px;\n outline: none;\n font-style: normal;\n font-stretch: normal;\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 16px);\n margin: 0;\n margin-bottom: 8px;\n}\n`;","import QRCode from \"qrcode\";\n\nexport function open(uri: string) {\n // eslint-disable-next-line no-console\n QRCode.toString(uri, { type: \"terminal\" }).then(console.log);\n}\n\nexport function close() {\n // empty\n}\n","\nvar canPromise = require('./can-promise')\n\nvar QRCode = require('./core/qrcode')\nvar CanvasRenderer = require('./renderer/canvas')\nvar SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n var args = [].slice.call(arguments, 1)\n var argsNum = args.length\n var isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n var data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","var BufferUtil = require('../utils/buffer')\nvar Utils = require('./utils')\nvar ECLevel = require('./error-correction-level')\nvar BitBuffer = require('./bit-buffer')\nvar BitMatrix = require('./bit-matrix')\nvar AlignmentPattern = require('./alignment-pattern')\nvar FinderPattern = require('./finder-pattern')\nvar MaskPattern = require('./mask-pattern')\nvar ECCode = require('./error-correction-code')\nvar ReedSolomonEncoder = require('./reed-solomon-encoder')\nvar Version = require('./version')\nvar FormatInfo = require('./format-info')\nvar Mode = require('./mode')\nvar Segments = require('./segments')\nvar isArray = require('isarray')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size\n var pos = FinderPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size\n var bits = Version.getEncodedBits(version)\n var row, col, mod\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n var i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size\n var inc = -1\n var row = size - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount)\n\n var offset = 0\n var dcData = new Array(ecTotalBlocks)\n var ecData = new Array(ecTotalBlocks)\n var maxDataSize = 0\n var buffer = BufferUtil.from(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = BufferUtil.alloc(totalCodewords)\n var index = 0\n var i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments\n\n if (isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n var estimatedVersion = version\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments,\n errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n var moduleCount = Utils.getSymbolSize(version)\n var modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M\n var version\n var mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","var BufferUtil = require('../utils/buffer')\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = BufferUtil.alloc(size * size)\n this.reservedBit = BufferUtil.alloc(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nvar getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2\n var size = getSymbolSize(version)\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n var positions = [size - 7] // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var coords = []\n var pos = exports.getRowColCoords(version)\n var posLength = pos.length\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","var getSymbolSize = require('./utils').getSymbolSize\nvar FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n var size = data.size\n var points = 0\n var sameCountCol = 0\n var sameCountRow = 0\n var lastCol = null\n var lastRow = null\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n var size = data.size\n var points = 0\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n var size = data.size\n var points = 0\n var bitsCol = 0\n var bitsRow = 0\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n var darkCount = 0\n var modulesCount = data.data.length\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n var size = data.size\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(exports.Patterns).length\n var bestPattern = 0\n var lowerPenalty = Infinity\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n var penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","var BufferUtil = require('../utils/buffer')\nvar Polynomial = require('./polynomial')\nvar Buffer = require('buffer').Buffer\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = BufferUtil.alloc(this.degree)\n var paddedData = Buffer.concat([data, pad], data.length + this.degree)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length\n if (start > 0) {\n var buff = BufferUtil.alloc(this.degree)\n remainder.copy(buff, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","var BufferUtil = require('../utils/buffer')\nvar GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n var coeff = BufferUtil.alloc(p1.length + p2.length - 1)\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n var result = BufferUtil.from(divident)\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0]\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n var offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n var poly = BufferUtil.from([1])\n for (var i = 0; i < degree; i++) {\n poly = exports.mul(poly, [1, GF.exp(i)])\n }\n\n return poly\n}\n","var BufferUtil = require('../utils/buffer')\n\nvar EXP_TABLE = BufferUtil.alloc(512)\nvar LOG_TABLE = BufferUtil.alloc(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n var x = 1\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","var Utils = require('./utils')\nvar ECCode = require('./error-correction-code')\nvar ECLevel = require('./error-correction-level')\nvar Mode = require('./mode')\nvar VersionCheck = require('./version-check')\nvar isArray = require('isarray')\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nvar G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n var seg\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","var Utils = require('./utils')\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nvar G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask)\n var d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","var Mode = require('./mode')\nvar NumericData = require('./numeric-data')\nvar AlphanumericData = require('./alphanumeric-data')\nvar ByteData = require('./byte-data')\nvar KanjiData = require('./kanji-data')\nvar Regex = require('./regex')\nvar Utils = require('./utils')\nvar dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = []\n var result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n var byteSegs\n var kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = []\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {}\n var graph = {'start': {}}\n var prevNodeIds = ['start']\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i]\n var currentNodeIds = []\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j]\n var key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode\n var bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n var nodes = buildNodes(segs)\n var graph = buildGraph(nodes, version)\n var path = dijkstra.find_path(graph.map, 'start', 'end')\n\n var optimizedSegs = []\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","var Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","var Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","var BufferUtil = require('../utils/buffer')\nvar Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = BufferUtil.from(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","var Mode = require('./mode')\nvar Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","var Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n var opts = options\n var canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n var size = Utils.getImageWidth(qrData.modules.size, opts)\n\n var ctx = canvasEl.getContext('2d')\n var image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n var opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n var canvasEl = exports.render(qrData, canvas, opts)\n\n var type = opts.type || 'image/png'\n var rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","var Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255\n var str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = ''\n var moveBy = 0\n var newRow = false\n var lineLength = 0\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size)\n var row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n var opts = Utils.getOptions(options)\n var size = qrData.modules.size\n var data = qrData.modules.data\n var qrcodesize = size + opts.margin * 2\n\n var bg = !opts.color.light.a\n ? ''\n : ''\n\n var path =\n ''\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n var svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tdelete props.defaultValue;\n\t\t\t}\n\n\t\t\t// Add support for array select values: