{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/styles/summernote-bs3.scss","webpack:///./src/js/bs3/ui.js","webpack:///./src/js/bs3/settings.js"],"names":["Renderer","constructor","markup","children","options","callback","render","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","length","append","create","arguments","Array","isArray","summernote","lang","extend","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","define","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","isFontInstalled","testFontName","testText","testSize","canvas","document","createElement","context","getContext","originalWidth","measureText","width","userAgent","navigator","isMSIE","test","browserVersion","matches","exec","parseFloat","isEdge","hasCodeMirror","window","CodeMirror","isSupportTouch","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isW3CRangeSupport","createRange","eq","itemA","itemB","eq2","peq2","propName","ok","fail","not","f","apply","and","fA","fB","item","self","a","invoke","obj","method","idCounter","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","key","hasOwnProperty","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","expression","head","array","last","initial","slice","tail","pred","idx","len","all","contains","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aTail","aLast","compact","aResult","push","unique","results","next","prev","NBSP_CHAR","String","fromCharCode","ZERO_WIDTH_NBSP_CHAR","isEditable","node","hasClass","isControlSizing","makePredByNodeName","nodeName","isText","nodeType","isElement","isVoid","isPara","isHeading","isPre","isLi","isPurePara","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isParaInline","ancestor","isBodyInline","isBody","isClosestSibling","nodeA","nodeB","nextSibling","previousSibling","withClosestSiblings","siblings","blankHTML","env","nodeLength","nodeValue","childNodes","deepestChildIsEmpty","firstElementChild","innerHTML","paddingBlankHTML","parentNode","singleChildAncestor","listAncestor","ancestors","el","lastAncestor","filter","commonAncestor","n","listPrev","nodes","listNext","listDescendant","descendants","fnWalk","current","wrap","wrapperName","parent","wrapper","insertBefore","appendChild","insertAfter","preceding","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","isLeftEdgePointOf","isRightEdgePointOf","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","isSamePoint","pointA","pointB","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","isSkipOffset","makeOffsetPath","reverse","fromOffsetPath","offsets","i","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","root","splitPoint","topAncestor","splitRoot","container","pivot","createText","text","createTextNode","isRemoveChild","removeNode","removeChild","removeWhile","replace","newNode","cssText","isTextarea","value","stripLinebreaks","val","isNewlineOnBlock","regexTag","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","Object","keys","detachEvents","off","isCustomStyleTag","classList","blank","emptyPara","isBlock","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","isEmptyAnchor","Context","$note","ui","memos","modules","layoutInfo","initialize","createLayout","_initialize","hide","destroy","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","module","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","undefined","codable","editable","enable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","createInvokeHandlerAndUpdateState","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","textRangeToPoint","textRange","isStart","parentElement","tester","body","createTextRange","prevContainer","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","dummy","cont","pointToTextRange","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","info","moveStart","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","nativeRange","w3cRange","setStart","setEnd","Math","min","getPoints","getStartPoint","getEndPoint","nativeRng","selection","getSelection","rangeCount","removeAllRanges","addRange","scrollIntoView","offsetTop","abs","normalize","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","isCollapsed","includeAncestor","fullyContains","leftEdgeNodes","expand","startAncestor","endAncestor","boundaryPoints","isSameContainer","deleteContents","rng","emptyParents","wrapBodyInlineWithPara","inlineSiblings","concat","para","insertNode","pasteHTML","contentsContainer","toString","getWordRange","findAfter","getWordsRange","isNotTextPoint","getWordsMatchRange","regex","index","bookmark","s","path","e","paraBookmark","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","readFileAsDataURL","file","Deferred","deferred","FileReader","onload","dataURL","resolve","onerror","err","reject","readAsDataURL","promise","createImage","$img","one","detach","css","display","appendTo","History","$editable","stack","stackOffset","makeSnapshot","range","emptyBookmark","applySnapshot","snapshot","rewind","recordUndo","commit","Style","jQueryCSS","$obj","propertyNames","propertyName","fromNode","properties","styleInfo","fontSize","parseInt","stylePara","styleNodes","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","queryCommandState","queryCommandValue","orderedTypes","isUnordered","lineHeight","toFixed","anchor","Bullet","insertOrderedList","toggleList","insertUnorderedList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","insertTab","tabsize","tab","insertParagraph","nextPara","blockquoteBreakingLevel","emptyAnchors","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setStartPoint","tagName","console","error","colPos","cellIndex","rowPos","rowIndex","setVirtualTablePosition","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","createVirtualTable","rows","cells","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","init","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","Table","isShift","nextCell","addRow","currentTr","trAttributes","recoverAttributes","vTable","actions","idCell","currentCell","tdAttributes","baseCellTr","isTopFromRowSpan","newTd","removeAttr","setAttribute","before","lastTrIndex","after","addCol","rowsGroup","actionIndex","resultStr","attrList","specified","deleteRow","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","deleteCol","hasColspan","createTable","colCount","rowCount","tds","tdHTML","idxCol","trs","trHTML","idxRow","$table","tableClassName","deleteTable","KEY_BOGUS","Editor","$editor","lastRange","typing","untab","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","onApplyCustomStyle","call","onFormatBlock","hrNode","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","startRange","endRange","colorInfo","foreColor","backColor","insertTable","dim","dimension","removeMedia","restoreTarget","floatMe","toggleClass","resize","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","spellCheck","disableGrammar","airMode","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","saveRange","thenCollapse","restoreRange","saveTarget","clearTarget","styleFromNode","isPreventTrigger","normalizeContent","tabSize","insertImage","src","param","then","$image","show","insertImagesAsDataURL","files","filename","maximumImageFileSize","insertImagesOrCallback","onImageUpload","getSelectedText","currentRange","spans","firstSpan","noteStatusOutput","getLinkInfo","$anchor","resizeTo","bKeepRatio","imageSize","newRatio","y","x","ratio","hasFocus","is","empty","Clipboard","pasteByEvent","bind","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","sync","save","toggle","deactivate","activate","purify","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","codemirror","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","isChange","EDITABLE_PADDING","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","defaultScheme","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","linkTargetBlank","wordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","Buttons","invertedKeyMap","representShortcut","editorMethod","button","o","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","isFontDeservedToAdd","colorPalette","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","eraser","addDefaultFonts","fontname","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","$catcher","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","build","groups","groupIdx","groupLen","group","groupName","$group","btn","updateCurrentStyle","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","PX_PER_EM","$dimensionDisplay","$highlighted","$unhighlighted","posOffset","offsetX","posCatcher","pageX","pageY","offsetY","c","ceil","r","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","editorOffsetBottom","activateOffset","deactivateOffsetBottom","zIndex","marginTop","updateFullscreen","updateCodeview","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","buttonClass","footer","$dialog","dialog","fade","dialogsFade","hideDialog","bindEnterKey","$input","toggleLinkBtn","$linkBtn","$linkText","$linkUrl","showLinkDialog","$openInNewWindow","$useProtocol","onDialogShown","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","LinkPopover","popover","$popover","$content","href","targetOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","editingOffset","popatmouse","TablePopover","VideoDialog","createVideoNode","ytRegExp","ytRegExpForStart","ytMatch","igRegExp","igMatch","vRegExp","vMatch","vimRegExp","vimMatch","dmRegExp","dmMatch","youkuRegExp","youkuMatch","qqRegExp","qqMatch","qqRegExp2","qqMatch2","mp4RegExp","mp4Match","oggRegExp","oggMatch","webmRegExp","webmMatch","fbRegExp","fbMatch","$video","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AIR_MODE_POPOVER_X_OFFSET","AirPopover","hidable","air","bnd","POPOVER_DIST","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","selectItem","innerHeight","moveDown","$current","$next","$nextGroup","moveUp","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","createItemTemplates","hintIdx","searchKeyword","search","createGroup","hintMode","version","Codeview","toolbarPosition","tabDisabled","styleWithSpan","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","mode","htmlMode","lineNumbers","pc","mac","renderer","airEditor","airEditable","option","dataValue","dataOption","caret","rowSize","colSize","colorName","placement","iconClassName","isEnable","isActive","modal","interface"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;AClFA,gD;;;;;;;;ACAA;AAAA;AAAA;;AAEA,MAAMA,QAAN,CAAe;AACbC,aAAW,CAACC,MAAD,EAASC,QAAT,EAAmBC,OAAnB,EAA4BC,QAA5B,EAAsC;AAC/C,SAAKH,MAAL,GAAcA,MAAd;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,OAAL,GAAeA,OAAf;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACD;;AAEDC,QAAM,CAACC,OAAD,EAAU;AACd,UAAMC,KAAK,GAAGC,6CAAC,CAAC,KAAKP,MAAN,CAAf;;AAEA,QAAI,KAAKE,OAAL,IAAgB,KAAKA,OAAL,CAAaM,QAAjC,EAA2C;AACzCF,WAAK,CAACG,IAAN,CAAW,KAAKP,OAAL,CAAaM,QAAxB;AACD;;AAED,QAAI,KAAKN,OAAL,IAAgB,KAAKA,OAAL,CAAaQ,SAAjC,EAA4C;AAC1CJ,WAAK,CAACK,QAAN,CAAe,KAAKT,OAAL,CAAaQ,SAA5B;AACD;;AAED,QAAI,KAAKR,OAAL,IAAgB,KAAKA,OAAL,CAAaU,IAAjC,EAAuC;AACrCL,mDAAC,CAACM,IAAF,CAAO,KAAKX,OAAL,CAAaU,IAApB,EAA0B,CAACE,CAAD,EAAIC,CAAJ,KAAU;AAClCT,aAAK,CAACU,IAAN,CAAW,UAAUF,CAArB,EAAwBC,CAAxB;AACD,OAFD;AAGD;;AAED,QAAI,KAAKb,OAAL,IAAgB,KAAKA,OAAL,CAAae,KAAjC,EAAwC;AACtCX,WAAK,CAACY,EAAN,CAAS,OAAT,EAAkB,KAAKhB,OAAL,CAAae,KAA/B;AACD;;AAED,QAAI,KAAKhB,QAAT,EAAmB;AACjB,YAAMkB,UAAU,GAAGb,KAAK,CAACc,IAAN,CAAW,0BAAX,CAAnB;AACA,WAAKnB,QAAL,CAAcoB,OAAd,CAAuBC,KAAD,IAAW;AAC/BA,aAAK,CAAClB,MAAN,CAAae,UAAU,CAACI,MAAX,GAAoBJ,UAApB,GAAiCb,KAA9C;AACD,OAFD;AAGD;;AAED,QAAI,KAAKH,QAAT,EAAmB;AACjB,WAAKA,QAAL,CAAcG,KAAd,EAAqB,KAAKJ,OAA1B;AACD;;AAED,QAAI,KAAKA,OAAL,IAAgB,KAAKA,OAAL,CAAaC,QAAjC,EAA2C;AACzC,WAAKD,OAAL,CAAaC,QAAb,CAAsBG,KAAtB;AACD;;AAED,QAAID,OAAJ,EAAa;AACXA,aAAO,CAACmB,MAAR,CAAelB,KAAf;AACD;;AAED,WAAOA,KAAP;AACD;;AAjDY;;AAoDA;AACbmB,QAAM,EAAE,CAACzB,MAAD,EAASG,QAAT,KAAsB;AAC5B,WAAO,YAAW;AAChB,YAAMD,OAAO,GAAG,OAAOwB,SAAS,CAAC,CAAD,CAAhB,KAAwB,QAAxB,GAAmCA,SAAS,CAAC,CAAD,CAA5C,GAAkDA,SAAS,CAAC,CAAD,CAA3E;AACA,UAAIzB,QAAQ,GAAG0B,KAAK,CAACC,OAAN,CAAcF,SAAS,CAAC,CAAD,CAAvB,IAA8BA,SAAS,CAAC,CAAD,CAAvC,GAA6C,EAA5D;;AACA,UAAIxB,OAAO,IAAIA,OAAO,CAACD,QAAvB,EAAiC;AAC/BA,gBAAQ,GAAGC,OAAO,CAACD,QAAnB;AACD;;AACD,aAAO,IAAIH,QAAJ,CAAaE,MAAb,EAAqBC,QAArB,EAA+BC,OAA/B,EAAwCC,QAAxC,CAAP;AACD,KAPD;AAQD;AAVY,CAAf,E;;;;;;;ACtDA;AACA;;;;;;;;;;;;;;;;ACDA;AAEAI,yBAAC,CAACsB,UAAF,GAAetB,yBAAC,CAACsB,UAAF,IAAgB;AAC7BC,MAAI,EAAE;AADuB,CAA/B;AAIAvB,yBAAC,CAACwB,MAAF,CAASxB,yBAAC,CAACsB,UAAF,CAAaC,IAAtB,EAA4B;AAC1B,WAAS;AACPE,QAAI,EAAE;AACJC,UAAI,EAAE,MADF;AAEJC,YAAM,EAAE,QAFJ;AAGJC,eAAS,EAAE,WAHP;AAIJC,WAAK,EAAE,mBAJH;AAKJC,YAAM,EAAE,aALJ;AAMJC,UAAI,EAAE,aANF;AAOJC,mBAAa,EAAE,eAPX;AAQJC,eAAS,EAAE,WARP;AASJC,iBAAW,EAAE,aATT;AAUJC,UAAI,EAAE,WAVF;AAWJC,cAAQ,EAAE;AAXN,KADC;AAcPC,SAAK,EAAE;AACLA,WAAK,EAAE,SADF;AAELC,YAAM,EAAE,cAFH;AAGLC,gBAAU,EAAE,aAHP;AAILC,gBAAU,EAAE,aAJP;AAKLC,mBAAa,EAAE,gBALV;AAMLC,gBAAU,EAAE,eANP;AAOLC,eAAS,EAAE,YAPN;AAQLC,gBAAU,EAAE,aARP;AASLC,eAAS,EAAE,cATN;AAULC,kBAAY,EAAE,gBAVT;AAWLC,iBAAW,EAAE,eAXR;AAYLC,oBAAc,EAAE,kBAZX;AAaLC,eAAS,EAAE,aAbN;AAcLC,mBAAa,EAAE,yBAdV;AAeLC,eAAS,EAAE,oBAfN;AAgBLC,qBAAe,EAAE,mBAhBZ;AAiBLC,qBAAe,EAAE,mBAjBZ;AAkBLC,0BAAoB,EAAE,6BAlBjB;AAmBLC,SAAG,EAAE,WAnBA;AAoBLC,YAAM,EAAE,cApBH;AAqBLC,cAAQ,EAAE;AArBL,KAdA;AAqCPC,SAAK,EAAE;AACLA,WAAK,EAAE,OADF;AAELC,eAAS,EAAE,YAFN;AAGLrB,YAAM,EAAE,cAHH;AAILiB,SAAG,EAAE,WAJA;AAKLK,eAAS,EAAE;AALN,KArCA;AA4CPC,QAAI,EAAE;AACJA,UAAI,EAAE,MADF;AAEJvB,YAAM,EAAE,aAFJ;AAGJwB,YAAM,EAAE,QAHJ;AAIJC,UAAI,EAAE,MAJF;AAKJC,mBAAa,EAAE,iBALX;AAMJT,SAAG,EAAE,kCAND;AAOJU,qBAAe,EAAE,oBAPb;AAQJC,iBAAW,EAAE;AART,KA5CC;AAsDPC,SAAK,EAAE;AACLA,WAAK,EAAE,OADF;AAELC,iBAAW,EAAE,eAFR;AAGLC,iBAAW,EAAE,eAHR;AAILC,gBAAU,EAAE,iBAJP;AAKLC,iBAAW,EAAE,kBALR;AAMLC,YAAM,EAAE,YANH;AAOLC,YAAM,EAAE,eAPH;AAQLC,cAAQ,EAAE;AARL,KAtDA;AAgEPC,MAAE,EAAE;AACFrC,YAAM,EAAE;AADN,KAhEG;AAmEPsC,SAAK,EAAE;AACLA,WAAK,EAAE,OADF;AAELC,OAAC,EAAE,QAFE;AAGLC,gBAAU,EAAE,OAHP;AAILC,SAAG,EAAE,MAJA;AAKLC,QAAE,EAAE,UALC;AAMLC,QAAE,EAAE,UANC;AAOLC,QAAE,EAAE,UAPC;AAQLC,QAAE,EAAE,UARC;AASLC,QAAE,EAAE,UATC;AAULC,QAAE,EAAE;AAVC,KAnEA;AA+EPC,SAAK,EAAE;AACLC,eAAS,EAAE,gBADN;AAELC,aAAO,EAAE;AAFJ,KA/EA;AAmFP7F,WAAO,EAAE;AACP8F,UAAI,EAAE,MADC;AAEPC,gBAAU,EAAE,aAFL;AAGPC,cAAQ,EAAE;AAHH,KAnFF;AAwFPC,aAAS,EAAE;AACTA,eAAS,EAAE,WADF;AAETC,aAAO,EAAE,SAFA;AAGTC,YAAM,EAAE,QAHC;AAITC,UAAI,EAAE,YAJG;AAKTC,YAAM,EAAE,cALC;AAMTC,WAAK,EAAE,aANE;AAOTC,aAAO,EAAE;AAPA,KAxFJ;AAiGPC,SAAK,EAAE;AACLC,YAAM,EAAE,cADH;AAELC,UAAI,EAAE,YAFD;AAGLC,gBAAU,EAAE,kBAHP;AAILC,gBAAU,EAAE,YAJP;AAKLC,iBAAW,EAAE,aALR;AAMLC,oBAAc,EAAE,iBANX;AAOLC,WAAK,EAAE,OAPF;AAQLC,oBAAc,EAAE,kBARX;AASLC,cAAQ,EAAE;AATL,KAjGA;AA4GPC,YAAQ,EAAE;AACRC,eAAS,EAAE,oBADH;AAERC,WAAK,EAAE,OAFC;AAGRC,oBAAc,EAAE,iBAHR;AAIRC,YAAM,EAAE,QAJA;AAKRC,yBAAmB,EAAE,sBALb;AAMRC,mBAAa,EAAE,gBANP;AAORC,eAAS,EAAE;AAPH,KA5GH;AAqHP3B,QAAI,EAAE;AACJ,yBAAmB,kBADf;AAEJ,cAAQ,yBAFJ;AAGJ,cAAQ,yBAHJ;AAIJ,aAAO,KAJH;AAKJ,eAAS,OALL;AAMJ,cAAQ,kBANJ;AAOJ,gBAAU,oBAPN;AAQJ,mBAAa,uBART;AASJ,uBAAiB,2BATb;AAUJ,sBAAgB,eAVZ;AAWJ,qBAAe,gBAXX;AAYJ,uBAAiB,kBAZb;AAaJ,sBAAgB,iBAbZ;AAcJ,qBAAe,gBAdX;AAeJ,6BAAuB,uBAfnB;AAgBJ,2BAAqB,qBAhBjB;AAiBJ,iBAAW,8BAjBP;AAkBJ,gBAAU,6BAlBN;AAmBJ,oBAAc,sDAnBV;AAoBJ,kBAAY,sCApBR;AAqBJ,kBAAY,sCArBR;AAsBJ,kBAAY,sCAtBR;AAuBJ,kBAAY,sCAvBR;AAwBJ,kBAAY,sCAxBR;AAyBJ,kBAAY,sCAzBR;AA0BJ,8BAAwB,wBA1BpB;AA2BJ,yBAAmB;AA3Bf,KArHC;AAkJP4B,WAAO,EAAE;AACPC,UAAI,EAAE,MADC;AAEPC,UAAI,EAAE;AAFC,KAlJF;AAsJPC,eAAW,EAAE;AACXA,iBAAW,EAAE,oBADF;AAEXC,YAAM,EAAE;AAFG,KAtJN;AA0JPC,UAAM,EAAE;AACNC,iBAAW,EAAE;AADP;AA1JD;AADiB,CAA5B,E;;ACNA;AACA,MAAMC,YAAY,GAAG,OAAOC,MAAP,KAAkB,UAAlB,IAAgCA,sBAArD,C,CAAiE;;AAEjE;;;;;;;AAMA,MAAMC,mBAAmB,GAAG,CAAC,YAAD,EAAe,OAAf,EAAwB,WAAxB,EAAqC,SAArC,EAAgD,SAAhD,CAA5B;;AAEA,SAASC,aAAT,CAAuBC,QAAvB,EAAiC;AAC/B,SAAQhI,yBAAC,CAACiI,OAAF,CAAUD,QAAQ,CAACE,WAAT,EAAV,EAAkCJ,mBAAlC,MAA2D,CAAC,CAA7D,GAAmE,IAAGE,QAAS,GAA/E,GAAoFA,QAA3F;AACD;;AAED,SAASG,eAAT,CAAyBH,QAAzB,EAAmC;AACjC,QAAMI,YAAY,GAAGJ,QAAQ,KAAK,eAAb,GAA+B,aAA/B,GAA+C,eAApE;AACA,QAAMK,QAAQ,GAAG,iBAAjB;AACA,QAAMC,QAAQ,GAAG,OAAjB;AAEA,MAAIC,MAAM,GAAGC,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAb;AACA,MAAIC,OAAO,GAAGH,MAAM,CAACI,UAAP,CAAkB,IAAlB,CAAd;AAEAD,SAAO,CAACjH,IAAR,GAAe6G,QAAQ,GAAG,IAAX,GAAkBF,YAAlB,GAAiC,GAAhD;AACA,QAAMQ,aAAa,GAAGF,OAAO,CAACG,WAAR,CAAoBR,QAApB,EAA8BS,KAApD;AAEAJ,SAAO,CAACjH,IAAR,GAAe6G,QAAQ,GAAG,GAAX,GAAiBP,aAAa,CAACC,QAAD,CAA9B,GAA2C,KAA3C,GAAmDI,YAAnD,GAAkE,GAAjF;AACA,QAAMU,KAAK,GAAGJ,OAAO,CAACG,WAAR,CAAoBR,QAApB,EAA8BS,KAA5C;AAEA,SAAOF,aAAa,KAAKE,KAAzB;AACD;;AAED,MAAMC,SAAS,GAAGC,SAAS,CAACD,SAA5B;AACA,MAAME,MAAM,GAAG,gBAAgBC,IAAhB,CAAqBH,SAArB,CAAf;AACA,IAAII,cAAJ;;AACA,IAAIF,MAAJ,EAAY;AACV,MAAIG,OAAO,GAAG,mBAAmBC,IAAnB,CAAwBN,SAAxB,CAAd;;AACA,MAAIK,OAAJ,EAAa;AACXD,kBAAc,GAAGG,UAAU,CAACF,OAAO,CAAC,CAAD,CAAR,CAA3B;AACD;;AACDA,SAAO,GAAG,sCAAsCC,IAAtC,CAA2CN,SAA3C,CAAV;;AACA,MAAIK,OAAJ,EAAa;AACXD,kBAAc,GAAGG,UAAU,CAACF,OAAO,CAAC,CAAD,CAAR,CAA3B;AACD;AACF;;AAED,MAAMG,MAAM,GAAG,YAAYL,IAAZ,CAAiBH,SAAjB,CAAf;AAEA,IAAIS,aAAa,GAAG,CAAC,CAACC,MAAM,CAACC,UAA7B;AAEA,MAAMC,cAAc,GAChB,kBAAkBF,MAAnB,IACCT,SAAS,CAACY,cAAV,GAA2B,CAD5B,IAECZ,SAAS,CAACa,gBAAV,GAA6B,CAHjC,C,CAKA;AACA;;AACA,MAAMC,cAAc,GAAIb,MAAD,GAAW,6DAAX,GAA2E,OAAlG;AAEA;;;;;;;;;AAQe;AACbc,OAAK,EAAEf,SAAS,CAACgB,UAAV,CAAqBC,OAArB,CAA6B,KAA7B,IAAsC,CAAC,CADjC;AAEbhB,QAFa;AAGbM,QAHa;AAIbW,MAAI,EAAE,CAACX,MAAD,IAAW,WAAWL,IAAX,CAAgBH,SAAhB,CAJJ;AAKboB,WAAS,EAAE,aAAajB,IAAb,CAAkBH,SAAlB,CALE;AAMbqB,UAAQ,EAAE,CAACb,MAAD,IAAW,UAAUL,IAAV,CAAeH,SAAf,CANR;AAObsB,UAAQ,EAAE,CAACd,MAAD,IAAW,UAAUL,IAAV,CAAeH,SAAf,CAPR;AAQbuB,UAAQ,EAAE,CAACf,MAAD,IAAW,UAAUL,IAAV,CAAeH,SAAf,CAAX,IAAyC,CAAC,UAAUG,IAAV,CAAeH,SAAf,CARvC;AASbI,gBATa;AAUboB,eAAa,EAAEjB,UAAU,CAACtJ,yBAAC,CAACwK,EAAF,CAAKC,MAAN,CAVZ;AAWb7C,cAXa;AAYb+B,gBAZa;AAabH,eAba;AAcbrB,iBAda;AAebuC,mBAAiB,EAAE,CAAC,CAAClC,QAAQ,CAACmC,WAfjB;AAgBbb,gBAhBa;AAiBbhC,qBAjBa;AAkBbC;AAlBa,CAAf,E;;ACnEA;AAEA;;;;;;;;;AAQA,SAAS6C,EAAT,CAAYC,KAAZ,EAAmB;AACjB,SAAO,UAASC,KAAT,EAAgB;AACrB,WAAOD,KAAK,KAAKC,KAAjB;AACD,GAFD;AAGD;;AAED,SAASC,GAAT,CAAaF,KAAb,EAAoBC,KAApB,EAA2B;AACzB,SAAOD,KAAK,KAAKC,KAAjB;AACD;;AAED,SAASE,IAAT,CAAcC,QAAd,EAAwB;AACtB,SAAO,UAASJ,KAAT,EAAgBC,KAAhB,EAAuB;AAC5B,WAAOD,KAAK,CAACI,QAAD,CAAL,KAAoBH,KAAK,CAACG,QAAD,CAAhC;AACD,GAFD;AAGD;;AAED,SAASC,EAAT,GAAc;AACZ,SAAO,IAAP;AACD;;AAED,SAASC,IAAT,GAAgB;AACd,SAAO,KAAP;AACD;;AAED,SAASC,GAAT,CAAaC,CAAb,EAAgB;AACd,SAAO,YAAW;AAChB,WAAO,CAACA,CAAC,CAACC,KAAF,CAAQD,CAAR,EAAWlK,SAAX,CAAR;AACD,GAFD;AAGD;;AAED,SAASoK,GAAT,CAAaC,EAAb,EAAiBC,EAAjB,EAAqB;AACnB,SAAO,UAASC,IAAT,EAAe;AACpB,WAAOF,EAAE,CAACE,IAAD,CAAF,IAAYD,EAAE,CAACC,IAAD,CAArB;AACD,GAFD;AAGD;;AAED,SAASC,SAAT,CAAcC,CAAd,EAAiB;AACf,SAAOA,CAAP;AACD;;AAED,SAASC,MAAT,CAAgBC,GAAhB,EAAqBC,MAArB,EAA6B;AAC3B,SAAO,YAAW;AAChB,WAAOD,GAAG,CAACC,MAAD,CAAH,CAAYT,KAAZ,CAAkBQ,GAAlB,EAAuB3K,SAAvB,CAAP;AACD,GAFD;AAGD;;AAED,IAAI6K,SAAS,GAAG,CAAhB;AAEA;;;;;AAIA,SAASC,aAAT,GAAyB;AACvBD,WAAS,GAAG,CAAZ;AACD;AAED;;;;;;;AAKA,SAASE,QAAT,CAAkBC,MAAlB,EAA0B;AACxB,QAAMC,EAAE,GAAG,EAAEJ,SAAF,GAAc,EAAzB;AACA,SAAOG,MAAM,GAAGA,MAAM,GAAGC,EAAZ,GAAiBA,EAA9B;AACD;AAED;;;;;;;;;;;;;;;AAaA,SAASC,QAAT,CAAkBC,IAAlB,EAAwB;AACtB,QAAMC,SAAS,GAAGvM,yBAAC,CAACwI,QAAD,CAAnB;AACA,SAAO;AACLgE,OAAG,EAAEF,IAAI,CAACE,GAAL,GAAWD,SAAS,CAACE,SAAV,EADX;AAEL1G,QAAI,EAAEuG,IAAI,CAACvG,IAAL,GAAYwG,SAAS,CAACG,UAAV,EAFb;AAGL5D,SAAK,EAAEwD,IAAI,CAACrG,KAAL,GAAaqG,IAAI,CAACvG,IAHpB;AAILjE,UAAM,EAAEwK,IAAI,CAACK,MAAL,GAAcL,IAAI,CAACE;AAJtB,GAAP;AAMD;AAED;;;;;;;AAKA,SAASI,YAAT,CAAsBd,GAAtB,EAA2B;AACzB,QAAMe,QAAQ,GAAG,EAAjB;;AACA,OAAK,MAAMC,GAAX,IAAkBhB,GAAlB,EAAuB;AACrB,QAAIA,GAAG,CAACiB,cAAJ,CAAmBD,GAAnB,CAAJ,EAA6B;AAC3BD,cAAQ,CAACf,GAAG,CAACgB,GAAD,CAAJ,CAAR,GAAqBA,GAArB;AACD;AACF;;AACD,SAAOD,QAAP;AACD;AAED;;;;;;;AAKA,SAASG,gBAAT,CAA0BC,SAA1B,EAAqCd,MAArC,EAA6C;AAC3CA,QAAM,GAAGA,MAAM,IAAI,EAAnB;AACA,SAAOA,MAAM,GAAGc,SAAS,CAACC,KAAV,CAAgB,GAAhB,EAAqBC,GAArB,CAAyB,UAASpL,IAAT,EAAe;AACtD,WAAOA,IAAI,CAACqL,SAAL,CAAe,CAAf,EAAkB,CAAlB,EAAqBC,WAArB,KAAqCtL,IAAI,CAACqL,SAAL,CAAe,CAAf,CAA5C;AACD,GAFe,EAEbE,IAFa,CAER,EAFQ,CAAhB;AAGD;AAED;;;;;;;;;;;;AAUA,SAASC,QAAT,CAAkBC,IAAlB,EAAwBC,IAAxB,EAA8BC,SAA9B,EAAyC;AACvC,MAAIC,OAAJ;AACA,SAAO,YAAW;AAChB,UAAMjF,OAAO,GAAG,IAAhB;AACA,UAAMkF,IAAI,GAAGzM,SAAb;;AACA,UAAM0M,KAAK,GAAG,MAAM;AAClBF,aAAO,GAAG,IAAV;;AACA,UAAI,CAACD,SAAL,EAAgB;AACdF,YAAI,CAAClC,KAAL,CAAW5C,OAAX,EAAoBkF,IAApB;AACD;AACF,KALD;;AAMA,UAAME,OAAO,GAAGJ,SAAS,IAAI,CAACC,OAA9B;AACAI,gBAAY,CAACJ,OAAD,CAAZ;AACAA,WAAO,GAAGK,UAAU,CAACH,KAAD,EAAQJ,IAAR,CAApB;;AACA,QAAIK,OAAJ,EAAa;AACXN,UAAI,CAAClC,KAAL,CAAW5C,OAAX,EAAoBkF,IAApB;AACD;AACF,GAfD;AAgBD;AAED;;;;;;;AAKA,SAASK,UAAT,CAAoB1K,GAApB,EAAyB;AACvB,QAAM2K,UAAU,GAAG,4EAAnB;AACA,SAAOA,UAAU,CAAChF,IAAX,CAAgB3F,GAAhB,CAAP;AACD;;AAEc;AACbqH,IADa;AAEbG,KAFa;AAGbC,MAHa;AAIbE,IAJa;AAKbC,MALa;AAMbQ,MANa;AAObP,KAPa;AAQbG,KARa;AASbM,QATa;AAUbI,eAVa;AAWbC,UAXa;AAYbG,UAZa;AAabO,cAba;AAcbI,kBAda;AAebO,UAfa;AAgBbU;AAhBa,CAAf,E;;ACtKA;AAEA;;;;;;AAKA,SAASE,UAAT,CAAcC,KAAd,EAAqB;AACnB,SAAOA,KAAK,CAAC,CAAD,CAAZ;AACD;AAED;;;;;;;AAKA,SAASC,UAAT,CAAcD,KAAd,EAAqB;AACnB,SAAOA,KAAK,CAACA,KAAK,CAACpN,MAAN,GAAe,CAAhB,CAAZ;AACD;AAED;;;;;;;AAKA,SAASsN,OAAT,CAAiBF,KAAjB,EAAwB;AACtB,SAAOA,KAAK,CAACG,KAAN,CAAY,CAAZ,EAAeH,KAAK,CAACpN,MAAN,GAAe,CAA9B,CAAP;AACD;AAED;;;;;;;AAKA,SAASwN,IAAT,CAAcJ,KAAd,EAAqB;AACnB,SAAOA,KAAK,CAACG,KAAN,CAAY,CAAZ,CAAP;AACD;AAED;;;;;AAGA,SAAS1N,IAAT,CAAcuN,KAAd,EAAqBK,IAArB,EAA2B;AACzB,OAAK,IAAIC,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGP,KAAK,CAACpN,MAA9B,EAAsC0N,GAAG,GAAGC,GAA5C,EAAiDD,GAAG,EAApD,EAAwD;AACtD,UAAMhD,IAAI,GAAG0C,KAAK,CAACM,GAAD,CAAlB;;AACA,QAAID,IAAI,CAAC/C,IAAD,CAAR,EAAgB;AACd,aAAOA,IAAP;AACD;AACF;AACF;AAED;;;;;AAGA,SAASkD,SAAT,CAAaR,KAAb,EAAoBK,IAApB,EAA0B;AACxB,OAAK,IAAIC,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGP,KAAK,CAACpN,MAA9B,EAAsC0N,GAAG,GAAGC,GAA5C,EAAiDD,GAAG,EAApD,EAAwD;AACtD,QAAI,CAACD,IAAI,CAACL,KAAK,CAACM,GAAD,CAAN,CAAT,EAAuB;AACrB,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;AAED;;;;;AAGA,SAASG,QAAT,CAAkBT,KAAlB,EAAyB1C,IAAzB,EAA+B;AAC7B,MAAI0C,KAAK,IAAIA,KAAK,CAACpN,MAAf,IAAyB0K,IAA7B,EAAmC;AACjC,QAAI0C,KAAK,CAACnE,OAAV,EAAmB;AACjB,aAAOmE,KAAK,CAACnE,OAAN,CAAcyB,IAAd,MAAwB,CAAC,CAAhC;AACD,KAFD,MAEO,IAAI0C,KAAK,CAACS,QAAV,EAAoB;AACzB;AACA,aAAOT,KAAK,CAACS,QAAN,CAAenD,IAAf,CAAP;AACD;AACF;;AACD,SAAO,KAAP;AACD;AAED;;;;;;;;AAMA,SAASoD,GAAT,CAAaV,KAAb,EAAoB5D,EAApB,EAAwB;AACtBA,IAAE,GAAGA,EAAE,IAAIgD,IAAI,CAAC7B,IAAhB;AACA,SAAOyC,KAAK,CAACW,MAAN,CAAa,UAASC,IAAT,EAAexO,CAAf,EAAkB;AACpC,WAAOwO,IAAI,GAAGxE,EAAE,CAAChK,CAAD,CAAhB;AACD,GAFM,EAEJ,CAFI,CAAP;AAGD;AAED;;;;;;AAIA,SAASyO,IAAT,CAAcC,UAAd,EAA0B;AACxB,QAAMC,MAAM,GAAG,EAAf;AACA,QAAMnO,MAAM,GAAGkO,UAAU,CAAClO,MAA1B;AACA,MAAI0N,GAAG,GAAG,CAAC,CAAX;;AACA,SAAO,EAAEA,GAAF,GAAQ1N,MAAf,EAAuB;AACrBmO,UAAM,CAACT,GAAD,CAAN,GAAcQ,UAAU,CAACR,GAAD,CAAxB;AACD;;AACD,SAAOS,MAAP;AACD;AAED;;;;;AAGA,SAASC,OAAT,CAAiBhB,KAAjB,EAAwB;AACtB,SAAO,CAACA,KAAD,IAAU,CAACA,KAAK,CAACpN,MAAxB;AACD;AAED;;;;;;;;;AAOA,SAASqO,SAAT,CAAmBjB,KAAnB,EAA0B5D,EAA1B,EAA8B;AAC5B,MAAI,CAAC4D,KAAK,CAACpN,MAAX,EAAmB;AAAE,WAAO,EAAP;AAAY;;AACjC,QAAMsO,KAAK,GAAGd,IAAI,CAACJ,KAAD,CAAlB;AACA,SAAOkB,KAAK,CAACP,MAAN,CAAa,UAASC,IAAT,EAAexO,CAAf,EAAkB;AACpC,UAAM+O,KAAK,GAAGlB,UAAI,CAACW,IAAD,CAAlB;;AACA,QAAIxE,EAAE,CAAC6D,UAAI,CAACkB,KAAD,CAAL,EAAc/O,CAAd,CAAN,EAAwB;AACtB+O,WAAK,CAACA,KAAK,CAACvO,MAAP,CAAL,GAAsBR,CAAtB;AACD,KAFD,MAEO;AACLwO,UAAI,CAACA,IAAI,CAAChO,MAAN,CAAJ,GAAoB,CAACR,CAAD,CAApB;AACD;;AACD,WAAOwO,IAAP;AACD,GARM,EAQJ,CAAC,CAACb,UAAI,CAACC,KAAD,CAAL,CAAD,CARI,CAAP;AASD;AAED;;;;;;;;AAMA,SAASoB,OAAT,CAAiBpB,KAAjB,EAAwB;AACtB,QAAMqB,OAAO,GAAG,EAAhB;;AACA,OAAK,IAAIf,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGP,KAAK,CAACpN,MAA9B,EAAsC0N,GAAG,GAAGC,GAA5C,EAAiDD,GAAG,EAApD,EAAwD;AACtD,QAAIN,KAAK,CAACM,GAAD,CAAT,EAAgB;AAAEe,aAAO,CAACC,IAAR,CAAatB,KAAK,CAACM,GAAD,CAAlB;AAA2B;AAC9C;;AACD,SAAOe,OAAP;AACD;AAED;;;;;;;AAKA,SAASE,MAAT,CAAgBvB,KAAhB,EAAuB;AACrB,QAAMwB,OAAO,GAAG,EAAhB;;AAEA,OAAK,IAAIlB,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGP,KAAK,CAACpN,MAA9B,EAAsC0N,GAAG,GAAGC,GAA5C,EAAiDD,GAAG,EAApD,EAAwD;AACtD,QAAI,CAACG,QAAQ,CAACe,OAAD,EAAUxB,KAAK,CAACM,GAAD,CAAf,CAAb,EAAoC;AAClCkB,aAAO,CAACF,IAAR,CAAatB,KAAK,CAACM,GAAD,CAAlB;AACD;AACF;;AAED,SAAOkB,OAAP;AACD;AAED;;;;;;AAIA,SAASC,UAAT,CAAczB,KAAd,EAAqB1C,IAArB,EAA2B;AACzB,MAAI0C,KAAK,IAAIA,KAAK,CAACpN,MAAf,IAAyB0K,IAA7B,EAAmC;AACjC,UAAMgD,GAAG,GAAGN,KAAK,CAACnE,OAAN,CAAcyB,IAAd,CAAZ;AACA,WAAOgD,GAAG,KAAK,CAAC,CAAT,GAAa,IAAb,GAAoBN,KAAK,CAACM,GAAG,GAAG,CAAP,CAAhC;AACD;;AACD,SAAO,IAAP;AACD;AAED;;;;;;AAIA,SAASoB,IAAT,CAAc1B,KAAd,EAAqB1C,IAArB,EAA2B;AACzB,MAAI0C,KAAK,IAAIA,KAAK,CAACpN,MAAf,IAAyB0K,IAA7B,EAAmC;AACjC,UAAMgD,GAAG,GAAGN,KAAK,CAACnE,OAAN,CAAcyB,IAAd,CAAZ;AACA,WAAOgD,GAAG,KAAK,CAAC,CAAT,GAAa,IAAb,GAAoBN,KAAK,CAACM,GAAG,GAAG,CAAP,CAAhC;AACD;;AACD,SAAO,IAAP;AACD;AAED;;;;;;;;;;AAQe;AACbP,MADa;AAEbE,MAFa;AAGbC,SAHa;AAIbE,MAJa;AAKbsB,MALa;AAMbD,MANa;AAObhP,MAPa;AAQbgO,UARa;AASbD,KATa;AAUbE,KAVa;AAWbG,MAXa;AAYbG,SAZa;AAabC,WAba;AAcbG,SAda;AAebG;AAfa,CAAf,E;;ACnMA;AACA;AACA;AACA;AAEA,MAAMI,SAAS,GAAGC,MAAM,CAACC,YAAP,CAAoB,GAApB,CAAlB;AACA,MAAMC,oBAAoB,GAAG,QAA7B;AAEA;;;;;;;;;AAQA,SAASC,UAAT,CAAoBC,IAApB,EAA0B;AACxB,SAAOA,IAAI,IAAIpQ,yBAAC,CAACoQ,IAAD,CAAD,CAAQC,QAAR,CAAiB,eAAjB,CAAf;AACD;AAED;;;;;;;;;;AAQA,SAASC,eAAT,CAAyBF,IAAzB,EAA+B;AAC7B,SAAOA,IAAI,IAAIpQ,yBAAC,CAACoQ,IAAD,CAAD,CAAQC,QAAR,CAAiB,qBAAjB,CAAf;AACD;AAED;;;;;;;;;;AAQA,SAASE,kBAAT,CAA4BC,QAA5B,EAAsC;AACpCA,UAAQ,GAAGA,QAAQ,CAACnD,WAAT,EAAX;AACA,SAAO,UAAS+C,IAAT,EAAe;AACpB,WAAOA,IAAI,IAAIA,IAAI,CAACI,QAAL,CAAcnD,WAAd,OAAgCmD,QAA/C;AACD,GAFD;AAGD;AAED;;;;;;;;;;AAQA,SAASC,MAAT,CAAgBL,IAAhB,EAAsB;AACpB,SAAOA,IAAI,IAAIA,IAAI,CAACM,QAAL,KAAkB,CAAjC;AACD;AAED;;;;;;;;;;AAQA,SAASC,SAAT,CAAmBP,IAAnB,EAAyB;AACvB,SAAOA,IAAI,IAAIA,IAAI,CAACM,QAAL,KAAkB,CAAjC;AACD;AAED;;;;;;AAIA,SAASE,MAAT,CAAgBR,IAAhB,EAAsB;AACpB,SAAOA,IAAI,IAAI,2DAA2DlH,IAA3D,CAAgEkH,IAAI,CAACI,QAAL,CAAcnD,WAAd,EAAhE,CAAf;AACD;;AAED,SAASwD,MAAT,CAAgBT,IAAhB,EAAsB;AACpB,MAAID,UAAU,CAACC,IAAD,CAAd,EAAsB;AACpB,WAAO,KAAP;AACD,GAHmB,CAKpB;;;AACA,SAAOA,IAAI,IAAI,sBAAsBlH,IAAtB,CAA2BkH,IAAI,CAACI,QAAL,CAAcnD,WAAd,EAA3B,CAAf;AACD;;AAED,SAASyD,SAAT,CAAmBV,IAAnB,EAAyB;AACvB,SAAOA,IAAI,IAAI,UAAUlH,IAAV,CAAekH,IAAI,CAACI,QAAL,CAAcnD,WAAd,EAAf,CAAf;AACD;;AAED,MAAM0D,KAAK,GAAGR,kBAAkB,CAAC,KAAD,CAAhC;AAEA,MAAMS,IAAI,GAAGT,kBAAkB,CAAC,IAAD,CAA/B;;AAEA,SAASU,UAAT,CAAoBb,IAApB,EAA0B;AACxB,SAAOS,MAAM,CAACT,IAAD,CAAN,IAAgB,CAACY,IAAI,CAACZ,IAAD,CAA5B;AACD;;AAED,MAAMc,OAAO,GAAGX,kBAAkB,CAAC,OAAD,CAAlC;AAEA,MAAMY,MAAM,GAAGZ,kBAAkB,CAAC,MAAD,CAAjC;;AAEA,SAASa,YAAT,CAAkBhB,IAAlB,EAAwB;AACtB,SAAO,CAACiB,eAAe,CAACjB,IAAD,CAAhB,IACA,CAACkB,MAAM,CAAClB,IAAD,CADP,IAEA,CAACmB,IAAI,CAACnB,IAAD,CAFL,IAGA,CAACS,MAAM,CAACT,IAAD,CAHP,IAIA,CAACc,OAAO,CAACd,IAAD,CAJR,IAKA,CAACoB,YAAY,CAACpB,IAAD,CALb,IAMA,CAACe,MAAM,CAACf,IAAD,CANd;AAOD;;AAED,SAASkB,MAAT,CAAgBlB,IAAhB,EAAsB;AACpB,SAAOA,IAAI,IAAI,UAAUlH,IAAV,CAAekH,IAAI,CAACI,QAAL,CAAcnD,WAAd,EAAf,CAAf;AACD;;AAED,MAAMkE,IAAI,GAAGhB,kBAAkB,CAAC,IAAD,CAA/B;;AAEA,SAASkB,UAAT,CAAgBrB,IAAhB,EAAsB;AACpB,SAAOA,IAAI,IAAI,UAAUlH,IAAV,CAAekH,IAAI,CAACI,QAAL,CAAcnD,WAAd,EAAf,CAAf;AACD;;AAED,MAAMmE,YAAY,GAAGjB,kBAAkB,CAAC,YAAD,CAAvC;;AAEA,SAASc,eAAT,CAAyBjB,IAAzB,EAA+B;AAC7B,SAAOqB,UAAM,CAACrB,IAAD,CAAN,IAAgBoB,YAAY,CAACpB,IAAD,CAA5B,IAAsCD,UAAU,CAACC,IAAD,CAAvD;AACD;;AAED,MAAMsB,QAAQ,GAAGnB,kBAAkB,CAAC,GAAD,CAAnC;;AAEA,SAASoB,YAAT,CAAsBvB,IAAtB,EAA4B;AAC1B,SAAOgB,YAAQ,CAAChB,IAAD,CAAR,IAAkB,CAAC,CAACwB,YAAQ,CAACxB,IAAD,EAAOS,MAAP,CAAnC;AACD;;AAED,SAASgB,YAAT,CAAsBzB,IAAtB,EAA4B;AAC1B,SAAOgB,YAAQ,CAAChB,IAAD,CAAR,IAAkB,CAACwB,YAAQ,CAACxB,IAAD,EAAOS,MAAP,CAAlC;AACD;;AAED,MAAMiB,MAAM,GAAGvB,kBAAkB,CAAC,MAAD,CAAjC;AAEA;;;;;;;;AAOA,SAASwB,gBAAT,CAA0BC,KAA1B,EAAiCC,KAAjC,EAAwC;AACtC,SAAOD,KAAK,CAACE,WAAN,KAAsBD,KAAtB,IACAD,KAAK,CAACG,eAAN,KAA0BF,KADjC;AAED;AAED;;;;;;;;;AAOA,SAASG,mBAAT,CAA6BhC,IAA7B,EAAmC3B,IAAnC,EAAyC;AACvCA,MAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACtC,EAApB;AAEA,QAAMmH,QAAQ,GAAG,EAAjB;;AACA,MAAIjC,IAAI,CAAC+B,eAAL,IAAwB1D,IAAI,CAAC2B,IAAI,CAAC+B,eAAN,CAAhC,EAAwD;AACtDE,YAAQ,CAAC3C,IAAT,CAAcU,IAAI,CAAC+B,eAAnB;AACD;;AACDE,UAAQ,CAAC3C,IAAT,CAAcU,IAAd;;AACA,MAAIA,IAAI,CAAC8B,WAAL,IAAoBzD,IAAI,CAAC2B,IAAI,CAAC8B,WAAN,CAA5B,EAAgD;AAC9CG,YAAQ,CAAC3C,IAAT,CAAcU,IAAI,CAAC8B,WAAnB;AACD;;AACD,SAAOG,QAAP;AACD;AAED;;;;;;;AAKA,MAAMC,SAAS,GAAGC,GAAG,CAACtJ,MAAJ,IAAcsJ,GAAG,CAACpJ,cAAJ,GAAqB,EAAnC,GAAwC,QAAxC,GAAmD,MAArE;AAEA;;;;;;;;AAOA,SAASqJ,UAAT,CAAoBpC,IAApB,EAA0B;AACxB,MAAIK,MAAM,CAACL,IAAD,CAAV,EAAkB;AAChB,WAAOA,IAAI,CAACqC,SAAL,CAAezR,MAAtB;AACD;;AAED,MAAIoP,IAAJ,EAAU;AACR,WAAOA,IAAI,CAACsC,UAAL,CAAgB1R,MAAvB;AACD;;AAED,SAAO,CAAP;AACD;AAED;;;;;;;;AAMA,SAAS2R,mBAAT,CAA6BvC,IAA7B,EAAmC;AACjC,KAAG;AACD,QAAIA,IAAI,CAACwC,iBAAL,KAA2B,IAA3B,IAAmCxC,IAAI,CAACwC,iBAAL,CAAuBC,SAAvB,KAAqC,EAA5E,EAAgF;AACjF,GAFD,QAEUzC,IAAI,GAAGA,IAAI,CAACwC,iBAFtB;;AAIA,SAAOxD,WAAO,CAACgB,IAAD,CAAd;AACD;AAED;;;;;;;;AAMA,SAAShB,WAAT,CAAiBgB,IAAjB,EAAuB;AACrB,QAAMzB,GAAG,GAAG6D,UAAU,CAACpC,IAAD,CAAtB;;AAEA,MAAIzB,GAAG,KAAK,CAAZ,EAAe;AACb,WAAO,IAAP;AACD,GAFD,MAEO,IAAI,CAAC8B,MAAM,CAACL,IAAD,CAAP,IAAiBzB,GAAG,KAAK,CAAzB,IAA8ByB,IAAI,CAACyC,SAAL,KAAmBP,SAArD,EAAgE;AACrE;AACA,WAAO,IAAP;AACD,GAHM,MAGA,IAAIhN,KAAK,CAACsJ,GAAN,CAAUwB,IAAI,CAACsC,UAAf,EAA2BjC,MAA3B,KAAsCL,IAAI,CAACyC,SAAL,KAAmB,EAA7D,EAAiE;AACtE;AACA,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD;AAED;;;;;AAGA,SAASC,gBAAT,CAA0B1C,IAA1B,EAAgC;AAC9B,MAAI,CAACQ,MAAM,CAACR,IAAD,CAAP,IAAiB,CAACoC,UAAU,CAACpC,IAAD,CAAhC,EAAwC;AACtCA,QAAI,CAACyC,SAAL,GAAiBP,SAAjB;AACD;AACF;AAED;;;;;;;;AAMA,SAASV,YAAT,CAAkBxB,IAAlB,EAAwB3B,IAAxB,EAA8B;AAC5B,SAAO2B,IAAP,EAAa;AACX,QAAI3B,IAAI,CAAC2B,IAAD,CAAR,EAAgB;AAAE,aAAOA,IAAP;AAAc;;AAChC,QAAID,UAAU,CAACC,IAAD,CAAd,EAAsB;AAAE;AAAQ;;AAEhCA,QAAI,GAAGA,IAAI,CAAC2C,UAAZ;AACD;;AACD,SAAO,IAAP;AACD;AAED;;;;;;;;AAMA,SAASC,mBAAT,CAA6B5C,IAA7B,EAAmC3B,IAAnC,EAAyC;AACvC2B,MAAI,GAAGA,IAAI,CAAC2C,UAAZ;;AAEA,SAAO3C,IAAP,EAAa;AACX,QAAIoC,UAAU,CAACpC,IAAD,CAAV,KAAqB,CAAzB,EAA4B;AAAE;AAAQ;;AACtC,QAAI3B,IAAI,CAAC2B,IAAD,CAAR,EAAgB;AAAE,aAAOA,IAAP;AAAc;;AAChC,QAAID,UAAU,CAACC,IAAD,CAAd,EAAsB;AAAE;AAAQ;;AAEhCA,QAAI,GAAGA,IAAI,CAAC2C,UAAZ;AACD;;AACD,SAAO,IAAP;AACD;AAED;;;;;;;;AAMA,SAASE,YAAT,CAAsB7C,IAAtB,EAA4B3B,IAA5B,EAAkC;AAChCA,MAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACrC,IAApB;AAEA,QAAM+H,SAAS,GAAG,EAAlB;AACAtB,cAAQ,CAACxB,IAAD,EAAO,UAAS+C,EAAT,EAAa;AAC1B,QAAI,CAAChD,UAAU,CAACgD,EAAD,CAAf,EAAqB;AACnBD,eAAS,CAACxD,IAAV,CAAeyD,EAAf;AACD;;AAED,WAAO1E,IAAI,CAAC0E,EAAD,CAAX;AACD,GANO,CAAR;AAOA,SAAOD,SAAP;AACD;AAED;;;;;AAGA,SAASE,YAAT,CAAsBhD,IAAtB,EAA4B3B,IAA5B,EAAkC;AAChC,QAAMyE,SAAS,GAAGD,YAAY,CAAC7C,IAAD,CAA9B;AACA,SAAO9K,KAAK,CAAC+I,IAAN,CAAW6E,SAAS,CAACG,MAAV,CAAiB5E,IAAjB,CAAX,CAAP;AACD;AAED;;;;;;;;AAMA,SAAS6E,cAAT,CAAwBtB,KAAxB,EAA+BC,KAA/B,EAAsC;AACpC,QAAMiB,SAAS,GAAGD,YAAY,CAACjB,KAAD,CAA9B;;AACA,OAAK,IAAIuB,CAAC,GAAGtB,KAAb,EAAoBsB,CAApB,EAAuBA,CAAC,GAAGA,CAAC,CAACR,UAA7B,EAAyC;AACvC,QAAIG,SAAS,CAACjJ,OAAV,CAAkBsJ,CAAlB,IAAuB,CAAC,CAA5B,EAA+B,OAAOA,CAAP;AAChC;;AACD,SAAO,IAAP,CALoC,CAKvB;AACd;AAED;;;;;;;;AAMA,SAASC,QAAT,CAAkBpD,IAAlB,EAAwB3B,IAAxB,EAA8B;AAC5BA,MAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACrC,IAApB;AAEA,QAAMsI,KAAK,GAAG,EAAd;;AACA,SAAOrD,IAAP,EAAa;AACX,QAAI3B,IAAI,CAAC2B,IAAD,CAAR,EAAgB;AAAE;AAAQ;;AAC1BqD,SAAK,CAAC/D,IAAN,CAAWU,IAAX;AACAA,QAAI,GAAGA,IAAI,CAAC+B,eAAZ;AACD;;AACD,SAAOsB,KAAP;AACD;AAED;;;;;;;;AAMA,SAASC,QAAT,CAAkBtD,IAAlB,EAAwB3B,IAAxB,EAA8B;AAC5BA,MAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACrC,IAApB;AAEA,QAAMsI,KAAK,GAAG,EAAd;;AACA,SAAOrD,IAAP,EAAa;AACX,QAAI3B,IAAI,CAAC2B,IAAD,CAAR,EAAgB;AAAE;AAAQ;;AAC1BqD,SAAK,CAAC/D,IAAN,CAAWU,IAAX;AACAA,QAAI,GAAGA,IAAI,CAAC8B,WAAZ;AACD;;AACD,SAAOuB,KAAP;AACD;AAED;;;;;;;;AAMA,SAASE,cAAT,CAAwBvD,IAAxB,EAA8B3B,IAA9B,EAAoC;AAClC,QAAMmF,WAAW,GAAG,EAApB;AACAnF,MAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACtC,EAApB,CAFkC,CAIlC;;AACA,GAAC,SAAS2I,MAAT,CAAgBC,OAAhB,EAAyB;AACxB,QAAI1D,IAAI,KAAK0D,OAAT,IAAoBrF,IAAI,CAACqF,OAAD,CAA5B,EAAuC;AACrCF,iBAAW,CAAClE,IAAZ,CAAiBoE,OAAjB;AACD;;AACD,SAAK,IAAIpF,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGmF,OAAO,CAACpB,UAAR,CAAmB1R,MAA3C,EAAmD0N,GAAG,GAAGC,GAAzD,EAA8DD,GAAG,EAAjE,EAAqE;AACnEmF,YAAM,CAACC,OAAO,CAACpB,UAAR,CAAmBhE,GAAnB,CAAD,CAAN;AACD;AACF,GAPD,EAOG0B,IAPH;;AASA,SAAOwD,WAAP;AACD;AAED;;;;;;;;;AAOA,SAASG,IAAT,CAAc3D,IAAd,EAAoB4D,WAApB,EAAiC;AAC/B,QAAMC,MAAM,GAAG7D,IAAI,CAAC2C,UAApB;AACA,QAAMmB,OAAO,GAAGlU,yBAAC,CAAC,MAAMgU,WAAN,GAAoB,GAArB,CAAD,CAA2B,CAA3B,CAAhB;AAEAC,QAAM,CAACE,YAAP,CAAoBD,OAApB,EAA6B9D,IAA7B;AACA8D,SAAO,CAACE,WAAR,CAAoBhE,IAApB;AAEA,SAAO8D,OAAP;AACD;AAED;;;;;;;;AAMA,SAASG,WAAT,CAAqBjE,IAArB,EAA2BkE,SAA3B,EAAsC;AACpC,QAAMzE,IAAI,GAAGyE,SAAS,CAACpC,WAAvB;AACA,MAAI+B,MAAM,GAAGK,SAAS,CAACvB,UAAvB;;AACA,MAAIlD,IAAJ,EAAU;AACRoE,UAAM,CAACE,YAAP,CAAoB/D,IAApB,EAA0BP,IAA1B;AACD,GAFD,MAEO;AACLoE,UAAM,CAACG,WAAP,CAAmBhE,IAAnB;AACD;;AACD,SAAOA,IAAP;AACD;AAED;;;;;;;;AAMA,SAASmE,gBAAT,CAA0BnE,IAA1B,EAAgCoE,MAAhC,EAAwC;AACtCxU,2BAAC,CAACM,IAAF,CAAOkU,MAAP,EAAe,UAAS9F,GAAT,EAAc3N,KAAd,EAAqB;AAClCqP,QAAI,CAACgE,WAAL,CAAiBrT,KAAjB;AACD,GAFD;AAGA,SAAOqP,IAAP;AACD;AAED;;;;;;;;AAMA,SAASqE,eAAT,CAAyBC,KAAzB,EAAgC;AAC9B,SAAOA,KAAK,CAACC,MAAN,KAAiB,CAAxB;AACD;AAED;;;;;;;;AAMA,SAASC,gBAAT,CAA0BF,KAA1B,EAAiC;AAC/B,SAAOA,KAAK,CAACC,MAAN,KAAiBnC,UAAU,CAACkC,KAAK,CAACtE,IAAP,CAAlC;AACD;AAED;;;;;;;;AAMA,SAASyE,WAAT,CAAqBH,KAArB,EAA4B;AAC1B,SAAOD,eAAe,CAACC,KAAD,CAAf,IAA0BE,gBAAgB,CAACF,KAAD,CAAjD;AACD;AAED;;;;;;;;;AAOA,SAASI,YAAT,CAAsB1E,IAAtB,EAA4BwB,QAA5B,EAAsC;AACpC,SAAOxB,IAAI,IAAIA,IAAI,KAAKwB,QAAxB,EAAkC;AAChC,QAAImD,YAAQ,CAAC3E,IAAD,CAAR,KAAmB,CAAvB,EAA0B;AACxB,aAAO,KAAP;AACD;;AACDA,QAAI,GAAGA,IAAI,CAAC2C,UAAZ;AACD;;AAED,SAAO,IAAP;AACD;AAED;;;;;;;;;AAOA,SAASiC,aAAT,CAAuB5E,IAAvB,EAA6BwB,QAA7B,EAAuC;AACrC,MAAI,CAACA,QAAL,EAAe;AACb,WAAO,KAAP;AACD;;AACD,SAAOxB,IAAI,IAAIA,IAAI,KAAKwB,QAAxB,EAAkC;AAChC,QAAImD,YAAQ,CAAC3E,IAAD,CAAR,KAAmBoC,UAAU,CAACpC,IAAI,CAAC2C,UAAN,CAAV,GAA8B,CAArD,EAAwD;AACtD,aAAO,KAAP;AACD;;AACD3C,QAAI,GAAGA,IAAI,CAAC2C,UAAZ;AACD;;AAED,SAAO,IAAP;AACD;AAED;;;;;;;;AAMA,SAASkC,iBAAT,CAA2BP,KAA3B,EAAkC9C,QAAlC,EAA4C;AAC1C,SAAO6C,eAAe,CAACC,KAAD,CAAf,IAA0BI,YAAY,CAACJ,KAAK,CAACtE,IAAP,EAAawB,QAAb,CAA7C;AACD;AAED;;;;;;;;AAMA,SAASsD,kBAAT,CAA4BR,KAA5B,EAAmC9C,QAAnC,EAA6C;AAC3C,SAAOgD,gBAAgB,CAACF,KAAD,CAAhB,IAA2BM,aAAa,CAACN,KAAK,CAACtE,IAAP,EAAawB,QAAb,CAA/C;AACD;AAED;;;;;;;AAKA,SAASmD,YAAT,CAAkB3E,IAAlB,EAAwB;AACtB,MAAIuE,MAAM,GAAG,CAAb;;AACA,SAAQvE,IAAI,GAAGA,IAAI,CAAC+B,eAApB,EAAsC;AACpCwC,UAAM,IAAI,CAAV;AACD;;AACD,SAAOA,MAAP;AACD;;AAED,SAASQ,WAAT,CAAqB/E,IAArB,EAA2B;AACzB,SAAO,CAAC,EAAEA,IAAI,IAAIA,IAAI,CAACsC,UAAb,IAA2BtC,IAAI,CAACsC,UAAL,CAAgB1R,MAA7C,CAAR;AACD;AAED;;;;;;;;;AAOA,SAASoU,aAAT,CAAmBV,KAAnB,EAA0BW,iBAA1B,EAA6C;AAC3C,MAAIjF,IAAJ;AACA,MAAIuE,MAAJ;;AAEA,MAAID,KAAK,CAACC,MAAN,KAAiB,CAArB,EAAwB;AACtB,QAAIxE,UAAU,CAACuE,KAAK,CAACtE,IAAP,CAAd,EAA4B;AAC1B,aAAO,IAAP;AACD;;AAEDA,QAAI,GAAGsE,KAAK,CAACtE,IAAN,CAAW2C,UAAlB;AACA4B,UAAM,GAAGI,YAAQ,CAACL,KAAK,CAACtE,IAAP,CAAjB;AACD,GAPD,MAOO,IAAI+E,WAAW,CAACT,KAAK,CAACtE,IAAP,CAAf,EAA6B;AAClCA,QAAI,GAAGsE,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAAN,GAAe,CAArC,CAAP;AACAA,UAAM,GAAGnC,UAAU,CAACpC,IAAD,CAAnB;AACD,GAHM,MAGA;AACLA,QAAI,GAAGsE,KAAK,CAACtE,IAAb;AACAuE,UAAM,GAAGU,iBAAiB,GAAG,CAAH,GAAOX,KAAK,CAACC,MAAN,GAAe,CAAhD;AACD;;AAED,SAAO;AACLvE,QAAI,EAAEA,IADD;AAELuE,UAAM,EAAEA;AAFH,GAAP;AAID;AAED;;;;;;;;;AAOA,SAASW,aAAT,CAAmBZ,KAAnB,EAA0BW,iBAA1B,EAA6C;AAC3C,MAAIjF,IAAJ,EAAUuE,MAAV;;AAEA,MAAIvF,WAAO,CAACsF,KAAK,CAACtE,IAAP,CAAX,EAAyB;AACvB,WAAO,IAAP;AACD;;AAED,MAAIoC,UAAU,CAACkC,KAAK,CAACtE,IAAP,CAAV,KAA2BsE,KAAK,CAACC,MAArC,EAA6C;AAC3C,QAAIxE,UAAU,CAACuE,KAAK,CAACtE,IAAP,CAAd,EAA4B;AAC1B,aAAO,IAAP;AACD;;AAEDA,QAAI,GAAGsE,KAAK,CAACtE,IAAN,CAAW2C,UAAlB;AACA4B,UAAM,GAAGI,YAAQ,CAACL,KAAK,CAACtE,IAAP,CAAR,GAAuB,CAAhC;AACD,GAPD,MAOO,IAAI+E,WAAW,CAACT,KAAK,CAACtE,IAAP,CAAf,EAA6B;AAClCA,QAAI,GAAGsE,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAA5B,CAAP;AACAA,UAAM,GAAG,CAAT;;AACA,QAAIvF,WAAO,CAACgB,IAAD,CAAX,EAAmB;AACjB,aAAO,IAAP;AACD;AACF,GANM,MAMA;AACLA,QAAI,GAAGsE,KAAK,CAACtE,IAAb;AACAuE,UAAM,GAAGU,iBAAiB,GAAG7C,UAAU,CAACkC,KAAK,CAACtE,IAAP,CAAb,GAA4BsE,KAAK,CAACC,MAAN,GAAe,CAArE;;AAEA,QAAIvF,WAAO,CAACgB,IAAD,CAAX,EAAmB;AACjB,aAAO,IAAP;AACD;AACF;;AAED,SAAO;AACLA,QAAI,EAAEA,IADD;AAELuE,UAAM,EAAEA;AAFH,GAAP;AAID;AAED;;;;;;;;;AAOA,SAASY,WAAT,CAAqBC,MAArB,EAA6BC,MAA7B,EAAqC;AACnC,SAAOD,MAAM,CAACpF,IAAP,KAAgBqF,MAAM,CAACrF,IAAvB,IAA+BoF,MAAM,CAACb,MAAP,KAAkBc,MAAM,CAACd,MAA/D;AACD;AAED;;;;;;;;AAMA,SAASe,cAAT,CAAwBhB,KAAxB,EAA+B;AAC7B,MAAIjE,MAAM,CAACiE,KAAK,CAACtE,IAAP,CAAN,IAAsB,CAAC+E,WAAW,CAACT,KAAK,CAACtE,IAAP,CAAlC,IAAkDhB,WAAO,CAACsF,KAAK,CAACtE,IAAP,CAA7D,EAA2E;AACzE,WAAO,IAAP;AACD;;AAED,QAAMuF,QAAQ,GAAGjB,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAAN,GAAe,CAArC,CAAjB;AACA,QAAMiB,SAAS,GAAGlB,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAA5B,CAAlB;;AACA,MAAI,CAAC,CAACgB,QAAD,IAAa/E,MAAM,CAAC+E,QAAD,CAApB,MAAoC,CAACC,SAAD,IAAchF,MAAM,CAACgF,SAAD,CAAxD,CAAJ,EAA0E;AACxE,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD;AAED;;;;;;;;;AAOA,SAASC,cAAT,CAAwBnB,KAAxB,EAA+BjG,IAA/B,EAAqC;AACnC,SAAOiG,KAAP,EAAc;AACZ,QAAIjG,IAAI,CAACiG,KAAD,CAAR,EAAiB;AACf,aAAOA,KAAP;AACD;;AAEDA,SAAK,GAAGU,aAAS,CAACV,KAAD,CAAjB;AACD;;AAED,SAAO,IAAP;AACD;AAED;;;;;;;;;AAOA,SAASoB,cAAT,CAAwBpB,KAAxB,EAA+BjG,IAA/B,EAAqC;AACnC,SAAOiG,KAAP,EAAc;AACZ,QAAIjG,IAAI,CAACiG,KAAD,CAAR,EAAiB;AACf,aAAOA,KAAP;AACD;;AAEDA,SAAK,GAAGY,aAAS,CAACZ,KAAD,CAAjB;AACD;;AAED,SAAO,IAAP;AACD;AAED;;;;;;;;AAMA,SAASqB,WAAT,CAAqBrB,KAArB,EAA4B;AAC1B,MAAI,CAACjE,MAAM,CAACiE,KAAK,CAACtE,IAAP,CAAX,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,QAAM4F,EAAE,GAAGtB,KAAK,CAACtE,IAAN,CAAWqC,SAAX,CAAqBwD,MAArB,CAA4BvB,KAAK,CAACC,MAAN,GAAe,CAA3C,CAAX;AACA,SAAOqB,EAAE,IAAKA,EAAE,KAAK,GAAP,IAAcA,EAAE,KAAKjG,SAAnC;AACD;AAED;;;;;;;;AAMA,SAASmG,YAAT,CAAsBxB,KAAtB,EAA6B;AAC3B,MAAI,CAACjE,MAAM,CAACiE,KAAK,CAACtE,IAAP,CAAX,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,QAAM4F,EAAE,GAAGtB,KAAK,CAACtE,IAAN,CAAWqC,SAAX,CAAqBwD,MAArB,CAA4BvB,KAAK,CAACC,MAAN,GAAe,CAA3C,CAAX;AACA,SAAOqB,EAAE,KAAK,GAAP,IAAcA,EAAE,KAAKjG,SAA5B;AACD;;AAAA;AAED;;;;;;;;;AAQA,SAASoG,SAAT,CAAmBC,UAAnB,EAA+BC,QAA/B,EAAyCC,OAAzC,EAAkDjB,iBAAlD,EAAqE;AACnE,MAAIX,KAAK,GAAG0B,UAAZ;;AAEA,SAAO1B,KAAP,EAAc;AACZ4B,WAAO,CAAC5B,KAAD,CAAP;;AAEA,QAAIa,WAAW,CAACb,KAAD,EAAQ2B,QAAR,CAAf,EAAkC;AAChC;AACD;;AAED,UAAME,YAAY,GAAGlB,iBAAiB,IACnBe,UAAU,CAAChG,IAAX,KAAoBsE,KAAK,CAACtE,IADxB,IAEFiG,QAAQ,CAACjG,IAAT,KAAkBsE,KAAK,CAACtE,IAF3C;AAGAsE,SAAK,GAAGY,aAAS,CAACZ,KAAD,EAAQ6B,YAAR,CAAjB;AACD;AACF;AAED;;;;;;;;;;AAQA,SAASC,cAAT,CAAwB5E,QAAxB,EAAkCxB,IAAlC,EAAwC;AACtC,QAAM8C,SAAS,GAAGD,YAAY,CAAC7C,IAAD,EAAO5C,IAAI,CAAC5C,EAAL,CAAQgH,QAAR,CAAP,CAA9B;AACA,SAAOsB,SAAS,CAAC/F,GAAV,CAAc4H,YAAd,EAAwB0B,OAAxB,EAAP;AACD;AAED;;;;;;;;;;AAQA,SAASC,cAAT,CAAwB9E,QAAxB,EAAkC+E,OAAlC,EAA2C;AACzC,MAAI7C,OAAO,GAAGlC,QAAd;;AACA,OAAK,IAAIgF,CAAC,GAAG,CAAR,EAAWjI,GAAG,GAAGgI,OAAO,CAAC3V,MAA9B,EAAsC4V,CAAC,GAAGjI,GAA1C,EAA+CiI,CAAC,EAAhD,EAAoD;AAClD,QAAI9C,OAAO,CAACpB,UAAR,CAAmB1R,MAAnB,IAA6B2V,OAAO,CAACC,CAAD,CAAxC,EAA6C;AAC3C9C,aAAO,GAAGA,OAAO,CAACpB,UAAR,CAAmBoB,OAAO,CAACpB,UAAR,CAAmB1R,MAAnB,GAA4B,CAA/C,CAAV;AACD,KAFD,MAEO;AACL8S,aAAO,GAAGA,OAAO,CAACpB,UAAR,CAAmBiE,OAAO,CAACC,CAAD,CAA1B,CAAV;AACD;AACF;;AACD,SAAO9C,OAAP;AACD;AAED;;;;;;;;;;;;;;AAYA,SAAS+C,SAAT,CAAmBnC,KAAnB,EAA0B/U,OAA1B,EAAmC;AACjC,MAAImX,sBAAsB,GAAGnX,OAAO,IAAIA,OAAO,CAACmX,sBAAhD;AACA,QAAMC,mBAAmB,GAAGpX,OAAO,IAAIA,OAAO,CAACoX,mBAA/C;AACA,QAAMC,oBAAoB,GAAGrX,OAAO,IAAIA,OAAO,CAACqX,oBAAhD;;AAEA,MAAIA,oBAAJ,EAA0B;AACxBF,0BAAsB,GAAG,IAAzB;AACD,GAPgC,CASjC;;;AACA,MAAIjC,WAAW,CAACH,KAAD,CAAX,KAAuBjE,MAAM,CAACiE,KAAK,CAACtE,IAAP,CAAN,IAAsB2G,mBAA7C,CAAJ,EAAuE;AACrE,QAAItC,eAAe,CAACC,KAAD,CAAnB,EAA4B;AAC1B,aAAOA,KAAK,CAACtE,IAAb;AACD,KAFD,MAEO,IAAIwE,gBAAgB,CAACF,KAAD,CAApB,EAA6B;AAClC,aAAOA,KAAK,CAACtE,IAAN,CAAW8B,WAAlB;AACD;AACF,GAhBgC,CAkBjC;;;AACA,MAAIzB,MAAM,CAACiE,KAAK,CAACtE,IAAP,CAAV,EAAwB;AACtB,WAAOsE,KAAK,CAACtE,IAAN,CAAW6G,SAAX,CAAqBvC,KAAK,CAACC,MAA3B,CAAP;AACD,GAFD,MAEO;AACL,UAAMuC,SAAS,GAAGxC,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAA5B,CAAlB;AACA,UAAMwC,KAAK,GAAG9C,WAAW,CAACK,KAAK,CAACtE,IAAN,CAAWgH,SAAX,CAAqB,KAArB,CAAD,EAA8B1C,KAAK,CAACtE,IAApC,CAAzB;AACAmE,oBAAgB,CAAC4C,KAAD,EAAQzD,QAAQ,CAACwD,SAAD,CAAhB,CAAhB;;AAEA,QAAI,CAACJ,sBAAL,EAA6B;AAC3BhE,sBAAgB,CAAC4B,KAAK,CAACtE,IAAP,CAAhB;AACA0C,sBAAgB,CAACqE,KAAD,CAAhB;AACD;;AAED,QAAIH,oBAAJ,EAA0B;AACxB,UAAI5H,WAAO,CAACsF,KAAK,CAACtE,IAAP,CAAX,EAAyB;AACvB5M,cAAM,CAACkR,KAAK,CAACtE,IAAP,CAAN;AACD;;AACD,UAAIhB,WAAO,CAAC+H,KAAD,CAAX,EAAoB;AAClB3T,cAAM,CAAC2T,KAAD,CAAN;AACA,eAAOzC,KAAK,CAACtE,IAAN,CAAW8B,WAAlB;AACD;AACF;;AAED,WAAOiF,KAAP;AACD;AACF;AAED;;;;;;;;;;;;;;AAYA,SAASE,SAAT,CAAmBC,IAAnB,EAAyB5C,KAAzB,EAAgC/U,OAAhC,EAAyC;AACvC;AACA,QAAMuT,SAAS,GAAGD,YAAY,CAACyB,KAAK,CAACtE,IAAP,EAAa5C,IAAI,CAAC5C,EAAL,CAAQ0M,IAAR,CAAb,CAA9B;;AAEA,MAAI,CAACpE,SAAS,CAAClS,MAAf,EAAuB;AACrB,WAAO,IAAP;AACD,GAFD,MAEO,IAAIkS,SAAS,CAAClS,MAAV,KAAqB,CAAzB,EAA4B;AACjC,WAAO6V,SAAS,CAACnC,KAAD,EAAQ/U,OAAR,CAAhB;AACD;;AAED,SAAOuT,SAAS,CAACnE,MAAV,CAAiB,UAASqB,IAAT,EAAe6D,MAAf,EAAuB;AAC7C,QAAI7D,IAAI,KAAKsE,KAAK,CAACtE,IAAnB,EAAyB;AACvBA,UAAI,GAAGyG,SAAS,CAACnC,KAAD,EAAQ/U,OAAR,CAAhB;AACD;;AAED,WAAOkX,SAAS,CAAC;AACfzG,UAAI,EAAE6D,MADS;AAEfU,YAAM,EAAEvE,IAAI,GAAG2E,YAAQ,CAAC3E,IAAD,CAAX,GAAoBoC,UAAU,CAACyB,MAAD;AAF3B,KAAD,EAGbtU,OAHa,CAAhB;AAID,GATM,CAAP;AAUD;AAED;;;;;;;;;AAOA,SAAS4X,UAAT,CAAoB7C,KAApB,EAA2BtD,QAA3B,EAAqC;AACnC;AACA;AACA;AACA,QAAM3C,IAAI,GAAG2C,QAAQ,GAAGP,MAAH,GAAYQ,eAAjC;AACA,QAAM6B,SAAS,GAAGD,YAAY,CAACyB,KAAK,CAACtE,IAAP,EAAa3B,IAAb,CAA9B;AACA,QAAM+I,WAAW,GAAGlS,KAAK,CAAC+I,IAAN,CAAW6E,SAAX,KAAyBwB,KAAK,CAACtE,IAAnD;AAEA,MAAIqH,SAAJ,EAAeC,SAAf;;AACA,MAAIjJ,IAAI,CAAC+I,WAAD,CAAR,EAAuB;AACrBC,aAAS,GAAGvE,SAAS,CAACA,SAAS,CAAClS,MAAV,GAAmB,CAApB,CAArB;AACA0W,aAAS,GAAGF,WAAZ;AACD,GAHD,MAGO;AACLC,aAAS,GAAGD,WAAZ;AACAE,aAAS,GAAGD,SAAS,CAAC1E,UAAtB;AACD,GAfkC,CAiBnC;;;AACA,MAAI4E,KAAK,GAAGF,SAAS,IAAIJ,SAAS,CAACI,SAAD,EAAY/C,KAAZ,EAAmB;AACnDoC,0BAAsB,EAAE1F,QAD2B;AAEnD2F,uBAAmB,EAAE3F;AAF8B,GAAnB,CAAlC,CAlBmC,CAuBnC;;AACA,MAAI,CAACuG,KAAD,IAAUD,SAAS,KAAKhD,KAAK,CAACtE,IAAlC,EAAwC;AACtCuH,SAAK,GAAGjD,KAAK,CAACtE,IAAN,CAAWsC,UAAX,CAAsBgC,KAAK,CAACC,MAA5B,CAAR;AACD;;AAED,SAAO;AACLiB,aAAS,EAAE+B,KADN;AAELD,aAAS,EAAEA;AAFN,GAAP;AAID;;AAED,SAASxW,MAAT,CAAgBsP,QAAhB,EAA0B;AACxB,SAAOhI,QAAQ,CAACC,aAAT,CAAuB+H,QAAvB,CAAP;AACD;;AAED,SAASoH,UAAT,CAAoBC,IAApB,EAA0B;AACxB,SAAOrP,QAAQ,CAACsP,cAAT,CAAwBD,IAAxB,CAAP;AACD;AAED;;;;;;;;;;AAQA,SAASrU,MAAT,CAAgB4M,IAAhB,EAAsB2H,aAAtB,EAAqC;AACnC,MAAI,CAAC3H,IAAD,IAAS,CAACA,IAAI,CAAC2C,UAAnB,EAA+B;AAAE;AAAS;;AAC1C,MAAI3C,IAAI,CAAC4H,UAAT,EAAqB;AAAE,WAAO5H,IAAI,CAAC4H,UAAL,CAAgBD,aAAhB,CAAP;AAAwC;;AAE/D,QAAM9D,MAAM,GAAG7D,IAAI,CAAC2C,UAApB;;AACA,MAAI,CAACgF,aAAL,EAAoB;AAClB,UAAMtE,KAAK,GAAG,EAAd;;AACA,SAAK,IAAImD,CAAC,GAAG,CAAR,EAAWjI,GAAG,GAAGyB,IAAI,CAACsC,UAAL,CAAgB1R,MAAtC,EAA8C4V,CAAC,GAAGjI,GAAlD,EAAuDiI,CAAC,EAAxD,EAA4D;AAC1DnD,WAAK,CAAC/D,IAAN,CAAWU,IAAI,CAACsC,UAAL,CAAgBkE,CAAhB,CAAX;AACD;;AAED,SAAK,IAAIA,CAAC,GAAG,CAAR,EAAWjI,GAAG,GAAG8E,KAAK,CAACzS,MAA5B,EAAoC4V,CAAC,GAAGjI,GAAxC,EAA6CiI,CAAC,EAA9C,EAAkD;AAChD3C,YAAM,CAACE,YAAP,CAAoBV,KAAK,CAACmD,CAAD,CAAzB,EAA8BxG,IAA9B;AACD;AACF;;AAED6D,QAAM,CAACgE,WAAP,CAAmB7H,IAAnB;AACD;AAED;;;;;;;;AAMA,SAAS8H,WAAT,CAAqB9H,IAArB,EAA2B3B,IAA3B,EAAiC;AAC/B,SAAO2B,IAAP,EAAa;AACX,QAAID,UAAU,CAACC,IAAD,CAAV,IAAoB,CAAC3B,IAAI,CAAC2B,IAAD,CAA7B,EAAqC;AACnC;AACD;;AAED,UAAM6D,MAAM,GAAG7D,IAAI,CAAC2C,UAApB;AACAvP,UAAM,CAAC4M,IAAD,CAAN;AACAA,QAAI,GAAG6D,MAAP;AACD;AACF;AAED;;;;;;;;;;;AASA,SAASkE,OAAT,CAAiB/H,IAAjB,EAAuBI,QAAvB,EAAiC;AAC/B,MAAIJ,IAAI,CAACI,QAAL,CAAcnD,WAAd,OAAgCmD,QAAQ,CAACnD,WAAT,EAApC,EAA4D;AAC1D,WAAO+C,IAAP;AACD;;AAED,QAAMgI,OAAO,GAAGlX,MAAM,CAACsP,QAAD,CAAtB;;AAEA,MAAIJ,IAAI,CAACxL,KAAL,CAAWyT,OAAf,EAAwB;AACtBD,WAAO,CAACxT,KAAR,CAAcyT,OAAd,GAAwBjI,IAAI,CAACxL,KAAL,CAAWyT,OAAnC;AACD;;AAED9D,kBAAgB,CAAC6D,OAAD,EAAU9S,KAAK,CAAC2J,IAAN,CAAWmB,IAAI,CAACsC,UAAhB,CAAV,CAAhB;AACA2B,aAAW,CAAC+D,OAAD,EAAUhI,IAAV,CAAX;AACA5M,QAAM,CAAC4M,IAAD,CAAN;AAEA,SAAOgI,OAAP;AACD;;AAED,MAAME,UAAU,GAAG/H,kBAAkB,CAAC,UAAD,CAArC;AAEA;;;;;AAIA,SAASgI,SAAT,CAAexY,KAAf,EAAsByY,eAAtB,EAAuC;AACrC,QAAMC,GAAG,GAAGH,UAAU,CAACvY,KAAK,CAAC,CAAD,CAAN,CAAV,GAAuBA,KAAK,CAAC0Y,GAAN,EAAvB,GAAqC1Y,KAAK,CAACG,IAAN,EAAjD;;AACA,MAAIsY,eAAJ,EAAqB;AACnB,WAAOC,GAAG,CAACN,OAAJ,CAAY,SAAZ,EAAuB,EAAvB,CAAP;AACD;;AACD,SAAOM,GAAP;AACD;AAED;;;;;;;;;;AAQA,SAASvY,QAAT,CAAcH,KAAd,EAAqB2Y,gBAArB,EAAuC;AACrC,MAAIjZ,MAAM,GAAG8Y,SAAK,CAACxY,KAAD,CAAlB;;AAEA,MAAI2Y,gBAAJ,EAAsB;AACpB,UAAMC,QAAQ,GAAG,uCAAjB;AACAlZ,UAAM,GAAGA,MAAM,CAAC0Y,OAAP,CAAeQ,QAAf,EAAyB,UAASC,KAAT,EAAgBC,QAAhB,EAA0B9W,IAA1B,EAAgC;AAChEA,UAAI,GAAGA,IAAI,CAACsL,WAAL,EAAP;AACA,YAAMyL,sBAAsB,GAAG,8BAA8B5P,IAA9B,CAAmCnH,IAAnC,KACF,CAAC,CAAC8W,QAD/B;AAEA,YAAME,WAAW,GAAG,4CAA4C7P,IAA5C,CAAiDnH,IAAjD,CAApB;AAEA,aAAO6W,KAAK,IAAKE,sBAAsB,IAAIC,WAA3B,GAA0C,IAA1C,GAAiD,EAArD,CAAZ;AACD,KAPQ,CAAT;AAQAtZ,UAAM,GAAGA,MAAM,CAACuZ,IAAP,EAAT;AACD;;AAED,SAAOvZ,MAAP;AACD;;AAED,SAASwZ,kBAAT,CAA4BC,WAA5B,EAAyC;AACvC,QAAMC,YAAY,GAAGnZ,yBAAC,CAACkZ,WAAD,CAAtB;AACA,QAAME,GAAG,GAAGD,YAAY,CAACxE,MAAb,EAAZ;AACA,QAAM7S,MAAM,GAAGqX,YAAY,CAACE,WAAb,CAAyB,IAAzB,CAAf,CAHuC,CAGQ;;AAE/C,SAAO;AACLtT,QAAI,EAAEqT,GAAG,CAACrT,IADL;AAELyG,OAAG,EAAE4M,GAAG,CAAC5M,GAAJ,GAAU1K;AAFV,GAAP;AAID;;AAED,SAASwX,YAAT,CAAsBvZ,KAAtB,EAA6BwZ,MAA7B,EAAqC;AACnCC,QAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBzY,OAApB,CAA4B,UAASgM,GAAT,EAAc;AACxC/M,SAAK,CAACY,EAAN,CAASmM,GAAT,EAAcyM,MAAM,CAACzM,GAAD,CAApB;AACD,GAFD;AAGD;;AAED,SAAS4M,YAAT,CAAsB3Z,KAAtB,EAA6BwZ,MAA7B,EAAqC;AACnCC,QAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBzY,OAApB,CAA4B,UAASgM,GAAT,EAAc;AACxC/M,SAAK,CAAC4Z,GAAN,CAAU7M,GAAV,EAAeyM,MAAM,CAACzM,GAAD,CAArB;AACD,GAFD;AAGD;AAED;;;;;;;;;;AAQA,SAAS8M,gBAAT,CAA0BxJ,IAA1B,EAAgC;AAC9B,SAAOA,IAAI,IAAI,CAACK,MAAM,CAACL,IAAD,CAAf,IAAyB9K,KAAK,CAACuJ,QAAN,CAAeuB,IAAI,CAACyJ,SAApB,EAA+B,eAA/B,CAAhC;AACD;;AAEc;AACb;AACA9J,WAFa;;AAGb;AACAG,sBAJa;;AAKb;AACA4J,OAAK,EAAExH,SANM;;AAOb;AACAyH,WAAS,EAAG,MAAKzH,SAAU,MARd;AASb/B,oBATa;AAUbJ,YAVa;AAWbG,iBAXa;AAYbG,QAZa;AAabE,WAba;AAcbC,QAda;AAebC,QAfa;AAgBbI,YAhBa;AAiBbH,WAjBa;AAkBbM,UAlBa;AAmBb4I,SAAO,EAAExM,IAAI,CAACpC,GAAL,CAASgG,YAAT,CAnBI;AAoBbS,cApBa;AAqBbC,QArBa;AAsBbH,cAtBa;AAuBbZ,OAvBa;AAwBbO,QAxBa;AAyBbJ,SAzBa;AA0BbC,QA1Ba;AA2BbM,QA3Ba;AA4BbD,cA5Ba;AA6BbH,iBA7Ba;AA8BbK,UA9Ba;AA+BbuI,OAAK,EAAE1J,kBAAkB,CAAC,KAAD,CA/BZ;AAgCbS,MAhCa;AAiCbkJ,MAAI,EAAE3J,kBAAkB,CAAC,IAAD,CAjCX;AAkCb4J,QAAM,EAAE5J,kBAAkB,CAAC,MAAD,CAlCb;AAmCb6J,KAAG,EAAE7J,kBAAkB,CAAC,GAAD,CAnCV;AAoCb8J,KAAG,EAAE9J,kBAAkB,CAAC,GAAD,CApCV;AAqCb+J,KAAG,EAAE/J,kBAAkB,CAAC,GAAD,CArCV;AAsCbgK,KAAG,EAAEhK,kBAAkB,CAAC,GAAD,CAtCV;AAuCbiK,OAAK,EAAEjK,kBAAkB,CAAC,KAAD,CAvCZ;AAwCb+H,YAxCa;AAyCb3F,qBAzCa;AA0CbvD,SA1Ca;AA2CbqL,eAAa,EAAEjN,IAAI,CAACjC,GAAL,CAASmG,QAAT,EAAmBtC,WAAnB,CA3CF;AA4Cb2C,kBA5Ca;AA6CbK,qBA7Ca;AA8CbI,YA9Ca;AA+CbiC,iBA/Ca;AAgDbG,kBAhDa;AAiDbC,aAjDa;AAkDbC,cAlDa;AAmDbE,eAnDa;AAoDbC,mBApDa;AAqDbC,oBArDa;AAsDbE,WAtDa;AAuDbE,WAvDa;AAwDbC,aAxDa;AAyDbG,gBAzDa;AA0DbG,gBA1Da;AA2DbC,gBA3Da;AA4DbC,aA5Da;AA6DbG,cA7Da;AA8DbC,WA9Da;AA+DbvE,UA/Da;AAgEboB,qBAhEa;AAiEbC,cAjEa;AAkEbG,cAlEa;AAmEbM,UAnEa;AAoEbF,UApEa;AAqEbG,gBArEa;AAsEbL,gBAtEa;AAuEbS,MAvEa;AAwEbM,aAxEa;AAyEbE,kBAzEa;AA0EbQ,UA1Ea;AA2EbI,aA3Ea;AA4EbqB,gBA5Ea;AA6EbE,gBA7Ea;AA8EbW,WA9Ea;AA+EbE,YA/Ea;AAgFbrW,QAhFa;AAiFb0W,YAjFa;AAkFbpU,QAlFa;AAmFb0U,aAnFa;AAoFbC,SApFa;AAqFbjY,MArFa;AAsFbqY,OAtFa;AAuFbU,oBAvFa;AAwFbK,cAxFa;AAyFbI,cAzFa;AA0FbE;AA1Fa,CAAf,E;;AC9hCA;AACA;AACA;AACA;AAEe,MAAMc,eAAN,CAAc;AAC3B;;;;AAIAlb,aAAW,CAACmb,KAAD,EAAQhb,OAAR,EAAiB;AAC1B,SAAKib,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKD,KAAL,GAAaA,KAAb;AAEA,SAAKE,KAAL,GAAa,EAAb;AACA,SAAKC,OAAL,GAAe,EAAf;AACA,SAAKC,UAAL,GAAkB,EAAlB;AACA,SAAKpb,OAAL,GAAeK,yBAAC,CAACwB,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmB7B,OAAnB,CAAf;AAEA,SAAKqb,UAAL;AACD;AAED;;;;;AAGAA,YAAU,GAAG;AACX,SAAKD,UAAL,GAAkB,KAAKH,EAAL,CAAQK,YAAR,CAAqB,KAAKN,KAA1B,EAAiC,KAAKhb,OAAtC,CAAlB;;AACA,SAAKub,WAAL;;AACA,SAAKP,KAAL,CAAWQ,IAAX;AACA,WAAO,IAAP;AACD;AAED;;;;;AAGAC,SAAO,GAAG;AACR,SAAKC,QAAL;;AACA,SAAKV,KAAL,CAAWW,UAAX,CAAsB,YAAtB;AACA,SAAKV,EAAL,CAAQW,YAAR,CAAqB,KAAKZ,KAA1B,EAAiC,KAAKI,UAAtC;AACD;AAED;;;;;AAGArU,OAAK,GAAG;AACN,UAAM8U,QAAQ,GAAG,KAAKC,UAAL,EAAjB;AACA,SAAKC,IAAL,CAAUC,GAAG,CAAC5B,SAAd;;AACA,SAAKsB,QAAL;;AACA,SAAKH,WAAL;;AAEA,QAAIM,QAAJ,EAAc;AACZ,WAAKI,OAAL;AACD;AACF;;AAEDV,aAAW,GAAG;AACZ;AACA,SAAKvb,OAAL,CAAayM,EAAb,GAAkBoB,IAAI,CAACtB,QAAL,CAAclM,yBAAC,CAAC6b,GAAF,EAAd,CAAlB,CAFY,CAGZ;;AACA,SAAKlc,OAAL,CAAa+X,SAAb,GAAyB,KAAK/X,OAAL,CAAa+X,SAAb,IAA0B,KAAKqD,UAAL,CAAgBe,MAAnE,CAJY,CAMZ;;AACA,UAAMC,OAAO,GAAG/b,yBAAC,CAACwB,MAAF,CAAS,EAAT,EAAa,KAAK7B,OAAL,CAAaoc,OAA1B,CAAhB;AACAvC,UAAM,CAACC,IAAP,CAAYsC,OAAZ,EAAqBjb,OAArB,CAA8BgM,GAAD,IAAS;AACpC,WAAKkC,IAAL,CAAU,YAAYlC,GAAtB,EAA2BiP,OAAO,CAACjP,GAAD,CAAlC;AACD,KAFD;AAIA,UAAMgO,OAAO,GAAG9a,yBAAC,CAACwB,MAAF,CAAS,EAAT,EAAa,KAAK7B,OAAL,CAAamb,OAA1B,EAAmC9a,yBAAC,CAACsB,UAAF,CAAa0a,OAAb,IAAwB,EAA3D,CAAhB,CAZY,CAcZ;;AACAxC,UAAM,CAACC,IAAP,CAAYqB,OAAZ,EAAqBha,OAArB,CAA8BgM,GAAD,IAAS;AACpC,WAAKmP,MAAL,CAAYnP,GAAZ,EAAiBgO,OAAO,CAAChO,GAAD,CAAxB,EAA+B,IAA/B;AACD,KAFD;AAIA0M,UAAM,CAACC,IAAP,CAAY,KAAKqB,OAAjB,EAA0Bha,OAA1B,CAAmCgM,GAAD,IAAS;AACzC,WAAKoP,gBAAL,CAAsBpP,GAAtB;AACD,KAFD;AAGD;;AAEDuO,UAAQ,GAAG;AACT;AACA7B,UAAM,CAACC,IAAP,CAAY,KAAKqB,OAAjB,EAA0BrE,OAA1B,GAAoC3V,OAApC,CAA6CgM,GAAD,IAAS;AACnD,WAAKqP,YAAL,CAAkBrP,GAAlB;AACD,KAFD;AAIA0M,UAAM,CAACC,IAAP,CAAY,KAAKoB,KAAjB,EAAwB/Z,OAAxB,CAAiCgM,GAAD,IAAS;AACvC,WAAKsP,UAAL,CAAgBtP,GAAhB;AACD,KAFD,EANS,CAST;;AACA,SAAKuP,YAAL,CAAkB,SAAlB,EAA6B,IAA7B;AACD;;AAEDX,MAAI,CAACxb,IAAD,EAAO;AACT,UAAMoc,WAAW,GAAG,KAAKzQ,MAAL,CAAY,sBAAZ,CAApB;;AAEA,QAAI3L,IAAI,KAAKqc,SAAb,EAAwB;AACtB,WAAK1Q,MAAL,CAAY,eAAZ;AACA,aAAOyQ,WAAW,GAAG,KAAKvB,UAAL,CAAgByB,OAAhB,CAAwB/D,GAAxB,EAAH,GAAmC,KAAKsC,UAAL,CAAgB0B,QAAhB,CAAyBvc,IAAzB,EAArD;AACD,KAHD,MAGO;AACL,UAAIoc,WAAJ,EAAiB;AACf,aAAKvB,UAAL,CAAgByB,OAAhB,CAAwB/D,GAAxB,CAA4BvY,IAA5B;AACD,OAFD,MAEO;AACL,aAAK6a,UAAL,CAAgB0B,QAAhB,CAAyBvc,IAAzB,CAA8BA,IAA9B;AACD;;AACD,WAAKya,KAAL,CAAWlC,GAAX,CAAevY,IAAf;AACA,WAAKmc,YAAL,CAAkB,QAAlB,EAA4Bnc,IAA5B,EAAkC,KAAK6a,UAAL,CAAgB0B,QAAlD;AACD;AACF;;AAEDhB,YAAU,GAAG;AACX,WAAO,KAAKV,UAAL,CAAgB0B,QAAhB,CAAyBhc,IAAzB,CAA8B,iBAA9B,MAAqD,OAA5D;AACD;;AAEDic,QAAM,GAAG;AACP,SAAK3B,UAAL,CAAgB0B,QAAhB,CAAyBhc,IAAzB,CAA8B,iBAA9B,EAAiD,IAAjD;AACA,SAAKoL,MAAL,CAAY,kBAAZ,EAAgC,IAAhC;AACA,SAAKwQ,YAAL,CAAkB,SAAlB,EAA6B,KAA7B;AACA,SAAK1c,OAAL,CAAagd,OAAb,GAAuB,IAAvB;AACD;;AAEDf,SAAO,GAAG;AACR;AACA,QAAI,KAAK/P,MAAL,CAAY,sBAAZ,CAAJ,EAAyC;AACvC,WAAKA,MAAL,CAAY,qBAAZ;AACD;;AACD,SAAKkP,UAAL,CAAgB0B,QAAhB,CAAyBhc,IAAzB,CAA8B,iBAA9B,EAAiD,KAAjD;AACA,SAAKd,OAAL,CAAagd,OAAb,GAAuB,KAAvB;AACA,SAAK9Q,MAAL,CAAY,oBAAZ,EAAkC,IAAlC;AAEA,SAAKwQ,YAAL,CAAkB,SAAlB,EAA6B,IAA7B;AACD;;AAEDA,cAAY,GAAG;AACb,UAAMpP,SAAS,GAAG3H,KAAK,CAAC6I,IAAN,CAAWhN,SAAX,CAAlB;AACA,UAAMyM,IAAI,GAAGtI,KAAK,CAACkJ,IAAN,CAAWlJ,KAAK,CAAC2J,IAAN,CAAW9N,SAAX,CAAX,CAAb;AAEA,UAAMvB,QAAQ,GAAG,KAAKD,OAAL,CAAaid,SAAb,CAAuBpP,IAAI,CAACR,gBAAL,CAAsBC,SAAtB,EAAiC,IAAjC,CAAvB,CAAjB;;AACA,QAAIrN,QAAJ,EAAc;AACZA,cAAQ,CAAC0L,KAAT,CAAe,KAAKqP,KAAL,CAAW,CAAX,CAAf,EAA8B/M,IAA9B;AACD;;AACD,SAAK+M,KAAL,CAAWkC,OAAX,CAAmB,gBAAgB5P,SAAnC,EAA8CW,IAA9C;AACD;;AAEDsO,kBAAgB,CAACpP,GAAD,EAAM;AACpB,UAAMmP,MAAM,GAAG,KAAKnB,OAAL,CAAahO,GAAb,CAAf;AACAmP,UAAM,CAACa,gBAAP,GAA0Bb,MAAM,CAACa,gBAAP,IAA2BtP,IAAI,CAACtC,EAA1D;;AACA,QAAI,CAAC+Q,MAAM,CAACa,gBAAP,EAAL,EAAgC;AAC9B;AACD,KALmB,CAOpB;;;AACA,QAAIb,MAAM,CAACjB,UAAX,EAAuB;AACrBiB,YAAM,CAACjB,UAAP;AACD,KAVmB,CAYpB;;;AACA,QAAIiB,MAAM,CAAC1C,MAAX,EAAmB;AACjBoC,SAAG,CAACrC,YAAJ,CAAiB,KAAKqB,KAAtB,EAA6BsB,MAAM,CAAC1C,MAApC;AACD;AACF;;AAED0C,QAAM,CAACnP,GAAD,EAAMiQ,WAAN,EAAmBC,gBAAnB,EAAqC;AACzC,QAAI7b,SAAS,CAACH,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,aAAO,KAAK8Z,OAAL,CAAahO,GAAb,CAAP;AACD;;AAED,SAAKgO,OAAL,CAAahO,GAAb,IAAoB,IAAIiQ,WAAJ,CAAgB,IAAhB,CAApB;;AAEA,QAAI,CAACC,gBAAL,EAAuB;AACrB,WAAKd,gBAAL,CAAsBpP,GAAtB;AACD;AACF;;AAEDqP,cAAY,CAACrP,GAAD,EAAM;AAChB,UAAMmP,MAAM,GAAG,KAAKnB,OAAL,CAAahO,GAAb,CAAf;;AACA,QAAImP,MAAM,CAACa,gBAAP,EAAJ,EAA+B;AAC7B,UAAIb,MAAM,CAAC1C,MAAX,EAAmB;AACjBoC,WAAG,CAACjC,YAAJ,CAAiB,KAAKiB,KAAtB,EAA6BsB,MAAM,CAAC1C,MAApC;AACD;;AAED,UAAI0C,MAAM,CAACb,OAAX,EAAoB;AAClBa,cAAM,CAACb,OAAP;AACD;AACF;;AAED,WAAO,KAAKN,OAAL,CAAahO,GAAb,CAAP;AACD;;AAEDkC,MAAI,CAAClC,GAAD,EAAMhB,GAAN,EAAW;AACb,QAAI3K,SAAS,CAACH,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,aAAO,KAAK6Z,KAAL,CAAW/N,GAAX,CAAP;AACD;;AACD,SAAK+N,KAAL,CAAW/N,GAAX,IAAkBhB,GAAlB;AACD;;AAEDsQ,YAAU,CAACtP,GAAD,EAAM;AACd,QAAI,KAAK+N,KAAL,CAAW/N,GAAX,KAAmB,KAAK+N,KAAL,CAAW/N,GAAX,EAAgBsO,OAAvC,EAAgD;AAC9C,WAAKP,KAAL,CAAW/N,GAAX,EAAgBsO,OAAhB;AACD;;AAED,WAAO,KAAKP,KAAL,CAAW/N,GAAX,CAAP;AACD;AAED;;;;;AAGAmQ,mCAAiC,CAAChQ,SAAD,EAAYsL,KAAZ,EAAmB;AAClD,WAAQ2E,KAAD,IAAW;AAChB,WAAKC,mBAAL,CAAyBlQ,SAAzB,EAAoCsL,KAApC,EAA2C2E,KAA3C;AACA,WAAKrR,MAAL,CAAY,4BAAZ;AACD,KAHD;AAID;;AAEDsR,qBAAmB,CAAClQ,SAAD,EAAYsL,KAAZ,EAAmB;AACpC,WAAQ2E,KAAD,IAAW;AAChBA,WAAK,CAACE,cAAN;AACA,YAAMC,OAAO,GAAGrd,yBAAC,CAACkd,KAAK,CAACI,MAAP,CAAjB;AACA,WAAKzR,MAAL,CAAYoB,SAAZ,EAAuBsL,KAAK,IAAI8E,OAAO,CAACE,OAAR,CAAgB,cAAhB,EAAgCld,IAAhC,CAAqC,OAArC,CAAhC,EAA+Egd,OAA/E;AACD,KAJD;AAKD;;AAEDxR,QAAM,GAAG;AACP,UAAMoB,SAAS,GAAG3H,KAAK,CAAC6I,IAAN,CAAWhN,SAAX,CAAlB;AACA,UAAMyM,IAAI,GAAGtI,KAAK,CAACkJ,IAAN,CAAWlJ,KAAK,CAAC2J,IAAN,CAAW9N,SAAX,CAAX,CAAb;AAEA,UAAMqc,MAAM,GAAGvQ,SAAS,CAACC,KAAV,CAAgB,GAAhB,CAAf;AACA,UAAMuQ,YAAY,GAAGD,MAAM,CAACxc,MAAP,GAAgB,CAArC;AACA,UAAM0c,UAAU,GAAGD,YAAY,IAAInY,KAAK,CAAC6I,IAAN,CAAWqP,MAAX,CAAnC;AACA,UAAMG,UAAU,GAAGF,YAAY,GAAGnY,KAAK,CAAC+I,IAAN,CAAWmP,MAAX,CAAH,GAAwBlY,KAAK,CAAC6I,IAAN,CAAWqP,MAAX,CAAvD;AAEA,UAAMvB,MAAM,GAAG,KAAKnB,OAAL,CAAa4C,UAAU,IAAI,QAA3B,CAAf;;AACA,QAAI,CAACA,UAAD,IAAe,KAAKC,UAAL,CAAnB,EAAqC;AACnC,aAAO,KAAKA,UAAL,EAAiBrS,KAAjB,CAAuB,IAAvB,EAA6BsC,IAA7B,CAAP;AACD,KAFD,MAEO,IAAIqO,MAAM,IAAIA,MAAM,CAAC0B,UAAD,CAAhB,IAAgC1B,MAAM,CAACa,gBAAP,EAApC,EAA+D;AACpE,aAAOb,MAAM,CAAC0B,UAAD,CAAN,CAAmBrS,KAAnB,CAAyB2Q,MAAzB,EAAiCrO,IAAjC,CAAP;AACD;AACF;;AAvO0B,C;;ACL7B;AACA;AACA;AACA;AAEA5N,yBAAC,CAACwK,EAAF,CAAKhJ,MAAL,CAAY;AACV;;;;;;AAMAF,YAAU,EAAE,YAAW;AACrB,UAAMsc,IAAI,GAAG5d,yBAAC,CAAC4d,IAAF,CAAOtY,KAAK,CAAC6I,IAAN,CAAWhN,SAAX,CAAP,CAAb;AACA,UAAM0c,mBAAmB,GAAGD,IAAI,KAAK,QAArC;AACA,UAAME,cAAc,GAAGF,IAAI,KAAK,QAAhC;AAEA,UAAMje,OAAO,GAAGK,yBAAC,CAACwB,MAAF,CAAS,EAAT,EAAaxB,yBAAC,CAACsB,UAAF,CAAa3B,OAA1B,EAAmCme,cAAc,GAAGxY,KAAK,CAAC6I,IAAN,CAAWhN,SAAX,CAAH,GAA2B,EAA5E,CAAhB,CALqB,CAOrB;;AACAxB,WAAO,CAACoe,QAAR,GAAmB/d,yBAAC,CAACwB,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBxB,yBAAC,CAACsB,UAAF,CAAaC,IAAb,CAAkB,OAAlB,CAAnB,EAA+CvB,yBAAC,CAACsB,UAAF,CAAaC,IAAb,CAAkB5B,OAAO,CAAC4B,IAA1B,CAA/C,CAAnB;AACA5B,WAAO,CAACqe,KAAR,GAAgBhe,yBAAC,CAACwB,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBxB,yBAAC,CAACsB,UAAF,CAAa3B,OAAb,CAAqBqe,KAAxC,EAA+Cre,OAAO,CAACqe,KAAvD,CAAhB;AACAre,WAAO,CAACse,OAAR,GAAkBte,OAAO,CAACse,OAAR,KAAoB,MAApB,GAA6B,CAAC1L,GAAG,CAAC5I,cAAlC,GAAmDhK,OAAO,CAACse,OAA7E;AAEA,SAAK3d,IAAL,CAAU,CAACoO,GAAD,EAAMwP,IAAN,KAAe;AACvB,YAAMvD,KAAK,GAAG3a,yBAAC,CAACke,IAAD,CAAf;;AACA,UAAI,CAACvD,KAAK,CAACta,IAAN,CAAW,YAAX,CAAL,EAA+B;AAC7B,cAAMqI,OAAO,GAAG,IAAIgS,eAAJ,CAAYC,KAAZ,EAAmBhb,OAAnB,CAAhB;AACAgb,aAAK,CAACta,IAAN,CAAW,YAAX,EAAyBqI,OAAzB;AACAiS,aAAK,CAACta,IAAN,CAAW,YAAX,EAAyBgc,YAAzB,CAAsC,MAAtC,EAA8C3T,OAAO,CAACqS,UAAtD;AACD;AACF,KAPD;AASA,UAAMJ,KAAK,GAAG,KAAKwD,KAAL,EAAd;;AACA,QAAIxD,KAAK,CAAC3Z,MAAV,EAAkB;AAChB,YAAM0H,OAAO,GAAGiS,KAAK,CAACta,IAAN,CAAW,YAAX,CAAhB;;AACA,UAAIwd,mBAAJ,EAAyB;AACvB,eAAOnV,OAAO,CAACmD,MAAR,CAAeP,KAAf,CAAqB5C,OAArB,EAA8BpD,KAAK,CAAC2J,IAAN,CAAW9N,SAAX,CAA9B,CAAP;AACD,OAFD,MAEO,IAAIxB,OAAO,CAACye,KAAZ,EAAmB;AACxB1V,eAAO,CAACmD,MAAR,CAAe,cAAf;AACD;AACF;;AAED,WAAO,IAAP;AACD;AAvCS,CAAZ,E;;ACLA;AACA;AACA;AACA;AACA;AAEA;;;;;;;;;;AASA,SAASwS,gBAAT,CAA0BC,SAA1B,EAAqCC,OAArC,EAA8C;AAC5C,MAAI7G,SAAS,GAAG4G,SAAS,CAACE,aAAV,EAAhB;AACA,MAAI7J,MAAJ;AAEA,QAAM8J,MAAM,GAAGjW,QAAQ,CAACkW,IAAT,CAAcC,eAAd,EAAf;AACA,MAAIC,aAAJ;AACA,QAAMlM,UAAU,GAAGpN,KAAK,CAAC2J,IAAN,CAAWyI,SAAS,CAAChF,UAArB,CAAnB;;AACA,OAAKiC,MAAM,GAAG,CAAd,EAAiBA,MAAM,GAAGjC,UAAU,CAAC1R,MAArC,EAA6C2T,MAAM,EAAnD,EAAuD;AACrD,QAAIgH,GAAG,CAAClL,MAAJ,CAAWiC,UAAU,CAACiC,MAAD,CAArB,CAAJ,EAAoC;AAClC;AACD;;AACD8J,UAAM,CAACI,iBAAP,CAAyBnM,UAAU,CAACiC,MAAD,CAAnC;;AACA,QAAI8J,MAAM,CAACK,gBAAP,CAAwB,cAAxB,EAAwCR,SAAxC,KAAsD,CAA1D,EAA6D;AAC3D;AACD;;AACDM,iBAAa,GAAGlM,UAAU,CAACiC,MAAD,CAA1B;AACD;;AAED,MAAIA,MAAM,KAAK,CAAX,IAAgBgH,GAAG,CAAClL,MAAJ,CAAWiC,UAAU,CAACiC,MAAM,GAAG,CAAV,CAArB,CAApB,EAAwD;AACtD,UAAMoK,cAAc,GAAGvW,QAAQ,CAACkW,IAAT,CAAcC,eAAd,EAAvB;AACA,QAAIK,WAAW,GAAG,IAAlB;AACAD,kBAAc,CAACF,iBAAf,CAAiCD,aAAa,IAAIlH,SAAlD;AACAqH,kBAAc,CAACE,QAAf,CAAwB,CAACL,aAAzB;AACAI,eAAW,GAAGJ,aAAa,GAAGA,aAAa,CAAC1M,WAAjB,GAA+BwF,SAAS,CAACwH,UAApE;AAEA,UAAMC,WAAW,GAAGb,SAAS,CAACc,SAAV,EAApB;AACAD,eAAW,CAACE,WAAZ,CAAwB,cAAxB,EAAwCN,cAAxC;AACA,QAAIO,SAAS,GAAGH,WAAW,CAACtH,IAAZ,CAAiBM,OAAjB,CAAyB,SAAzB,EAAoC,EAApC,EAAwCnX,MAAxD;;AAEA,WAAOse,SAAS,GAAGN,WAAW,CAACvM,SAAZ,CAAsBzR,MAAlC,IAA4Cge,WAAW,CAAC9M,WAA/D,EAA4E;AAC1EoN,eAAS,IAAIN,WAAW,CAACvM,SAAZ,CAAsBzR,MAAnC;AACAge,iBAAW,GAAGA,WAAW,CAAC9M,WAA1B;AACD,KAdqD,CAgBtD;;;AACA,UAAMqN,KAAK,GAAGP,WAAW,CAACvM,SAA1B,CAjBsD,CAiBjB;;AAErC,QAAI8L,OAAO,IAAIS,WAAW,CAAC9M,WAAvB,IAAsCyJ,GAAG,CAAClL,MAAJ,CAAWuO,WAAW,CAAC9M,WAAvB,CAAtC,IACFoN,SAAS,KAAKN,WAAW,CAACvM,SAAZ,CAAsBzR,MADtC,EAC8C;AAC5Cse,eAAS,IAAIN,WAAW,CAACvM,SAAZ,CAAsBzR,MAAnC;AACAge,iBAAW,GAAGA,WAAW,CAAC9M,WAA1B;AACD;;AAEDwF,aAAS,GAAGsH,WAAZ;AACArK,UAAM,GAAG2K,SAAT;AACD;;AAED,SAAO;AACLE,QAAI,EAAE9H,SADD;AAEL/C,UAAM,EAAEA;AAFH,GAAP;AAID;AAED;;;;;;;AAKA,SAAS8K,gBAAT,CAA0B/K,KAA1B,EAAiC;AAC/B,QAAMgL,aAAa,GAAG,UAAShI,SAAT,EAAoB/C,MAApB,EAA4B;AAChD,QAAIvE,IAAJ,EAAUuP,iBAAV;;AAEA,QAAIhE,GAAG,CAAClL,MAAJ,CAAWiH,SAAX,CAAJ,EAA2B;AACzB,YAAMkI,aAAa,GAAGjE,GAAG,CAACnI,QAAJ,CAAakE,SAAb,EAAwBlK,IAAI,CAACpC,GAAL,CAASuQ,GAAG,CAAClL,MAAb,CAAxB,CAAtB;AACA,YAAMmO,aAAa,GAAGtZ,KAAK,CAAC+I,IAAN,CAAWuR,aAAX,EAA0BzN,eAAhD;AACA/B,UAAI,GAAGwO,aAAa,IAAIlH,SAAS,CAAC3E,UAAlC;AACA4B,YAAM,IAAIrP,KAAK,CAACwJ,GAAN,CAAUxJ,KAAK,CAACkJ,IAAN,CAAWoR,aAAX,CAAV,EAAqCjE,GAAG,CAACnJ,UAAzC,CAAV;AACAmN,uBAAiB,GAAG,CAACf,aAArB;AACD,KAND,MAMO;AACLxO,UAAI,GAAGsH,SAAS,CAAChF,UAAV,CAAqBiC,MAArB,KAAgC+C,SAAvC;;AACA,UAAIiE,GAAG,CAAClL,MAAJ,CAAWL,IAAX,CAAJ,EAAsB;AACpB,eAAOsP,aAAa,CAACtP,IAAD,EAAO,CAAP,CAApB;AACD;;AAEDuE,YAAM,GAAG,CAAT;AACAgL,uBAAiB,GAAG,KAApB;AACD;;AAED,WAAO;AACLvP,UAAI,EAAEA,IADD;AAELyP,qBAAe,EAAEF,iBAFZ;AAGLhL,YAAM,EAAEA;AAHH,KAAP;AAKD,GAxBD;;AA0BA,QAAM2J,SAAS,GAAG9V,QAAQ,CAACkW,IAAT,CAAcC,eAAd,EAAlB;AACA,QAAMmB,IAAI,GAAGJ,aAAa,CAAChL,KAAK,CAACtE,IAAP,EAAasE,KAAK,CAACC,MAAnB,CAA1B;AAEA2J,WAAS,CAACO,iBAAV,CAA4BiB,IAAI,CAAC1P,IAAjC;AACAkO,WAAS,CAACW,QAAV,CAAmBa,IAAI,CAACD,eAAxB;AACAvB,WAAS,CAACyB,SAAV,CAAoB,WAApB,EAAiCD,IAAI,CAACnL,MAAtC;AACA,SAAO2J,SAAP;AACD;AAED;;;;;;;;;;;AASA,MAAM0B,kBAAN,CAAmB;AACjBxgB,aAAW,CAACygB,EAAD,EAAKC,EAAL,EAASC,EAAT,EAAaC,EAAb,EAAiB;AAC1B,SAAKH,EAAL,GAAUA,EAAV;AACA,SAAKC,EAAL,GAAUA,EAAV;AACA,SAAKC,EAAL,GAAUA,EAAV;AACA,SAAKC,EAAL,GAAUA,EAAV,CAJ0B,CAM1B;;AACA,SAAKC,YAAL,GAAoB,KAAKC,QAAL,CAAc3E,GAAG,CAACxL,UAAlB,CAApB,CAP0B,CAQ1B;;AACA,SAAKoQ,QAAL,GAAgB,KAAKD,QAAL,CAAc3E,GAAG,CAACrK,MAAlB,CAAhB,CAT0B,CAU1B;;AACA,SAAKkP,UAAL,GAAkB,KAAKF,QAAL,CAAc3E,GAAG,CAACjK,QAAlB,CAAlB,CAX0B,CAY1B;;AACA,SAAK+O,QAAL,GAAgB,KAAKH,QAAL,CAAc3E,GAAG,CAAClK,MAAlB,CAAhB,CAb0B,CAc1B;;AACA,SAAKiP,QAAL,GAAgB,KAAKJ,QAAL,CAAc3E,GAAG,CAACxK,MAAlB,CAAhB;AACD,GAjBgB,CAmBjB;;;AACAwP,aAAW,GAAG;AACZ,QAAIpO,GAAG,CAAC7H,iBAAR,EAA2B;AACzB,YAAMkW,QAAQ,GAAGpY,QAAQ,CAACmC,WAAT,EAAjB;AACAiW,cAAQ,CAACC,QAAT,CAAkB,KAAKZ,EAAvB,EAA2B,KAAKA,EAAL,CAAQ5f,IAAR,IAAgB,KAAK6f,EAAL,GAAU,KAAKD,EAAL,CAAQ5f,IAAR,CAAaW,MAAvC,GAAgD,CAAhD,GAAoD,KAAKkf,EAApF;AACAU,cAAQ,CAACE,MAAT,CAAgB,KAAKX,EAArB,EAAyB,KAAKF,EAAL,CAAQ5f,IAAR,GAAe0gB,IAAI,CAACC,GAAL,CAAS,KAAKZ,EAAd,EAAkB,KAAKH,EAAL,CAAQ5f,IAAR,CAAaW,MAA/B,CAAf,GAAwD,KAAKof,EAAtF;AAEA,aAAOQ,QAAP;AACD,KAND,MAMO;AACL,YAAMtC,SAAS,GAAGmB,gBAAgB,CAAC;AACjCrP,YAAI,EAAE,KAAK6P,EADsB;AAEjCtL,cAAM,EAAE,KAAKuL;AAFoB,OAAD,CAAlC;AAKA5B,eAAS,CAACe,WAAV,CAAsB,UAAtB,EAAkCI,gBAAgB,CAAC;AACjDrP,YAAI,EAAE,KAAK+P,EADsC;AAEjDxL,cAAM,EAAE,KAAKyL;AAFoC,OAAD,CAAlD;AAKA,aAAO9B,SAAP;AACD;AACF;;AAED2C,WAAS,GAAG;AACV,WAAO;AACLhB,QAAE,EAAE,KAAKA,EADJ;AAELC,QAAE,EAAE,KAAKA,EAFJ;AAGLC,QAAE,EAAE,KAAKA,EAHJ;AAILC,QAAE,EAAE,KAAKA;AAJJ,KAAP;AAMD;;AAEDc,eAAa,GAAG;AACd,WAAO;AACL9Q,UAAI,EAAE,KAAK6P,EADN;AAELtL,YAAM,EAAE,KAAKuL;AAFR,KAAP;AAID;;AAEDiB,aAAW,GAAG;AACZ,WAAO;AACL/Q,UAAI,EAAE,KAAK+P,EADN;AAELxL,YAAM,EAAE,KAAKyL;AAFR,KAAP;AAID;AAED;;;;;AAGA3Y,QAAM,GAAG;AACP,UAAM2Z,SAAS,GAAG,KAAKT,WAAL,EAAlB;;AACA,QAAIpO,GAAG,CAAC7H,iBAAR,EAA2B;AACzB,YAAM2W,SAAS,GAAG7Y,QAAQ,CAAC8Y,YAAT,EAAlB;;AACA,UAAID,SAAS,CAACE,UAAV,GAAuB,CAA3B,EAA8B;AAC5BF,iBAAS,CAACG,eAAV;AACD;;AACDH,eAAS,CAACI,QAAV,CAAmBL,SAAnB;AACD,KAND,MAMO;AACLA,eAAS,CAAC3Z,MAAV;AACD;;AAED,WAAO,IAAP;AACD;AAED;;;;;;;AAKAia,gBAAc,CAAChK,SAAD,EAAY;AACxB,UAAM5V,MAAM,GAAG9B,yBAAC,CAAC0X,SAAD,CAAD,CAAa5V,MAAb,EAAf;;AACA,QAAI4V,SAAS,CAACjL,SAAV,GAAsB3K,MAAtB,GAA+B,KAAKme,EAAL,CAAQ0B,SAA3C,EAAsD;AACpDjK,eAAS,CAACjL,SAAV,IAAuBsU,IAAI,CAACa,GAAL,CAASlK,SAAS,CAACjL,SAAV,GAAsB3K,MAAtB,GAA+B,KAAKme,EAAL,CAAQ0B,SAAhD,CAAvB;AACD;;AAED,WAAO,IAAP;AACD;AAED;;;;;AAGAE,WAAS,GAAG;AACV;;;;;;AAMA,UAAMC,eAAe,GAAG,UAASpN,KAAT,EAAgBqN,aAAhB,EAA+B;AACrD,UAAI,CAACrN,KAAL,EAAY;AACV,eAAOA,KAAP;AACD,OAHoD,CAKrD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,UAAIiH,GAAG,CAACjG,cAAJ,CAAmBhB,KAAnB,CAAJ,EAA+B;AAC7B,YAAI,CAACiH,GAAG,CAAC9G,WAAJ,CAAgBH,KAAhB,CAAD,IACCiH,GAAG,CAAC/G,gBAAJ,CAAqBF,KAArB,KAA+B,CAACqN,aADjC,IAECpG,GAAG,CAAClH,eAAJ,CAAoBC,KAApB,KAA8BqN,aAF/B,IAGCpG,GAAG,CAAC/G,gBAAJ,CAAqBF,KAArB,KAA+BqN,aAA/B,IAAgDpG,GAAG,CAAC/K,MAAJ,CAAW8D,KAAK,CAACtE,IAAN,CAAW8B,WAAtB,CAHjD,IAICyJ,GAAG,CAAClH,eAAJ,CAAoBC,KAApB,KAA8B,CAACqN,aAA/B,IAAgDpG,GAAG,CAAC/K,MAAJ,CAAW8D,KAAK,CAACtE,IAAN,CAAW+B,eAAtB,CAJjD,IAKCwJ,GAAG,CAAC3B,OAAJ,CAAYtF,KAAK,CAACtE,IAAlB,KAA2BuL,GAAG,CAACvM,OAAJ,CAAYsF,KAAK,CAACtE,IAAlB,CALhC,EAK0D;AACxD,iBAAOsE,KAAP;AACD;AACF,OArBoD,CAuBrD;;;AACA,YAAMsN,KAAK,GAAGrG,GAAG,CAAC/J,QAAJ,CAAa8C,KAAK,CAACtE,IAAnB,EAAyBuL,GAAG,CAAC3B,OAA7B,CAAd;AACA,UAAIiI,YAAY,GAAG,KAAnB;;AAEA,UAAI,CAACA,YAAL,EAAmB;AACjB,cAAM7M,SAAS,GAAGuG,GAAG,CAACvG,SAAJ,CAAcV,KAAd,KAAwB;AAAEtE,cAAI,EAAE;AAAR,SAA1C;AACA6R,oBAAY,GAAG,CAACtG,GAAG,CAAC1G,iBAAJ,CAAsBP,KAAtB,EAA6BsN,KAA7B,KAAuCrG,GAAG,CAAC/K,MAAJ,CAAWwE,SAAS,CAAChF,IAArB,CAAxC,KAAuE,CAAC2R,aAAvF;AACD;;AAED,UAAIG,WAAW,GAAG,KAAlB;;AACA,UAAI,CAACA,WAAL,EAAkB;AAChB,cAAM5M,SAAS,GAAGqG,GAAG,CAACrG,SAAJ,CAAcZ,KAAd,KAAwB;AAAEtE,cAAI,EAAE;AAAR,SAA1C;AACA8R,mBAAW,GAAG,CAACvG,GAAG,CAACzG,kBAAJ,CAAuBR,KAAvB,EAA8BsN,KAA9B,KAAwCrG,GAAG,CAAC/K,MAAJ,CAAW0E,SAAS,CAAClF,IAArB,CAAzC,KAAwE2R,aAAtF;AACD;;AAED,UAAIE,YAAY,IAAIC,WAApB,EAAiC;AAC/B;AACA,YAAIvG,GAAG,CAACjG,cAAJ,CAAmBhB,KAAnB,CAAJ,EAA+B;AAC7B,iBAAOA,KAAP;AACD,SAJ8B,CAK/B;;;AACAqN,qBAAa,GAAG,CAACA,aAAjB;AACD;;AAED,YAAMzM,SAAS,GAAGyM,aAAa,GAAGpG,GAAG,CAAC7F,cAAJ,CAAmB6F,GAAG,CAACrG,SAAJ,CAAcZ,KAAd,CAAnB,EAAyCiH,GAAG,CAACjG,cAA7C,CAAH,GAC3BiG,GAAG,CAAC9F,cAAJ,CAAmB8F,GAAG,CAACvG,SAAJ,CAAcV,KAAd,CAAnB,EAAyCiH,GAAG,CAACjG,cAA7C,CADJ;AAEA,aAAOJ,SAAS,IAAIZ,KAApB;AACD,KAlDD;;AAoDA,UAAM2B,QAAQ,GAAGyL,eAAe,CAAC,KAAKX,WAAL,EAAD,EAAqB,KAArB,CAAhC;AACA,UAAM/K,UAAU,GAAG,KAAK+L,WAAL,KAAqB9L,QAArB,GAAgCyL,eAAe,CAAC,KAAKZ,aAAL,EAAD,EAAuB,IAAvB,CAAlE;AAEA,WAAO,IAAIlB,kBAAJ,CACL5J,UAAU,CAAChG,IADN,EAELgG,UAAU,CAACzB,MAFN,EAGL0B,QAAQ,CAACjG,IAHJ,EAILiG,QAAQ,CAAC1B,MAJJ,CAAP;AAMD;AAED;;;;;;;;;;;AASAlB,OAAK,CAAChF,IAAD,EAAO9O,OAAP,EAAgB;AACnB8O,QAAI,GAAGA,IAAI,IAAIjB,IAAI,CAACtC,EAApB;AAEA,UAAMkX,eAAe,GAAGziB,OAAO,IAAIA,OAAO,CAACyiB,eAA3C;AACA,UAAMC,aAAa,GAAG1iB,OAAO,IAAIA,OAAO,CAAC0iB,aAAzC,CAJmB,CAMnB;;AACA,UAAMjM,UAAU,GAAG,KAAK8K,aAAL,EAAnB;AACA,UAAM7K,QAAQ,GAAG,KAAK8K,WAAL,EAAjB;AAEA,UAAM1N,KAAK,GAAG,EAAd;AACA,UAAM6O,aAAa,GAAG,EAAtB;AAEA3G,OAAG,CAACxF,SAAJ,CAAcC,UAAd,EAA0BC,QAA1B,EAAoC,UAAS3B,KAAT,EAAgB;AAClD,UAAIiH,GAAG,CAACxL,UAAJ,CAAeuE,KAAK,CAACtE,IAArB,CAAJ,EAAgC;AAC9B;AACD;;AAED,UAAIA,IAAJ;;AACA,UAAIiS,aAAJ,EAAmB;AACjB,YAAI1G,GAAG,CAAClH,eAAJ,CAAoBC,KAApB,CAAJ,EAAgC;AAC9B4N,uBAAa,CAAC5S,IAAd,CAAmBgF,KAAK,CAACtE,IAAzB;AACD;;AACD,YAAIuL,GAAG,CAAC/G,gBAAJ,CAAqBF,KAArB,KAA+BpP,KAAK,CAACuJ,QAAN,CAAeyT,aAAf,EAA8B5N,KAAK,CAACtE,IAApC,CAAnC,EAA8E;AAC5EA,cAAI,GAAGsE,KAAK,CAACtE,IAAb;AACD;AACF,OAPD,MAOO,IAAIgS,eAAJ,EAAqB;AAC1BhS,YAAI,GAAGuL,GAAG,CAAC/J,QAAJ,CAAa8C,KAAK,CAACtE,IAAnB,EAAyB3B,IAAzB,CAAP;AACD,OAFM,MAEA;AACL2B,YAAI,GAAGsE,KAAK,CAACtE,IAAb;AACD;;AAED,UAAIA,IAAI,IAAI3B,IAAI,CAAC2B,IAAD,CAAhB,EAAwB;AACtBqD,aAAK,CAAC/D,IAAN,CAAWU,IAAX;AACD;AACF,KAtBD,EAsBG,IAtBH;AAwBA,WAAO9K,KAAK,CAACqK,MAAN,CAAa8D,KAAb,CAAP;AACD;AAED;;;;;;AAIAH,gBAAc,GAAG;AACf,WAAOqI,GAAG,CAACrI,cAAJ,CAAmB,KAAK2M,EAAxB,EAA4B,KAAKE,EAAjC,CAAP;AACD;AAED;;;;;;;;AAMAoC,QAAM,CAAC9T,IAAD,EAAO;AACX,UAAM+T,aAAa,GAAG7G,GAAG,CAAC/J,QAAJ,CAAa,KAAKqO,EAAlB,EAAsBxR,IAAtB,CAAtB;AACA,UAAMgU,WAAW,GAAG9G,GAAG,CAAC/J,QAAJ,CAAa,KAAKuO,EAAlB,EAAsB1R,IAAtB,CAApB;;AAEA,QAAI,CAAC+T,aAAD,IAAkB,CAACC,WAAvB,EAAoC;AAClC,aAAO,IAAIzC,kBAAJ,CAAiB,KAAKC,EAAtB,EAA0B,KAAKC,EAA/B,EAAmC,KAAKC,EAAxC,EAA4C,KAAKC,EAAjD,CAAP;AACD;;AAED,UAAMsC,cAAc,GAAG,KAAKzB,SAAL,EAAvB;;AAEA,QAAIuB,aAAJ,EAAmB;AACjBE,oBAAc,CAACzC,EAAf,GAAoBuC,aAApB;AACAE,oBAAc,CAACxC,EAAf,GAAoB,CAApB;AACD;;AAED,QAAIuC,WAAJ,EAAiB;AACfC,oBAAc,CAACvC,EAAf,GAAoBsC,WAApB;AACAC,oBAAc,CAACtC,EAAf,GAAoBzE,GAAG,CAACnJ,UAAJ,CAAeiQ,WAAf,CAApB;AACD;;AAED,WAAO,IAAIzC,kBAAJ,CACL0C,cAAc,CAACzC,EADV,EAELyC,cAAc,CAACxC,EAFV,EAGLwC,cAAc,CAACvC,EAHV,EAILuC,cAAc,CAACtC,EAJV,CAAP;AAMD;AAED;;;;;;AAIAnB,UAAQ,CAACU,iBAAD,EAAoB;AAC1B,QAAIA,iBAAJ,EAAuB;AACrB,aAAO,IAAIK,kBAAJ,CAAiB,KAAKC,EAAtB,EAA0B,KAAKC,EAA/B,EAAmC,KAAKD,EAAxC,EAA4C,KAAKC,EAAjD,CAAP;AACD,KAFD,MAEO;AACL,aAAO,IAAIF,kBAAJ,CAAiB,KAAKG,EAAtB,EAA0B,KAAKC,EAA/B,EAAmC,KAAKD,EAAxC,EAA4C,KAAKC,EAAjD,CAAP;AACD;AACF;AAED;;;;;AAGAnJ,WAAS,GAAG;AACV,UAAM0L,eAAe,GAAG,KAAK1C,EAAL,KAAY,KAAKE,EAAzC;AACA,UAAMuC,cAAc,GAAG,KAAKzB,SAAL,EAAvB;;AAEA,QAAItF,GAAG,CAAClL,MAAJ,CAAW,KAAK0P,EAAhB,KAAuB,CAACxE,GAAG,CAAC9G,WAAJ,CAAgB,KAAKsM,WAAL,EAAhB,CAA5B,EAAiE;AAC/D,WAAKhB,EAAL,CAAQlJ,SAAR,CAAkB,KAAKmJ,EAAvB;AACD;;AAED,QAAIzE,GAAG,CAAClL,MAAJ,CAAW,KAAKwP,EAAhB,KAAuB,CAACtE,GAAG,CAAC9G,WAAJ,CAAgB,KAAKqM,aAAL,EAAhB,CAA5B,EAAmE;AACjEwB,oBAAc,CAACzC,EAAf,GAAoB,KAAKA,EAAL,CAAQhJ,SAAR,CAAkB,KAAKiJ,EAAvB,CAApB;AACAwC,oBAAc,CAACxC,EAAf,GAAoB,CAApB;;AAEA,UAAIyC,eAAJ,EAAqB;AACnBD,sBAAc,CAACvC,EAAf,GAAoBuC,cAAc,CAACzC,EAAnC;AACAyC,sBAAc,CAACtC,EAAf,GAAoB,KAAKA,EAAL,GAAU,KAAKF,EAAnC;AACD;AACF;;AAED,WAAO,IAAIF,kBAAJ,CACL0C,cAAc,CAACzC,EADV,EAELyC,cAAc,CAACxC,EAFV,EAGLwC,cAAc,CAACvC,EAHV,EAILuC,cAAc,CAACtC,EAJV,CAAP;AAMD;AAED;;;;;;AAIAwC,gBAAc,GAAG;AACf,QAAI,KAAKT,WAAL,EAAJ,EAAwB;AACtB,aAAO,IAAP;AACD;;AAED,UAAMU,GAAG,GAAG,KAAK5L,SAAL,EAAZ;AACA,UAAMxD,KAAK,GAAGoP,GAAG,CAACpP,KAAJ,CAAU,IAAV,EAAgB;AAC5B4O,mBAAa,EAAE;AADa,KAAhB,CAAd,CANe,CAUf;;AACA,UAAM3N,KAAK,GAAGiH,GAAG,CAAC9F,cAAJ,CAAmBgN,GAAG,CAAC3B,aAAJ,EAAnB,EAAwC,UAASxM,KAAT,EAAgB;AACpE,aAAO,CAACpP,KAAK,CAACuJ,QAAN,CAAe4E,KAAf,EAAsBiB,KAAK,CAACtE,IAA5B,CAAR;AACD,KAFa,CAAd;AAIA,UAAM0S,YAAY,GAAG,EAArB;AACA9iB,6BAAC,CAACM,IAAF,CAAOmT,KAAP,EAAc,UAAS/E,GAAT,EAAc0B,IAAd,EAAoB;AAChC;AACA,YAAM6D,MAAM,GAAG7D,IAAI,CAAC2C,UAApB;;AACA,UAAI2B,KAAK,CAACtE,IAAN,KAAe6D,MAAf,IAAyB0H,GAAG,CAACnJ,UAAJ,CAAeyB,MAAf,MAA2B,CAAxD,EAA2D;AACzD6O,oBAAY,CAACpT,IAAb,CAAkBuE,MAAlB;AACD;;AACD0H,SAAG,CAACnY,MAAJ,CAAW4M,IAAX,EAAiB,KAAjB;AACD,KAPD,EAhBe,CAyBf;;AACApQ,6BAAC,CAACM,IAAF,CAAOwiB,YAAP,EAAqB,UAASpU,GAAT,EAAc0B,IAAd,EAAoB;AACvCuL,SAAG,CAACnY,MAAJ,CAAW4M,IAAX,EAAiB,KAAjB;AACD,KAFD;AAIA,WAAO,IAAI4P,kBAAJ,CACLtL,KAAK,CAACtE,IADD,EAELsE,KAAK,CAACC,MAFD,EAGLD,KAAK,CAACtE,IAHD,EAILsE,KAAK,CAACC,MAJD,EAKLkN,SALK,EAAP;AAMD;AAED;;;;;AAGAvB,UAAQ,CAAC7R,IAAD,EAAO;AACb,WAAO,YAAW;AAChB,YAAMmD,QAAQ,GAAG+J,GAAG,CAAC/J,QAAJ,CAAa,KAAKqO,EAAlB,EAAsBxR,IAAtB,CAAjB;AACA,aAAO,CAAC,CAACmD,QAAF,IAAeA,QAAQ,KAAK+J,GAAG,CAAC/J,QAAJ,CAAa,KAAKuO,EAAlB,EAAsB1R,IAAtB,CAAnC;AACD,KAHD;AAID;AAED;;;;;;AAIAqG,cAAY,CAACrG,IAAD,EAAO;AACjB,QAAI,CAACkN,GAAG,CAAClH,eAAJ,CAAoB,KAAKyM,aAAL,EAApB,CAAL,EAAgD;AAC9C,aAAO,KAAP;AACD;;AAED,UAAM9Q,IAAI,GAAGuL,GAAG,CAAC/J,QAAJ,CAAa,KAAKqO,EAAlB,EAAsBxR,IAAtB,CAAb;AACA,WAAO2B,IAAI,IAAIuL,GAAG,CAAC7G,YAAJ,CAAiB,KAAKmL,EAAtB,EAA0B7P,IAA1B,CAAf;AACD;AAED;;;;;AAGA+R,aAAW,GAAG;AACZ,WAAO,KAAKlC,EAAL,KAAY,KAAKE,EAAjB,IAAuB,KAAKD,EAAL,KAAY,KAAKE,EAA/C;AACD;AAED;;;;;;;AAKA2C,wBAAsB,GAAG;AACvB,QAAIpH,GAAG,CAACtK,eAAJ,CAAoB,KAAK4O,EAAzB,KAAgCtE,GAAG,CAACvM,OAAJ,CAAY,KAAK6Q,EAAjB,CAApC,EAA0D;AACxD,WAAKA,EAAL,CAAQpN,SAAR,GAAoB8I,GAAG,CAAC5B,SAAxB;AACA,aAAO,IAAIiG,kBAAJ,CAAiB,KAAKC,EAAL,CAAQf,UAAzB,EAAqC,CAArC,EAAwC,KAAKe,EAAL,CAAQf,UAAhD,EAA4D,CAA5D,CAAP;AACD;AAED;;;;;;;AAKA,UAAM2D,GAAG,GAAG,KAAKhB,SAAL,EAAZ;;AACA,QAAIlG,GAAG,CAAChK,YAAJ,CAAiB,KAAKsO,EAAtB,KAA6BtE,GAAG,CAAC9K,MAAJ,CAAW,KAAKoP,EAAhB,CAAjC,EAAsD;AACpD,aAAO4C,GAAP;AACD,KAdsB,CAgBvB;;;AACA,QAAIrL,WAAJ;;AACA,QAAImE,GAAG,CAACvK,QAAJ,CAAayR,GAAG,CAAC5C,EAAjB,CAAJ,EAA0B;AACxB,YAAM/M,SAAS,GAAGyI,GAAG,CAAC1I,YAAJ,CAAiB4P,GAAG,CAAC5C,EAArB,EAAyBzS,IAAI,CAACpC,GAAL,CAASuQ,GAAG,CAACvK,QAAb,CAAzB,CAAlB;AACAoG,iBAAW,GAAGlS,KAAK,CAAC+I,IAAN,CAAW6E,SAAX,CAAd;;AACA,UAAI,CAACyI,GAAG,CAACvK,QAAJ,CAAaoG,WAAb,CAAL,EAAgC;AAC9BA,mBAAW,GAAGtE,SAAS,CAACA,SAAS,CAAClS,MAAV,GAAmB,CAApB,CAAT,IAAmC6hB,GAAG,CAAC5C,EAAJ,CAAOvN,UAAP,CAAkBmQ,GAAG,CAAC3C,EAAtB,CAAjD;AACD;AACF,KAND,MAMO;AACL1I,iBAAW,GAAGqL,GAAG,CAAC5C,EAAJ,CAAOvN,UAAP,CAAkBmQ,GAAG,CAAC3C,EAAJ,GAAS,CAAT,GAAa2C,GAAG,CAAC3C,EAAJ,GAAS,CAAtB,GAA0B,CAA5C,CAAd;AACD;;AAED,QAAI1I,WAAJ,EAAiB;AACf;AACA,UAAIwL,cAAc,GAAGrH,GAAG,CAACnI,QAAJ,CAAagE,WAAb,EAA0BmE,GAAG,CAAChK,YAA9B,EAA4C8E,OAA5C,EAArB;AACAuM,oBAAc,GAAGA,cAAc,CAACC,MAAf,CAAsBtH,GAAG,CAACjI,QAAJ,CAAa8D,WAAW,CAACtF,WAAzB,EAAsCyJ,GAAG,CAAChK,YAA1C,CAAtB,CAAjB,CAHe,CAKf;;AACA,UAAIqR,cAAc,CAAChiB,MAAnB,EAA2B;AACzB,cAAMkiB,IAAI,GAAGvH,GAAG,CAAC5H,IAAJ,CAASzO,KAAK,CAAC6I,IAAN,CAAW6U,cAAX,CAAT,EAAqC,GAArC,CAAb;AACArH,WAAG,CAACpH,gBAAJ,CAAqB2O,IAArB,EAA2B5d,KAAK,CAACkJ,IAAN,CAAWwU,cAAX,CAA3B;AACD;AACF;;AAED,WAAO,KAAKnB,SAAL,EAAP;AACD;AAED;;;;;;;;AAMAsB,YAAU,CAAC/S,IAAD,EAAO;AACf,QAAIyS,GAAG,GAAG,IAAV;;AAEA,QAAIlH,GAAG,CAAClL,MAAJ,CAAWL,IAAX,KAAoBuL,GAAG,CAACvK,QAAJ,CAAahB,IAAb,CAAxB,EAA4C;AAC1CyS,SAAG,GAAG,KAAKE,sBAAL,GAA8BH,cAA9B,EAAN;AACD;;AAED,UAAM9C,IAAI,GAAGnE,GAAG,CAACpE,UAAJ,CAAesL,GAAG,CAAC3B,aAAJ,EAAf,EAAoCvF,GAAG,CAACvK,QAAJ,CAAahB,IAAb,CAApC,CAAb;;AACA,QAAI0P,IAAI,CAAClK,SAAT,EAAoB;AAClBkK,UAAI,CAAClK,SAAL,CAAe7C,UAAf,CAA0BoB,YAA1B,CAAuC/D,IAAvC,EAA6C0P,IAAI,CAAClK,SAAlD;AACD,KAFD,MAEO;AACLkK,UAAI,CAACpI,SAAL,CAAetD,WAAf,CAA2BhE,IAA3B;AACD;;AAED,WAAOA,IAAP;AACD;AAED;;;;;AAGAgT,WAAS,CAAC3jB,MAAD,EAAS;AAChBA,UAAM,GAAGO,yBAAC,CAACgZ,IAAF,CAAOvZ,MAAP,CAAT;AAEA,UAAM4jB,iBAAiB,GAAGrjB,yBAAC,CAAC,aAAD,CAAD,CAAiBE,IAAjB,CAAsBT,MAAtB,EAA8B,CAA9B,CAA1B;AACA,QAAIiT,UAAU,GAAGpN,KAAK,CAAC2J,IAAN,CAAWoU,iBAAiB,CAAC3Q,UAA7B,CAAjB,CAJgB,CAMhB;;AACA,UAAMmQ,GAAG,GAAG,IAAZ;;AAEA,QAAIA,GAAG,CAAC3C,EAAJ,IAAU,CAAd,EAAiB;AACfxN,gBAAU,GAAGA,UAAU,CAAC+D,OAAX,EAAb;AACD;;AACD/D,cAAU,GAAGA,UAAU,CAACvF,GAAX,CAAe,UAAS+J,SAAT,EAAoB;AAC9C,aAAO2L,GAAG,CAACM,UAAJ,CAAejM,SAAf,CAAP;AACD,KAFY,CAAb;;AAGA,QAAI2L,GAAG,CAAC3C,EAAJ,GAAS,CAAb,EAAgB;AACdxN,gBAAU,GAAGA,UAAU,CAAC+D,OAAX,EAAb;AACD;;AACD,WAAO/D,UAAP;AACD;AAED;;;;;;;AAKA4Q,UAAQ,GAAG;AACT,UAAMlC,SAAS,GAAG,KAAKT,WAAL,EAAlB;AACA,WAAOpO,GAAG,CAAC7H,iBAAJ,GAAwB0W,SAAS,CAACkC,QAAV,EAAxB,GAA+ClC,SAAS,CAACvJ,IAAhE;AACD;AAED;;;;;;;;AAMA0L,cAAY,CAACC,SAAD,EAAY;AACtB,QAAInN,QAAQ,GAAG,KAAK8K,WAAL,EAAf;;AAEA,QAAI,CAACxF,GAAG,CAAC5F,WAAJ,CAAgBM,QAAhB,CAAL,EAAgC;AAC9B,aAAO,IAAP;AACD;;AAED,UAAMD,UAAU,GAAGuF,GAAG,CAAC9F,cAAJ,CAAmBQ,QAAnB,EAA6B,UAAS3B,KAAT,EAAgB;AAC9D,aAAO,CAACiH,GAAG,CAAC5F,WAAJ,CAAgBrB,KAAhB,CAAR;AACD,KAFkB,CAAnB;;AAIA,QAAI8O,SAAJ,EAAe;AACbnN,cAAQ,GAAGsF,GAAG,CAAC7F,cAAJ,CAAmBO,QAAnB,EAA6B,UAAS3B,KAAT,EAAgB;AACtD,eAAO,CAACiH,GAAG,CAAC5F,WAAJ,CAAgBrB,KAAhB,CAAR;AACD,OAFU,CAAX;AAGD;;AAED,WAAO,IAAIsL,kBAAJ,CACL5J,UAAU,CAAChG,IADN,EAELgG,UAAU,CAACzB,MAFN,EAGL0B,QAAQ,CAACjG,IAHJ,EAILiG,QAAQ,CAAC1B,MAJJ,CAAP;AAMD;AAED;;;;;;;;AAMA8O,eAAa,CAACD,SAAD,EAAY;AACvB,QAAInN,QAAQ,GAAG,KAAK8K,WAAL,EAAf;;AAEA,QAAIuC,cAAc,GAAG,UAAShP,KAAT,EAAgB;AACnC,aAAO,CAACiH,GAAG,CAAC5F,WAAJ,CAAgBrB,KAAhB,CAAD,IAA2B,CAACiH,GAAG,CAACzF,YAAJ,CAAiBxB,KAAjB,CAAnC;AACD,KAFD;;AAIA,QAAIgP,cAAc,CAACrN,QAAD,CAAlB,EAA8B;AAC5B,aAAO,IAAP;AACD;;AAED,QAAID,UAAU,GAAGuF,GAAG,CAAC9F,cAAJ,CAAmBQ,QAAnB,EAA6BqN,cAA7B,CAAjB;;AAEA,QAAIF,SAAJ,EAAe;AACbnN,cAAQ,GAAGsF,GAAG,CAAC7F,cAAJ,CAAmBO,QAAnB,EAA6BqN,cAA7B,CAAX;AACD;;AAED,WAAO,IAAI1D,kBAAJ,CACL5J,UAAU,CAAChG,IADN,EAELgG,UAAU,CAACzB,MAFN,EAGL0B,QAAQ,CAACjG,IAHJ,EAILiG,QAAQ,CAAC1B,MAJJ,CAAP;AAMD;;AAED;;;;;;;;;;;AAWAgP,oBAAkB,CAACC,KAAD,EAAQ;AACxB,QAAIvN,QAAQ,GAAG,KAAK8K,WAAL,EAAf;AAEA,QAAI/K,UAAU,GAAGuF,GAAG,CAAC9F,cAAJ,CAAmBQ,QAAnB,EAA6B,UAAS3B,KAAT,EAAgB;AAC5D,UAAI,CAACiH,GAAG,CAAC5F,WAAJ,CAAgBrB,KAAhB,CAAD,IAA2B,CAACiH,GAAG,CAACzF,YAAJ,CAAiBxB,KAAjB,CAAhC,EAAyD;AACvD,eAAO,IAAP;AACD;;AACD,UAAImO,GAAG,GAAG,IAAI7C,kBAAJ,CACRtL,KAAK,CAACtE,IADE,EAERsE,KAAK,CAACC,MAFE,EAGR0B,QAAQ,CAACjG,IAHD,EAIRiG,QAAQ,CAAC1B,MAJD,CAAV;AAMA,UAAIxF,MAAM,GAAGyU,KAAK,CAACva,IAAN,CAAWwZ,GAAG,CAACS,QAAJ,EAAX,CAAb;AACA,aAAOnU,MAAM,IAAIA,MAAM,CAAC0U,KAAP,KAAiB,CAAlC;AACD,KAZgB,CAAjB;AAcA,QAAIhB,GAAG,GAAG,IAAI7C,kBAAJ,CACR5J,UAAU,CAAChG,IADH,EAERgG,UAAU,CAACzB,MAFH,EAGR0B,QAAQ,CAACjG,IAHD,EAIRiG,QAAQ,CAAC1B,MAJD,CAAV;AAOA,QAAIkD,IAAI,GAAGgL,GAAG,CAACS,QAAJ,EAAX;AACA,QAAInU,MAAM,GAAGyU,KAAK,CAACva,IAAN,CAAWwO,IAAX,CAAb;;AAEA,QAAI1I,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,CAAUnO,MAAV,KAAqB6W,IAAI,CAAC7W,MAAxC,EAAgD;AAC9C,aAAO6hB,GAAP;AACD,KAFD,MAEO;AACL,aAAO,IAAP;AACD;AACF;;AAED;;;;;AAKAiB,UAAQ,CAACrH,QAAD,EAAW;AACjB,WAAO;AACLsH,OAAC,EAAE;AACDC,YAAI,EAAErI,GAAG,CAACnF,cAAJ,CAAmBiG,QAAnB,EAA6B,KAAKwD,EAAlC,CADL;AAEDtL,cAAM,EAAE,KAAKuL;AAFZ,OADE;AAKL+D,OAAC,EAAE;AACDD,YAAI,EAAErI,GAAG,CAACnF,cAAJ,CAAmBiG,QAAnB,EAA6B,KAAK0D,EAAlC,CADL;AAEDxL,cAAM,EAAE,KAAKyL;AAFZ;AALE,KAAP;AAUD;AAED;;;;;;;AAKA8D,cAAY,CAACC,KAAD,EAAQ;AAClB,WAAO;AACLJ,OAAC,EAAE;AACDC,YAAI,EAAE1e,KAAK,CAACkJ,IAAN,CAAWmN,GAAG,CAACnF,cAAJ,CAAmBlR,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAnB,EAAsC,KAAKlE,EAA3C,CAAX,CADL;AAEDtL,cAAM,EAAE,KAAKuL;AAFZ,OADE;AAKL+D,OAAC,EAAE;AACDD,YAAI,EAAE1e,KAAK,CAACkJ,IAAN,CAAWmN,GAAG,CAACnF,cAAJ,CAAmBlR,KAAK,CAAC+I,IAAN,CAAW8V,KAAX,CAAnB,EAAsC,KAAKhE,EAA3C,CAAX,CADL;AAEDxL,cAAM,EAAE,KAAKyL;AAFZ;AALE,KAAP;AAUD;AAED;;;;;;AAIAgE,gBAAc,GAAG;AACf,UAAMhD,SAAS,GAAG,KAAKT,WAAL,EAAlB;AACA,WAAOS,SAAS,CAACgD,cAAV,EAAP;AACD;;AArnBgB;AAwnBnB;;;;;;;;;AAOe;AACb;;;;;;;;;AASAljB,QAAM,EAAE,UAAS+e,EAAT,EAAaC,EAAb,EAAiBC,EAAjB,EAAqBC,EAArB,EAAyB;AAC/B,QAAIjf,SAAS,CAACH,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,aAAO,IAAIgf,kBAAJ,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,CAAP;AACD,KAFD,MAEO,IAAIjf,SAAS,CAACH,MAAV,KAAqB,CAAzB,EAA4B;AAAE;AACnCmf,QAAE,GAAGF,EAAL;AACAG,QAAE,GAAGF,EAAL;AACA,aAAO,IAAIF,kBAAJ,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,CAAP;AACD,KAJM,MAIA;AACL,UAAIiE,YAAY,GAAG,KAAKC,mBAAL,EAAnB;;AAEA,UAAI,CAACD,YAAD,IAAiBljB,SAAS,CAACH,MAAV,KAAqB,CAA1C,EAA6C;AAC3C,YAAIujB,WAAW,GAAGpjB,SAAS,CAAC,CAAD,CAA3B;;AACA,YAAIwa,GAAG,CAACxL,UAAJ,CAAeoU,WAAf,CAAJ,EAAiC;AAC/BA,qBAAW,GAAGA,WAAW,CAACC,SAA1B;AACD;;AACD,eAAO,KAAKC,qBAAL,CAA2BF,WAA3B,EAAwC5I,GAAG,CAAC5B,SAAJ,KAAkB5Y,SAAS,CAAC,CAAD,CAAT,CAAa0R,SAAvE,CAAP;AACD;;AACD,aAAOwR,YAAP;AACD;AACF,GA7BY;AA+BbI,uBAAqB,EAAE,UAASF,WAAT,EAAsB5E,iBAAiB,GAAG,KAA1C,EAAiD;AACtE,QAAI0E,YAAY,GAAG,KAAKK,cAAL,CAAoBH,WAApB,CAAnB;AACA,WAAOF,YAAY,CAACpF,QAAb,CAAsBU,iBAAtB,CAAP;AACD,GAlCY;AAoCb2E,qBAAmB,EAAE,YAAW;AAC9B,QAAIrE,EAAJ,EAAQC,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB;;AACA,QAAI7N,GAAG,CAAC7H,iBAAR,EAA2B;AACzB,YAAM2W,SAAS,GAAG7Y,QAAQ,CAAC8Y,YAAT,EAAlB;;AACA,UAAI,CAACD,SAAD,IAAcA,SAAS,CAACE,UAAV,KAAyB,CAA3C,EAA8C;AAC5C,eAAO,IAAP;AACD,OAFD,MAEO,IAAI5F,GAAG,CAAC7J,MAAJ,CAAWuP,SAAS,CAACsD,UAArB,CAAJ,EAAsC;AAC3C;AACA;AACA,eAAO,IAAP;AACD;;AAED,YAAMvD,SAAS,GAAGC,SAAS,CAACuD,UAAV,CAAqB,CAArB,CAAlB;AACA3E,QAAE,GAAGmB,SAAS,CAACyD,cAAf;AACA3E,QAAE,GAAGkB,SAAS,CAAC0D,WAAf;AACA3E,QAAE,GAAGiB,SAAS,CAAC2D,YAAf;AACA3E,QAAE,GAAGgB,SAAS,CAAC4D,SAAf;AACD,KAfD,MAeO;AAAE;AACP,YAAM1G,SAAS,GAAG9V,QAAQ,CAAC6Y,SAAT,CAAmB1W,WAAnB,EAAlB;AACA,YAAMsa,YAAY,GAAG3G,SAAS,CAACc,SAAV,EAArB;AACA6F,kBAAY,CAAChG,QAAb,CAAsB,KAAtB;AACA,YAAMF,cAAc,GAAGT,SAAvB;AACAS,oBAAc,CAACE,QAAf,CAAwB,IAAxB;AAEA,UAAI7I,UAAU,GAAGiI,gBAAgB,CAACU,cAAD,EAAiB,IAAjB,CAAjC;AACA,UAAI1I,QAAQ,GAAGgI,gBAAgB,CAAC4G,YAAD,EAAe,KAAf,CAA/B,CARK,CAUL;;AACA,UAAItJ,GAAG,CAAClL,MAAJ,CAAW2F,UAAU,CAAChG,IAAtB,KAA+BuL,GAAG,CAAClH,eAAJ,CAAoB2B,UAApB,CAA/B,IACFuF,GAAG,CAACuJ,UAAJ,CAAe7O,QAAQ,CAACjG,IAAxB,CADE,IAC+BuL,GAAG,CAAC/G,gBAAJ,CAAqByB,QAArB,CAD/B,IAEFA,QAAQ,CAACjG,IAAT,CAAc8B,WAAd,KAA8BkE,UAAU,CAAChG,IAF3C,EAEiD;AAC/CgG,kBAAU,GAAGC,QAAb;AACD;;AAED4J,QAAE,GAAG7J,UAAU,CAACoJ,IAAhB;AACAU,QAAE,GAAG9J,UAAU,CAACzB,MAAhB;AACAwL,QAAE,GAAG9J,QAAQ,CAACmJ,IAAd;AACAY,QAAE,GAAG/J,QAAQ,CAAC1B,MAAd;AACD;;AAED,WAAO,IAAIqL,kBAAJ,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,CAAP;AACD,GA7EY;;AA+Eb;;;;;;;;AAQAsE,gBAAc,EAAE,UAAStU,IAAT,EAAe;AAC7B,QAAI6P,EAAE,GAAG7P,IAAT;AACA,QAAI8P,EAAE,GAAG,CAAT;AACA,QAAIC,EAAE,GAAG/P,IAAT;AACA,QAAIgQ,EAAE,GAAGzE,GAAG,CAACnJ,UAAJ,CAAe2N,EAAf,CAAT,CAJ6B,CAM7B;;AACA,QAAIxE,GAAG,CAAC/K,MAAJ,CAAWqP,EAAX,CAAJ,EAAoB;AAClBC,QAAE,GAAGvE,GAAG,CAACnI,QAAJ,CAAayM,EAAb,EAAiBjf,MAAjB,GAA0B,CAA/B;AACAif,QAAE,GAAGA,EAAE,CAAClN,UAAR;AACD;;AACD,QAAI4I,GAAG,CAACzB,IAAJ,CAASiG,EAAT,CAAJ,EAAkB;AAChBC,QAAE,GAAGzE,GAAG,CAACnI,QAAJ,CAAa2M,EAAb,EAAiBnf,MAAjB,GAA0B,CAA/B;AACAmf,QAAE,GAAGA,EAAE,CAACpN,UAAR;AACD,KAHD,MAGO,IAAI4I,GAAG,CAAC/K,MAAJ,CAAWuP,EAAX,CAAJ,EAAoB;AACzBC,QAAE,GAAGzE,GAAG,CAACnI,QAAJ,CAAa2M,EAAb,EAAiBnf,MAAtB;AACAmf,QAAE,GAAGA,EAAE,CAACpN,UAAR;AACD;;AAED,WAAO,KAAK7R,MAAL,CAAY+e,EAAZ,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,EAAxB,CAAP;AACD,GA3GY;;AA6Gb;;;;;;AAMA+E,sBAAoB,EAAE,UAAS/U,IAAT,EAAe;AACnC,WAAO,KAAKsU,cAAL,CAAoBtU,IAApB,EAA0B6O,QAA1B,CAAmC,IAAnC,CAAP;AACD,GArHY;;AAuHb;;;;;;AAMAmG,qBAAmB,EAAE,UAAShV,IAAT,EAAe;AAClC,WAAO,KAAKsU,cAAL,CAAoBtU,IAApB,EAA0B6O,QAA1B,EAAP;AACD,GA/HY;;AAiIb;;;;;;;;;AASAoG,oBAAkB,EAAE,UAAS5I,QAAT,EAAmBqH,QAAnB,EAA6B;AAC/C,UAAM7D,EAAE,GAAGtE,GAAG,CAACjF,cAAJ,CAAmB+F,QAAnB,EAA6BqH,QAAQ,CAACC,CAAT,CAAWC,IAAxC,CAAX;AACA,UAAM9D,EAAE,GAAG4D,QAAQ,CAACC,CAAT,CAAWpP,MAAtB;AACA,UAAMwL,EAAE,GAAGxE,GAAG,CAACjF,cAAJ,CAAmB+F,QAAnB,EAA6BqH,QAAQ,CAACG,CAAT,CAAWD,IAAxC,CAAX;AACA,UAAM5D,EAAE,GAAG0D,QAAQ,CAACG,CAAT,CAAWtP,MAAtB;AACA,WAAO,IAAIqL,kBAAJ,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,CAAP;AACD,GAhJY;;AAkJb;;;;;;;;;AASAkF,wBAAsB,EAAE,UAASxB,QAAT,EAAmBK,KAAnB,EAA0B;AAChD,UAAMjE,EAAE,GAAG4D,QAAQ,CAACC,CAAT,CAAWpP,MAAtB;AACA,UAAMyL,EAAE,GAAG0D,QAAQ,CAACG,CAAT,CAAWtP,MAAtB;AACA,UAAMsL,EAAE,GAAGtE,GAAG,CAACjF,cAAJ,CAAmBpR,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAnB,EAAsCL,QAAQ,CAACC,CAAT,CAAWC,IAAjD,CAAX;AACA,UAAM7D,EAAE,GAAGxE,GAAG,CAACjF,cAAJ,CAAmBpR,KAAK,CAAC+I,IAAN,CAAW8V,KAAX,CAAnB,EAAsCL,QAAQ,CAACG,CAAT,CAAWD,IAAjD,CAAX;AAEA,WAAO,IAAIhE,kBAAJ,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,CAAP;AACD;AAlKY,CAAf,E;;ACrvBA;AACA;AAEA,MAAMmF,OAAO,GAAG;AACd,eAAa,CADC;AAEd,SAAO,CAFO;AAGd,WAAS,EAHK;AAId,WAAS,EAJK;AAKd,YAAU,EALI;AAOd;AACA,UAAQ,EARM;AASd,QAAM,EATQ;AAUd,WAAS,EAVK;AAWd,UAAQ,EAXM;AAad;AACA,UAAQ,EAdM;AAed,UAAQ,EAfM;AAgBd,UAAQ,EAhBM;AAiBd,UAAQ,EAjBM;AAkBd,UAAQ,EAlBM;AAmBd,UAAQ,EAnBM;AAoBd,UAAQ,EApBM;AAqBd,UAAQ,EArBM;AAsBd,UAAQ,EAtBM;AAwBd;AACA,OAAK,EAzBS;AA0Bd,OAAK,EA1BS;AA2Bd,OAAK,EA3BS;AA4Bd,OAAK,EA5BS;AA6Bd,OAAK,EA7BS;AA8Bd,OAAK,EA9BS;AA+Bd,OAAK,EA/BS;AAgCd,OAAK,EAhCS;AAiCd,OAAK,EAjCS;AAkCd,OAAK,EAlCS;AAmCd,OAAK,EAnCS;AAoCd,OAAK,EApCS;AAsCd,WAAS,GAtCK;AAuCd,iBAAe,GAvCD;AAwCd,eAAa,GAxCC;AAyCd,kBAAgB,GAzCF;AA2Cd;AACA,UAAQ,EA5CM;AA6Cd,SAAO,EA7CO;AA8Cd,YAAU,EA9CI;AA+Cd,cAAY;AA/CE,CAAhB;AAkDA;;;;;;;;;AAQe;AACb;;;;;;AAMAC,QAAM,EAAGC,OAAD,IAAa;AACnB,WAAOngB,KAAK,CAACuJ,QAAN,CAAe,CACpB0W,OAAO,CAACG,SADY,EAEpBH,OAAO,CAACI,GAFY,EAGpBJ,OAAO,CAACK,KAHY,EAIpBL,OAAO,CAACM,KAJY,EAKpBN,OAAO,CAACO,MALY,CAAf,EAMJL,OANI,CAAP;AAOD,GAfY;;AAgBb;;;;;;AAMAM,QAAM,EAAGN,OAAD,IAAa;AACnB,WAAOngB,KAAK,CAACuJ,QAAN,CAAe,CACpB0W,OAAO,CAACS,IADY,EAEpBT,OAAO,CAACU,EAFY,EAGpBV,OAAO,CAACW,KAHY,EAIpBX,OAAO,CAACY,IAJY,CAAf,EAKJV,OALI,CAAP;AAMD,GA7BY;;AA8Bb;;;;;;AAMAW,cAAY,EAAGX,OAAD,IAAa;AACzB,WAAOngB,KAAK,CAACuJ,QAAN,CAAe,CACpB0W,OAAO,CAACc,IADY,EAEpBd,OAAO,CAACe,GAFY,EAGpBf,OAAO,CAACgB,MAHY,EAIpBhB,OAAO,CAACiB,QAJY,CAAf,EAKJf,OALI,CAAP;AAMD,GA3CY;;AA4Cb;;;;AAIAgB,cAAY,EAAEjZ,IAAI,CAACZ,YAAL,CAAkB2Y,OAAlB,CAhDD;AAiDb7J,MAAI,EAAE6J;AAjDO,CAAf,E;;AC7DA;AAEA;;;;;;;;;AAQO,SAASmB,iBAAT,CAA2BC,IAA3B,EAAiC;AACtC,SAAO3mB,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B7mB,6BAAC,CAACwB,MAAF,CAAS,IAAIslB,UAAJ,EAAT,EAA2B;AACzBC,YAAM,EAAG9C,CAAD,IAAO;AACb,cAAM+C,OAAO,GAAG/C,CAAC,CAAC3G,MAAF,CAASnO,MAAzB;AACA0X,gBAAQ,CAACI,OAAT,CAAiBD,OAAjB;AACD,OAJwB;AAKzBE,aAAO,EAAGC,GAAD,IAAS;AAChBN,gBAAQ,CAACO,MAAT,CAAgBD,GAAhB;AACD;AAPwB,KAA3B,EAQGE,aARH,CAQiBV,IARjB;AASD,GAVM,EAUJW,OAVI,EAAP;AAWD;AAED;;;;;;;;;AAQO,SAASC,WAAT,CAAqBhkB,GAArB,EAA0B;AAC/B,SAAOvD,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B,UAAMW,IAAI,GAAGxnB,yBAAC,CAAC,OAAD,CAAd;AAEAwnB,QAAI,CAACC,GAAL,CAAS,MAAT,EAAiB,MAAM;AACrBD,UAAI,CAAC7N,GAAL,CAAS,aAAT;AACAkN,cAAQ,CAACI,OAAT,CAAiBO,IAAjB;AACD,KAHD,EAGGC,GAHH,CAGO,aAHP,EAGsB,MAAM;AAC1BD,UAAI,CAAC7N,GAAL,CAAS,MAAT,EAAiB+N,MAAjB;AACAb,cAAQ,CAACO,MAAT,CAAgBI,IAAhB;AACD,KAND,EAMGG,GANH,CAMO;AACLC,aAAO,EAAE;AADJ,KANP,EAQGC,QARH,CAQYrf,QAAQ,CAACkW,IARrB,EAQ2Bje,IAR3B,CAQgC,KARhC,EAQuC8C,GARvC;AASD,GAZM,EAYJ+jB,OAZI,EAAP;AAaD,C;;AC9CD;AAEe,MAAMQ,eAAN,CAAc;AAC3BtoB,aAAW,CAACuoB,SAAD,EAAY;AACrB,SAAKC,KAAL,GAAa,EAAb;AACA,SAAKC,WAAL,GAAmB,CAAC,CAApB;AACA,SAAKF,SAAL,GAAiBA,SAAjB;AACA,SAAKtL,QAAL,GAAgBsL,SAAS,CAAC,CAAD,CAAzB;AACD;;AAEDG,cAAY,GAAG;AACb,UAAMrF,GAAG,GAAGsF,UAAK,CAACjnB,MAAN,CAAa,KAAKub,QAAlB,CAAZ;AACA,UAAM2L,aAAa,GAAG;AAAErE,OAAC,EAAE;AAAEC,YAAI,EAAE,EAAR;AAAYrP,cAAM,EAAE;AAApB,OAAL;AAA8BsP,OAAC,EAAE;AAAED,YAAI,EAAE,EAAR;AAAYrP,cAAM,EAAE;AAApB;AAAjC,KAAtB;AAEA,WAAO;AACL1U,cAAQ,EAAE,KAAK8nB,SAAL,CAAe7nB,IAAf,EADL;AAEL4jB,cAAQ,EAAIjB,GAAG,IAAIA,GAAG,CAACxC,YAAJ,EAAR,GAA8BwC,GAAG,CAACiB,QAAJ,CAAa,KAAKrH,QAAlB,CAA9B,GAA4D2L;AAFlE,KAAP;AAID;;AAEDC,eAAa,CAACC,QAAD,EAAW;AACtB,QAAIA,QAAQ,CAACroB,QAAT,KAAsB,IAA1B,EAAgC;AAC9B,WAAK8nB,SAAL,CAAe7nB,IAAf,CAAoBooB,QAAQ,CAACroB,QAA7B;AACD;;AACD,QAAIqoB,QAAQ,CAACxE,QAAT,KAAsB,IAA1B,EAAgC;AAC9BqE,gBAAK,CAAC9C,kBAAN,CAAyB,KAAK5I,QAA9B,EAAwC6L,QAAQ,CAACxE,QAAjD,EAA2Drc,MAA3D;AACD;AACF;AAED;;;;;;;AAKA8gB,QAAM,GAAG;AACP;AACA,QAAI,KAAKR,SAAL,CAAe7nB,IAAf,OAA0B,KAAK8nB,KAAL,CAAW,KAAKC,WAAhB,EAA6BhoB,QAA3D,EAAqE;AACnE,WAAKuoB,UAAL;AACD,KAJM,CAMP;;;AACA,SAAKP,WAAL,GAAmB,CAAnB,CAPO,CASP;;AACA,SAAKI,aAAL,CAAmB,KAAKL,KAAL,CAAW,KAAKC,WAAhB,CAAnB;AACD;AAED;;;;;;AAIAQ,QAAM,GAAG;AACP;AACA,SAAKT,KAAL,GAAa,EAAb,CAFO,CAIP;;AACA,SAAKC,WAAL,GAAmB,CAAC,CAApB,CALO,CAOP;;AACA,SAAKO,UAAL;AACD;AAED;;;;;;AAIA9hB,OAAK,GAAG;AACN;AACA,SAAKshB,KAAL,GAAa,EAAb,CAFM,CAIN;;AACA,SAAKC,WAAL,GAAmB,CAAC,CAApB,CALM,CAON;;AACA,SAAKF,SAAL,CAAe7nB,IAAf,CAAoB,EAApB,EARM,CAUN;;AACA,SAAKsoB,UAAL;AACD;AAED;;;;;AAGAlhB,MAAI,GAAG;AACL;AACA,QAAI,KAAKygB,SAAL,CAAe7nB,IAAf,OAA0B,KAAK8nB,KAAL,CAAW,KAAKC,WAAhB,EAA6BhoB,QAA3D,EAAqE;AACnE,WAAKuoB,UAAL;AACD;;AAED,QAAI,KAAKP,WAAL,GAAmB,CAAvB,EAA0B;AACxB,WAAKA,WAAL;AACA,WAAKI,aAAL,CAAmB,KAAKL,KAAL,CAAW,KAAKC,WAAhB,CAAnB;AACD;AACF;AAED;;;;;AAGA1gB,MAAI,GAAG;AACL,QAAI,KAAKygB,KAAL,CAAWhnB,MAAX,GAAoB,CAApB,GAAwB,KAAKinB,WAAjC,EAA8C;AAC5C,WAAKA,WAAL;AACA,WAAKI,aAAL,CAAmB,KAAKL,KAAL,CAAW,KAAKC,WAAhB,CAAnB;AACD;AACF;AAED;;;;;AAGAO,YAAU,GAAG;AACX,SAAKP,WAAL,GADW,CAGX;;AACA,QAAI,KAAKD,KAAL,CAAWhnB,MAAX,GAAoB,KAAKinB,WAA7B,EAA0C;AACxC,WAAKD,KAAL,GAAa,KAAKA,KAAL,CAAWzZ,KAAX,CAAiB,CAAjB,EAAoB,KAAK0Z,WAAzB,CAAb;AACD,KANU,CAQX;;;AACA,SAAKD,KAAL,CAAWtY,IAAX,CAAgB,KAAKwY,YAAL,EAAhB;AACD;;AApH0B,C;;ACF7B;AACA;AACA;AACA;AACA;AAEe,MAAMQ,WAAN,CAAY;AACzB;;;;;;;;;;;;;AAaAC,WAAS,CAACC,IAAD,EAAOC,aAAP,EAAsB;AAC7B,QAAItW,GAAG,CAAChI,aAAJ,GAAoB,GAAxB,EAA6B;AAC3B,YAAM4E,MAAM,GAAG,EAAf;AACAnP,+BAAC,CAACM,IAAF,CAAOuoB,aAAP,EAAsB,CAACna,GAAD,EAAMoa,YAAN,KAAuB;AAC3C3Z,cAAM,CAAC2Z,YAAD,CAAN,GAAuBF,IAAI,CAACjB,GAAL,CAASmB,YAAT,CAAvB;AACD,OAFD;AAGA,aAAO3Z,MAAP;AACD;;AACD,WAAOyZ,IAAI,CAACjB,GAAL,CAASkB,aAAT,CAAP;AACD;AAED;;;;;;;;AAMAE,UAAQ,CAAChpB,KAAD,EAAQ;AACd,UAAMipB,UAAU,GAAG,CAAC,aAAD,EAAgB,WAAhB,EAA6B,YAA7B,EAA2C,iBAA3C,EAA8D,aAA9D,CAAnB;AACA,UAAMC,SAAS,GAAG,KAAKN,SAAL,CAAe5oB,KAAf,EAAsBipB,UAAtB,KAAqC,EAAvD;AAEA,UAAME,QAAQ,GAAGnpB,KAAK,CAAC,CAAD,CAAL,CAAS6E,KAAT,CAAeskB,QAAf,IAA2BD,SAAS,CAAC,WAAD,CAArD;AAEAA,aAAS,CAAC,WAAD,CAAT,GAAyBE,QAAQ,CAACD,QAAD,EAAW,EAAX,CAAjC;AACAD,aAAS,CAAC,gBAAD,CAAT,GAA8BC,QAAQ,CAACtQ,KAAT,CAAe,UAAf,CAA9B;AAEA,WAAOqQ,SAAP;AACD;AAED;;;;;;;;AAMAG,WAAS,CAACvG,GAAD,EAAMoG,SAAN,EAAiB;AACxBjpB,6BAAC,CAACM,IAAF,CAAOuiB,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAAC9K,MAAd,EAAsB;AAC3BuR,qBAAe,EAAE;AADU,KAAtB,CAAP,EAEI,CAAC1T,GAAD,EAAMwU,IAAN,KAAe;AACjBljB,+BAAC,CAACkjB,IAAD,CAAD,CAAQyE,GAAR,CAAYsB,SAAZ;AACD,KAJD;AAKD;AAED;;;;;;;;;;;;AAUAI,YAAU,CAACxG,GAAD,EAAMljB,OAAN,EAAe;AACvBkjB,OAAG,GAAGA,GAAG,CAAC5L,SAAJ,EAAN;AAEA,UAAMzG,QAAQ,GAAI7Q,OAAO,IAAIA,OAAO,CAAC6Q,QAApB,IAAiC,MAAlD;AACA,UAAM8Y,oBAAoB,GAAG,CAAC,EAAE3pB,OAAO,IAAIA,OAAO,CAAC2pB,oBAArB,CAA9B;AACA,UAAMC,mBAAmB,GAAG,CAAC,EAAE5pB,OAAO,IAAIA,OAAO,CAAC4pB,mBAArB,CAA7B;;AAEA,QAAI1G,GAAG,CAACV,WAAJ,EAAJ,EAAuB;AACrB,aAAO,CAACU,GAAG,CAACM,UAAJ,CAAexH,GAAG,CAACza,MAAJ,CAAWsP,QAAX,CAAf,CAAD,CAAP;AACD;;AAED,QAAI/B,IAAI,GAAGkN,GAAG,CAACpL,kBAAJ,CAAuBC,QAAvB,CAAX;AACA,UAAMiD,KAAK,GAAGoP,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAAClL,MAAd,EAAsB;AAClC4R,mBAAa,EAAE;AADmB,KAAtB,EAEXlV,GAFW,CAEN0K,IAAD,IAAU;AACf,aAAO8D,GAAG,CAAC3I,mBAAJ,CAAwB6E,IAAxB,EAA8BpJ,IAA9B,KAAuCkN,GAAG,CAAC5H,IAAJ,CAAS8D,IAAT,EAAerH,QAAf,CAA9C;AACD,KAJa,CAAd;;AAMA,QAAI8Y,oBAAJ,EAA0B;AACxB,UAAIC,mBAAJ,EAAyB;AACvB,cAAMC,YAAY,GAAG3G,GAAG,CAACpP,KAAJ,EAArB,CADuB,CAEvB;;AACAhF,YAAI,GAAGjB,IAAI,CAACjC,GAAL,CAASkD,IAAT,EAAgB2B,IAAD,IAAU;AAC9B,iBAAO9K,KAAK,CAACuJ,QAAN,CAAe2a,YAAf,EAA6BpZ,IAA7B,CAAP;AACD,SAFM,CAAP;AAGD;;AAED,aAAOqD,KAAK,CAACtG,GAAN,CAAWiD,IAAD,IAAU;AACzB,cAAMiC,QAAQ,GAAGsJ,GAAG,CAACvJ,mBAAJ,CAAwBhC,IAAxB,EAA8B3B,IAA9B,CAAjB;AACA,cAAMN,IAAI,GAAG7I,KAAK,CAAC6I,IAAN,CAAWkE,QAAX,CAAb;AACA,cAAMoX,KAAK,GAAGnkB,KAAK,CAACkJ,IAAN,CAAW6D,QAAX,CAAd;AACArS,iCAAC,CAACM,IAAF,CAAOmpB,KAAP,EAAc,CAAC/a,GAAD,EAAMgb,IAAN,KAAe;AAC3B/N,aAAG,CAACpH,gBAAJ,CAAqBpG,IAArB,EAA2Bub,IAAI,CAAChX,UAAhC;AACAiJ,aAAG,CAACnY,MAAJ,CAAWkmB,IAAX;AACD,SAHD;AAIA,eAAOpkB,KAAK,CAAC6I,IAAN,CAAWkE,QAAX,CAAP;AACD,OATM,CAAP;AAUD,KAnBD,MAmBO;AACL,aAAOoB,KAAP;AACD;AACF;AAED;;;;;;;;AAMAK,SAAO,CAAC+O,GAAD,EAAM;AACX,UAAM8G,KAAK,GAAG3pB,yBAAC,CAAC,CAAC2b,GAAG,CAAChL,SAAJ,CAAckS,GAAG,CAAC5C,EAAlB,CAAD,GAAyB4C,GAAG,CAAC5C,EAAJ,CAAOlN,UAAhC,GAA6C8P,GAAG,CAAC5C,EAAlD,CAAf;AACA,QAAIgJ,SAAS,GAAG,KAAKF,QAAL,CAAcY,KAAd,CAAhB,CAFW,CAIX;AACA;;AACA,QAAI;AACFV,eAAS,GAAGjpB,yBAAC,CAACwB,MAAF,CAASynB,SAAT,EAAoB;AAC9B,qBAAazgB,QAAQ,CAACohB,iBAAT,CAA2B,MAA3B,IAAqC,MAArC,GAA8C,QAD7B;AAE9B,uBAAephB,QAAQ,CAACohB,iBAAT,CAA2B,QAA3B,IAAuC,QAAvC,GAAkD,QAFnC;AAG9B,0BAAkBphB,QAAQ,CAACohB,iBAAT,CAA2B,WAA3B,IAA0C,WAA1C,GAAwD,QAH5C;AAI9B,0BAAkBphB,QAAQ,CAACohB,iBAAT,CAA2B,WAA3B,IAA0C,WAA1C,GAAwD,QAJ5C;AAK9B,4BAAoBphB,QAAQ,CAACohB,iBAAT,CAA2B,aAA3B,IAA4C,aAA5C,GAA4D,QALlD;AAM9B,8BAAsBphB,QAAQ,CAACohB,iBAAT,CAA2B,eAA3B,IAA8C,eAA9C,GAAgE,QANxD;AAO9B,uBAAephB,QAAQ,CAACqhB,iBAAT,CAA2B,UAA3B,KAA0CZ,SAAS,CAAC,aAAD;AAPpC,OAApB,CAAZ;AASD,KAVD,CAUE,OAAOhF,CAAP,EAAU,CAAE,CAhBH,CAkBX;;;AACA,QAAI,CAACpB,GAAG,CAACtC,QAAJ,EAAL,EAAqB;AACnB0I,eAAS,CAAC,YAAD,CAAT,GAA0B,MAA1B;AACD,KAFD,MAEO;AACL,YAAMa,YAAY,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,mBAAnB,EAAwC,QAAxC,CAArB;AACA,YAAMC,WAAW,GAAGD,YAAY,CAAC7f,OAAb,CAAqBgf,SAAS,CAAC,iBAAD,CAA9B,IAAqD,CAAC,CAA1E;AACAA,eAAS,CAAC,YAAD,CAAT,GAA0Bc,WAAW,GAAG,WAAH,GAAiB,SAAtD;AACD;;AAED,UAAM7G,IAAI,GAAGvH,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAAC9K,MAAzB,CAAb;;AACA,QAAIqS,IAAI,IAAIA,IAAI,CAACte,KAAL,CAAW,aAAX,CAAZ,EAAuC;AACrCqkB,eAAS,CAAC,aAAD,CAAT,GAA2B/F,IAAI,CAACte,KAAL,CAAWolB,UAAtC;AACD,KAFD,MAEO;AACL,YAAMA,UAAU,GAAGb,QAAQ,CAACF,SAAS,CAAC,aAAD,CAAV,EAA2B,EAA3B,CAAR,GAAyCE,QAAQ,CAACF,SAAS,CAAC,WAAD,CAAV,EAAyB,EAAzB,CAApE;AACAA,eAAS,CAAC,aAAD,CAAT,GAA2Be,UAAU,CAACC,OAAX,CAAmB,CAAnB,CAA3B;AACD;;AAEDhB,aAAS,CAACiB,MAAV,GAAmBrH,GAAG,CAACrC,UAAJ,MAAoB7E,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAACjK,QAAzB,CAAvC;AACAuX,aAAS,CAAC/V,SAAV,GAAsByI,GAAG,CAAC1I,YAAJ,CAAiB4P,GAAG,CAAC5C,EAArB,EAAyBtE,GAAG,CAACxL,UAA7B,CAAtB;AACA8Y,aAAS,CAACd,KAAV,GAAkBtF,GAAlB;AAEA,WAAOoG,SAAP;AACD;;AA3JwB,C;;ACN3B;AACA;AACA;AACA;AACA;AAEe,MAAMkB,aAAN,CAAa;AAC1B;;;AAGAC,mBAAiB,CAAC3N,QAAD,EAAW;AAC1B,SAAK4N,UAAL,CAAgB,IAAhB,EAAsB5N,QAAtB;AACD;AAED;;;;;AAGA6N,qBAAmB,CAAC7N,QAAD,EAAW;AAC5B,SAAK4N,UAAL,CAAgB,IAAhB,EAAsB5N,QAAtB;AACD;AAED;;;;;AAGA3W,QAAM,CAAC2W,QAAD,EAAW;AACf,UAAMoG,GAAG,GAAGsF,UAAK,CAACjnB,MAAN,CAAaub,QAAb,EAAuBsG,sBAAvB,EAAZ;AAEA,UAAMoB,KAAK,GAAGtB,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAAC9K,MAAd,EAAsB;AAAEuR,qBAAe,EAAE;AAAnB,KAAtB,CAAd;AACA,UAAMmI,UAAU,GAAGjlB,KAAK,CAAC+J,SAAN,CAAgB8U,KAAhB,EAAuB3W,IAAI,CAACxC,IAAL,CAAU,YAAV,CAAvB,CAAnB;AAEAhL,6BAAC,CAACM,IAAF,CAAOiqB,UAAP,EAAmB,CAAC7b,GAAD,EAAMyV,KAAN,KAAgB;AACjC,YAAMhW,IAAI,GAAG7I,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAb;;AACA,UAAIxI,GAAG,CAAC3K,IAAJ,CAAS7C,IAAT,CAAJ,EAAoB;AAClB,cAAMqc,YAAY,GAAG,KAAKC,QAAL,CAActc,IAAI,CAACgE,eAAnB,CAArB;;AACA,YAAIqY,YAAJ,EAAkB;AAChBrG,eAAK,CACFhX,GADH,CACO+V,IAAI,IAAIsH,YAAY,CAACpW,WAAb,CAAyB8O,IAAzB,CADf;AAED,SAHD,MAGO;AACL,eAAKwH,QAAL,CAAcvG,KAAd,EAAqBhW,IAAI,CAAC4E,UAAL,CAAgBvC,QAArC;AACA2T,eAAK,CACFhX,GADH,CACQ+V,IAAD,IAAUA,IAAI,CAACnQ,UADtB,EAEG5F,GAFH,CAEQ+V,IAAD,IAAU,KAAKyH,gBAAL,CAAsBzH,IAAtB,CAFjB;AAGD;AACF,OAXD,MAWO;AACLljB,iCAAC,CAACM,IAAF,CAAO6jB,KAAP,EAAc,CAACzV,GAAD,EAAMwU,IAAN,KAAe;AAC3BljB,mCAAC,CAACkjB,IAAD,CAAD,CAAQyE,GAAR,CAAY,YAAZ,EAA0B,CAACjZ,GAAD,EAAM+J,GAAN,KAAc;AACtC,mBAAO,CAAC0Q,QAAQ,CAAC1Q,GAAD,EAAM,EAAN,CAAR,IAAqB,CAAtB,IAA2B,EAAlC;AACD,WAFD;AAGD,SAJD;AAKD;AACF,KApBD;AAsBAoK,OAAG,CAACpb,MAAJ;AACD;AAED;;;;;AAGA5B,SAAO,CAAC4W,QAAD,EAAW;AAChB,UAAMoG,GAAG,GAAGsF,UAAK,CAACjnB,MAAN,CAAaub,QAAb,EAAuBsG,sBAAvB,EAAZ;AAEA,UAAMoB,KAAK,GAAGtB,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAAC9K,MAAd,EAAsB;AAAEuR,qBAAe,EAAE;AAAnB,KAAtB,CAAd;AACA,UAAMmI,UAAU,GAAGjlB,KAAK,CAAC+J,SAAN,CAAgB8U,KAAhB,EAAuB3W,IAAI,CAACxC,IAAL,CAAU,YAAV,CAAvB,CAAnB;AAEAhL,6BAAC,CAACM,IAAF,CAAOiqB,UAAP,EAAmB,CAAC7b,GAAD,EAAMyV,KAAN,KAAgB;AACjC,YAAMhW,IAAI,GAAG7I,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAb;;AACA,UAAIxI,GAAG,CAAC3K,IAAJ,CAAS7C,IAAT,CAAJ,EAAoB;AAClB,aAAKyc,WAAL,CAAiB,CAACzG,KAAD,CAAjB;AACD,OAFD,MAEO;AACLnkB,iCAAC,CAACM,IAAF,CAAO6jB,KAAP,EAAc,CAACzV,GAAD,EAAMwU,IAAN,KAAe;AAC3BljB,mCAAC,CAACkjB,IAAD,CAAD,CAAQyE,GAAR,CAAY,YAAZ,EAA0B,CAACjZ,GAAD,EAAM+J,GAAN,KAAc;AACtCA,eAAG,GAAI0Q,QAAQ,CAAC1Q,GAAD,EAAM,EAAN,CAAR,IAAqB,CAA5B;AACA,mBAAOA,GAAG,GAAG,EAAN,GAAWA,GAAG,GAAG,EAAjB,GAAsB,EAA7B;AACD,WAHD;AAID,SALD;AAMD;AACF,KAZD;AAcAoK,OAAG,CAACpb,MAAJ;AACD;AAED;;;;;;;AAKA4iB,YAAU,CAACQ,QAAD,EAAWpO,QAAX,EAAqB;AAC7B,UAAMoG,GAAG,GAAGsF,UAAK,CAACjnB,MAAN,CAAaub,QAAb,EAAuBsG,sBAAvB,EAAZ;AAEA,QAAIoB,KAAK,GAAGtB,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAAC9K,MAAd,EAAsB;AAAEuR,qBAAe,EAAE;AAAnB,KAAtB,CAAZ;AACA,UAAM0B,QAAQ,GAAGjB,GAAG,CAACqB,YAAJ,CAAiBC,KAAjB,CAAjB;AACA,UAAMoG,UAAU,GAAGjlB,KAAK,CAAC+J,SAAN,CAAgB8U,KAAhB,EAAuB3W,IAAI,CAACxC,IAAL,CAAU,YAAV,CAAvB,CAAnB,CAL6B,CAO7B;;AACA,QAAI1F,KAAK,CAACzE,IAAN,CAAWsjB,KAAX,EAAkBxI,GAAG,CAAC1K,UAAtB,CAAJ,EAAuC;AACrC,UAAI6Z,YAAY,GAAG,EAAnB;AACA9qB,+BAAC,CAACM,IAAF,CAAOiqB,UAAP,EAAmB,CAAC7b,GAAD,EAAMyV,KAAN,KAAgB;AACjC2G,oBAAY,GAAGA,YAAY,CAAC7H,MAAb,CAAoB,KAAKyH,QAAL,CAAcvG,KAAd,EAAqB0G,QAArB,CAApB,CAAf;AACD,OAFD;AAGA1G,WAAK,GAAG2G,YAAR,CALqC,CAMvC;AACC,KAPD,MAOO;AACL,YAAMC,SAAS,GAAGlI,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAACrK,MAAd,EAAsB;AACtC8Q,uBAAe,EAAE;AADqB,OAAtB,EAEf/O,MAFe,CAEP2X,QAAD,IAAc;AACtB,eAAO,CAAChrB,yBAAC,CAACwQ,QAAF,CAAWwa,QAAX,EAAqBH,QAArB,CAAR;AACD,OAJiB,CAAlB;;AAMA,UAAIE,SAAS,CAAC/pB,MAAd,EAAsB;AACpBhB,iCAAC,CAACM,IAAF,CAAOyqB,SAAP,EAAkB,CAACrc,GAAD,EAAMsc,QAAN,KAAmB;AACnCrP,aAAG,CAACxD,OAAJ,CAAY6S,QAAZ,EAAsBH,QAAtB;AACD,SAFD;AAGD,OAJD,MAIO;AACL1G,aAAK,GAAG,KAAKyG,WAAL,CAAiBL,UAAjB,EAA6B,IAA7B,CAAR;AACD;AACF;;AAEDpC,cAAK,CAAC7C,sBAAN,CAA6BxB,QAA7B,EAAuCK,KAAvC,EAA8C1c,MAA9C;AACD;AAED;;;;;;;AAKAijB,UAAQ,CAACvG,KAAD,EAAQ0G,QAAR,EAAkB;AACxB,UAAM1c,IAAI,GAAG7I,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAb;AACA,UAAM9V,IAAI,GAAG/I,KAAK,CAAC+I,IAAN,CAAW8V,KAAX,CAAb;AAEA,UAAM8G,QAAQ,GAAGtP,GAAG,CAACrK,MAAJ,CAAWnD,IAAI,CAACgE,eAAhB,KAAoChE,IAAI,CAACgE,eAA1D;AACA,UAAM+Y,QAAQ,GAAGvP,GAAG,CAACrK,MAAJ,CAAWjD,IAAI,CAAC6D,WAAhB,KAAgC7D,IAAI,CAAC6D,WAAtD;AAEA,UAAM8Y,QAAQ,GAAGC,QAAQ,IAAItP,GAAG,CAACtH,WAAJ,CAAgBsH,GAAG,CAACza,MAAJ,CAAW2pB,QAAQ,IAAI,IAAvB,CAAhB,EAA8Cxc,IAA9C,CAA7B,CAPwB,CASxB;;AACA8V,SAAK,GAAGA,KAAK,CAAChX,GAAN,CAAW+V,IAAD,IAAU;AAC1B,aAAOvH,GAAG,CAAC1K,UAAJ,CAAeiS,IAAf,IAAuBvH,GAAG,CAACxD,OAAJ,CAAY+K,IAAZ,EAAkB,IAAlB,CAAvB,GAAiDA,IAAxD;AACD,KAFO,CAAR,CAVwB,CAcxB;;AACAvH,OAAG,CAACpH,gBAAJ,CAAqByW,QAArB,EAA+B7G,KAA/B;;AAEA,QAAI+G,QAAJ,EAAc;AACZvP,SAAG,CAACpH,gBAAJ,CAAqByW,QAArB,EAA+B1lB,KAAK,CAAC2J,IAAN,CAAWic,QAAQ,CAACxY,UAApB,CAA/B;AACAiJ,SAAG,CAACnY,MAAJ,CAAW0nB,QAAX;AACD;;AAED,WAAO/G,KAAP;AACD;AAED;;;;;;;;;AAOAyG,aAAW,CAACL,UAAD,EAAaY,eAAb,EAA8B;AACvC,QAAIC,aAAa,GAAG,EAApB;AAEAprB,6BAAC,CAACM,IAAF,CAAOiqB,UAAP,EAAmB,CAAC7b,GAAD,EAAMyV,KAAN,KAAgB;AACjC,YAAMhW,IAAI,GAAG7I,KAAK,CAAC6I,IAAN,CAAWgW,KAAX,CAAb;AACA,YAAM9V,IAAI,GAAG/I,KAAK,CAAC+I,IAAN,CAAW8V,KAAX,CAAb;AAEA,YAAMkH,QAAQ,GAAGF,eAAe,GAAGxP,GAAG,CAACvI,YAAJ,CAAiBjF,IAAjB,EAAuBwN,GAAG,CAACrK,MAA3B,CAAH,GAAwCnD,IAAI,CAAC4E,UAA7E;AACA,YAAMuY,UAAU,GAAGD,QAAQ,CAACtY,UAA5B;;AAEA,UAAIsY,QAAQ,CAACtY,UAAT,CAAoBvC,QAApB,KAAiC,IAArC,EAA2C;AACzC2T,aAAK,CAAChX,GAAN,CAAU+V,IAAI,IAAI;AAChB,gBAAMqI,OAAO,GAAG,KAAKC,gBAAL,CAAsBtI,IAAtB,CAAhB;;AAEA,cAAIoI,UAAU,CAACpZ,WAAf,EAA4B;AAC1BoZ,sBAAU,CAACvY,UAAX,CAAsBoB,YAAtB,CACE+O,IADF,EAEEoI,UAAU,CAACpZ,WAFb;AAID,WALD,MAKO;AACLoZ,sBAAU,CAACvY,UAAX,CAAsBqB,WAAtB,CAAkC8O,IAAlC;AACD;;AAED,cAAIqI,OAAO,CAACvqB,MAAZ,EAAoB;AAClB,iBAAK0pB,QAAL,CAAca,OAAd,EAAuBF,QAAQ,CAAC7a,QAAhC;AACA0S,gBAAI,CAAC9O,WAAL,CAAiBmX,OAAO,CAAC,CAAD,CAAP,CAAWxY,UAA5B;AACD;AACF,SAhBD;;AAkBA,YAAIsY,QAAQ,CAAC3rB,QAAT,CAAkBsB,MAAlB,KAA6B,CAAjC,EAAoC;AAClCsqB,oBAAU,CAACrT,WAAX,CAAuBoT,QAAvB;AACD;;AAED,YAAIC,UAAU,CAAC5Y,UAAX,CAAsB1R,MAAtB,KAAiC,CAArC,EAAwC;AACtCsqB,oBAAU,CAACvY,UAAX,CAAsBkF,WAAtB,CAAkCqT,UAAlC;AACD;AACF,OA1BD,MA0BO;AACL,cAAMG,QAAQ,GAAGJ,QAAQ,CAAC3Y,UAAT,CAAoB1R,MAApB,GAA6B,CAA7B,GAAiC2a,GAAG,CAACtE,SAAJ,CAAcgU,QAAd,EAAwB;AACxEjb,cAAI,EAAE/B,IAAI,CAAC0E,UAD6D;AAExE4B,gBAAM,EAAEgH,GAAG,CAAC5G,QAAJ,CAAa1G,IAAb,IAAqB;AAF2C,SAAxB,EAG/C;AACDyI,gCAAsB,EAAE;AADvB,SAH+C,CAAjC,GAKZ,IALL;AAOA,cAAM4U,UAAU,GAAG/P,GAAG,CAACtE,SAAJ,CAAcgU,QAAd,EAAwB;AACzCjb,cAAI,EAAEjC,IAAI,CAAC4E,UAD8B;AAEzC4B,gBAAM,EAAEgH,GAAG,CAAC5G,QAAJ,CAAa5G,IAAb;AAFiC,SAAxB,EAGhB;AACD2I,gCAAsB,EAAE;AADvB,SAHgB,CAAnB;AAOAqN,aAAK,GAAGgH,eAAe,GAAGxP,GAAG,CAAChI,cAAJ,CAAmB+X,UAAnB,EAA+B/P,GAAG,CAAC3K,IAAnC,CAAH,GACnB1L,KAAK,CAAC2J,IAAN,CAAWyc,UAAU,CAAChZ,UAAtB,EAAkCW,MAAlC,CAAyCsI,GAAG,CAAC3K,IAA7C,CADJ,CAfK,CAkBL;;AACA,YAAIma,eAAe,IAAI,CAACxP,GAAG,CAACrK,MAAJ,CAAW+Z,QAAQ,CAACtY,UAApB,CAAxB,EAAyD;AACvDoR,eAAK,GAAGA,KAAK,CAAChX,GAAN,CAAW+V,IAAD,IAAU;AAC1B,mBAAOvH,GAAG,CAACxD,OAAJ,CAAY+K,IAAZ,EAAkB,GAAlB,CAAP;AACD,WAFO,CAAR;AAGD;;AAEDljB,iCAAC,CAACM,IAAF,CAAOgF,KAAK,CAAC2J,IAAN,CAAWkV,KAAX,EAAkB1N,OAAlB,EAAP,EAAoC,CAAC/H,GAAD,EAAMwU,IAAN,KAAe;AACjDvH,aAAG,CAACtH,WAAJ,CAAgB6O,IAAhB,EAAsBmI,QAAtB;AACD,SAFD,EAzBK,CA6BL;;AACA,cAAMM,SAAS,GAAGrmB,KAAK,CAACkK,OAAN,CAAc,CAAC6b,QAAD,EAAWK,UAAX,EAAuBD,QAAvB,CAAd,CAAlB;AACAzrB,iCAAC,CAACM,IAAF,CAAOqrB,SAAP,EAAkB,CAACjd,GAAD,EAAMkd,QAAN,KAAmB;AACnC,gBAAMC,SAAS,GAAG,CAACD,QAAD,EAAW3I,MAAX,CAAkBtH,GAAG,CAAChI,cAAJ,CAAmBiY,QAAnB,EAA6BjQ,GAAG,CAACrK,MAAjC,CAAlB,CAAlB;AACAtR,mCAAC,CAACM,IAAF,CAAOurB,SAAS,CAACpV,OAAV,EAAP,EAA4B,CAAC/H,GAAD,EAAMsc,QAAN,KAAmB;AAC7C,gBAAI,CAACrP,GAAG,CAACnJ,UAAJ,CAAewY,QAAf,CAAL,EAA+B;AAC7BrP,iBAAG,CAACnY,MAAJ,CAAWwnB,QAAX,EAAqB,IAArB;AACD;AACF,WAJD;AAKD,SAPD;AAQD;;AAEDI,mBAAa,GAAGA,aAAa,CAACnI,MAAd,CAAqBkB,KAArB,CAAhB;AACD,KA3ED;AA6EA,WAAOiH,aAAP;AACD;AAED;;;;;;;;;;;AASAT,kBAAgB,CAACva,IAAD,EAAO;AACrB,WAAOA,IAAI,CAAC+B,eAAL,GACHwJ,GAAG,CAACpH,gBAAJ,CAAqBnE,IAAI,CAAC+B,eAA1B,EAA2C,CAAC/B,IAAD,CAA3C,CADG,GAEH,KAAKsa,QAAL,CAAc,CAACta,IAAD,CAAd,EAAsB,IAAtB,CAFJ;AAGD;AAED;;;;;;;;;;AAQAqa,UAAQ,CAACra,IAAD,EAAO;AACb,WAAOA,IAAI,GACP9K,KAAK,CAACzE,IAAN,CAAWuP,IAAI,CAAC1Q,QAAhB,EAA0BqB,KAAK,IAAI,CAAC,IAAD,EAAO,IAAP,EAAakJ,OAAb,CAAqBlJ,KAAK,CAACyP,QAA3B,IAAuC,CAAC,CAA3E,CADO,GAEP,IAFJ;AAGD;AAED;;;;;;;;;;AAQAgb,kBAAgB,CAACpb,IAAD,EAAO;AACrB,UAAMiC,QAAQ,GAAG,EAAjB;;AACA,WAAOjC,IAAI,CAAC8B,WAAZ,EAAyB;AACvBG,cAAQ,CAAC3C,IAAT,CAAcU,IAAI,CAAC8B,WAAnB;AACA9B,UAAI,GAAGA,IAAI,CAAC8B,WAAZ;AACD;;AACD,WAAOG,QAAP;AACD;;AAtRyB,C;;ACN5B;AACA;AACA;AACA;AAEA;;;;;;;AAMe,MAAMyZ,aAAN,CAAa;AAC1BtsB,aAAW,CAACkJ,OAAD,EAAU;AACnB;AACA,SAAKqjB,MAAL,GAAc,IAAI5B,aAAJ,EAAd;AACA,SAAKxqB,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACD;AAED;;;;;;;;AAMAqsB,WAAS,CAACnJ,GAAD,EAAMoJ,OAAN,EAAe;AACtB,UAAMC,GAAG,GAAGvQ,GAAG,CAAC/D,UAAJ,CAAe,IAAIxW,KAAJ,CAAU6qB,OAAO,GAAG,CAApB,EAAuB3e,IAAvB,CAA4BqO,GAAG,CAAC5L,SAAhC,CAAf,CAAZ;AACA8S,OAAG,GAAGA,GAAG,CAACD,cAAJ,EAAN;AACAC,OAAG,CAACM,UAAJ,CAAe+I,GAAf,EAAoB,IAApB;AAEArJ,OAAG,GAAGsF,UAAK,CAACjnB,MAAN,CAAagrB,GAAb,EAAkBD,OAAlB,CAAN;AACApJ,OAAG,CAACpb,MAAJ;AACD;AAED;;;;;;;;;;;;;AAWA0kB,iBAAe,CAAC1P,QAAD,EAAWoG,GAAX,EAAgB;AAC7BA,OAAG,GAAGA,GAAG,IAAIsF,UAAK,CAACjnB,MAAN,CAAaub,QAAb,CAAb,CAD6B,CAG7B;;AACAoG,OAAG,GAAGA,GAAG,CAACD,cAAJ,EAAN,CAJ6B,CAM7B;;AACAC,OAAG,GAAGA,GAAG,CAACE,sBAAJ,EAAN,CAP6B,CAS7B;;AACA,UAAMtL,SAAS,GAAGkE,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAAC9K,MAAzB,CAAlB;AAEA,QAAIub,QAAJ,CAZ6B,CAa7B;;AACA,QAAI3U,SAAJ,EAAe;AACb;AACA,UAAIkE,GAAG,CAAC3K,IAAJ,CAASyG,SAAT,MAAwBkE,GAAG,CAACvM,OAAJ,CAAYqI,SAAZ,KAA0BkE,GAAG,CAAChJ,mBAAJ,CAAwB8E,SAAxB,CAAlD,CAAJ,EAA2F;AACzF;AACA,aAAKsU,MAAL,CAAY1B,UAAZ,CAAuB5S,SAAS,CAAC1E,UAAV,CAAqBvC,QAA5C;AACA;AACD,OAJD,MAIO;AACL,YAAI1L,UAAU,GAAG,IAAjB;;AACA,YAAI,KAAKnF,OAAL,CAAa0sB,uBAAb,KAAyC,CAA7C,EAAgD;AAC9CvnB,oBAAU,GAAG6W,GAAG,CAAC/J,QAAJ,CAAa6F,SAAb,EAAwBkE,GAAG,CAACnK,YAA5B,CAAb;AACD,SAFD,MAEO,IAAI,KAAK7R,OAAL,CAAa0sB,uBAAb,KAAyC,CAA7C,EAAgD;AACrDvnB,oBAAU,GAAG6W,GAAG,CAACvI,YAAJ,CAAiBqE,SAAjB,EAA4BkE,GAAG,CAACnK,YAAhC,CAAb;AACD;;AAED,YAAI1M,UAAJ,EAAgB;AACd;AACAsnB,kBAAQ,GAAGpsB,yBAAC,CAAC2b,GAAG,CAAC5B,SAAL,CAAD,CAAiB,CAAjB,CAAX,CAFc,CAGd;AACA;;AACA,cAAI4B,GAAG,CAAC/G,gBAAJ,CAAqBiO,GAAG,CAAC3B,aAAJ,EAArB,KAA6CvF,GAAG,CAACzB,IAAJ,CAAS2I,GAAG,CAAC5C,EAAJ,CAAO/N,WAAhB,CAAjD,EAA+E;AAC7ElS,qCAAC,CAAC6iB,GAAG,CAAC5C,EAAJ,CAAO/N,WAAR,CAAD,CAAsB1O,MAAtB;AACD;;AACD,gBAAM0J,KAAK,GAAGyO,GAAG,CAACtE,SAAJ,CAAcvS,UAAd,EAA0B+d,GAAG,CAAC3B,aAAJ,EAA1B,EAA+C;AAAElK,gCAAoB,EAAE;AAAxB,WAA/C,CAAd;;AACA,cAAI9J,KAAJ,EAAW;AACTA,iBAAK,CAAC6F,UAAN,CAAiBoB,YAAjB,CAA8BiY,QAA9B,EAAwClf,KAAxC;AACD,WAFD,MAEO;AACLyO,eAAG,CAACtH,WAAJ,CAAgB+X,QAAhB,EAA0BtnB,UAA1B,EADK,CACkC;AACxC;AACF,SAdD,MAcO;AACLsnB,kBAAQ,GAAGzQ,GAAG,CAACtE,SAAJ,CAAcI,SAAd,EAAyBoL,GAAG,CAAC3B,aAAJ,EAAzB,CAAX,CADK,CAGL;;AACA,cAAIoL,YAAY,GAAG3Q,GAAG,CAAChI,cAAJ,CAAmB8D,SAAnB,EAA8BkE,GAAG,CAAClB,aAAlC,CAAnB;AACA6R,sBAAY,GAAGA,YAAY,CAACrJ,MAAb,CAAoBtH,GAAG,CAAChI,cAAJ,CAAmByY,QAAnB,EAA6BzQ,GAAG,CAAClB,aAAjC,CAApB,CAAf;AAEAza,mCAAC,CAACM,IAAF,CAAOgsB,YAAP,EAAqB,CAAC5d,GAAD,EAAMwb,MAAN,KAAiB;AACpCvO,eAAG,CAACnY,MAAJ,CAAW0mB,MAAX;AACD,WAFD,EAPK,CAWL;;AACA,cAAI,CAACvO,GAAG,CAAC7K,SAAJ,CAAcsb,QAAd,KAA2BzQ,GAAG,CAAC5K,KAAJ,CAAUqb,QAAV,CAA3B,IAAkDzQ,GAAG,CAAC/B,gBAAJ,CAAqBwS,QAArB,CAAnD,KAAsFzQ,GAAG,CAACvM,OAAJ,CAAYgd,QAAZ,CAA1F,EAAiH;AAC/GA,oBAAQ,GAAGzQ,GAAG,CAACxD,OAAJ,CAAYiU,QAAZ,EAAsB,GAAtB,CAAX;AACD;AACF;AACF,OA5CY,CA6Cf;;AACC,KA9CD,MA8CO;AACL,YAAMvc,IAAI,GAAGgT,GAAG,CAAC5C,EAAJ,CAAOvN,UAAP,CAAkBmQ,GAAG,CAAC3C,EAAtB,CAAb;AACAkM,cAAQ,GAAGpsB,yBAAC,CAAC2b,GAAG,CAAC5B,SAAL,CAAD,CAAiB,CAAjB,CAAX;;AACA,UAAIlK,IAAJ,EAAU;AACRgT,WAAG,CAAC5C,EAAJ,CAAO9L,YAAP,CAAoBiY,QAApB,EAA8Bvc,IAA9B;AACD,OAFD,MAEO;AACLgT,WAAG,CAAC5C,EAAJ,CAAO7L,WAAP,CAAmBgY,QAAnB;AACD;AACF;;AAEDjE,cAAK,CAACjnB,MAAN,CAAakrB,QAAb,EAAuB,CAAvB,EAA0BvK,SAA1B,GAAsCpa,MAAtC,GAA+Cia,cAA/C,CAA8DjF,QAA9D;AACD;;AAxGyB,C;;ACX5B;AACA;AACA;AACA;AAEA;;;;;;;;AAOA,MAAM8P,iBAAiB,GAAG,UAASnW,UAAT,EAAqBoW,KAArB,EAA4BvlB,MAA5B,EAAoCwlB,QAApC,EAA8C;AACtE,QAAMC,WAAW,GAAG;AAAE,cAAU,CAAZ;AAAe,cAAU;AAAzB,GAApB;AACA,QAAMC,aAAa,GAAG,EAAtB;AACA,QAAMC,eAAe,GAAG,EAAxB,CAHsE,CAKtE;AACA;AACA;;AAEA;;;;AAGA,WAASC,aAAT,GAAyB;AACvB,QAAI,CAACzW,UAAD,IAAe,CAACA,UAAU,CAAC0W,OAA3B,IAAuC1W,UAAU,CAAC0W,OAAX,CAAmB5kB,WAAnB,OAAqC,IAArC,IAA6CkO,UAAU,CAAC0W,OAAX,CAAmB5kB,WAAnB,OAAqC,IAA7H,EAAoI;AAClI6kB,aAAO,CAACC,KAAR,CAAc,0CAAd,EAA0D5W,UAA1D;AACA;AACD;;AACDsW,eAAW,CAACO,MAAZ,GAAqB7W,UAAU,CAAC8W,SAAhC;;AACA,QAAI,CAAC9W,UAAU,CAACoI,aAAZ,IAA6B,CAACpI,UAAU,CAACoI,aAAX,CAAyBsO,OAAvD,IAAkE1W,UAAU,CAACoI,aAAX,CAAyBsO,OAAzB,CAAiC5kB,WAAjC,OAAmD,IAAzH,EAA+H;AAC7H6kB,aAAO,CAACC,KAAR,CAAc,yCAAd,EAAyD5W,UAAzD;AACA;AACD;;AACDsW,eAAW,CAACS,MAAZ,GAAqB/W,UAAU,CAACoI,aAAX,CAAyB4O,QAA9C;AACD;AAED;;;;;;;;;;;AASA,WAASC,uBAAT,CAAiCD,QAAjC,EAA2CF,SAA3C,EAAsDI,OAAtD,EAA+DC,QAA/D,EAAyEC,SAAzE,EAAoFC,SAApF,EAA+FC,aAA/F,EAA8G;AAC5G,UAAMC,WAAW,GAAG;AAClB,iBAAWL,OADO;AAElB,kBAAYC,QAFM;AAGlB,mBAAaC,SAHK;AAIlB,mBAAaC,SAJK;AAKlB,mBAAaC;AALK,KAApB;;AAOA,QAAI,CAACf,aAAa,CAACS,QAAD,CAAlB,EAA8B;AAC5BT,mBAAa,CAACS,QAAD,CAAb,GAA0B,EAA1B;AACD;;AACDT,iBAAa,CAACS,QAAD,CAAb,CAAwBF,SAAxB,IAAqCS,WAArC;AACD;AAED;;;;;;;;AAMA,WAASC,aAAT,CAAuBC,mBAAvB,EAA4CC,YAA5C,EAA0DC,kBAA1D,EAA8EC,kBAA9E,EAAkG;AAChG,WAAO;AACL,kBAAYH,mBAAmB,CAACN,QAD3B;AAEL,gBAAUO,YAFL;AAGL,sBAAgB;AACd,oBAAYC,kBADE;AAEd,qBAAaC;AAFC;AAHX,KAAP;AAQD;AAED;;;;;;;;AAMA,WAASC,gBAAT,CAA0Bb,QAA1B,EAAoCF,SAApC,EAA+C;AAC7C,QAAI,CAACP,aAAa,CAACS,QAAD,CAAlB,EAA8B;AAC5B,aAAOF,SAAP;AACD;;AACD,QAAI,CAACP,aAAa,CAACS,QAAD,CAAb,CAAwBF,SAAxB,CAAL,EAAyC;AACvC,aAAOA,SAAP;AACD;;AAED,QAAIgB,YAAY,GAAGhB,SAAnB;;AACA,WAAOP,aAAa,CAACS,QAAD,CAAb,CAAwBc,YAAxB,CAAP,EAA8C;AAC5CA,kBAAY;;AACZ,UAAI,CAACvB,aAAa,CAACS,QAAD,CAAb,CAAwBc,YAAxB,CAAL,EAA4C;AAC1C,eAAOA,YAAP;AACD;AACF;AACF;AAED;;;;;;;;AAMA,WAASC,oBAAT,CAA8BC,GAA9B,EAAmCC,IAAnC,EAAyC;AACvC,UAAMnB,SAAS,GAAGe,gBAAgB,CAACG,GAAG,CAAChB,QAAL,EAAeiB,IAAI,CAACnB,SAApB,CAAlC;AACA,UAAMoB,cAAc,GAAID,IAAI,CAACE,OAAL,GAAe,CAAvC;AACA,UAAMC,cAAc,GAAIH,IAAI,CAACI,OAAL,GAAe,CAAvC;AACA,UAAMC,kBAAkB,GAAIN,GAAG,CAAChB,QAAJ,KAAiBV,WAAW,CAACS,MAA7B,IAAuCkB,IAAI,CAACnB,SAAL,KAAmBR,WAAW,CAACO,MAAlG;AACAI,2BAAuB,CAACe,GAAG,CAAChB,QAAL,EAAeF,SAAf,EAA0BkB,GAA1B,EAA+BC,IAA/B,EAAqCG,cAArC,EAAqDF,cAArD,EAAqE,KAArE,CAAvB,CALuC,CAOvC;;AACA,UAAMK,aAAa,GAAGN,IAAI,CAACO,UAAL,CAAgBH,OAAhB,GAA0BtF,QAAQ,CAACkF,IAAI,CAACO,UAAL,CAAgBH,OAAhB,CAAwBlW,KAAzB,EAAgC,EAAhC,CAAlC,GAAwE,CAA9F;;AACA,QAAIoW,aAAa,GAAG,CAApB,EAAuB;AACrB,WAAK,IAAIE,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGF,aAAtB,EAAqCE,EAAE,EAAvC,EAA2C;AACzC,cAAMC,YAAY,GAAGV,GAAG,CAAChB,QAAJ,GAAeyB,EAApC;AACAE,wBAAgB,CAACD,YAAD,EAAe5B,SAAf,EAA0BmB,IAA1B,EAAgCK,kBAAhC,CAAhB;AACArB,+BAAuB,CAACyB,YAAD,EAAe5B,SAAf,EAA0BkB,GAA1B,EAA+BC,IAA/B,EAAqC,IAArC,EAA2CC,cAA3C,EAA2D,IAA3D,CAAvB;AACD;AACF,KAfsC,CAiBvC;;;AACA,UAAMU,aAAa,GAAGX,IAAI,CAACO,UAAL,CAAgBL,OAAhB,GAA0BpF,QAAQ,CAACkF,IAAI,CAACO,UAAL,CAAgBL,OAAhB,CAAwBhW,KAAzB,EAAgC,EAAhC,CAAlC,GAAwE,CAA9F;;AACA,QAAIyW,aAAa,GAAG,CAApB,EAAuB;AACrB,WAAK,IAAIC,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGD,aAAtB,EAAqCC,EAAE,EAAvC,EAA2C;AACzC,cAAMC,aAAa,GAAGjB,gBAAgB,CAACG,GAAG,CAAChB,QAAL,EAAgBF,SAAS,GAAG+B,EAA5B,CAAtC;AACAF,wBAAgB,CAACX,GAAG,CAAChB,QAAL,EAAe8B,aAAf,EAA8Bb,IAA9B,EAAoCK,kBAApC,CAAhB;AACArB,+BAAuB,CAACe,GAAG,CAAChB,QAAL,EAAe8B,aAAf,EAA8Bd,GAA9B,EAAmCC,IAAnC,EAAyCG,cAAzC,EAAyD,IAAzD,EAA+D,IAA/D,CAAvB;AACD;AACF;AACF;AAED;;;;;;;;;;AAQA,WAASO,gBAAT,CAA0B3B,QAA1B,EAAoCF,SAApC,EAA+CmB,IAA/C,EAAqDc,cAArD,EAAqE;AACnE,QAAI/B,QAAQ,KAAKV,WAAW,CAACS,MAAzB,IAAmCT,WAAW,CAACO,MAAZ,IAAsBoB,IAAI,CAACnB,SAA9D,IAA2EmB,IAAI,CAACnB,SAAL,IAAkBA,SAA7F,IAA0G,CAACiC,cAA/G,EAA+H;AAC7HzC,iBAAW,CAACO,MAAZ;AACD;AACF;AAED;;;;;AAGA,WAASmC,kBAAT,GAA8B;AAC5B,UAAMC,IAAI,GAAG5C,QAAQ,CAAC4C,IAAtB;;AACA,SAAK,IAAIjC,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAGiC,IAAI,CAACruB,MAAvC,EAA+CosB,QAAQ,EAAvD,EAA2D;AACzD,YAAMkC,KAAK,GAAGD,IAAI,CAACjC,QAAD,CAAJ,CAAekC,KAA7B;;AACA,WAAK,IAAIpC,SAAS,GAAG,CAArB,EAAwBA,SAAS,GAAGoC,KAAK,CAACtuB,MAA1C,EAAkDksB,SAAS,EAA3D,EAA+D;AAC7DiB,4BAAoB,CAACkB,IAAI,CAACjC,QAAD,CAAL,EAAiBkC,KAAK,CAACpC,SAAD,CAAtB,CAApB;AACD;AACF;AACF;AAED;;;;;;;AAKA,WAASqC,2BAAT,CAAqClB,IAArC,EAA2C;AACzC,YAAQ7B,KAAR;AACE,WAAKD,iBAAiB,CAACC,KAAlB,CAAwBgD,MAA7B;AACE,YAAInB,IAAI,CAACZ,SAAT,EAAoB;AAClB,iBAAOlB,iBAAiB,CAACuB,YAAlB,CAA+B2B,iBAAtC;AACD;;AACD;;AACF,WAAKlD,iBAAiB,CAACC,KAAlB,CAAwBkD,GAA7B;AACE,YAAI,CAACrB,IAAI,CAACsB,SAAN,IAAmBtB,IAAI,CAACb,SAA5B,EAAuC;AACrC,iBAAOjB,iBAAiB,CAACuB,YAAlB,CAA+B8B,OAAtC;AACD,SAFD,MAEO,IAAIvB,IAAI,CAACb,SAAT,EAAoB;AACzB,iBAAOjB,iBAAiB,CAACuB,YAAlB,CAA+B2B,iBAAtC;AACD;;AACD;AAZJ;;AAcA,WAAOlD,iBAAiB,CAACuB,YAAlB,CAA+B+B,UAAtC;AACD;AAED;;;;;;;AAKA,WAASC,wBAAT,CAAkCzB,IAAlC,EAAwC;AACtC,YAAQ7B,KAAR;AACE,WAAKD,iBAAiB,CAACC,KAAlB,CAAwBgD,MAA7B;AACE,YAAInB,IAAI,CAACZ,SAAT,EAAoB;AAClB,iBAAOlB,iBAAiB,CAACuB,YAAlB,CAA+BiC,YAAtC;AACD,SAFD,MAEO,IAAI1B,IAAI,CAACb,SAAL,IAAkBa,IAAI,CAACsB,SAA3B,EAAsC;AAC3C,iBAAOpD,iBAAiB,CAACuB,YAAlB,CAA+BkC,MAAtC;AACD;;AACD;;AACF,WAAKzD,iBAAiB,CAACC,KAAlB,CAAwBkD,GAA7B;AACE,YAAIrB,IAAI,CAACb,SAAT,EAAoB;AAClB,iBAAOjB,iBAAiB,CAACuB,YAAlB,CAA+BiC,YAAtC;AACD,SAFD,MAEO,IAAI1B,IAAI,CAACZ,SAAL,IAAkBY,IAAI,CAACsB,SAA3B,EAAsC;AAC3C,iBAAOpD,iBAAiB,CAACuB,YAAlB,CAA+BkC,MAAtC;AACD;;AACD;AAdJ;;AAgBA,WAAOzD,iBAAiB,CAACuB,YAAlB,CAA+B8B,OAAtC;AACD;;AAED,WAASK,IAAT,GAAgB;AACdpD,iBAAa;AACbuC,sBAAkB;AACnB,GAxMqE,CA0MtE;AACA;AACA;;AAEA;;;;;AAGA,OAAKc,aAAL,GAAqB,YAAW;AAC9B,UAAMC,QAAQ,GAAI3D,KAAK,KAAKD,iBAAiB,CAACC,KAAlB,CAAwBkD,GAAnC,GAA0ChD,WAAW,CAACS,MAAtD,GAA+D,CAAC,CAAjF;AACA,UAAMiD,QAAQ,GAAI5D,KAAK,KAAKD,iBAAiB,CAACC,KAAlB,CAAwBgD,MAAnC,GAA6C9C,WAAW,CAACO,MAAzD,GAAkE,CAAC,CAApF;AAEA,QAAIoD,cAAc,GAAG,CAArB;AACA,QAAIC,WAAW,GAAG,IAAlB;;AACA,WAAOA,WAAP,EAAoB;AAClB,YAAMC,WAAW,GAAIJ,QAAQ,IAAI,CAAb,GAAkBA,QAAlB,GAA6BE,cAAjD;AACA,YAAMG,WAAW,GAAIJ,QAAQ,IAAI,CAAb,GAAkBA,QAAlB,GAA6BC,cAAjD;AACA,YAAMjC,GAAG,GAAGzB,aAAa,CAAC4D,WAAD,CAAzB;;AACA,UAAI,CAACnC,GAAL,EAAU;AACRkC,mBAAW,GAAG,KAAd;AACA,eAAO1D,eAAP;AACD;;AACD,YAAMyB,IAAI,GAAGD,GAAG,CAACoC,WAAD,CAAhB;;AACA,UAAI,CAACnC,IAAL,EAAW;AACTiC,mBAAW,GAAG,KAAd;AACA,eAAO1D,eAAP;AACD,OAZiB,CAclB;;;AACA,UAAIkB,YAAY,GAAGvB,iBAAiB,CAACuB,YAAlB,CAA+BkC,MAAlD;;AACA,cAAQ/oB,MAAR;AACE,aAAKslB,iBAAiB,CAACkE,aAAlB,CAAgCC,GAArC;AACE5C,sBAAY,GAAGgC,wBAAwB,CAACzB,IAAD,CAAvC;AACA;;AACF,aAAK9B,iBAAiB,CAACkE,aAAlB,CAAgCE,MAArC;AACE7C,sBAAY,GAAGyB,2BAA2B,CAAClB,IAAD,CAA1C;AACA;AANJ;;AAQAzB,qBAAe,CAACld,IAAhB,CAAqBke,aAAa,CAACS,IAAD,EAAOP,YAAP,EAAqByC,WAArB,EAAkCC,WAAlC,CAAlC;;AACAH,oBAAc;AACf;;AAED,WAAOzD,eAAP;AACD,GAnCD;;AAqCAqD,MAAI;AACL,CAvPD;AAwPA;;;;;;AAIA1D,iBAAiB,CAACC,KAAlB,GAA0B;AAAE,SAAO,CAAT;AAAY,YAAU;AAAtB,CAA1B;AACA;;;;;AAIAD,iBAAiB,CAACkE,aAAlB,GAAkC;AAAE,SAAO,CAAT;AAAY,YAAU;AAAtB,CAAlC;AACA;;;;;AAIAlE,iBAAiB,CAACuB,YAAlB,GAAiC;AAAE,YAAU,CAAZ;AAAe,uBAAqB,CAApC;AAAuC,gBAAc,CAArD;AAAwD,aAAW,CAAnE;AAAsE,kBAAgB;AAAtF,CAAjC;AAEA;;;;;;;;AAOe,MAAM8C,WAAN,CAAY;AACzB;;;;;;AAMA1E,KAAG,CAACrJ,GAAD,EAAMgO,OAAN,EAAe;AAChB,UAAMxC,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AACA,UAAMtN,KAAK,GAAGwX,GAAG,CAAC/J,QAAJ,CAAayc,IAAb,EAAmB1S,GAAG,CAACzK,OAAvB,CAAd;AACA,UAAMoe,KAAK,GAAG3T,GAAG,CAAChI,cAAJ,CAAmBxP,KAAnB,EAA0BwX,GAAG,CAAClK,MAA9B,CAAd;AAEA,UAAMqf,QAAQ,GAAGxrB,KAAK,CAACurB,OAAO,GAAG,MAAH,GAAY,MAApB,CAAL,CAAiCvB,KAAjC,EAAwCjB,IAAxC,CAAjB;;AACA,QAAIyC,QAAJ,EAAc;AACZ3I,gBAAK,CAACjnB,MAAN,CAAa4vB,QAAb,EAAuB,CAAvB,EAA0BrpB,MAA1B;AACD;AACF;AAED;;;;;;;;;AAOAspB,QAAM,CAAClO,GAAD,EAAM9N,QAAN,EAAgB;AACpB,UAAMsZ,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AAEA,UAAMuf,SAAS,GAAGhxB,yBAAC,CAACquB,IAAD,CAAD,CAAQ9Q,OAAR,CAAgB,IAAhB,CAAlB;AACA,UAAM0T,YAAY,GAAG,KAAKC,iBAAL,CAAuBF,SAAvB,CAArB;AACA,UAAM9wB,IAAI,GAAGF,yBAAC,CAAC,QAAQixB,YAAR,GAAuB,QAAxB,CAAd;AAEA,UAAME,MAAM,GAAG,IAAI5E,iBAAJ,CAAsB8B,IAAtB,EAA4B9B,iBAAiB,CAACC,KAAlB,CAAwBkD,GAApD,EACbnD,iBAAiB,CAACkE,aAAlB,CAAgCC,GADnB,EACwB1wB,yBAAC,CAACgxB,SAAD,CAAD,CAAazT,OAAb,CAAqB,OAArB,EAA8B,CAA9B,CADxB,CAAf;AAEA,UAAM6T,OAAO,GAAGD,MAAM,CAACjB,aAAP,EAAhB;;AAEA,SAAK,IAAImB,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGD,OAAO,CAACpwB,MAAtC,EAA8CqwB,MAAM,EAApD,EAAwD;AACtD,YAAMC,WAAW,GAAGF,OAAO,CAACC,MAAD,CAA3B;AACA,YAAME,YAAY,GAAG,KAAKL,iBAAL,CAAuBI,WAAW,CAAC/D,QAAnC,CAArB;;AACA,cAAQ+D,WAAW,CAACrqB,MAApB;AACE,aAAKslB,iBAAiB,CAACuB,YAAlB,CAA+B8B,OAApC;AACE1vB,cAAI,CAACe,MAAL,CAAY,QAAQswB,YAAR,GAAuB,GAAvB,GAA6B5V,GAAG,CAAC7B,KAAjC,GAAyC,OAArD;AACA;;AACF,aAAKyS,iBAAiB,CAACuB,YAAlB,CAA+BiC,YAApC;AACE,cAAIhb,QAAQ,KAAK,KAAjB,EAAwB;AACtB,kBAAMyc,UAAU,GAAGF,WAAW,CAAC/D,QAAZ,CAAqBtZ,MAAxC;AACA,kBAAMwd,gBAAgB,GAAG,CAAC,CAACD,UAAD,GAAc,CAAd,GAAkBF,WAAW,CAAC/D,QAAZ,CAAqBhQ,OAArB,CAA6B,IAA7B,EAAmC6P,QAAtD,KAAmE4D,SAAS,CAAC,CAAD,CAAT,CAAa5D,QAAzG;;AACA,gBAAIqE,gBAAJ,EAAsB;AACpB,oBAAMC,KAAK,GAAG1xB,yBAAC,CAAC,aAAD,CAAD,CAAiBiB,MAAjB,CAAwBjB,yBAAC,CAAC,QAAQuxB,YAAR,GAAuB,GAAvB,GAA6B5V,GAAG,CAAC7B,KAAjC,GAAyC,OAA1C,CAAD,CAAoD6X,UAApD,CAA+D,SAA/D,CAAxB,EAAmGzxB,IAAnG,EAAd;AACAA,kBAAI,CAACe,MAAL,CAAYywB,KAAZ;AACA;AACD;AACF;;AACD,cAAI/C,aAAa,GAAGxF,QAAQ,CAACmI,WAAW,CAAC/D,QAAZ,CAAqBkB,OAAtB,EAA+B,EAA/B,CAA5B;AACAE,uBAAa;AACb2C,qBAAW,CAAC/D,QAAZ,CAAqBqE,YAArB,CAAkC,SAAlC,EAA6CjD,aAA7C;AACA;AAjBJ;AAmBD;;AAED,QAAI5Z,QAAQ,KAAK,KAAjB,EAAwB;AACtBic,eAAS,CAACa,MAAV,CAAiB3xB,IAAjB;AACD,KAFD,MAEO;AACL,YAAMsuB,cAAc,GAAIH,IAAI,CAACI,OAAL,GAAe,CAAvC;;AACA,UAAID,cAAJ,EAAoB;AAClB,cAAMsD,WAAW,GAAGd,SAAS,CAAC,CAAD,CAAT,CAAa5D,QAAb,IAAyBiB,IAAI,CAACI,OAAL,GAAe,CAAxC,CAApB;AACAzuB,iCAAC,CAACA,yBAAC,CAACgxB,SAAD,CAAD,CAAa/c,MAAb,GAAsBpT,IAAtB,CAA2B,IAA3B,EAAiCixB,WAAjC,CAAD,CAAD,CAAiDC,KAAjD,CAAuD/xB,yBAAC,CAACE,IAAD,CAAxD;AACA;AACD;;AACD8wB,eAAS,CAACe,KAAV,CAAgB7xB,IAAhB;AACD;AACF;AAED;;;;;;;;;AAOA8xB,QAAM,CAACnP,GAAD,EAAM9N,QAAN,EAAgB;AACpB,UAAMsZ,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AACA,UAAM2c,GAAG,GAAGpuB,yBAAC,CAACquB,IAAD,CAAD,CAAQ9Q,OAAR,CAAgB,IAAhB,CAAZ;AACA,UAAM0U,SAAS,GAAGjyB,yBAAC,CAACouB,GAAD,CAAD,CAAO/b,QAAP,EAAlB;AACA4f,aAAS,CAACviB,IAAV,CAAe0e,GAAf;AAEA,UAAM+C,MAAM,GAAG,IAAI5E,iBAAJ,CAAsB8B,IAAtB,EAA4B9B,iBAAiB,CAACC,KAAlB,CAAwBgD,MAApD,EACbjD,iBAAiB,CAACkE,aAAlB,CAAgCC,GADnB,EACwB1wB,yBAAC,CAACouB,GAAD,CAAD,CAAO7Q,OAAP,CAAe,OAAf,EAAwB,CAAxB,CADxB,CAAf;AAEA,UAAM6T,OAAO,GAAGD,MAAM,CAACjB,aAAP,EAAhB;;AAEA,SAAK,IAAIgC,WAAW,GAAG,CAAvB,EAA0BA,WAAW,GAAGd,OAAO,CAACpwB,MAAhD,EAAwDkxB,WAAW,EAAnE,EAAuE;AACrE,YAAMZ,WAAW,GAAGF,OAAO,CAACc,WAAD,CAA3B;AACA,YAAMX,YAAY,GAAG,KAAKL,iBAAL,CAAuBI,WAAW,CAAC/D,QAAnC,CAArB;;AACA,cAAQ+D,WAAW,CAACrqB,MAApB;AACE,aAAKslB,iBAAiB,CAACuB,YAAlB,CAA+B8B,OAApC;AACE,cAAI7a,QAAQ,KAAK,OAAjB,EAA0B;AACxB/U,qCAAC,CAACsxB,WAAW,CAAC/D,QAAb,CAAD,CAAwBwE,KAAxB,CAA8B,QAAQR,YAAR,GAAuB,GAAvB,GAA6B5V,GAAG,CAAC7B,KAAjC,GAAyC,OAAvE;AACD,WAFD,MAEO;AACL9Z,qCAAC,CAACsxB,WAAW,CAAC/D,QAAb,CAAD,CAAwBsE,MAAxB,CAA+B,QAAQN,YAAR,GAAuB,GAAvB,GAA6B5V,GAAG,CAAC7B,KAAjC,GAAyC,OAAxE;AACD;;AACD;;AACF,aAAKyS,iBAAiB,CAACuB,YAAlB,CAA+BiC,YAApC;AACE,cAAIhb,QAAQ,KAAK,OAAjB,EAA0B;AACxB,gBAAIia,aAAa,GAAG7F,QAAQ,CAACmI,WAAW,CAAC/D,QAAZ,CAAqBgB,OAAtB,EAA+B,EAA/B,CAA5B;AACAS,yBAAa;AACbsC,uBAAW,CAAC/D,QAAZ,CAAqBqE,YAArB,CAAkC,SAAlC,EAA6C5C,aAA7C;AACD,WAJD,MAIO;AACLhvB,qCAAC,CAACsxB,WAAW,CAAC/D,QAAb,CAAD,CAAwBsE,MAAxB,CAA+B,QAAQN,YAAR,GAAuB,GAAvB,GAA6B5V,GAAG,CAAC7B,KAAjC,GAAyC,OAAxE;AACD;;AACD;AAhBJ;AAkBD;AACF;AAED;;;;;;;;AAMAoX,mBAAiB,CAAC/d,EAAD,EAAK;AACpB,QAAIgf,SAAS,GAAG,EAAhB;;AAEA,QAAI,CAAChf,EAAL,EAAS;AACP,aAAOgf,SAAP;AACD;;AAED,UAAMC,QAAQ,GAAGjf,EAAE,CAACyb,UAAH,IAAiB,EAAlC;;AAEA,SAAK,IAAIhY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwb,QAAQ,CAACpxB,MAA7B,EAAqC4V,CAAC,EAAtC,EAA0C;AACxC,UAAIwb,QAAQ,CAACxb,CAAD,CAAR,CAAY7U,IAAZ,CAAiBmG,WAAjB,OAAmC,IAAvC,EAA6C;AAC3C;AACD;;AAED,UAAIkqB,QAAQ,CAACxb,CAAD,CAAR,CAAYyb,SAAhB,EAA2B;AACzBF,iBAAS,IAAI,MAAMC,QAAQ,CAACxb,CAAD,CAAR,CAAY7U,IAAlB,GAAyB,KAAzB,GAAiCqwB,QAAQ,CAACxb,CAAD,CAAR,CAAY2B,KAA7C,GAAqD,IAAlE;AACD;AACF;;AAED,WAAO4Z,SAAP;AACD;AAED;;;;;;;;AAMAG,WAAS,CAACzP,GAAD,EAAM;AACb,UAAMwL,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AACA,UAAM2c,GAAG,GAAGpuB,yBAAC,CAACquB,IAAD,CAAD,CAAQ9Q,OAAR,CAAgB,IAAhB,CAAZ;AACA,UAAMgV,OAAO,GAAGnE,GAAG,CAAC1uB,QAAJ,CAAa,QAAb,EAAuBmkB,KAAvB,CAA6B7jB,yBAAC,CAACquB,IAAD,CAA9B,CAAhB;AACA,UAAMlB,MAAM,GAAGiB,GAAG,CAAC,CAAD,CAAH,CAAOhB,QAAtB;AAEA,UAAM+D,MAAM,GAAG,IAAI5E,iBAAJ,CAAsB8B,IAAtB,EAA4B9B,iBAAiB,CAACC,KAAlB,CAAwBkD,GAApD,EACbnD,iBAAiB,CAACkE,aAAlB,CAAgCE,MADnB,EAC2B3wB,yBAAC,CAACouB,GAAD,CAAD,CAAO7Q,OAAP,CAAe,OAAf,EAAwB,CAAxB,CAD3B,CAAf;AAEA,UAAM6T,OAAO,GAAGD,MAAM,CAACjB,aAAP,EAAhB;;AAEA,SAAK,IAAIgC,WAAW,GAAG,CAAvB,EAA0BA,WAAW,GAAGd,OAAO,CAACpwB,MAAhD,EAAwDkxB,WAAW,EAAnE,EAAuE;AACrE,UAAI,CAACd,OAAO,CAACc,WAAD,CAAZ,EAA2B;AACzB;AACD;;AAED,YAAM3E,QAAQ,GAAG6D,OAAO,CAACc,WAAD,CAAP,CAAqB3E,QAAtC;AACA,YAAMiF,eAAe,GAAGpB,OAAO,CAACc,WAAD,CAAP,CAAqBO,YAA7C;AACA,YAAMC,UAAU,GAAInF,QAAQ,CAACkB,OAAT,IAAoBlB,QAAQ,CAACkB,OAAT,GAAmB,CAA3D;AACA,UAAIE,aAAa,GAAI+D,UAAD,GAAevJ,QAAQ,CAACoE,QAAQ,CAACkB,OAAV,EAAmB,EAAnB,CAAvB,GAAgD,CAApE;;AACA,cAAQ2C,OAAO,CAACc,WAAD,CAAP,CAAqBjrB,MAA7B;AACE,aAAKslB,iBAAiB,CAACuB,YAAlB,CAA+BkC,MAApC;AACE;;AACF,aAAKzD,iBAAiB,CAACuB,YAAlB,CAA+B8B,OAApC;AACE,gBAAM+C,OAAO,GAAGvE,GAAG,CAACve,IAAJ,CAAS,IAAT,EAAe,CAAf,CAAhB;;AACA,cAAI,CAAC8iB,OAAL,EAAc;AAAE;AAAW;;AAC3B,gBAAMC,QAAQ,GAAGxE,GAAG,CAAC,CAAD,CAAH,CAAOkB,KAAP,CAAaiD,OAAb,CAAjB;;AACA,cAAIG,UAAJ,EAAgB;AACd,gBAAI/D,aAAa,GAAG,CAApB,EAAuB;AACrBA,2BAAa;AACbgE,qBAAO,CAACxe,YAAR,CAAqBye,QAArB,EAA+BD,OAAO,CAACrD,KAAR,CAAciD,OAAd,CAA/B;AACAI,qBAAO,CAACrD,KAAR,CAAciD,OAAd,EAAuBX,YAAvB,CAAoC,SAApC,EAA+CjD,aAA/C;AACAgE,qBAAO,CAACrD,KAAR,CAAciD,OAAd,EAAuB1f,SAAvB,GAAmC,EAAnC;AACD,aALD,MAKO,IAAI8b,aAAa,KAAK,CAAtB,EAAyB;AAC9BgE,qBAAO,CAACxe,YAAR,CAAqBye,QAArB,EAA+BD,OAAO,CAACrD,KAAR,CAAciD,OAAd,CAA/B;AACAI,qBAAO,CAACrD,KAAR,CAAciD,OAAd,EAAuBM,eAAvB,CAAuC,SAAvC;AACAF,qBAAO,CAACrD,KAAR,CAAciD,OAAd,EAAuB1f,SAAvB,GAAmC,EAAnC;AACD;AACF;;AACD;;AACF,aAAK0Z,iBAAiB,CAACuB,YAAlB,CAA+B2B,iBAApC;AACE,cAAIiD,UAAJ,EAAgB;AACd,gBAAI/D,aAAa,GAAG,CAApB,EAAuB;AACrBA,2BAAa;AACbpB,sBAAQ,CAACqE,YAAT,CAAsB,SAAtB,EAAiCjD,aAAjC;;AACA,kBAAI6D,eAAe,CAACpF,QAAhB,KAA6BD,MAA7B,IAAuCI,QAAQ,CAACL,SAAT,KAAuBqF,OAAlE,EAA2E;AAAEhF,wBAAQ,CAAC1a,SAAT,GAAqB,EAArB;AAA0B;AACxG,aAJD,MAIO,IAAI8b,aAAa,KAAK,CAAtB,EAAyB;AAC9BpB,sBAAQ,CAACsF,eAAT,CAAyB,SAAzB;;AACA,kBAAIL,eAAe,CAACpF,QAAhB,KAA6BD,MAA7B,IAAuCI,QAAQ,CAACL,SAAT,KAAuBqF,OAAlE,EAA2E;AAAEhF,wBAAQ,CAAC1a,SAAT,GAAqB,EAArB;AAA0B;AACxG;AACF;;AACD;;AACF,aAAK0Z,iBAAiB,CAACuB,YAAlB,CAA+B+B,UAApC;AACE;AACA;AAlCJ;AAoCD;;AACDzB,OAAG,CAAC5qB,MAAJ;AACD;AAED;;;;;;;;AAMAsvB,WAAS,CAACjQ,GAAD,EAAM;AACb,UAAMwL,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AACA,UAAM2c,GAAG,GAAGpuB,yBAAC,CAACquB,IAAD,CAAD,CAAQ9Q,OAAR,CAAgB,IAAhB,CAAZ;AACA,UAAMgV,OAAO,GAAGnE,GAAG,CAAC1uB,QAAJ,CAAa,QAAb,EAAuBmkB,KAAvB,CAA6B7jB,yBAAC,CAACquB,IAAD,CAA9B,CAAhB;AAEA,UAAM8C,MAAM,GAAG,IAAI5E,iBAAJ,CAAsB8B,IAAtB,EAA4B9B,iBAAiB,CAACC,KAAlB,CAAwBgD,MAApD,EACbjD,iBAAiB,CAACkE,aAAlB,CAAgCE,MADnB,EAC2B3wB,yBAAC,CAACouB,GAAD,CAAD,CAAO7Q,OAAP,CAAe,OAAf,EAAwB,CAAxB,CAD3B,CAAf;AAEA,UAAM6T,OAAO,GAAGD,MAAM,CAACjB,aAAP,EAAhB;;AAEA,SAAK,IAAIgC,WAAW,GAAG,CAAvB,EAA0BA,WAAW,GAAGd,OAAO,CAACpwB,MAAhD,EAAwDkxB,WAAW,EAAnE,EAAuE;AACrE,UAAI,CAACd,OAAO,CAACc,WAAD,CAAZ,EAA2B;AACzB;AACD;;AACD,cAAQd,OAAO,CAACc,WAAD,CAAP,CAAqBjrB,MAA7B;AACE,aAAKslB,iBAAiB,CAACuB,YAAlB,CAA+BkC,MAApC;AACE;;AACF,aAAKzD,iBAAiB,CAACuB,YAAlB,CAA+B2B,iBAApC;AACE,gBAAMlC,QAAQ,GAAG6D,OAAO,CAACc,WAAD,CAAP,CAAqB3E,QAAtC;AACA,gBAAMwF,UAAU,GAAIxF,QAAQ,CAACgB,OAAT,IAAoBhB,QAAQ,CAACgB,OAAT,GAAmB,CAA3D;;AACA,cAAIwE,UAAJ,EAAgB;AACd,gBAAI/D,aAAa,GAAIzB,QAAQ,CAACgB,OAAV,GAAqBpF,QAAQ,CAACoE,QAAQ,CAACgB,OAAV,EAAmB,EAAnB,CAA7B,GAAsD,CAA1E;;AACA,gBAAIS,aAAa,GAAG,CAApB,EAAuB;AACrBA,2BAAa;AACbzB,sBAAQ,CAACqE,YAAT,CAAsB,SAAtB,EAAiC5C,aAAjC;;AACA,kBAAIzB,QAAQ,CAACL,SAAT,KAAuBqF,OAA3B,EAAoC;AAAEhF,wBAAQ,CAAC1a,SAAT,GAAqB,EAArB;AAA0B;AACjE,aAJD,MAIO,IAAImc,aAAa,KAAK,CAAtB,EAAyB;AAC9BzB,sBAAQ,CAACsF,eAAT,CAAyB,SAAzB;;AACA,kBAAItF,QAAQ,CAACL,SAAT,KAAuBqF,OAA3B,EAAoC;AAAEhF,wBAAQ,CAAC1a,SAAT,GAAqB,EAArB;AAA0B;AACjE;AACF;;AACD;;AACF,aAAK0Z,iBAAiB,CAACuB,YAAlB,CAA+B+B,UAApC;AACElU,aAAG,CAACnY,MAAJ,CAAW4tB,OAAO,CAACc,WAAD,CAAP,CAAqB3E,QAAhC,EAA0C,IAA1C;AACA;AApBJ;AAsBD;AACF;AAED;;;;;;;;;AAOAyF,aAAW,CAACC,QAAD,EAAWC,QAAX,EAAqBvzB,OAArB,EAA8B;AACvC,UAAMwzB,GAAG,GAAG,EAAZ;AACA,QAAIC,MAAJ;;AACA,SAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGJ,QAA9B,EAAwCI,MAAM,EAA9C,EAAkD;AAChDF,SAAG,CAACzjB,IAAJ,CAAS,SAASiM,GAAG,CAAC7B,KAAb,GAAqB,OAA9B;AACD;;AACDsZ,UAAM,GAAGD,GAAG,CAAC7lB,IAAJ,CAAS,EAAT,CAAT;AAEA,UAAMgmB,GAAG,GAAG,EAAZ;AACA,QAAIC,MAAJ;;AACA,SAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAGN,QAA9B,EAAwCM,MAAM,EAA9C,EAAkD;AAChDF,SAAG,CAAC5jB,IAAJ,CAAS,SAAS0jB,MAAT,GAAkB,OAA3B;AACD;;AACDG,UAAM,GAAGD,GAAG,CAAChmB,IAAJ,CAAS,EAAT,CAAT;AACA,UAAMmmB,MAAM,GAAGzzB,yBAAC,CAAC,YAAYuzB,MAAZ,GAAqB,UAAtB,CAAhB;;AACA,QAAI5zB,OAAO,IAAIA,OAAO,CAAC+zB,cAAvB,EAAuC;AACrCD,YAAM,CAACrzB,QAAP,CAAgBT,OAAO,CAAC+zB,cAAxB;AACD;;AAED,WAAOD,MAAM,CAAC,CAAD,CAAb;AACD;AAED;;;;;;;;AAMAE,aAAW,CAAC9Q,GAAD,EAAM;AACf,UAAMwL,IAAI,GAAG1S,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAACvP,cAAJ,EAAb,EAAmCqI,GAAG,CAAClK,MAAvC,CAAb;AACAzR,6BAAC,CAACquB,IAAD,CAAD,CAAQ9Q,OAAR,CAAgB,OAAhB,EAAyB/Z,MAAzB;AACD;;AAjSwB,C;;AC3R3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMowB,SAAS,GAAG,OAAlB;AAEA;;;;AAGe,MAAMC,aAAN,CAAa;AAC1Br0B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKiS,KAAL,GAAajS,OAAO,CAACqS,UAAR,CAAmBmD,IAAhC;AACA,SAAK4V,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKiM,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK9c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AAEA,SAAKtB,QAAL,GAAgB,KAAKsL,SAAL,CAAe,CAAf,CAAhB;AACA,SAAKgM,SAAL,GAAiB,IAAjB;AACA,SAAKzL,QAAL,GAAgB,IAAhB;AAEA,SAAK1jB,KAAL,GAAa,IAAI8jB,WAAJ,EAAb;AACA,SAAKvkB,KAAL,GAAa,IAAIysB,WAAJ,EAAb;AACA,SAAKoD,MAAL,GAAc,IAAIlI,aAAJ,CAAWpjB,OAAX,CAAd;AACA,SAAKqjB,MAAL,GAAc,IAAI5B,aAAJ,EAAd;AACA,SAAK9iB,OAAL,GAAe,IAAIygB,eAAJ,CAAY,KAAKC,SAAjB,CAAf;AAEA,SAAKrf,OAAL,CAAasG,IAAb,CAAkB,WAAlB,EAA+B,KAAKzN,IAAL,CAAUkE,IAAV,CAAe6B,IAA9C;AACA,SAAKoB,OAAL,CAAasG,IAAb,CAAkB,WAAlB,EAA+B,KAAKzN,IAAL,CAAUkE,IAAV,CAAe8B,IAA9C;AACA,SAAKmB,OAAL,CAAasG,IAAb,CAAkB,UAAlB,EAA8B,KAAKzN,IAAL,CAAUkE,IAAV,CAAeymB,GAA7C;AACA,SAAKxjB,OAAL,CAAasG,IAAb,CAAkB,YAAlB,EAAgC,KAAKzN,IAAL,CAAUkE,IAAV,CAAewuB,KAA/C;AACA,SAAKvrB,OAAL,CAAasG,IAAb,CAAkB,sBAAlB,EAA0C,KAAKzN,IAAL,CAAUkE,IAAV,CAAe0mB,eAAzD;AACA,SAAKzjB,OAAL,CAAasG,IAAb,CAAkB,wBAAlB,EAA4C,KAAKzN,IAAL,CAAUkE,IAAV,CAAe2kB,iBAA3D;AACA,SAAK1hB,OAAL,CAAasG,IAAb,CAAkB,0BAAlB,EAA8C,KAAKzN,IAAL,CAAUkE,IAAV,CAAe6kB,mBAA7D;AACA,SAAK5hB,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,KAAKzN,IAAL,CAAUkE,IAAV,CAAeK,MAAhD;AACA,SAAK4C,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,KAAKzN,IAAL,CAAUkE,IAAV,CAAeI,OAAjD;AACA,SAAK6C,OAAL,CAAasG,IAAb,CAAkB,iBAAlB,EAAqC,KAAKzN,IAAL,CAAUkE,IAAV,CAAeyuB,UAApD;AACA,SAAKxrB,OAAL,CAAasG,IAAb,CAAkB,2BAAlB,EAA+C,KAAKzN,IAAL,CAAUkE,IAAV,CAAe0uB,oBAA9D;AACA,SAAKzrB,OAAL,CAAasG,IAAb,CAAkB,eAAlB,EAAmC,KAAKzN,IAAL,CAAUkE,IAAV,CAAeuC,QAAlD,EA9BmB,CAgCnB;;AACA,UAAMosB,QAAQ,GAAG,CACf,MADe,EACP,QADO,EACG,WADH,EACgB,eADhB,EACiC,aADjC,EACgD,WADhD,EAEf,aAFe,EAEA,eAFA,EAEiB,cAFjB,EAEiC,aAFjC,EAGf,aAHe,EAGA,cAHA,EAGgB,WAHhB,CAAjB;;AAMA,SAAK,IAAI1lB,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGylB,QAAQ,CAACpzB,MAAjC,EAAyC0N,GAAG,GAAGC,GAA/C,EAAoDD,GAAG,EAAvD,EAA2D;AACzD,WAAK0lB,QAAQ,CAAC1lB,GAAD,CAAb,IAAsB,CAAE2lB,IAAD,IAAU;AAC/B,eAAQ9b,KAAD,IAAW;AAChB,eAAK+b,aAAL;AACA9rB,kBAAQ,CAAC+rB,WAAT,CAAqBF,IAArB,EAA2B,KAA3B,EAAkC9b,KAAlC;AACA,eAAKic,YAAL,CAAkB,IAAlB;AACD,SAJD;AAKD,OANqB,EAMnBJ,QAAQ,CAAC1lB,GAAD,CANW,CAAtB;;AAOA,WAAKhG,OAAL,CAAasG,IAAb,CAAkB,UAAUolB,QAAQ,CAAC1lB,GAAD,CAApC,EAA2C,KAAKnN,IAAL,CAAUkE,IAAV,CAAe2uB,QAAQ,CAAC1lB,GAAD,CAAvB,CAA3C;AACD;;AAED,SAAK1G,QAAL,GAAgB,KAAKysB,WAAL,CAAkBlc,KAAD,IAAW;AAC1C,aAAO,KAAKmc,WAAL,CAAiB,aAAjB,EAAgCniB,GAAG,CAACxK,aAAJ,CAAkBwQ,KAAlB,CAAhC,CAAP;AACD,KAFe,CAAhB;AAIA,SAAK2Q,QAAL,GAAgB,KAAKuL,WAAL,CAAkBlc,KAAD,IAAW;AAC1C,YAAMoc,IAAI,GAAG,KAAKC,YAAL,GAAoB,gBAApB,CAAb;AACA,aAAO,KAAKF,WAAL,CAAiB,WAAjB,EAA8Bnc,KAAK,GAAGoc,IAAtC,CAAP;AACD,KAHe,CAAhB;AAKA,SAAKE,YAAL,GAAoB,KAAKJ,WAAL,CAAkBlc,KAAD,IAAW;AAC9C,YAAMpW,IAAI,GAAG,KAAKyyB,YAAL,GAAoB,WAApB,CAAb;AACA,aAAO,KAAKF,WAAL,CAAiB,WAAjB,EAA8BvyB,IAAI,GAAGoW,KAArC,CAAP;AACD,KAHmB,CAApB;;AAKA,SAAK,IAAI7J,GAAG,GAAG,CAAf,EAAkBA,GAAG,IAAI,CAAzB,EAA4BA,GAAG,EAA/B,EAAmC;AACjC,WAAK,YAAYA,GAAjB,IAAwB,CAAEA,GAAD,IAAS;AAChC,eAAO,MAAM;AACX,eAAKomB,WAAL,CAAiB,MAAMpmB,GAAvB;AACD,SAFD;AAGD,OAJuB,EAIrBA,GAJqB,CAAxB;;AAKA,WAAKhG,OAAL,CAAasG,IAAb,CAAkB,iBAAiBN,GAAnC,EAAwC,KAAKnN,IAAL,CAAUkE,IAAV,CAAe,YAAYiJ,GAA3B,CAAxC;AACD;;AAAA;AAED,SAAKyd,eAAL,GAAuB,KAAKsI,WAAL,CAAiB,MAAM;AAC5C,WAAKT,MAAL,CAAY7H,eAAZ,CAA4B,KAAK1P,QAAjC;AACD,KAFsB,CAAvB;AAIA,SAAK2N,iBAAL,GAAyB,KAAKqK,WAAL,CAAiB,MAAM;AAC9C,WAAK1I,MAAL,CAAY3B,iBAAZ,CAA8B,KAAK3N,QAAnC;AACD,KAFwB,CAAzB;AAIA,SAAK6N,mBAAL,GAA2B,KAAKmK,WAAL,CAAiB,MAAM;AAChD,WAAK1I,MAAL,CAAYzB,mBAAZ,CAAgC,KAAK7N,QAArC;AACD,KAF0B,CAA3B;AAIA,SAAK3W,MAAL,GAAc,KAAK2uB,WAAL,CAAiB,MAAM;AACnC,WAAK1I,MAAL,CAAYjmB,MAAZ,CAAmB,KAAK2W,QAAxB;AACD,KAFa,CAAd;AAIA,SAAK5W,OAAL,GAAe,KAAK4uB,WAAL,CAAiB,MAAM;AACpC,WAAK1I,MAAL,CAAYlmB,OAAZ,CAAoB,KAAK4W,QAAzB;AACD,KAFc,CAAf;AAIA;;;;;;AAKA,SAAK0G,UAAL,GAAkB,KAAKsR,WAAL,CAAkBrkB,IAAD,IAAU;AAC3C,UAAI,KAAK2kB,SAAL,CAAe/0B,yBAAC,CAACoQ,IAAD,CAAD,CAAQyH,IAAR,GAAe7W,MAA9B,CAAJ,EAA2C;AACzC;AACD;;AACD,YAAM6hB,GAAG,GAAG,KAAKmS,YAAL,EAAZ;AACAnS,SAAG,CAACM,UAAJ,CAAe/S,IAAf;AACA,WAAK6kB,YAAL,CAAkB9M,UAAK,CAAC/C,mBAAN,CAA0BhV,IAA1B,EAAgC3I,MAAhC,EAAlB;AACD,KAPiB,CAAlB;AASA;;;;;AAIA,SAAKytB,UAAL,GAAkB,KAAKT,WAAL,CAAkB5c,IAAD,IAAU;AAC3C,UAAI,KAAKkd,SAAL,CAAeld,IAAI,CAAC7W,MAApB,CAAJ,EAAiC;AAC/B;AACD;;AACD,YAAM6hB,GAAG,GAAG,KAAKmS,YAAL,EAAZ;AACA,YAAMG,QAAQ,GAAGtS,GAAG,CAACM,UAAJ,CAAexH,GAAG,CAAC/D,UAAJ,CAAeC,IAAf,CAAf,CAAjB;AACA,WAAKod,YAAL,CAAkB9M,UAAK,CAACjnB,MAAN,CAAai0B,QAAb,EAAuBxZ,GAAG,CAACnJ,UAAJ,CAAe2iB,QAAf,CAAvB,EAAiD1tB,MAAjD,EAAlB;AACD,KAPiB,CAAlB;AASA;;;;;AAIA,SAAK2b,SAAL,GAAiB,KAAKqR,WAAL,CAAkBh1B,MAAD,IAAY;AAC5C,UAAI,KAAKs1B,SAAL,CAAet1B,MAAM,CAACuB,MAAtB,CAAJ,EAAmC;AACjC;AACD;;AACDvB,YAAM,GAAG,KAAKiJ,OAAL,CAAamD,MAAb,CAAoB,iBAApB,EAAuCpM,MAAvC,CAAT;AACA,YAAMQ,QAAQ,GAAG,KAAK+0B,YAAL,GAAoB5R,SAApB,CAA8B3jB,MAA9B,CAAjB;AACA,WAAKw1B,YAAL,CAAkB9M,UAAK,CAAC/C,mBAAN,CAA0B9f,KAAK,CAAC+I,IAAN,CAAWpO,QAAX,CAA1B,EAAgDwH,MAAhD,EAAlB;AACD,KAPgB,CAAjB;AASA;;;;;;AAKA,SAAKqtB,WAAL,GAAmB,KAAKL,WAAL,CAAiB,CAAC3H,OAAD,EAAUzP,OAAV,KAAsB;AACxD,YAAM+X,kBAAkB,GAAG,KAAKz1B,OAAL,CAAaid,SAAb,CAAuBwY,kBAAlD;;AACA,UAAIA,kBAAJ,EAAwB;AACtBA,0BAAkB,CAACC,IAAnB,CAAwB,IAAxB,EAA8BhY,OAA9B,EAAuC,KAAK3U,OAA5C,EAAqD,KAAK4sB,aAA1D;AACD,OAFD,MAEO;AACL,aAAKA,aAAL,CAAmBxI,OAAnB,EAA4BzP,OAA5B;AACD;AACF,KAPkB,CAAnB;AASA;;;;AAGA,SAAK8W,oBAAL,GAA4B,KAAKM,WAAL,CAAiB,MAAM;AACjD,YAAMc,MAAM,GAAG,KAAKP,YAAL,GAAoB7R,UAApB,CAA+BxH,GAAG,CAACza,MAAJ,CAAW,IAAX,CAA/B,CAAf;;AACA,UAAIq0B,MAAM,CAACrjB,WAAX,EAAwB;AACtB,aAAK+iB,YAAL,CAAkB9M,UAAK,CAACjnB,MAAN,CAAaq0B,MAAM,CAACrjB,WAApB,EAAiC,CAAjC,EAAoC2P,SAApC,GAAgDpa,MAAhD,EAAlB;AACD;AACF,KAL2B,CAA5B;AAOA;;;;;AAIA,SAAKuiB,UAAL,GAAkB,KAAKyK,WAAL,CAAkBlc,KAAD,IAAW;AAC5C,WAAK3T,KAAL,CAAWwkB,SAAX,CAAqB,KAAK4L,YAAL,EAArB,EAA0C;AACxChL,kBAAU,EAAEzR;AAD4B,OAA1C;AAGD,KAJiB,CAAlB;AAMA;;;;;;AAKA,SAAKid,UAAL,GAAkB,KAAKf,WAAL,CAAkBgB,QAAD,IAAc;AAC/C,UAAIC,OAAO,GAAGD,QAAQ,CAAClyB,GAAvB;AACA,YAAMoyB,QAAQ,GAAGF,QAAQ,CAAC5d,IAA1B;AACA,YAAM+d,WAAW,GAAGH,QAAQ,CAACG,WAA7B;AACA,YAAMC,aAAa,GAAGJ,QAAQ,CAACI,aAA/B;AACA,UAAIhT,GAAG,GAAG4S,QAAQ,CAACtN,KAAT,IAAkB,KAAK6M,YAAL,EAA5B;AACA,YAAMc,oBAAoB,GAAGH,QAAQ,CAAC30B,MAAT,GAAkB6hB,GAAG,CAACS,QAAJ,GAAetiB,MAA9D;;AACA,UAAI80B,oBAAoB,GAAG,CAAvB,IAA4B,KAAKf,SAAL,CAAee,oBAAf,CAAhC,EAAsE;AACpE;AACD;;AACD,YAAMC,aAAa,GAAGlT,GAAG,CAACS,QAAJ,OAAmBqS,QAAzC,CAV+C,CAY/C;;AACA,UAAI,OAAOD,OAAP,KAAmB,QAAvB,EAAiC;AAC/BA,eAAO,GAAGA,OAAO,CAAC1c,IAAR,EAAV;AACD;;AAED,UAAI,KAAKrZ,OAAL,CAAaq2B,YAAjB,EAA+B;AAC7BN,eAAO,GAAG,KAAK/1B,OAAL,CAAaq2B,YAAb,CAA0BN,OAA1B,CAAV;AACD,OAFD,MAEO,IAAIG,aAAJ,EAAmB;AACxB;AACAH,eAAO,GAAG,oCAAoCxsB,IAApC,CAAyCwsB,OAAzC,IACNA,OADM,GACI,KAAK/1B,OAAL,CAAas2B,eAAb,GAA+BP,OAD7C;AAED;;AAED,UAAIQ,OAAO,GAAG,EAAd;;AACA,UAAIH,aAAJ,EAAmB;AACjBlT,WAAG,GAAGA,GAAG,CAACD,cAAJ,EAAN;AACA,cAAMsH,MAAM,GAAGrH,GAAG,CAACM,UAAJ,CAAenjB,yBAAC,CAAC,QAAQ21B,QAAR,GAAmB,MAApB,CAAD,CAA6B,CAA7B,CAAf,CAAf;AACAO,eAAO,CAACxmB,IAAR,CAAawa,MAAb;AACD,OAJD,MAIO;AACLgM,eAAO,GAAG,KAAKtxB,KAAL,CAAWykB,UAAX,CAAsBxG,GAAtB,EAA2B;AACnCrS,kBAAQ,EAAE,GADyB;AAEnC8Y,8BAAoB,EAAE,IAFa;AAGnCC,6BAAmB,EAAE;AAHc,SAA3B,CAAV;AAKD;;AAEDvpB,+BAAC,CAACM,IAAF,CAAO41B,OAAP,EAAgB,CAACxnB,GAAD,EAAMwb,MAAN,KAAiB;AAC/BlqB,iCAAC,CAACkqB,MAAD,CAAD,CAAUzpB,IAAV,CAAe,MAAf,EAAuBi1B,OAAvB;;AACA,YAAIE,WAAJ,EAAiB;AACf51B,mCAAC,CAACkqB,MAAD,CAAD,CAAUzpB,IAAV,CAAe,QAAf,EAAyB,QAAzB;AACD,SAFD,MAEO;AACLT,mCAAC,CAACkqB,MAAD,CAAD,CAAUyH,UAAV,CAAqB,QAArB;AACD;AACF,OAPD;AASA,YAAMwE,UAAU,GAAGhO,UAAK,CAAChD,oBAAN,CAA2B7f,KAAK,CAAC6I,IAAN,CAAW+nB,OAAX,CAA3B,CAAnB;AACA,YAAM9f,UAAU,GAAG+f,UAAU,CAACjV,aAAX,EAAnB;AACA,YAAMkV,QAAQ,GAAGjO,UAAK,CAAC/C,mBAAN,CAA0B9f,KAAK,CAAC+I,IAAN,CAAW6nB,OAAX,CAA1B,CAAjB;AACA,YAAM7f,QAAQ,GAAG+f,QAAQ,CAACjV,WAAT,EAAjB;AAEA,WAAK8T,YAAL,CACE9M,UAAK,CAACjnB,MAAN,CACEkV,UAAU,CAAChG,IADb,EAEEgG,UAAU,CAACzB,MAFb,EAGE0B,QAAQ,CAACjG,IAHX,EAIEiG,QAAQ,CAAC1B,MAJX,EAKElN,MALF,EADF;AAQD,KA5DiB,CAAlB;AA8DA;;;;;;;;AAOA,SAAKtB,KAAL,GAAa,KAAKsuB,WAAL,CAAkB4B,SAAD,IAAe;AAC3C,YAAMC,SAAS,GAAGD,SAAS,CAACC,SAA5B;AACA,YAAMC,SAAS,GAAGF,SAAS,CAACE,SAA5B;;AAEA,UAAID,SAAJ,EAAe;AAAE9tB,gBAAQ,CAAC+rB,WAAT,CAAqB,WAArB,EAAkC,KAAlC,EAAyC+B,SAAzC;AAAsD;;AACvE,UAAIC,SAAJ,EAAe;AAAE/tB,gBAAQ,CAAC+rB,WAAT,CAAqB,WAArB,EAAkC,KAAlC,EAAyCgC,SAAzC;AAAsD;AACxE,KANY,CAAb;AAQA;;;;;;AAKA,SAAKD,SAAL,GAAiB,KAAK7B,WAAL,CAAkB4B,SAAD,IAAe;AAC/C7tB,cAAQ,CAAC+rB,WAAT,CAAqB,cAArB,EAAqC,KAArC,EAA4C,IAA5C;AACA/rB,cAAQ,CAAC+rB,WAAT,CAAqB,WAArB,EAAkC,KAAlC,EAAyC8B,SAAzC;AACD,KAHgB,CAAjB;AAKA;;;;;;AAKA,SAAKG,WAAL,GAAmB,KAAK/B,WAAL,CAAkBgC,GAAD,IAAS;AAC3C,YAAMC,SAAS,GAAGD,GAAG,CAACvpB,KAAJ,CAAU,GAAV,CAAlB;AAEA,YAAM2V,GAAG,GAAG,KAAKmS,YAAL,GAAoBpS,cAApB,EAAZ;AACAC,SAAG,CAACM,UAAJ,CAAe,KAAKhf,KAAL,CAAW6uB,WAAX,CAAuB0D,SAAS,CAAC,CAAD,CAAhC,EAAqCA,SAAS,CAAC,CAAD,CAA9C,EAAmD,KAAK/2B,OAAxD,CAAf;AACD,KALkB,CAAnB;AAOA;;;;AAGA,SAAKg3B,WAAL,GAAmB,KAAKlC,WAAL,CAAiB,MAAM;AACxC,UAAIpX,OAAO,GAAGrd,yBAAC,CAAC,KAAK42B,aAAL,EAAD,CAAD,CAAwB3iB,MAAxB,EAAd;;AACA,UAAIoJ,OAAO,CAACE,OAAR,CAAgB,QAAhB,EAA0Bvc,MAA9B,EAAsC;AACpCqc,eAAO,CAACE,OAAR,CAAgB,QAAhB,EAA0B/Z,MAA1B;AACD,OAFD,MAEO;AACL6Z,eAAO,GAAGrd,yBAAC,CAAC,KAAK42B,aAAL,EAAD,CAAD,CAAwBlP,MAAxB,EAAV;AACD;;AACD,WAAKhf,OAAL,CAAa2T,YAAb,CAA0B,cAA1B,EAA0CgB,OAA1C,EAAmD,KAAK0K,SAAxD;AACD,KARkB,CAAnB;AAUA;;;;;;AAKA,SAAK8O,OAAL,GAAe,KAAKpC,WAAL,CAAkBlc,KAAD,IAAW;AACzC,YAAM8E,OAAO,GAAGrd,yBAAC,CAAC,KAAK42B,aAAL,EAAD,CAAjB;AACAvZ,aAAO,CAACyZ,WAAR,CAAoB,iBAApB,EAAuCve,KAAK,KAAK,MAAjD;AACA8E,aAAO,CAACyZ,WAAR,CAAoB,kBAApB,EAAwCve,KAAK,KAAK,OAAlD;AACA8E,aAAO,CAACsK,GAAR,CAAY,OAAZ,EAAsBpP,KAAK,KAAK,MAAV,GAAmB,EAAnB,GAAwBA,KAA9C;AACD,KALc,CAAf;AAOA;;;;;AAIA,SAAKwe,MAAL,GAAc,KAAKtC,WAAL,CAAkBlc,KAAD,IAAW;AACxC,YAAM8E,OAAO,GAAGrd,yBAAC,CAAC,KAAK42B,aAAL,EAAD,CAAjB;AACAre,WAAK,GAAGjP,UAAU,CAACiP,KAAD,CAAlB;;AACA,UAAIA,KAAK,KAAK,CAAd,EAAiB;AACf8E,eAAO,CAACsK,GAAR,CAAY,OAAZ,EAAqB,EAArB;AACD,OAFD,MAEO;AACLtK,eAAO,CAACsK,GAAR,CAAY;AACV7e,eAAK,EAAEyP,KAAK,GAAG,GAAR,GAAc,GADX;AAEVzW,gBAAM,EAAE;AAFE,SAAZ;AAID;AACF,KAXa,CAAd;AAYD;;AAEDkZ,YAAU,GAAG;AACX;AACA,SAAK+M,SAAL,CAAepnB,EAAf,CAAkB,SAAlB,EAA8Buc,KAAD,IAAW;AACtC,UAAIA,KAAK,CAACuI,OAAN,KAAkB3Y,QAAG,CAAC4O,IAAJ,CAASkK,KAA/B,EAAsC;AACpC,aAAKld,OAAL,CAAa2T,YAAb,CAA0B,OAA1B,EAAmCa,KAAnC;AACD;;AACD,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,SAA1B,EAAqCa,KAArC,EAJsC,CAMtC;;AACA,WAAKoL,QAAL,GAAgB,KAAKjhB,OAAL,CAAa6gB,YAAb,EAAhB;;AAEA,UAAI,CAAChL,KAAK,CAAC8Z,kBAAN,EAAL,EAAiC;AAC/B,YAAI,KAAKr3B,OAAL,CAAamH,SAAjB,EAA4B;AAC1B,eAAKmwB,YAAL,CAAkB/Z,KAAlB;AACD,SAFD,MAEO;AACL,eAAKga,+BAAL,CAAqCha,KAArC;AACD;AACF;;AACD,UAAI,KAAK6X,SAAL,CAAe,CAAf,EAAkB7X,KAAlB,CAAJ,EAA8B;AAC5B,cAAM6W,SAAS,GAAG,KAAKiB,YAAL,EAAlB;;AACA,YAAIjB,SAAS,CAAC3T,EAAV,GAAe2T,SAAS,CAAC7T,EAAzB,KAAgC,CAApC,EAAuC;AACrC,iBAAO,KAAP;AACD;AACF;;AACD,WAAK+U,YAAL;AACD,KAvBD,EAuBGt0B,EAvBH,CAuBM,OAvBN,EAuBgBuc,KAAD,IAAW;AACxB,WAAK+X,YAAL;AACA,WAAKvsB,OAAL,CAAa2T,YAAb,CAA0B,OAA1B,EAAmCa,KAAnC;AACD,KA1BD,EA0BGvc,EA1BH,CA0BM,OA1BN,EA0BgBuc,KAAD,IAAW;AACxB,WAAK+X,YAAL;AACA,WAAKvsB,OAAL,CAAa2T,YAAb,CAA0B,OAA1B,EAAmCa,KAAnC;AACD,KA7BD,EA6BGvc,EA7BH,CA6BM,MA7BN,EA6Beuc,KAAD,IAAW;AACvB,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,MAA1B,EAAkCa,KAAlC;AACD,KA/BD,EA+BGvc,EA/BH,CA+BM,WA/BN,EA+BoBuc,KAAD,IAAW;AAC5B,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,WAA1B,EAAuCa,KAAvC;AACD,KAjCD,EAiCGvc,EAjCH,CAiCM,SAjCN,EAiCkBuc,KAAD,IAAW;AAC1B,WAAK+X,YAAL;AACA,WAAK5tB,OAAL,CAAamhB,UAAb;AACA,WAAK9f,OAAL,CAAa2T,YAAb,CAA0B,SAA1B,EAAqCa,KAArC;AACD,KArCD,EAqCGvc,EArCH,CAqCM,QArCN,EAqCiBuc,KAAD,IAAW;AACzB,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoCa,KAApC;AACD,KAvCD,EAuCGvc,EAvCH,CAuCM,OAvCN,EAuCgBuc,KAAD,IAAW;AACxB,WAAK+X,YAAL;AACA,WAAKvsB,OAAL,CAAa2T,YAAb,CAA0B,OAA1B,EAAmCa,KAAnC;AACD,KA1CD,EA0CGvc,EA1CH,CA0CM,OA1CN,EA0CgBuc,KAAD,IAAW;AACxB;AACA,UAAI,KAAK6X,SAAL,CAAe,CAAf,KAAqB,KAAKzM,QAA9B,EAAwC;AACtC,aAAKjhB,OAAL,CAAaghB,aAAb,CAA2B,KAAKC,QAAhC;AACD;AACF,KA/CD;AAiDA,SAAKP,SAAL,CAAetnB,IAAf,CAAoB,YAApB,EAAkC,KAAKd,OAAL,CAAaw3B,UAA/C;AAEA,SAAKpP,SAAL,CAAetnB,IAAf,CAAoB,aAApB,EAAmC,KAAKd,OAAL,CAAaw3B,UAAhD;;AAEA,QAAI,KAAKx3B,OAAL,CAAay3B,cAAjB,EAAiC;AAC/B,WAAKrP,SAAL,CAAetnB,IAAf,CAAoB,YAApB,EAAkC,KAAlC;AACD,KAzDU,CA2DX;;;AACA,SAAKsnB,SAAL,CAAe7nB,IAAf,CAAoByb,GAAG,CAACzb,IAAJ,CAAS,KAAKya,KAAd,KAAwBgB,GAAG,CAAC5B,SAAhD;AAEA,SAAKgO,SAAL,CAAepnB,EAAf,CAAkB4R,GAAG,CAACzI,cAAtB,EAAsC0D,IAAI,CAACD,QAAL,CAAc,MAAM;AACxD,WAAK7E,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD,KAFqC,EAEnC,EAFmC,CAAtC;AAIA,SAAK+L,OAAL,CAAanzB,EAAb,CAAgB,SAAhB,EAA4Buc,KAAD,IAAW;AACpC,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,SAA1B,EAAqCa,KAArC;AACD,KAFD,EAEGvc,EAFH,CAEM,UAFN,EAEmBuc,KAAD,IAAW;AAC3B,WAAKxU,OAAL,CAAa2T,YAAb,CAA0B,UAA1B,EAAsCa,KAAtC;AACD,KAJD;;AAMA,QAAI,CAAC,KAAKvd,OAAL,CAAa03B,OAAlB,EAA2B;AACzB,UAAI,KAAK13B,OAAL,CAAamJ,KAAjB,EAAwB;AACtB,aAAKgrB,OAAL,CAAawD,UAAb,CAAwB,KAAK33B,OAAL,CAAamJ,KAArC;AACD;;AACD,UAAI,KAAKnJ,OAAL,CAAamC,MAAjB,EAAyB;AACvB,aAAKimB,SAAL,CAAe1O,WAAf,CAA2B,KAAK1Z,OAAL,CAAamC,MAAxC;AACD;;AACD,UAAI,KAAKnC,OAAL,CAAa43B,SAAjB,EAA4B;AAC1B,aAAKxP,SAAL,CAAeJ,GAAf,CAAmB,YAAnB,EAAiC,KAAKhoB,OAAL,CAAa43B,SAA9C;AACD;;AACD,UAAI,KAAK53B,OAAL,CAAa63B,SAAjB,EAA4B;AAC1B,aAAKzP,SAAL,CAAeJ,GAAf,CAAmB,YAAnB,EAAiC,KAAKhoB,OAAL,CAAa63B,SAA9C;AACD;AACF;;AAED,SAAKnwB,OAAL,CAAamhB,UAAb;AACA,SAAKyM,YAAL;AACD;;AAED7Z,SAAO,GAAG;AACR,SAAK2M,SAAL,CAAepO,GAAf;AACD;;AAEDsd,cAAY,CAAC/Z,KAAD,EAAQ;AAClB,UAAMua,MAAM,GAAG,KAAK93B,OAAL,CAAa83B,MAAb,CAAoBllB,GAAG,CAACxI,KAAJ,GAAY,KAAZ,GAAoB,IAAxC,CAAf;AACA,UAAM0P,IAAI,GAAG,EAAb;;AAEA,QAAIyD,KAAK,CAACwa,OAAV,EAAmB;AAAEje,UAAI,CAAC/J,IAAL,CAAU,KAAV;AAAmB;;AACxC,QAAIwN,KAAK,CAACya,OAAN,IAAiB,CAACza,KAAK,CAAC0a,MAA5B,EAAoC;AAAEne,UAAI,CAAC/J,IAAL,CAAU,MAAV;AAAoB;;AAC1D,QAAIwN,KAAK,CAAC2a,QAAV,EAAoB;AAAEpe,UAAI,CAAC/J,IAAL,CAAU,OAAV;AAAqB;;AAE3C,UAAMooB,OAAO,GAAGhrB,QAAG,CAAC2Z,YAAJ,CAAiBvJ,KAAK,CAACuI,OAAvB,CAAhB;;AACA,QAAIqS,OAAJ,EAAa;AACXre,UAAI,CAAC/J,IAAL,CAAUooB,OAAV;AACD;;AAED,UAAMC,SAAS,GAAGN,MAAM,CAAChe,IAAI,CAACnM,IAAL,CAAU,GAAV,CAAD,CAAxB;;AAEA,QAAIwqB,OAAO,KAAK,KAAZ,IAAqB,CAAC,KAAKn4B,OAAL,CAAaq4B,UAAvC,EAAmD;AACjD,WAAKxD,YAAL;AACD,KAFD,MAEO,IAAIuD,SAAJ,EAAe;AACpB,UAAI,KAAKrvB,OAAL,CAAamD,MAAb,CAAoBksB,SAApB,MAAmC,KAAvC,EAA8C;AAC5C7a,aAAK,CAACE,cAAN;AACD;AACF,KAJM,MAIA,IAAItQ,QAAG,CAAC0Y,MAAJ,CAAWtI,KAAK,CAACuI,OAAjB,CAAJ,EAA+B;AACpC,WAAK+O,YAAL;AACD;AACF;;AAED0C,iCAA+B,CAACha,KAAD,EAAQ;AACrC;AACA,QAAI,CAACA,KAAK,CAACya,OAAN,IAAiBza,KAAK,CAACwa,OAAxB,KACFpyB,KAAK,CAACuJ,QAAN,CAAe,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,CAAf,EAA6BqO,KAAK,CAACuI,OAAnC,CADF,EAC+C;AAC7CvI,WAAK,CAACE,cAAN;AACD;AACF;;AAED2X,WAAS,CAACkD,GAAD,EAAM/a,KAAN,EAAa;AACpB+a,OAAG,GAAGA,GAAG,IAAI,CAAb;;AAEA,QAAI,OAAO/a,KAAP,KAAiB,WAArB,EAAkC;AAChC,UAAIpQ,QAAG,CAACiZ,MAAJ,CAAW7I,KAAK,CAACuI,OAAjB,KACA3Y,QAAG,CAACsZ,YAAJ,CAAiBlJ,KAAK,CAACuI,OAAvB,CADA,IAECvI,KAAK,CAACya,OAAN,IAAiBza,KAAK,CAACwa,OAFxB,IAGApyB,KAAK,CAACuJ,QAAN,CAAe,CAAC/B,QAAG,CAAC4O,IAAJ,CAASgK,SAAV,EAAqB5Y,QAAG,CAAC4O,IAAJ,CAASoK,MAA9B,CAAf,EAAsD5I,KAAK,CAACuI,OAA5D,CAHJ,EAG0E;AACxE,eAAO,KAAP;AACD;AACF;;AAED,QAAI,KAAK9lB,OAAL,CAAau4B,aAAb,GAA6B,CAAjC,EAAoC;AAClC,UAAK,KAAKnQ,SAAL,CAAelQ,IAAf,GAAsB7W,MAAtB,GAA+Bi3B,GAAhC,GAAuC,KAAKt4B,OAAL,CAAau4B,aAAxD,EAAuE;AACrE,eAAO,IAAP;AACD;AACF;;AACD,WAAO,KAAP;AACD;AACD;;;;;;AAIAvtB,aAAW,GAAG;AACZ,SAAKyT,KAAL;AACA,SAAK6W,YAAL;AACA,WAAO,KAAKD,YAAL,EAAP;AACD;;AAEDC,cAAY,CAACpS,GAAD,EAAM;AAChB,QAAIA,GAAJ,EAAS;AACP,WAAKkR,SAAL,GAAiBlR,GAAjB;AACD,KAFD,MAEO;AACL,WAAKkR,SAAL,GAAiB5L,UAAK,CAACjnB,MAAN,CAAa,KAAKub,QAAlB,CAAjB;;AAEA,UAAIzc,yBAAC,CAAC,KAAK+zB,SAAL,CAAe9T,EAAhB,CAAD,CAAqB1C,OAArB,CAA6B,gBAA7B,EAA+Cvc,MAA/C,KAA0D,CAA9D,EAAiE;AAC/D,aAAK+yB,SAAL,GAAiB5L,UAAK,CAAC1D,qBAAN,CAA4B,KAAKhI,QAAjC,CAAjB;AACD;AACF;AACF;;AAEDuY,cAAY,GAAG;AACb,QAAI,CAAC,KAAKjB,SAAV,EAAqB;AACnB,WAAKkB,YAAL;AACD;;AACD,WAAO,KAAKlB,SAAZ;AACD;AAED;;;;;;;;;AAOAoE,WAAS,CAACC,YAAD,EAAe;AACtB,QAAIA,YAAJ,EAAkB;AAChB,WAAKpD,YAAL,GAAoB/V,QAApB,GAA+BxX,MAA/B;AACD;AACF;AAED;;;;;;;AAKA4wB,cAAY,GAAG;AACb,QAAI,KAAKtE,SAAT,EAAoB;AAClB,WAAKA,SAAL,CAAetsB,MAAf;AACA,WAAK2W,KAAL;AACD;AACF;;AAEDka,YAAU,CAACloB,IAAD,EAAO;AACf,SAAK2X,SAAL,CAAe1nB,IAAf,CAAoB,QAApB,EAA8B+P,IAA9B;AACD;;AAEDmoB,aAAW,GAAG;AACZ,SAAKxQ,SAAL,CAAezM,UAAf,CAA0B,QAA1B;AACD;;AAEDsb,eAAa,GAAG;AACd,WAAO,KAAK7O,SAAL,CAAe1nB,IAAf,CAAoB,QAApB,CAAP;AACD;AAED;;;;;;;;AAMAu0B,cAAY,GAAG;AACb,QAAI/R,GAAG,GAAGsF,UAAK,CAACjnB,MAAN,EAAV;;AACA,QAAI2hB,GAAJ,EAAS;AACPA,SAAG,GAAGA,GAAG,CAAChB,SAAJ,EAAN;AACD;;AACD,WAAOgB,GAAG,GAAG,KAAKje,KAAL,CAAWkP,OAAX,CAAmB+O,GAAnB,CAAH,GAA6B,KAAKje,KAAL,CAAWmkB,QAAX,CAAoB,KAAKhB,SAAzB,CAAvC;AACD;AAED;;;;;;;;AAMAyQ,eAAa,CAACz4B,KAAD,EAAQ;AACnB,WAAO,KAAK6E,KAAL,CAAWmkB,QAAX,CAAoBhpB,KAApB,CAAP;AACD;AAED;;;;;AAGAuH,MAAI,GAAG;AACL,SAAKoB,OAAL,CAAa2T,YAAb,CAA0B,gBAA1B,EAA4C,KAAK0L,SAAL,CAAe7nB,IAAf,EAA5C;AACA,SAAKmH,OAAL,CAAaC,IAAb;AACA,SAAKoB,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD;AAED;;;;;AAGAU,QAAM,GAAG;AACP,SAAK/f,OAAL,CAAa2T,YAAb,CAA0B,gBAA1B,EAA4C,KAAK0L,SAAL,CAAe7nB,IAAf,EAA5C;AACA,SAAKmH,OAAL,CAAaohB,MAAb;AACA,SAAK/f,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD;AAED;;;;;AAGAxgB,MAAI,GAAG;AACL,SAAKmB,OAAL,CAAa2T,YAAb,CAA0B,gBAA1B,EAA4C,KAAK0L,SAAL,CAAe7nB,IAAf,EAA5C;AACA,SAAKmH,OAAL,CAAaE,IAAb;AACA,SAAKmB,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD;AAED;;;;;AAGAuM,eAAa,GAAG;AACd,SAAK5rB,OAAL,CAAa2T,YAAb,CAA0B,gBAA1B,EAA4C,KAAK0L,SAAL,CAAe7nB,IAAf,EAA5C,EADc,CAEd;;AACA,SAAKke,KAAL;AACD;AAED;;;;;;AAIAoW,cAAY,CAACiE,gBAAD,EAAmB;AAC7B,SAAKC,gBAAL;AACA,SAAKrxB,OAAL,CAAamhB,UAAb;;AACA,QAAI,CAACiQ,gBAAL,EAAuB;AACrB,WAAK/vB,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD;AACF;AAED;;;;;AAGAmE,KAAG,GAAG;AACJ,UAAMrJ,GAAG,GAAG,KAAKmS,YAAL,EAAZ;;AACA,QAAInS,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAKtc,KAAL,CAAW+nB,GAAX,CAAerJ,GAAf;AACD,KAFD,MAEO;AACL,UAAI,KAAKljB,OAAL,CAAag5B,OAAb,KAAyB,CAA7B,EAAgC;AAC9B,eAAO,KAAP;AACD;;AAED,UAAI,CAAC,KAAK5D,SAAL,CAAe,KAAKp1B,OAAL,CAAag5B,OAA5B,CAAL,EAA2C;AACzC,aAAKrE,aAAL;AACA,aAAKN,MAAL,CAAYhI,SAAZ,CAAsBnJ,GAAtB,EAA2B,KAAKljB,OAAL,CAAag5B,OAAxC;AACA,aAAKnE,YAAL;AACD;AACF;AACF;AAED;;;;;AAGAP,OAAK,GAAG;AACN,UAAMpR,GAAG,GAAG,KAAKmS,YAAL,EAAZ;;AACA,QAAInS,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAKtc,KAAL,CAAW+nB,GAAX,CAAerJ,GAAf,EAAoB,IAApB;AACD,KAFD,MAEO;AACL,UAAI,KAAKljB,OAAL,CAAag5B,OAAb,KAAyB,CAA7B,EAAgC;AAC9B,eAAO,KAAP;AACD;AACF;AACF;AAED;;;;;AAGAlE,aAAW,CAACjqB,EAAD,EAAK;AACd,WAAO,YAAW;AAChB,WAAK8pB,aAAL;AACA9pB,QAAE,CAACc,KAAH,CAAS,IAAT,EAAenK,SAAf;AACA,WAAKqzB,YAAL;AACD,KAJD;AAKD;AAED;;;;;;;;;AAOAoE,aAAW,CAACC,GAAD,EAAMC,KAAN,EAAa;AACtB,WAAOvR,WAAW,CAACsR,GAAD,EAAMC,KAAN,CAAX,CAAwBC,IAAxB,CAA8BC,MAAD,IAAY;AAC9C,WAAK1E,aAAL;;AAEA,UAAI,OAAOwE,KAAP,KAAiB,UAArB,EAAiC;AAC/BA,aAAK,CAACE,MAAD,CAAL;AACD,OAFD,MAEO;AACL,YAAI,OAAOF,KAAP,KAAiB,QAArB,EAA+B;AAC7BE,gBAAM,CAACv4B,IAAP,CAAY,eAAZ,EAA6Bq4B,KAA7B;AACD;;AACDE,cAAM,CAACrR,GAAP,CAAW,OAAX,EAAoB5G,IAAI,CAACC,GAAL,CAAS,KAAK+G,SAAL,CAAejf,KAAf,EAAT,EAAiCkwB,MAAM,CAAClwB,KAAP,EAAjC,CAApB;AACD;;AAEDkwB,YAAM,CAACC,IAAP;AACA,WAAKjE,YAAL,GAAoB7R,UAApB,CAA+B6V,MAAM,CAAC,CAAD,CAArC;AACA,WAAK/D,YAAL,CAAkB9M,UAAK,CAAC/C,mBAAN,CAA0B4T,MAAM,CAAC,CAAD,CAAhC,EAAqCvxB,MAArC,EAAlB;AACA,WAAK+sB,YAAL;AACD,KAhBM,EAgBJrpB,IAhBI,CAgBE8Y,CAAD,IAAO;AACb,WAAKvb,OAAL,CAAa2T,YAAb,CAA0B,oBAA1B,EAAgD4H,CAAhD;AACD,KAlBM,CAAP;AAmBD;AAED;;;;;;AAIAiV,uBAAqB,CAACC,KAAD,EAAQ;AAC3Bn5B,6BAAC,CAACM,IAAF,CAAO64B,KAAP,EAAc,CAACzqB,GAAD,EAAMiY,IAAN,KAAe;AAC3B,YAAMyS,QAAQ,GAAGzS,IAAI,CAAC5kB,IAAtB;;AACA,UAAI,KAAKpC,OAAL,CAAa05B,oBAAb,IAAqC,KAAK15B,OAAL,CAAa05B,oBAAb,GAAoC1S,IAAI,CAACxkB,IAAlF,EAAwF;AACtF,aAAKuG,OAAL,CAAa2T,YAAb,CAA0B,oBAA1B,EAAgD,KAAK9a,IAAL,CAAUc,KAAV,CAAgBiB,oBAAhE;AACD,OAFD,MAEO;AACLojB,yBAAiB,CAACC,IAAD,CAAjB,CAAwBoS,IAAxB,CAA8B/R,OAAD,IAAa;AACxC,iBAAO,KAAK4R,WAAL,CAAiB5R,OAAjB,EAA0BoS,QAA1B,CAAP;AACD,SAFD,EAEGjuB,IAFH,CAEQ,MAAM;AACZ,eAAKzC,OAAL,CAAa2T,YAAb,CAA0B,oBAA1B;AACD,SAJD;AAKD;AACF,KAXD;AAYD;AAED;;;;;;AAIAid,wBAAsB,CAACH,KAAD,EAAQ;AAC5B,UAAMvc,SAAS,GAAG,KAAKjd,OAAL,CAAaid,SAA/B,CAD4B,CAE5B;;AACA,QAAIA,SAAS,CAAC2c,aAAd,EAA6B;AAC3B,WAAK7wB,OAAL,CAAa2T,YAAb,CAA0B,cAA1B,EAA0C8c,KAA1C,EAD2B,CAE3B;AACD,KAHD,MAGO;AACL,WAAKD,qBAAL,CAA2BC,KAA3B;AACD;AACF;AAED;;;;;;AAIAK,iBAAe,GAAG;AAChB,QAAI3W,GAAG,GAAG,KAAKmS,YAAL,EAAV,CADgB,CAGhB;;AACA,QAAInS,GAAG,CAACrC,UAAJ,EAAJ,EAAsB;AACpBqC,SAAG,GAAGsF,UAAK,CAACzD,cAAN,CAAqB/I,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAACjK,QAAzB,CAArB,CAAN;AACD;;AAED,WAAOmR,GAAG,CAACS,QAAJ,EAAP;AACD;;AAEDgS,eAAa,CAACxI,OAAD,EAAUzP,OAAV,EAAmB;AAC9B;AACA7U,YAAQ,CAAC+rB,WAAT,CAAqB,aAArB,EAAoC,KAApC,EAA2ChiB,GAAG,CAACtJ,MAAJ,GAAa,MAAM6jB,OAAN,GAAgB,GAA7B,GAAmCA,OAA9E,EAF8B,CAI9B;;AACA,QAAIzP,OAAO,IAAIA,OAAO,CAACrc,MAAvB,EAA+B;AAC7B;AACA,UAAIqc,OAAO,CAAC,CAAD,CAAP,CAAWyP,OAAX,CAAmBzf,WAAnB,OAAqCyf,OAAO,CAACzf,WAAR,EAAzC,EAAgE;AAC9DgQ,eAAO,GAAGA,OAAO,CAACxc,IAAR,CAAaisB,OAAb,CAAV;AACD;;AAED,UAAIzP,OAAO,IAAIA,OAAO,CAACrc,MAAvB,EAA+B;AAC7B,cAAMb,SAAS,GAAGkd,OAAO,CAAC,CAAD,CAAP,CAAWld,SAAX,IAAwB,EAA1C;;AACA,YAAIA,SAAJ,EAAe;AACb,gBAAMs5B,YAAY,GAAG,KAAK9uB,WAAL,EAArB;AAEA,gBAAM7K,OAAO,GAAGE,yBAAC,CAAC,CAACy5B,YAAY,CAACxZ,EAAd,EAAkBwZ,YAAY,CAACtZ,EAA/B,CAAD,CAAD,CAAsC5C,OAAtC,CAA8CuP,OAA9C,CAAhB;AACAhtB,iBAAO,CAACM,QAAR,CAAiBD,SAAjB;AACD;AACF;AACF;AACF;;AAED+zB,YAAU,GAAG;AACX,SAAKY,WAAL,CAAiB,GAAjB;AACD;;AAEDJ,aAAW,CAACpX,MAAD,EAAS/E,KAAT,EAAgB;AACzB,UAAMsK,GAAG,GAAG,KAAKmS,YAAL,EAAZ;;AAEA,QAAInS,GAAG,KAAK,EAAZ,EAAgB;AACd,YAAM6W,KAAK,GAAG,KAAK90B,KAAL,CAAWykB,UAAX,CAAsBxG,GAAtB,CAAd;AACA,WAAKiR,OAAL,CAAajzB,IAAb,CAAkB,qBAAlB,EAAyCX,IAAzC,CAA8C,EAA9C;AACAF,+BAAC,CAAC05B,KAAD,CAAD,CAAS/R,GAAT,CAAarK,MAAb,EAAqB/E,KAArB,EAHc,CAKd;AACA;;AACA,UAAIsK,GAAG,CAACV,WAAJ,EAAJ,EAAuB;AACrB,cAAMwX,SAAS,GAAGr0B,KAAK,CAAC6I,IAAN,CAAWurB,KAAX,CAAlB;;AACA,YAAIC,SAAS,IAAI,CAAChe,GAAG,CAACnJ,UAAJ,CAAemnB,SAAf,CAAlB,EAA6C;AAC3CA,mBAAS,CAAC9mB,SAAV,GAAsB8I,GAAG,CAACzL,oBAA1B;AACAiY,oBAAK,CAAC/C,mBAAN,CAA0BuU,SAAS,CAACza,UAApC,EAAgDzX,MAAhD;AACA,eAAKwtB,YAAL;AACA,eAAKlN,SAAL,CAAe1nB,IAAf,CAAoBuzB,SAApB,EAA+B+F,SAA/B;AACD;AACF;AACF,KAhBD,MAgBO;AACL,YAAMC,gBAAgB,GAAG55B,yBAAC,CAAC6b,GAAF,EAAzB;AACA,WAAKiY,OAAL,CAAajzB,IAAb,CAAkB,qBAAlB,EAAyCX,IAAzC,CAA8C,iCAAiC05B,gBAAjC,GAAoD,6BAApD,GAAoF,KAAKr4B,IAAL,CAAUmG,MAAV,CAAiBC,WAArG,GAAmH,QAAjK;AACAqG,gBAAU,CAAC,YAAW;AAAEhO,iCAAC,CAAC,yBAAyB45B,gBAA1B,CAAD,CAA6Cp2B,MAA7C;AAAwD,OAAtE,EAAwE,IAAxE,CAAV;AACD;AACF;AAED;;;;;;;AAKAM,QAAM,GAAG;AACP,QAAI+e,GAAG,GAAG,KAAKmS,YAAL,EAAV;;AACA,QAAInS,GAAG,CAACrC,UAAJ,EAAJ,EAAsB;AACpB,YAAM0J,MAAM,GAAGvO,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAACjK,QAAzB,CAAf;AACAmR,SAAG,GAAGsF,UAAK,CAACzD,cAAN,CAAqBwF,MAArB,CAAN;AACArH,SAAG,CAACpb,MAAJ;AACA,WAAKwtB,YAAL;AAEA,WAAKX,aAAL;AACA9rB,cAAQ,CAAC+rB,WAAT,CAAqB,QAArB;AACA,WAAKC,YAAL;AACD;AACF;AAED;;;;;;;;;;;AASAqF,aAAW,GAAG;AACZ,UAAMhX,GAAG,GAAG,KAAKmS,YAAL,GAAoBzS,MAApB,CAA2B5G,GAAG,CAACjK,QAA/B,CAAZ,CADY,CAEZ;;AACA,UAAMooB,OAAO,GAAG95B,yBAAC,CAACsF,KAAK,CAAC6I,IAAN,CAAW0U,GAAG,CAACpP,KAAJ,CAAUkI,GAAG,CAACjK,QAAd,CAAX,CAAD,CAAjB;AACA,UAAM+jB,QAAQ,GAAG;AACftN,WAAK,EAAEtF,GADQ;AAEfhL,UAAI,EAAEgL,GAAG,CAACS,QAAJ,EAFS;AAGf/f,SAAG,EAAEu2B,OAAO,CAAC94B,MAAR,GAAiB84B,OAAO,CAACr5B,IAAR,CAAa,MAAb,CAAjB,GAAwC;AAH9B,KAAjB,CAJY,CAUZ;;AACA,QAAIq5B,OAAO,CAAC94B,MAAZ,EAAoB;AAClB;AACAy0B,cAAQ,CAACG,WAAT,GAAuBkE,OAAO,CAACr5B,IAAR,CAAa,QAAb,MAA2B,QAAlD;AACD;;AAED,WAAOg1B,QAAP;AACD;;AAED1E,QAAM,CAAChc,QAAD,EAAW;AACf,UAAM8N,GAAG,GAAG,KAAKmS,YAAL,CAAkB,KAAKjN,SAAvB,CAAZ;;AACA,QAAIlF,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAK6T,aAAL;AACA,WAAKnwB,KAAL,CAAW4sB,MAAX,CAAkBlO,GAAlB,EAAuB9N,QAAvB;AACA,WAAKyf,YAAL;AACD;AACF;;AAEDxC,QAAM,CAACjd,QAAD,EAAW;AACf,UAAM8N,GAAG,GAAG,KAAKmS,YAAL,CAAkB,KAAKjN,SAAvB,CAAZ;;AACA,QAAIlF,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAK6T,aAAL;AACA,WAAKnwB,KAAL,CAAW6tB,MAAX,CAAkBnP,GAAlB,EAAuB9N,QAAvB;AACA,WAAKyf,YAAL;AACD;AACF;;AAEDlC,WAAS,GAAG;AACV,UAAMzP,GAAG,GAAG,KAAKmS,YAAL,CAAkB,KAAKjN,SAAvB,CAAZ;;AACA,QAAIlF,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAK6T,aAAL;AACA,WAAKnwB,KAAL,CAAWmuB,SAAX,CAAqBzP,GAArB;AACA,WAAK2R,YAAL;AACD;AACF;;AAED1B,WAAS,GAAG;AACV,UAAMjQ,GAAG,GAAG,KAAKmS,YAAL,CAAkB,KAAKjN,SAAvB,CAAZ;;AACA,QAAIlF,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAK6T,aAAL;AACA,WAAKnwB,KAAL,CAAW2uB,SAAX,CAAqBjQ,GAArB;AACA,WAAK2R,YAAL;AACD;AACF;;AAEDb,aAAW,GAAG;AACZ,UAAM9Q,GAAG,GAAG,KAAKmS,YAAL,CAAkB,KAAKjN,SAAvB,CAAZ;;AACA,QAAIlF,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACpC,QAAJ,EAAzB,EAAyC;AACvC,WAAK6T,aAAL;AACA,WAAKnwB,KAAL,CAAWwvB,WAAX,CAAuB9Q,GAAvB;AACA,WAAK2R,YAAL;AACD;AACF;AAED;;;;;;;AAKAuF,UAAQ,CAAC3gB,GAAD,EAAMiE,OAAN,EAAe2c,UAAf,EAA2B;AACjC,QAAIC,SAAJ;;AACA,QAAID,UAAJ,EAAgB;AACd,YAAME,QAAQ,GAAG9gB,GAAG,CAAC+gB,CAAJ,GAAQ/gB,GAAG,CAACghB,CAA7B;AACA,YAAMC,KAAK,GAAGhd,OAAO,CAAChd,IAAR,CAAa,OAAb,CAAd;AACA45B,eAAS,GAAG;AACVnxB,aAAK,EAAEuxB,KAAK,GAAGH,QAAR,GAAmB9gB,GAAG,CAACghB,CAAvB,GAA2BhhB,GAAG,CAAC+gB,CAAJ,GAAQE,KADhC;AAEVv4B,cAAM,EAAEu4B,KAAK,GAAGH,QAAR,GAAmB9gB,GAAG,CAACghB,CAAJ,GAAQC,KAA3B,GAAmCjhB,GAAG,CAAC+gB;AAFrC,OAAZ;AAID,KAPD,MAOO;AACLF,eAAS,GAAG;AACVnxB,aAAK,EAAEsQ,GAAG,CAACghB,CADD;AAEVt4B,cAAM,EAAEsX,GAAG,CAAC+gB;AAFF,OAAZ;AAID;;AAED9c,WAAO,CAACsK,GAAR,CAAYsS,SAAZ;AACD;AAED;;;;;AAGAK,UAAQ,GAAG;AACT,WAAO,KAAKvS,SAAL,CAAewS,EAAf,CAAkB,QAAlB,CAAP;AACD;AAED;;;;;AAGAnc,OAAK,GAAG;AACN;AACA;AACA,QAAI,CAAC,KAAKkc,QAAL,EAAL,EAAsB;AACpB,WAAKvS,SAAL,CAAe3J,KAAf;AACD;AACF;AAED;;;;;;AAIAhP,SAAO,GAAG;AACR,WAAOuM,GAAG,CAACvM,OAAJ,CAAY,KAAK2Y,SAAL,CAAe,CAAf,CAAZ,KAAkCpM,GAAG,CAAC5B,SAAJ,KAAkB,KAAKgO,SAAL,CAAe7nB,IAAf,EAA3D;AACD;AAED;;;;;AAGAs6B,OAAK,GAAG;AACN,SAAK9xB,OAAL,CAAamD,MAAb,CAAoB,MAApB,EAA4B8P,GAAG,CAAC5B,SAAhC;AACD;AAED;;;;;AAGA2e,kBAAgB,GAAG;AACjB,SAAK3Q,SAAL,CAAe,CAAf,EAAkBlG,SAAlB;AACD;;AAn6ByB,C;;ACnB5B;AAEe,MAAM4Y,mBAAN,CAAgB;AAC7Bj7B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKqf,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACD;;AAEDzB,YAAU,GAAG;AACX,SAAK+M,SAAL,CAAepnB,EAAf,CAAkB,OAAlB,EAA2B,KAAK+5B,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAA3B;AACD;AAED;;;;;;;AAKAD,cAAY,CAACxd,KAAD,EAAQ;AAClB,UAAM0d,aAAa,GAAG1d,KAAK,CAAC2d,aAAN,CAAoBD,aAA1C;;AACA,QAAIA,aAAa,IAAIA,aAAa,CAACE,KAA/B,IAAwCF,aAAa,CAACE,KAAd,CAAoB95B,MAAhE,EAAwE;AACtE,YAAM0K,IAAI,GAAGkvB,aAAa,CAACE,KAAd,CAAoB95B,MAApB,GAA6B,CAA7B,GAAiC45B,aAAa,CAACE,KAAd,CAAoB,CAApB,CAAjC,GAA0Dx1B,KAAK,CAAC6I,IAAN,CAAWysB,aAAa,CAACE,KAAzB,CAAvE;;AACA,UAAIpvB,IAAI,CAACqvB,IAAL,KAAc,MAAd,IAAwBrvB,IAAI,CAACkS,IAAL,CAAU3T,OAAV,CAAkB,QAAlB,MAAgC,CAAC,CAA7D,EAAgE;AAC9D;AACA,aAAKvB,OAAL,CAAamD,MAAb,CAAoB,+BAApB,EAAqD,CAACH,IAAI,CAACsvB,SAAL,EAAD,CAArD;AACA9d,aAAK,CAACE,cAAN;AAEA,aAAK1U,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,OAND,MAMO,IAAIH,IAAI,CAACqvB,IAAL,KAAc,QAAlB,EAA4B;AACjC;AACA,YAAI,KAAKryB,OAAL,CAAamD,MAAb,CAAoB,kBAApB,EAAwC+uB,aAAa,CAACK,OAAd,CAAsB,MAAtB,EAA8Bj6B,MAAtE,CAAJ,EAAmF;AACjFkc,eAAK,CAACE,cAAN;AACD,SAFD,MAEO;AACL,eAAK1U,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD;AACF;AACF;AACF;;AAlC4B,C;;ACF/B;AAEe,MAAMqvB,iBAAN,CAAe;AAC5B17B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKyyB,cAAL,GAAsBn7B,yBAAC,CAACwI,QAAD,CAAvB;AACA,SAAKsrB,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKiM,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK9c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AACA,SAAKqd,qBAAL,GAA6B,EAA7B;AAEA,SAAKC,SAAL,GAAiBr7B,yBAAC,CAAC,CACjB,6BADiB,EAEf,sCAFe,EAGjB,QAHiB,EAIjBsN,IAJiB,CAIZ,EAJY,CAAD,CAAD,CAILguB,SAJK,CAIK,KAAKxH,OAJV,CAAjB;AAKD;AAED;;;;;AAGA9Y,YAAU,GAAG;AACX,QAAI,KAAKrb,OAAL,CAAa47B,kBAAjB,EAAqC;AACnC;AACA,WAAKH,qBAAL,CAA2BI,MAA3B,GAAqCvX,CAAD,IAAO;AACzCA,SAAC,CAAC7G,cAAF;AACD,OAFD,CAFmC,CAKnC;;;AACA,WAAK+d,cAAL,GAAsB,KAAKE,SAA3B;AACA,WAAKF,cAAL,CAAoBx6B,EAApB,CAAuB,MAAvB,EAA+B,KAAKy6B,qBAAL,CAA2BI,MAA1D;AACD,KARD,MAQO;AACL,WAAKC,sBAAL;AACD;AACF;AAED;;;;;AAGAA,wBAAsB,GAAG;AACvB,QAAIvsB,UAAU,GAAGlP,yBAAC,EAAlB;AACA,UAAM07B,gBAAgB,GAAG,KAAKL,SAAL,CAAex6B,IAAf,CAAoB,wBAApB,CAAzB;;AAEA,SAAKu6B,qBAAL,CAA2BO,WAA3B,GAA0C1X,CAAD,IAAO;AAC9C,YAAM2X,UAAU,GAAG,KAAKlzB,OAAL,CAAamD,MAAb,CAAoB,sBAApB,CAAnB;AACA,YAAMgwB,aAAa,GAAG,KAAK/H,OAAL,CAAahrB,KAAb,KAAuB,CAAvB,IAA4B,KAAKgrB,OAAL,CAAahyB,MAAb,KAAwB,CAA1E;;AACA,UAAI,CAAC85B,UAAD,IAAe,CAAC1sB,UAAU,CAAClO,MAA3B,IAAqC66B,aAAzC,EAAwD;AACtD,aAAK/H,OAAL,CAAa1zB,QAAb,CAAsB,UAAtB;AACA,aAAKi7B,SAAL,CAAevyB,KAAf,CAAqB,KAAKgrB,OAAL,CAAahrB,KAAb,EAArB;AACA,aAAKuyB,SAAL,CAAev5B,MAAf,CAAsB,KAAKgyB,OAAL,CAAahyB,MAAb,EAAtB;AACA45B,wBAAgB,CAAC7jB,IAAjB,CAAsB,KAAKtW,IAAL,CAAUc,KAAV,CAAgBa,aAAtC;AACD;;AACDgM,gBAAU,GAAGA,UAAU,CAAC4sB,GAAX,CAAe7X,CAAC,CAAC3G,MAAjB,CAAb;AACD,KAVD;;AAYA,SAAK8d,qBAAL,CAA2BW,WAA3B,GAA0C9X,CAAD,IAAO;AAC9C/U,gBAAU,GAAGA,UAAU,CAAC9D,GAAX,CAAe6Y,CAAC,CAAC3G,MAAjB,CAAb,CAD8C,CAG9C;;AACA,UAAI,CAACpO,UAAU,CAAClO,MAAZ,IAAsBijB,CAAC,CAAC3G,MAAF,CAAS9M,QAAT,KAAsB,MAAhD,EAAwD;AACtDtB,kBAAU,GAAGlP,yBAAC,EAAd;AACA,aAAK8zB,OAAL,CAAakI,WAAb,CAAyB,UAAzB;AACD;AACF,KARD;;AAUA,SAAKZ,qBAAL,CAA2BI,MAA3B,GAAoC,MAAM;AACxCtsB,gBAAU,GAAGlP,yBAAC,EAAd;AACA,WAAK8zB,OAAL,CAAakI,WAAb,CAAyB,UAAzB;AACD,KAHD,CA1BuB,CA+BvB;AACA;;;AACA,SAAKb,cAAL,CAAoBx6B,EAApB,CAAuB,WAAvB,EAAoC,KAAKy6B,qBAAL,CAA2BO,WAA/D,EACGh7B,EADH,CACM,WADN,EACmB,KAAKy6B,qBAAL,CAA2BW,WAD9C,EAEGp7B,EAFH,CAEM,MAFN,EAEc,KAAKy6B,qBAAL,CAA2BI,MAFzC,EAjCuB,CAqCvB;;AACA,SAAKH,SAAL,CAAe16B,EAAf,CAAkB,WAAlB,EAA+B,MAAM;AACnC,WAAK06B,SAAL,CAAej7B,QAAf,CAAwB,OAAxB;AACAs7B,sBAAgB,CAAC7jB,IAAjB,CAAsB,KAAKtW,IAAL,CAAUc,KAAV,CAAgBc,SAAtC;AACD,KAHD,EAGGxC,EAHH,CAGM,WAHN,EAGmB,MAAM;AACvB,WAAK06B,SAAL,CAAeW,WAAf,CAA2B,OAA3B;AACAN,sBAAgB,CAAC7jB,IAAjB,CAAsB,KAAKtW,IAAL,CAAUc,KAAV,CAAgBa,aAAtC;AACD,KAND,EAtCuB,CA8CvB;;AACA,SAAKm4B,SAAL,CAAe16B,EAAf,CAAkB,MAAlB,EAA2Buc,KAAD,IAAW;AACnC,YAAM+e,YAAY,GAAG/e,KAAK,CAAC2d,aAAN,CAAoBoB,YAAzC,CADmC,CAGnC;;AACA/e,WAAK,CAACE,cAAN;;AAEA,UAAI6e,YAAY,IAAIA,YAAY,CAAC9C,KAA7B,IAAsC8C,YAAY,CAAC9C,KAAb,CAAmBn4B,MAA7D,EAAqE;AACnE,aAAK+mB,SAAL,CAAe3J,KAAf;AACA,aAAK1V,OAAL,CAAamD,MAAb,CAAoB,+BAApB,EAAqDowB,YAAY,CAAC9C,KAAlE;AACD,OAHD,MAGO;AACLn5B,iCAAC,CAACM,IAAF,CAAO27B,YAAY,CAACC,KAApB,EAA2B,CAACxtB,GAAD,EAAMkP,IAAN,KAAe;AACxC;AACA,cAAIA,IAAI,CAAC1V,WAAL,GAAmB+B,OAAnB,CAA2B,OAA3B,IAAsC,CAAC,CAA3C,EAA8C;AAC5C;AACD;;AACD,gBAAMkyB,OAAO,GAAGF,YAAY,CAAChB,OAAb,CAAqBrd,IAArB,CAAhB;;AAEA,cAAIA,IAAI,CAAC1V,WAAL,GAAmB+B,OAAnB,CAA2B,MAA3B,IAAqC,CAAC,CAA1C,EAA6C;AAC3C,iBAAKvB,OAAL,CAAamD,MAAb,CAAoB,kBAApB,EAAwCswB,OAAxC;AACD,WAFD,MAEO;AACLn8B,qCAAC,CAACm8B,OAAD,CAAD,CAAW77B,IAAX,CAAgB,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AAC7B,mBAAKhD,OAAL,CAAamD,MAAb,CAAoB,mBAApB,EAAyCH,IAAzC;AACD,aAFD;AAGD;AACF,SAdD;AAeD;AACF,KA1BD,EA0BG/K,EA1BH,CA0BM,UA1BN,EA0BkB,KA1BlB,EA/CuB,CAyEG;AAC3B;;AAEDya,SAAO,GAAG;AACR5B,UAAM,CAACC,IAAP,CAAY,KAAK2hB,qBAAjB,EAAwCt6B,OAAxC,CAAiDgM,GAAD,IAAS;AACvD,WAAKquB,cAAL,CAAoBxhB,GAApB,CAAwB7M,GAAG,CAACsvB,MAAJ,CAAW,CAAX,EAAcl0B,WAAd,EAAxB,EAAqD,KAAKkzB,qBAAL,CAA2BtuB,GAA3B,CAArD;AACD,KAFD;AAGA,SAAKsuB,qBAAL,GAA6B,EAA7B;AACD;;AAtH2B,C;;ACF9B;AACA;AAEA,IAAI1xB,UAAJ;;AACA,IAAI6I,GAAG,CAAC/I,aAAR,EAAuB;AACrBE,YAAU,GAAGD,MAAM,CAACC,UAApB;AACD;AAED;;;;;AAGe,MAAM2yB,iBAAN,CAAe;AAC5B78B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKorB,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKiM,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK6f,QAAL,GAAgB5zB,OAAO,CAACqS,UAAR,CAAmByB,OAAnC;AACA,SAAK7c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACD;;AAED48B,MAAI,GAAG;AACL,UAAMX,UAAU,GAAG,KAAKtf,WAAL,EAAnB;;AACA,QAAIsf,UAAU,IAAIrpB,GAAG,CAAC/I,aAAtB,EAAqC;AACnC,WAAK8yB,QAAL,CAAcj8B,IAAd,CAAmB,UAAnB,EAA+Bm8B,IAA/B;AACD;AACF;AAED;;;;;AAGAlgB,aAAW,GAAG;AACZ,WAAO,KAAKwX,OAAL,CAAazjB,QAAb,CAAsB,UAAtB,CAAP;AACD;AAED;;;;;AAGAosB,QAAM,GAAG;AACP,QAAI,KAAKngB,WAAL,EAAJ,EAAwB;AACtB,WAAKogB,UAAL;AACD,KAFD,MAEO;AACL,WAAKC,QAAL;AACD;;AACD,SAAKj0B,OAAL,CAAa2T,YAAb,CAA0B,kBAA1B;AACD;AAED;;;;;;;AAKAugB,QAAM,CAACrkB,KAAD,EAAQ;AACZ,QAAI,KAAK5Y,OAAL,CAAak9B,cAAjB,EAAiC;AAC/B;AACAtkB,WAAK,GAAGA,KAAK,CAACJ,OAAN,CAAc,KAAKxY,OAAL,CAAam9B,mBAA3B,EAAgD,EAAhD,CAAR,CAF+B,CAG/B;;AACA,UAAI,KAAKn9B,OAAL,CAAao9B,oBAAjB,EAAuC;AACrC,cAAMC,SAAS,GAAG,KAAKr9B,OAAL,CAAas9B,0BAAb,CAAwCha,MAAxC,CAA+C,KAAKtjB,OAAL,CAAau9B,8BAA5D,CAAlB;AACA3kB,aAAK,GAAGA,KAAK,CAACJ,OAAN,CAAc,mCAAd,EAAmD,UAASglB,GAAT,EAAc;AACvE;AACA,cAAI,uDAAuDj0B,IAAvD,CAA4Di0B,GAA5D,CAAJ,EAAsE;AACpE,mBAAO,EAAP;AACD;;AACD,eAAK,MAAMtE,GAAX,IAAkBmE,SAAlB,EAA6B;AAC3B;AACA,gBAAK,IAAII,MAAJ,CAAW,wBAAwBvE,GAAG,CAAC1gB,OAAJ,CAAY,wBAAZ,EAAsC,MAAtC,CAAxB,GAAwE,SAAnF,CAAD,CAAgGjP,IAAhG,CAAqGi0B,GAArG,CAAJ,EAA+G;AAC7G,qBAAOA,GAAP;AACD;AACF;;AACD,iBAAO,EAAP;AACD,SAZO,CAAR;AAaD;AACF;;AACD,WAAO5kB,KAAP;AACD;AAED;;;;;AAGAokB,UAAQ,GAAG;AACT,SAAKL,QAAL,CAAc7jB,GAAd,CAAkBkD,GAAG,CAACzb,IAAJ,CAAS,KAAK6nB,SAAd,EAAyB,KAAKpoB,OAAL,CAAa09B,YAAtC,CAAlB;AACA,SAAKf,QAAL,CAAcx6B,MAAd,CAAqB,KAAKimB,SAAL,CAAejmB,MAAf,EAArB;AAEA,SAAK4G,OAAL,CAAamD,MAAb,CAAoB,wBAApB,EAA8C,IAA9C;AACA,SAAKioB,OAAL,CAAa1zB,QAAb,CAAsB,UAAtB;AACA,SAAKk8B,QAAL,CAAcle,KAAd,GANS,CAQT;;AACA,QAAI7L,GAAG,CAAC/I,aAAR,EAAuB;AACrB,YAAM8zB,QAAQ,GAAG5zB,UAAU,CAAC6zB,YAAX,CAAwB,KAAKjB,QAAL,CAAc,CAAd,CAAxB,EAA0C,KAAK38B,OAAL,CAAa69B,UAAvD,CAAjB,CADqB,CAGrB;;AACA,UAAI,KAAK79B,OAAL,CAAa69B,UAAb,CAAwBC,IAA5B,EAAkC;AAChC,cAAMC,MAAM,GAAG,IAAIh0B,UAAU,CAACi0B,UAAf,CAA0B,KAAKh+B,OAAL,CAAa69B,UAAb,CAAwBC,IAAlD,CAAf;AACAH,gBAAQ,CAACM,UAAT,GAAsBF,MAAtB;AACAJ,gBAAQ,CAAC38B,EAAT,CAAY,gBAAZ,EAA+Bk9B,EAAD,IAAQ;AACpCH,gBAAM,CAACI,cAAP,CAAsBD,EAAtB;AACD,SAFD;AAGD;;AAEDP,cAAQ,CAAC38B,EAAT,CAAY,MAAZ,EAAqBuc,KAAD,IAAW;AAC7B,aAAKxU,OAAL,CAAa2T,YAAb,CAA0B,eAA1B,EAA2CihB,QAAQ,CAACS,QAAT,EAA3C,EAAgE7gB,KAAhE;AACD,OAFD;AAGAogB,cAAQ,CAAC38B,EAAT,CAAY,QAAZ,EAAuBuc,KAAD,IAAW;AAC/B,aAAKxU,OAAL,CAAa2T,YAAb,CAA0B,iBAA1B,EAA6CihB,QAAQ,CAACS,QAAT,EAA7C,EAAkET,QAAlE;AACD,OAFD,EAfqB,CAmBrB;;AACAA,cAAQ,CAACU,OAAT,CAAiB,IAAjB,EAAuB,KAAKjW,SAAL,CAAe1O,WAAf,EAAvB;AACA,WAAKijB,QAAL,CAAcj8B,IAAd,CAAmB,UAAnB,EAA+Bi9B,QAA/B;AACD,KAtBD,MAsBO;AACL,WAAKhB,QAAL,CAAc37B,EAAd,CAAiB,MAAjB,EAA0Buc,KAAD,IAAW;AAClC,aAAKxU,OAAL,CAAa2T,YAAb,CAA0B,eAA1B,EAA2C,KAAKigB,QAAL,CAAc7jB,GAAd,EAA3C,EAAgEyE,KAAhE;AACD,OAFD;AAGA,WAAKof,QAAL,CAAc37B,EAAd,CAAiB,OAAjB,EAA2Buc,KAAD,IAAW;AACnC,aAAKxU,OAAL,CAAa2T,YAAb,CAA0B,iBAA1B,EAA6C,KAAKigB,QAAL,CAAc7jB,GAAd,EAA7C,EAAkE,KAAK6jB,QAAvE;AACD,OAFD;AAGD;AACF;AAED;;;;;AAGAI,YAAU,GAAG;AACX;AACA,QAAInqB,GAAG,CAAC/I,aAAR,EAAuB;AACrB,YAAM8zB,QAAQ,GAAG,KAAKhB,QAAL,CAAcj8B,IAAd,CAAmB,UAAnB,CAAjB;AACA,WAAKi8B,QAAL,CAAc7jB,GAAd,CAAkB6kB,QAAQ,CAACS,QAAT,EAAlB;AACAT,cAAQ,CAACW,UAAT;AACD;;AAED,UAAM1lB,KAAK,GAAG,KAAKqkB,MAAL,CAAYjhB,GAAG,CAACpD,KAAJ,CAAU,KAAK+jB,QAAf,EAAyB,KAAK38B,OAAL,CAAa09B,YAAtC,KAAuD1hB,GAAG,CAAC5B,SAAvE,CAAd;AACA,UAAMmkB,QAAQ,GAAG,KAAKnW,SAAL,CAAe7nB,IAAf,OAA0BqY,KAA3C;AAEA,SAAKwP,SAAL,CAAe7nB,IAAf,CAAoBqY,KAApB;AACA,SAAKwP,SAAL,CAAejmB,MAAf,CAAsB,KAAKnC,OAAL,CAAamC,MAAb,GAAsB,KAAKw6B,QAAL,CAAcx6B,MAAd,EAAtB,GAA+C,MAArE;AACA,SAAKgyB,OAAL,CAAakI,WAAb,CAAyB,UAAzB;;AAEA,QAAIkC,QAAJ,EAAc;AACZ,WAAKx1B,OAAL,CAAa2T,YAAb,CAA0B,QAA1B,EAAoC,KAAK0L,SAAL,CAAe7nB,IAAf,EAApC,EAA2D,KAAK6nB,SAAhE;AACD;;AAED,SAAKA,SAAL,CAAe3J,KAAf;AAEA,SAAK1V,OAAL,CAAamD,MAAb,CAAoB,wBAApB,EAA8C,KAA9C;AACD;;AAEDuP,SAAO,GAAG;AACR,QAAI,KAAKkB,WAAL,EAAJ,EAAwB;AACtB,WAAKogB,UAAL;AACD;AACF;;AA5I2B,C;;ACX9B;AACA,MAAMyB,gBAAgB,GAAG,EAAzB;AAEe,MAAMC,mBAAN,CAAgB;AAC7B5+B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAK6D,SAAL,GAAiBvM,yBAAC,CAACwI,QAAD,CAAlB;AACA,SAAK61B,UAAL,GAAkB31B,OAAO,CAACqS,UAAR,CAAmBujB,SAArC;AACA,SAAKvW,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK9c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACD;;AAEDqb,YAAU,GAAG;AACX,QAAI,KAAKrb,OAAL,CAAa03B,OAAb,IAAwB,KAAK13B,OAAL,CAAa4+B,mBAAzC,EAA8D;AAC5D,WAAKnjB,OAAL;AACA;AACD;;AAED,SAAKijB,UAAL,CAAgB19B,EAAhB,CAAmB,WAAnB,EAAiCuc,KAAD,IAAW;AACzCA,WAAK,CAACE,cAAN;AACAF,WAAK,CAACshB,eAAN;AAEA,YAAMC,WAAW,GAAG,KAAK1W,SAAL,CAAepT,MAAf,GAAwBnI,GAAxB,GAA8B,KAAKD,SAAL,CAAeE,SAAf,EAAlD;;AACA,YAAMiyB,WAAW,GAAIxhB,KAAD,IAAW;AAC7B,YAAIpb,MAAM,GAAGob,KAAK,CAACyhB,OAAN,IAAiBF,WAAW,GAAGN,gBAA/B,CAAb;AAEAr8B,cAAM,GAAI,KAAKnC,OAAL,CAAai/B,SAAb,GAAyB,CAA1B,GAA+B7d,IAAI,CAAC8d,GAAL,CAAS/8B,MAAT,EAAiB,KAAKnC,OAAL,CAAai/B,SAA9B,CAA/B,GAA0E98B,MAAnF;AACAA,cAAM,GAAI,KAAKnC,OAAL,CAAa43B,SAAb,GAAyB,CAA1B,GAA+BxW,IAAI,CAACC,GAAL,CAASlf,MAAT,EAAiB,KAAKnC,OAAL,CAAa43B,SAA9B,CAA/B,GAA0Ez1B,MAAnF;AAEA,aAAKimB,SAAL,CAAejmB,MAAf,CAAsBA,MAAtB;AACD,OAPD;;AASA,WAAKyK,SAAL,CAAe5L,EAAf,CAAkB,WAAlB,EAA+B+9B,WAA/B,EAA4CjX,GAA5C,CAAgD,SAAhD,EAA2D,MAAM;AAC/D,aAAKlb,SAAL,CAAeoN,GAAf,CAAmB,WAAnB,EAAgC+kB,WAAhC;AACD,OAFD;AAGD,KAjBD;AAkBD;;AAEDtjB,SAAO,GAAG;AACR,SAAKijB,UAAL,CAAgB1kB,GAAhB;AACA,SAAK0kB,UAAL,CAAgBj+B,QAAhB,CAAyB,QAAzB;AACD;;AArC4B,C;;ACH/B;AAEe,MAAM0+B,qBAAN,CAAiB;AAC9Bt/B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKorB,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKijB,QAAL,GAAgBr2B,OAAO,CAACqS,UAAR,CAAmBikB,OAAnC;AACA,SAAKjX,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK6f,QAAL,GAAgB5zB,OAAO,CAACqS,UAAR,CAAmByB,OAAnC;AAEA,SAAKyiB,OAAL,GAAej/B,yBAAC,CAACyJ,MAAD,CAAhB;AACA,SAAKy1B,UAAL,GAAkBl/B,yBAAC,CAAC,YAAD,CAAnB;;AAEA,SAAKm/B,QAAL,GAAgB,MAAM;AACpB,WAAKpF,QAAL,CAAc;AACZqF,SAAC,EAAE,KAAKH,OAAL,CAAan9B,MAAb,KAAwB,KAAKi9B,QAAL,CAAc1lB,WAAd;AADf,OAAd;AAGD,KAJD;AAKD;;AAED0gB,UAAQ,CAAC53B,IAAD,EAAO;AACb,SAAK4lB,SAAL,CAAeJ,GAAf,CAAmB,QAAnB,EAA6BxlB,IAAI,CAACi9B,CAAlC;AACA,SAAK9C,QAAL,CAAc3U,GAAd,CAAkB,QAAlB,EAA4BxlB,IAAI,CAACi9B,CAAjC;;AACA,QAAI,KAAK9C,QAAL,CAAcj8B,IAAd,CAAmB,UAAnB,CAAJ,EAAoC;AAClC,WAAKi8B,QAAL,CAAcj8B,IAAd,CAAmB,UAAnB,EAA+Bg/B,OAA/B,CAAuC,IAAvC,EAA6Cl9B,IAAI,CAACi9B,CAAlD;AACD;AACF;AAED;;;;;AAGA3C,QAAM,GAAG;AACP,SAAK3I,OAAL,CAAagD,WAAb,CAAyB,YAAzB;;AACA,QAAI,KAAKwI,YAAL,EAAJ,EAAyB;AACvB,WAAKvX,SAAL,CAAe1nB,IAAf,CAAoB,WAApB,EAAiC,KAAK0nB,SAAL,CAAeJ,GAAf,CAAmB,QAAnB,CAAjC;AACA,WAAKI,SAAL,CAAe1nB,IAAf,CAAoB,cAApB,EAAoC,KAAK0nB,SAAL,CAAeJ,GAAf,CAAmB,WAAnB,CAApC;AACA,WAAKI,SAAL,CAAeJ,GAAf,CAAmB,WAAnB,EAAgC,EAAhC;AACA,WAAKsX,OAAL,CAAat+B,EAAb,CAAgB,QAAhB,EAA0B,KAAKw+B,QAA/B,EAAyCtiB,OAAzC,CAAiD,QAAjD;AACA,WAAKqiB,UAAL,CAAgBvX,GAAhB,CAAoB,UAApB,EAAgC,QAAhC;AACD,KAND,MAMO;AACL,WAAKsX,OAAL,CAAatlB,GAAb,CAAiB,QAAjB,EAA2B,KAAKwlB,QAAhC;AACA,WAAKpF,QAAL,CAAc;AAAEqF,SAAC,EAAE,KAAKrX,SAAL,CAAe1nB,IAAf,CAAoB,WAApB;AAAL,OAAd;AACA,WAAK0nB,SAAL,CAAeJ,GAAf,CAAmB,WAAnB,EAAgC,KAAKI,SAAL,CAAeJ,GAAf,CAAmB,cAAnB,CAAhC;AACA,WAAKuX,UAAL,CAAgBvX,GAAhB,CAAoB,UAApB,EAAgC,SAAhC;AACD;;AAED,SAAKjf,OAAL,CAAamD,MAAb,CAAoB,0BAApB,EAAgD,KAAKyzB,YAAL,EAAhD;AACD;;AAEDA,cAAY,GAAG;AACb,WAAO,KAAKxL,OAAL,CAAazjB,QAAb,CAAsB,YAAtB,CAAP;AACD;;AAlD6B,C;;ACFhC;AACA;AAEe,MAAMkvB,aAAN,CAAa;AAC1B//B,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAK6D,SAAL,GAAiBvM,yBAAC,CAACwI,QAAD,CAAlB;AACA,SAAKg3B,YAAL,GAAoB92B,OAAO,CAACqS,UAAR,CAAmB0kB,WAAvC;AACA,SAAK9/B,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AAEA,SAAKxE,MAAL,GAAc;AACZ,8BAAwB,CAACmmB,EAAD,EAAKzb,CAAL,KAAW;AACjC,YAAI,KAAK0b,MAAL,CAAY1b,CAAC,CAAC3G,MAAd,EAAsB2G,CAAtB,CAAJ,EAA8B;AAC5BA,WAAC,CAAC7G,cAAF;AACD;AACF,OALW;AAMZ,sFAAgF,MAAM;AACpF,aAAKuiB,MAAL;AACD,OARW;AASZ,4CAAsC,MAAM;AAC1C,aAAKxkB,IAAL;AACD,OAXW;AAYZ,qCAA+B,MAAM;AACnC,aAAKwkB,MAAL;AACD;AAdW,KAAd;AAgBD;;AAED3kB,YAAU,GAAG;AACX,SAAK4kB,OAAL,GAAe5/B,yBAAC,CAAC,CACf,2BADe,EAEb,sCAFa,EAGX,+CAHW,EAIX,yDAJW,EAKX,yDALW,EAMX,yDANW,EAOX,cAPW,EAQR,KAAKL,OAAL,CAAakgC,kBAAb,GAAkC,qBAAlC,GAA0D,qBARlD,EASX,0BATW,EAUV,KAAKlgC,OAAL,CAAakgC,kBAAb,GAAkC,EAAlC,GAAuC,iDAV7B,EAWb,QAXa,EAYf,QAZe,EAafvyB,IAbe,CAaV,EAbU,CAAD,CAAD,CAaHguB,SAbG,CAaO,KAAKkE,YAbZ,CAAf;AAeA,SAAKI,OAAL,CAAaj/B,EAAb,CAAgB,WAAhB,EAA8Buc,KAAD,IAAW;AACtC,UAAIvB,GAAG,CAACrL,eAAJ,CAAoB4M,KAAK,CAACI,MAA1B,CAAJ,EAAuC;AACrCJ,aAAK,CAACE,cAAN;AACAF,aAAK,CAACshB,eAAN;AAEA,cAAMnhB,OAAO,GAAG,KAAKuiB,OAAL,CAAa/+B,IAAb,CAAkB,yBAAlB,EAA6CR,IAA7C,CAAkD,QAAlD,CAAhB;AACA,cAAMy/B,QAAQ,GAAGziB,OAAO,CAAC1I,MAAR,EAAjB;AACA,cAAMlI,SAAS,GAAG,KAAKF,SAAL,CAAeE,SAAf,EAAlB;;AAEA,cAAMiyB,WAAW,GAAIxhB,KAAD,IAAW;AAC7B,eAAKxU,OAAL,CAAamD,MAAb,CAAoB,iBAApB,EAAuC;AACrCuuB,aAAC,EAAEld,KAAK,CAAC6iB,OAAN,GAAgBD,QAAQ,CAAC/5B,IADS;AAErCo0B,aAAC,EAAEjd,KAAK,CAACyhB,OAAN,IAAiBmB,QAAQ,CAACtzB,GAAT,GAAeC,SAAhC;AAFkC,WAAvC,EAGG4Q,OAHH,EAGY,CAACH,KAAK,CAAC2a,QAHnB;AAKA,eAAK8H,MAAL,CAAYtiB,OAAO,CAAC,CAAD,CAAnB,EAAwBH,KAAxB;AACD,SAPD;;AASA,aAAK3Q,SAAL,CACG5L,EADH,CACM,WADN,EACmB+9B,WADnB,EAEGjX,GAFH,CAEO,SAFP,EAEmBxD,CAAD,IAAO;AACrBA,WAAC,CAAC7G,cAAF;AACA,eAAK7Q,SAAL,CAAeoN,GAAf,CAAmB,WAAnB,EAAgC+kB,WAAhC;AACA,eAAKh2B,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,SANH;;AAQA,YAAI,CAACwR,OAAO,CAAChd,IAAR,CAAa,OAAb,CAAL,EAA4B;AAAE;AAC5Bgd,iBAAO,CAAChd,IAAR,CAAa,OAAb,EAAsBgd,OAAO,CAACvb,MAAR,KAAmBub,OAAO,CAACvU,KAAR,EAAzC;AACD;AACF;AACF,KA9BD,EAhBW,CAgDX;;AACA,SAAK82B,OAAL,CAAaj/B,EAAb,CAAgB,OAAhB,EAA0BsjB,CAAD,IAAO;AAC9BA,OAAC,CAAC7G,cAAF;AACA,WAAKuiB,MAAL;AACD,KAHD;AAID;;AAEDvkB,SAAO,GAAG;AACR,SAAKwkB,OAAL,CAAap8B,MAAb;AACD;;AAEDm8B,QAAM,CAACriB,MAAD,EAASJ,KAAT,EAAgB;AACpB,QAAI,KAAKxU,OAAL,CAAa+S,UAAb,EAAJ,EAA+B;AAC7B,aAAO,KAAP;AACD;;AAED,UAAMukB,OAAO,GAAGrkB,GAAG,CAACnB,KAAJ,CAAU8C,MAAV,CAAhB;AACA,UAAM2iB,UAAU,GAAG,KAAKL,OAAL,CAAa/+B,IAAb,CAAkB,yBAAlB,CAAnB;AAEA,SAAK6H,OAAL,CAAamD,MAAb,CAAoB,qBAApB,EAA2CyR,MAA3C,EAAmDJ,KAAnD;;AAEA,QAAI8iB,OAAJ,EAAa;AACX,YAAMhH,MAAM,GAAGh5B,yBAAC,CAACsd,MAAD,CAAhB;AACA,YAAMvI,QAAQ,GAAGikB,MAAM,CAACjkB,QAAP,EAAjB;AACA,YAAMqE,GAAG,GAAG;AACVrT,YAAI,EAAEgP,QAAQ,CAAChP,IAAT,GAAgBojB,QAAQ,CAAC6P,MAAM,CAACrR,GAAP,CAAW,YAAX,CAAD,EAA2B,EAA3B,CADpB;AAEVnb,WAAG,EAAEuI,QAAQ,CAACvI,GAAT,GAAe2c,QAAQ,CAAC6P,MAAM,CAACrR,GAAP,CAAW,WAAX,CAAD,EAA0B,EAA1B;AAFlB,OAAZ,CAHW,CAQX;;AACA,YAAMsS,SAAS,GAAG;AAChBiG,SAAC,EAAElH,MAAM,CAAC1B,UAAP,CAAkB,KAAlB,CADa;AAEhB8H,SAAC,EAAEpG,MAAM,CAAC3f,WAAP,CAAmB,KAAnB;AAFa,OAAlB;AAKA4mB,gBAAU,CAACtY,GAAX,CAAe;AACbC,eAAO,EAAE,OADI;AAEb7hB,YAAI,EAAEqT,GAAG,CAACrT,IAFG;AAGbyG,WAAG,EAAE4M,GAAG,CAAC5M,GAHI;AAIb1D,aAAK,EAAEmxB,SAAS,CAACiG,CAJJ;AAKbp+B,cAAM,EAAEm4B,SAAS,CAACmF;AALL,OAAf,EAMG/+B,IANH,CAMQ,QANR,EAMkB24B,MANlB,EAdW,CAoBgB;;AAE3B,YAAMmH,YAAY,GAAG,IAAIC,KAAJ,EAArB;AACAD,kBAAY,CAACtH,GAAb,GAAmBG,MAAM,CAACv4B,IAAP,CAAY,KAAZ,CAAnB;AAEA,YAAM4/B,UAAU,GAAGpG,SAAS,CAACiG,CAAV,GAAc,GAAd,GAAoBjG,SAAS,CAACmF,CAA9B,GAAkC,IAAlC,GAAyC,KAAK79B,IAAL,CAAUc,KAAV,CAAgBoB,QAAzD,GAAoE,IAApE,GAA2E08B,YAAY,CAACr3B,KAAxF,GAAgG,GAAhG,GAAsGq3B,YAAY,CAACr+B,MAAnH,GAA4H,GAA/I;AACAm+B,gBAAU,CAACp/B,IAAX,CAAgB,8BAAhB,EAAgDgX,IAAhD,CAAqDwoB,UAArD;AACA,WAAK33B,OAAL,CAAamD,MAAb,CAAoB,mBAApB,EAAyCyR,MAAzC;AACD,KA5BD,MA4BO;AACL,WAAKnC,IAAL;AACD;;AAED,WAAO6kB,OAAP;AACD;AAED;;;;;;;AAKA7kB,MAAI,GAAG;AACL,SAAKzS,OAAL,CAAamD,MAAb,CAAoB,oBAApB;AACA,SAAK+zB,OAAL,CAAalgC,QAAb,GAAwByb,IAAxB;AACD;;AA1IyB,C;;ACH5B;AACA;AACA;AAEA,MAAMmlB,aAAa,GAAG,SAAtB;AACA,MAAMC,WAAW,GAAG,gFAApB;AAEe,MAAMC,iBAAN,CAAe;AAC5BhhC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAK6Q,MAAL,GAAc;AACZ,0BAAoB,CAACmmB,EAAD,EAAKzb,CAAL,KAAW;AAC7B,YAAI,CAACA,CAAC,CAAC+S,kBAAF,EAAL,EAA6B;AAC3B,eAAKyJ,WAAL,CAAiBxc,CAAjB;AACD;AACF,OALW;AAMZ,4BAAsB,CAACyb,EAAD,EAAKzb,CAAL,KAAW;AAC/B,aAAKyc,aAAL,CAAmBzc,CAAnB;AACD;AARW,KAAd;AAUD;;AAEDjJ,YAAU,GAAG;AACX,SAAK2lB,aAAL,GAAqB,IAArB;AACD;;AAEDvlB,SAAO,GAAG;AACR,SAAKulB,aAAL,GAAqB,IAArB;AACD;;AAEDxoB,SAAO,GAAG;AACR,QAAI,CAAC,KAAKwoB,aAAV,EAAyB;AACvB;AACD;;AAED,UAAMC,OAAO,GAAG,KAAKD,aAAL,CAAmBrd,QAAnB,EAAhB;AACA,UAAM1K,KAAK,GAAGgoB,OAAO,CAAChoB,KAAR,CAAc2nB,WAAd,CAAd;;AAEA,QAAI3nB,KAAK,KAAKA,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAtB,CAAT,EAAqC;AACnC,YAAM/U,IAAI,GAAG+U,KAAK,CAAC,CAAD,CAAL,GAAWgoB,OAAX,GAAqBN,aAAa,GAAGM,OAAlD;AACA,YAAMC,OAAO,GAAGD,OAAO,CAACzoB,OAAR,CAAgB,uDAAhB,EAAyE,EAAzE,EAA6EjL,KAA7E,CAAmF,GAAnF,EAAwF,CAAxF,CAAhB;AACA,YAAMkD,IAAI,GAAGpQ,yBAAC,CAAC,OAAD,CAAD,CAAWE,IAAX,CAAgB2gC,OAAhB,EAAyBpgC,IAAzB,CAA8B,MAA9B,EAAsCoD,IAAtC,EAA4C,CAA5C,CAAb;;AACA,UAAI,KAAK6E,OAAL,CAAa/I,OAAb,CAAqBmhC,eAAzB,EAA0C;AACxC9gC,iCAAC,CAACoQ,IAAD,CAAD,CAAQ3P,IAAR,CAAa,QAAb,EAAuB,QAAvB;AACD;;AAED,WAAKkgC,aAAL,CAAmBxd,UAAnB,CAA8B/S,IAA9B;AACA,WAAKuwB,aAAL,GAAqB,IAArB;AACA,WAAKj4B,OAAL,CAAamD,MAAb,CAAoB,cAApB;AACD;AACF;;AAED60B,eAAa,CAACzc,CAAD,EAAI;AACf,QAAI3e,KAAK,CAACuJ,QAAN,CAAe,CAAC/B,QAAG,CAAC4O,IAAJ,CAASkK,KAAV,EAAiB9Y,QAAG,CAAC4O,IAAJ,CAASmK,KAA1B,CAAf,EAAiD5B,CAAC,CAACwB,OAAnD,CAAJ,EAAiE;AAC/D,YAAMsb,SAAS,GAAG,KAAKr4B,OAAL,CAAamD,MAAb,CAAoB,oBAApB,EAA0C0X,YAA1C,EAAlB;AACA,WAAKod,aAAL,GAAqBI,SAArB;AACD;AACF;;AAEDN,aAAW,CAACxc,CAAD,EAAI;AACb,QAAI3e,KAAK,CAACuJ,QAAN,CAAe,CAAC/B,QAAG,CAAC4O,IAAJ,CAASkK,KAAV,EAAiB9Y,QAAG,CAAC4O,IAAJ,CAASmK,KAA1B,CAAf,EAAiD5B,CAAC,CAACwB,OAAnD,CAAJ,EAAiE;AAC/D,WAAKtN,OAAL;AACD;AACF;;AAxD2B,C;;ACP9B;AAEA;;;;AAGe,MAAM6oB,iBAAN,CAAe;AAC5BxhC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKiS,KAAL,GAAajS,OAAO,CAACqS,UAAR,CAAmBmD,IAAhC;AACA,SAAK3E,MAAL,GAAc;AACZ,2BAAqB,MAAM;AACzB,aAAKoB,KAAL,CAAWlC,GAAX,CAAe/P,OAAO,CAACmD,MAAR,CAAe,MAAf,CAAf;AACD;AAHW,KAAd;AAKD;;AAEDiR,kBAAgB,GAAG;AACjB,WAAOnB,GAAG,CAACrD,UAAJ,CAAe,KAAKqC,KAAL,CAAW,CAAX,CAAf,CAAP;AACD;;AAZ2B,C;;ACL9B;AACA;AACA;AAEe,MAAMsmB,uBAAN,CAAkB;AAC/BzhC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAK/I,OAAL,GAAe+I,OAAO,CAAC/I,OAAR,CAAgBwY,OAAhB,IAA2B,EAA1C;AAEA,SAAKsB,IAAL,GAAY,CAAC3M,QAAG,CAAC4O,IAAJ,CAASkK,KAAV,EAAiB9Y,QAAG,CAAC4O,IAAJ,CAASmK,KAA1B,EAAiC/Y,QAAG,CAAC4O,IAAJ,CAASwlB,MAA1C,EAAkDp0B,QAAG,CAAC4O,IAAJ,CAASylB,KAA3D,EAAkEr0B,QAAG,CAAC4O,IAAJ,CAAS0lB,SAA3E,EAAsFt0B,QAAG,CAAC4O,IAAJ,CAAS2lB,KAA/F,CAAZ;AACA,SAAKC,mBAAL,GAA2B,IAA3B;AAEA,SAAK/nB,MAAL,GAAc;AACZ,0BAAoB,CAACmmB,EAAD,EAAKzb,CAAL,KAAW;AAC7B,YAAI,CAACA,CAAC,CAAC+S,kBAAF,EAAL,EAA6B;AAC3B,eAAKyJ,WAAL,CAAiBxc,CAAjB;AACD;AACF,OALW;AAMZ,4BAAsB,CAACyb,EAAD,EAAKzb,CAAL,KAAW;AAC/B,aAAKyc,aAAL,CAAmBzc,CAAnB;AACD;AARW,KAAd;AAUD;;AAEDnH,kBAAgB,GAAG;AACjB,WAAO,CAAC,CAAC,KAAKnd,OAAL,CAAaiZ,KAAtB;AACD;;AAEDoC,YAAU,GAAG;AACX,SAAKumB,QAAL,GAAgB,IAAhB;AACD;;AAEDnmB,SAAO,GAAG;AACR,SAAKmmB,QAAL,GAAgB,IAAhB;AACD;;AAEDppB,SAAO,GAAG;AACR,QAAI,CAAC,KAAKopB,QAAV,EAAoB;AAClB;AACD;;AAED,UAAM51B,IAAI,GAAG,IAAb;AACA,UAAMi1B,OAAO,GAAG,KAAKW,QAAL,CAAcje,QAAd,EAAhB;AACA,SAAK3jB,OAAL,CAAaiZ,KAAb,CAAmBgoB,OAAnB,EAA4B,UAAShoB,KAAT,EAAgB;AAC1C,UAAIA,KAAJ,EAAW;AACT,YAAIxI,IAAI,GAAG,EAAX;;AAEA,YAAI,OAAOwI,KAAP,KAAiB,QAArB,EAA+B;AAC7BxI,cAAI,GAAGuL,GAAG,CAAC/D,UAAJ,CAAegB,KAAf,CAAP;AACD,SAFD,MAEO,IAAIA,KAAK,YAAY4oB,MAArB,EAA6B;AAClCpxB,cAAI,GAAGwI,KAAK,CAAC,CAAD,CAAZ;AACD,SAFM,MAEA,IAAIA,KAAK,YAAY6oB,IAArB,EAA2B;AAChCrxB,cAAI,GAAGwI,KAAP;AACD;;AAED,YAAI,CAACxI,IAAL,EAAW;AACXzE,YAAI,CAAC41B,QAAL,CAAcpe,UAAd,CAAyB/S,IAAzB;AACAzE,YAAI,CAAC41B,QAAL,GAAgB,IAAhB;AACA51B,YAAI,CAACjD,OAAL,CAAamD,MAAb,CAAoB,cAApB;AACD;AACF,KAjBD;AAkBD;;AAED60B,eAAa,CAACzc,CAAD,EAAI;AACf;AACA;AACA,QAAI,KAAKqd,mBAAL,IAA4Bh8B,KAAK,CAACuJ,QAAN,CAAe,KAAK4K,IAApB,EAA0B,KAAK6nB,mBAA/B,CAAhC,EAAqF;AACnF,WAAKA,mBAAL,GAA2Brd,CAAC,CAACwB,OAA7B;AACA;AACD;;AAED,QAAIngB,KAAK,CAACuJ,QAAN,CAAe,KAAK4K,IAApB,EAA0BwK,CAAC,CAACwB,OAA5B,CAAJ,EAA0C;AACxC,YAAMsb,SAAS,GAAG,KAAKr4B,OAAL,CAAamD,MAAb,CAAoB,oBAApB,EAA0C0X,YAA1C,EAAlB;AACA,WAAKge,QAAL,GAAgBR,SAAhB;AACD;;AACD,SAAKO,mBAAL,GAA2Brd,CAAC,CAACwB,OAA7B;AACD;;AAEDgb,aAAW,CAACxc,CAAD,EAAI;AACb,QAAI3e,KAAK,CAACuJ,QAAN,CAAe,KAAK4K,IAApB,EAA0BwK,CAAC,CAACwB,OAA5B,CAAJ,EAA0C;AACxC,WAAKtN,OAAL;AACD;AACF;;AA9E8B,C;;ACJjC;AACe,MAAMupB,uBAAN,CAAkB;AAC/BliC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAK82B,YAAL,GAAoB92B,OAAO,CAACqS,UAAR,CAAmB0kB,WAAvC;AACA,SAAK9/B,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;;AAEA,QAAI,KAAKA,OAAL,CAAagiC,kBAAb,KAAoC,IAAxC,EAA8C;AAC5C;AACA,WAAKhiC,OAAL,CAAauZ,WAAb,GAA2B,KAAKxQ,OAAL,CAAaiS,KAAb,CAAmBla,IAAnB,CAAwB,aAAxB,KAA0C,KAAKd,OAAL,CAAauZ,WAAlF;AACD;;AAED,SAAKK,MAAL,GAAc;AACZ,2CAAqC,MAAM;AACzC,aAAKomB,MAAL;AACD,OAHW;AAIZ,qCAA+B,MAAM;AACnC,aAAKA,MAAL;AACD;AANW,KAAd;AAQD;;AAED7iB,kBAAgB,GAAG;AACjB,WAAO,CAAC,CAAC,KAAKnd,OAAL,CAAauZ,WAAtB;AACD;;AAED8B,YAAU,GAAG;AACX,SAAK7B,YAAL,GAAoBnZ,yBAAC,CAAC,gCAAD,CAArB;AACA,SAAKmZ,YAAL,CAAkBxY,EAAlB,CAAqB,OAArB,EAA8B,MAAM;AAClC,WAAK+H,OAAL,CAAamD,MAAb,CAAoB,OAApB;AACD,KAFD,EAEG3L,IAFH,CAEQ,KAAKP,OAAL,CAAauZ,WAFrB,EAEkCoiB,SAFlC,CAE4C,KAAKkE,YAFjD;AAIA,SAAKG,MAAL;AACD;;AAEDvkB,SAAO,GAAG;AACR,SAAKjC,YAAL,CAAkB3V,MAAlB;AACD;;AAEDm8B,QAAM,GAAG;AACP,UAAMiC,MAAM,GAAG,CAAC,KAAKl5B,OAAL,CAAamD,MAAb,CAAoB,sBAApB,CAAD,IAAgD,KAAKnD,OAAL,CAAamD,MAAb,CAAoB,gBAApB,CAA/D;AACA,SAAKsN,YAAL,CAAkBsjB,MAAlB,CAAyBmF,MAAzB;AACD;;AA1C8B,C;;ACDjC;AACA;AACA;AACA;AAEe,MAAMC,eAAN,CAAc;AAC3BriC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKlS,OAAL,GAAeA,OAAf;AACA,SAAKq2B,QAAL,GAAgBr2B,OAAO,CAACqS,UAAR,CAAmBikB,OAAnC;AACA,SAAKr/B,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AACA,SAAK+jB,cAAL,GAAsBt0B,IAAI,CAACZ,YAAL,CACpB,KAAKjN,OAAL,CAAa83B,MAAb,CAAoBllB,GAAG,CAACxI,KAAJ,GAAY,KAAZ,GAAoB,IAAxC,CADoB,CAAtB;AAGD;;AAEDg4B,mBAAiB,CAACC,YAAD,EAAe;AAC9B,QAAIn7B,QAAQ,GAAG,KAAKi7B,cAAL,CAAoBE,YAApB,CAAf;;AACA,QAAI,CAAC,KAAKriC,OAAL,CAAamH,SAAd,IAA2B,CAACD,QAAhC,EAA0C;AACxC,aAAO,EAAP;AACD;;AAED,QAAI0L,GAAG,CAACxI,KAAR,EAAe;AACblD,cAAQ,GAAGA,QAAQ,CAACsR,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,EAA6BA,OAA7B,CAAqC,OAArC,EAA8C,GAA9C,CAAX;AACD;;AAEDtR,YAAQ,GAAGA,QAAQ,CAACsR,OAAT,CAAiB,WAAjB,EAA8B,IAA9B,EACRA,OADQ,CACA,OADA,EACS,GADT,EAERA,OAFQ,CAEA,aAFA,EAEe,GAFf,EAGRA,OAHQ,CAGA,cAHA,EAGgB,GAHhB,CAAX;AAKA,WAAO,OAAOtR,QAAP,GAAkB,GAAzB;AACD;;AAEDo7B,QAAM,CAACC,CAAD,EAAI;AACR,QAAI,CAAC,KAAKviC,OAAL,CAAase,OAAd,IAAyBikB,CAAC,CAACjkB,OAA/B,EAAwC;AACtC,aAAOikB,CAAC,CAACjkB,OAAT;AACD;;AACDikB,KAAC,CAACxqB,SAAF,GAAc,KAAK/X,OAAL,CAAa+X,SAA3B;AACA,WAAO,KAAKkD,EAAL,CAAQqnB,MAAR,CAAeC,CAAf,CAAP;AACD;;AAEDlnB,YAAU,GAAG;AACX,SAAKmnB,iBAAL;AACA,SAAKC,sBAAL;AACA,SAAKC,qBAAL;AACA,SAAKC,sBAAL;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACD;;AAEDnnB,SAAO,GAAG;AACR,WAAO,KAAKmnB,gBAAZ;AACD;;AAEDp6B,iBAAe,CAACpG,IAAD,EAAO;AACpB,QAAI,CAAC,KAAKwgC,gBAAL,CAAsBx1B,cAAtB,CAAqChL,IAArC,CAAL,EAAiD;AAC/C,WAAKwgC,gBAAL,CAAsBxgC,IAAtB,IAA8BwQ,GAAG,CAACpK,eAAJ,CAAoBpG,IAApB,KAC5BuD,KAAK,CAACuJ,QAAN,CAAe,KAAKlP,OAAL,CAAa6iC,oBAA5B,EAAkDzgC,IAAlD,CADF;AAED;;AACD,WAAO,KAAKwgC,gBAAL,CAAsBxgC,IAAtB,CAAP;AACD;;AAED0gC,qBAAmB,CAAC1gC,IAAD,EAAO;AACxBA,QAAI,GAAGA,IAAI,CAACmG,WAAL,EAAP;AACA,WAAQnG,IAAI,KAAK,EAAT,IAAe,KAAKoG,eAAL,CAAqBpG,IAArB,CAAf,IAA6CwQ,GAAG,CAACzK,mBAAJ,CAAwBmC,OAAxB,CAAgClI,IAAhC,MAA0C,CAAC,CAAhG;AACD;;AAED2gC,cAAY,CAACviC,SAAD,EAAY8d,OAAZ,EAAqBsY,SAArB,EAAgCD,SAAhC,EAA2C;AACrD,WAAO,KAAK1b,EAAL,CAAQ+nB,WAAR,CAAoB;AACzBxiC,eAAS,EAAE,gBAAgBA,SADF;AAEzBT,cAAQ,EAAE,CACR,KAAKuiC,MAAL,CAAY;AACV9hC,iBAAS,EAAE,2BADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBvc,IAAnB,GAA0B,oBAAvC,CAFA;AAGVwc,eAAO,EAAEA,OAHC;AAIVvd,aAAK,EAAGujB,CAAD,IAAO;AACZ,gBAAM4e,OAAO,GAAG7iC,yBAAC,CAACikB,CAAC,CAAC6e,aAAH,CAAjB;;AACA,cAAIvM,SAAS,IAAID,SAAjB,EAA4B;AAC1B,iBAAK5tB,OAAL,CAAamD,MAAb,CAAoB,cAApB,EAAoC;AAClC0qB,uBAAS,EAAEsM,OAAO,CAACpiC,IAAR,CAAa,gBAAb,CADuB;AAElC61B,uBAAS,EAAEuM,OAAO,CAACpiC,IAAR,CAAa,gBAAb;AAFuB,aAApC;AAID,WALD,MAKO,IAAI81B,SAAJ,EAAe;AACpB,iBAAK7tB,OAAL,CAAamD,MAAb,CAAoB,cAApB,EAAoC;AAClC0qB,uBAAS,EAAEsM,OAAO,CAACpiC,IAAR,CAAa,gBAAb;AADuB,aAApC;AAGD,WAJM,MAIA,IAAI61B,SAAJ,EAAe;AACpB,iBAAK5tB,OAAL,CAAamD,MAAb,CAAoB,cAApB,EAAoC;AAClCyqB,uBAAS,EAAEuM,OAAO,CAACpiC,IAAR,CAAa,gBAAb;AADuB,aAApC;AAGD;AACF,SApBS;AAqBVb,gBAAQ,EAAGijC,OAAD,IAAa;AACrB,gBAAME,YAAY,GAAGF,OAAO,CAAChiC,IAAR,CAAa,oBAAb,CAArB;;AACA,cAAI01B,SAAJ,EAAe;AACbwM,wBAAY,CAACpb,GAAb,CAAiB,kBAAjB,EAAqC,KAAKhoB,OAAL,CAAaqjC,WAAb,CAAyBzM,SAA9D;AACAsM,mBAAO,CAACpiC,IAAR,CAAa,gBAAb,EAA+B,KAAKd,OAAL,CAAaqjC,WAAb,CAAyBzM,SAAxD;AACD;;AACD,cAAID,SAAJ,EAAe;AACbyM,wBAAY,CAACpb,GAAb,CAAiB,OAAjB,EAA0B,KAAKhoB,OAAL,CAAaqjC,WAAb,CAAyB1M,SAAnD;AACAuM,mBAAO,CAACpiC,IAAR,CAAa,gBAAb,EAA+B,KAAKd,OAAL,CAAaqjC,WAAb,CAAyB1M,SAAxD;AACD,WAHD,MAGO;AACLyM,wBAAY,CAACpb,GAAb,CAAiB,OAAjB,EAA0B,aAA1B;AACD;AACF;AAjCS,OAAZ,CADQ,EAoCR,KAAKsa,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,EAA/B,EAAmC,KAAKtjC,OAAxC,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAU4E,KAAV,CAAgBE,IAHf;AAIVhG,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CApCQ,EA4CR,KAAK7hB,EAAL,CAAQsoB,QAAR,CAAiB;AACfpI,aAAK,EAAE,CAACvE,SAAS,GAAG,CAClB,4BADkB,EAEhB,qCAAqC,KAAKh1B,IAAL,CAAU4E,KAAV,CAAgBG,UAArD,GAAkE,QAFlD,EAGhB,OAHgB,EAId,2GAJc,EAKZ,KAAK/E,IAAL,CAAU4E,KAAV,CAAgBK,WALJ,EAMd,WANc,EAOhB,QAPgB,EAQhB,mDARgB,EAShB,OATgB,EAUd,4GAVc,EAWZ,KAAKjF,IAAL,CAAU4E,KAAV,CAAgBS,QAXJ,EAYd,WAZc,EAad,4FAA4F,KAAKjH,OAAL,CAAaqjC,WAAb,CAAyBzM,SAArH,GAAiI,kCAbnH,EAchB,QAdgB,EAehB,gFAfgB,EAgBlB,QAhBkB,EAiBlBjpB,IAjBkB,CAiBb,EAjBa,CAAH,GAiBJ,EAjBN,KAkBNgpB,SAAS,GAAG,CACX,4BADW,EAET,qCAAqC,KAAK/0B,IAAL,CAAU4E,KAAV,CAAgBI,UAArD,GAAkE,QAFzD,EAGT,OAHS,EAIP,gHAJO,EAKL,KAAKhF,IAAL,CAAU4E,KAAV,CAAgBQ,cALX,EAMP,WANO,EAOT,QAPS,EAQT,mDARS,EAST,OATS,EAUP,4GAVO,EAWL,KAAKpF,IAAL,CAAU4E,KAAV,CAAgBS,QAXX,EAYP,WAZO,EAaP,4FAA4F,KAAKjH,OAAL,CAAaqjC,WAAb,CAAyB1M,SAArH,GAAiI,kCAb1H,EAcT,QAdS,EAcC;AACV,wFAfS,EAgBX,QAhBW,EAiBXhpB,IAjBW,CAiBN,EAjBM,CAAH,GAiBG,EAnCN,CADQ;AAqCf1N,gBAAQ,EAAGujC,SAAD,IAAe;AACvBA,mBAAS,CAACtiC,IAAV,CAAe,cAAf,EAA+BP,IAA/B,CAAoC,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACjD,kBAAM03B,OAAO,GAAGpjC,yBAAC,CAAC0L,IAAD,CAAjB;AACA03B,mBAAO,CAACniC,MAAR,CAAe,KAAK2Z,EAAL,CAAQyoB,OAAR,CAAgB;AAC7BC,oBAAM,EAAE,KAAK3jC,OAAL,CAAa2jC,MADQ;AAE7BC,wBAAU,EAAE,KAAK5jC,OAAL,CAAa4jC,UAFI;AAG7BxL,uBAAS,EAAEqL,OAAO,CAAC/iC,IAAR,CAAa,OAAb,CAHkB;AAI7BqX,uBAAS,EAAE,KAAK/X,OAAL,CAAa+X,SAJK;AAK7BuG,qBAAO,EAAE,KAAKte,OAAL,CAAase;AALO,aAAhB,EAMZpe,MANY,EAAf;AAOD,WATD;AAUA;;AACA,cAAI2jC,YAAY,GAAG,CACjB,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CADiB,CAAnB;AAGAL,mBAAS,CAACtiC,IAAV,CAAe,qBAAf,EAAsCP,IAAtC,CAA2C,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACxD,kBAAM03B,OAAO,GAAGpjC,yBAAC,CAAC0L,IAAD,CAAjB;AACA03B,mBAAO,CAACniC,MAAR,CAAe,KAAK2Z,EAAL,CAAQyoB,OAAR,CAAgB;AAC7BC,oBAAM,EAAEE,YADqB;AAE7BD,wBAAU,EAAEC,YAFiB;AAG7BzL,uBAAS,EAAEqL,OAAO,CAAC/iC,IAAR,CAAa,OAAb,CAHkB;AAI7BqX,uBAAS,EAAE,KAAK/X,OAAL,CAAa+X,SAJK;AAK7BuG,qBAAO,EAAE,KAAKte,OAAL,CAAase;AALO,aAAhB,EAMZpe,MANY,EAAf;AAOD,WATD;AAUAsjC,mBAAS,CAACtiC,IAAV,CAAe,mBAAf,EAAoCP,IAApC,CAAyC,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACtD1L,qCAAC,CAAC0L,IAAD,CAAD,CAAQ+3B,MAAR,CAAe,YAAW;AACxB,oBAAMC,KAAK,GAAGP,SAAS,CAACtiC,IAAV,CAAe,MAAMb,yBAAC,CAAC,IAAD,CAAD,CAAQK,IAAR,CAAa,OAAb,CAArB,EAA4CQ,IAA5C,CAAiD,iBAAjD,EAAoEsd,KAApE,EAAd;AACA,oBAAMhY,KAAK,GAAG,KAAKoS,KAAL,CAAWlL,WAAX,EAAd;AACAq2B,mBAAK,CAAC/b,GAAN,CAAU,kBAAV,EAA8BxhB,KAA9B,EACG1F,IADH,CACQ,YADR,EACsB0F,KADtB,EAEG1F,IAFH,CAEQ,YAFR,EAEsB0F,KAFtB,EAGG1F,IAHH,CAGQ,qBAHR,EAG+B0F,KAH/B;AAIAu9B,mBAAK,CAAChjC,KAAN;AACD,aARD;AASD,WAVD;AAWD,SAzEc;AA0EfA,aAAK,EAAGwc,KAAD,IAAW;AAChBA,eAAK,CAACshB,eAAN;AAEA,gBAAM1+B,OAAO,GAAGE,yBAAC,CAAC,MAAMG,SAAP,CAAD,CAAmBU,IAAnB,CAAwB,OAAxB,CAAhB;AACA,gBAAMgiC,OAAO,GAAG7iC,yBAAC,CAACkd,KAAK,CAACI,MAAP,CAAjB;AACA,gBAAMya,SAAS,GAAG8K,OAAO,CAACxiC,IAAR,CAAa,OAAb,CAAlB;AACA,cAAIkY,KAAK,GAAGsqB,OAAO,CAACpiC,IAAR,CAAa,YAAb,CAAZ;;AAEA,cAAIs3B,SAAS,KAAK,aAAlB,EAAiC;AAC/B,kBAAM4L,OAAO,GAAG7jC,OAAO,CAACe,IAAR,CAAa,MAAM0X,KAAnB,CAAhB;AACA,kBAAMqrB,QAAQ,GAAG5jC,yBAAC,CAACF,OAAO,CAACe,IAAR,CAAa,MAAM8iC,OAAO,CAACtjC,IAAR,CAAa,OAAb,CAAnB,EAA0CQ,IAA1C,CAA+C,iBAA/C,EAAkE,CAAlE,CAAD,CAAlB,CAF+B,CAI/B;;AACA,kBAAM6iC,KAAK,GAAGE,QAAQ,CAAC/iC,IAAT,CAAc,iBAAd,EAAiCwN,IAAjC,GAAwCqZ,MAAxC,EAAd,CAL+B,CAO/B;;AACA,kBAAMvhB,KAAK,GAAGw9B,OAAO,CAAClrB,GAAR,EAAd;AACAirB,iBAAK,CAAC/b,GAAN,CAAU,kBAAV,EAA8BxhB,KAA9B,EACG1F,IADH,CACQ,YADR,EACsB0F,KADtB,EAEG1F,IAFH,CAEQ,YAFR,EAEsB0F,KAFtB,EAGG1F,IAHH,CAGQ,qBAHR,EAG+B0F,KAH/B;AAIAy9B,oBAAQ,CAACC,OAAT,CAAiBH,KAAjB;AACAC,mBAAO,CAACjjC,KAAR;AACD,WAfD,MAeO,IAAI4E,KAAK,CAACuJ,QAAN,CAAe,CAAC,WAAD,EAAc,WAAd,CAAf,EAA2CkpB,SAA3C,CAAJ,EAA2D;AAChE,kBAAMjrB,GAAG,GAAGirB,SAAS,KAAK,WAAd,GAA4B,kBAA5B,GAAiD,OAA7D;AACA,kBAAM+L,MAAM,GAAGjB,OAAO,CAACtlB,OAAR,CAAgB,aAAhB,EAA+B1c,IAA/B,CAAoC,oBAApC,CAAf;AACA,kBAAMkjC,cAAc,GAAGlB,OAAO,CAACtlB,OAAR,CAAgB,aAAhB,EAA+B1c,IAA/B,CAAoC,4BAApC,CAAvB;AAEAijC,kBAAM,CAACnc,GAAP,CAAW7a,GAAX,EAAgByL,KAAhB;AACAwrB,0BAAc,CAACtjC,IAAf,CAAoB,UAAUs3B,SAA9B,EAAyCxf,KAAzC;AACA,iBAAK7P,OAAL,CAAamD,MAAb,CAAoB,YAAYksB,SAAhC,EAA2Cxf,KAA3C;AACD;AACF;AA1Gc,OAAjB,CA5CQ;AAFe,KAApB,EA2JJ1Y,MA3JI,EAAP;AA4JD;;AAEDsiC,mBAAiB,GAAG;AAClB,SAAKz5B,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,MAAM;AACtC,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CACR,KAAKroB,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBgmB,KAAhC,CADQ,EACgC,KAAKrkC,OADrC,CAFA;AAKVse,eAAO,EAAE,KAAK1c,IAAL,CAAUqD,KAAV,CAAgBA,KALf;AAMVvE,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AANI,OAAZ,CADyB,EAWzB,KAAK7hB,EAAL,CAAQsoB,QAAR,CAAiB;AACf/iC,iBAAS,EAAE,gBADI;AAEf26B,aAAK,EAAE,KAAKn7B,OAAL,CAAaskC,SAFL;AAGfC,aAAK,EAAE,KAAK3iC,IAAL,CAAUqD,KAAV,CAAgBA,KAHR;AAIfu/B,gBAAQ,EAAGz4B,IAAD,IAAU;AAClB,cAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,gBAAI,GAAG;AAAEyxB,iBAAG,EAAEzxB,IAAP;AAAaw4B,mBAAK,EAAG,KAAK3iC,IAAL,CAAUqD,KAAV,CAAgBmI,cAAhB,CAA+BrB,IAA/B,IAAuC,KAAKnK,IAAL,CAAUqD,KAAV,CAAgB8G,IAAhB,CAAvC,GAA+DA;AAApF,aAAP;AACD;;AAED,gBAAMyxB,GAAG,GAAGzxB,IAAI,CAACyxB,GAAjB;AACA,gBAAM+G,KAAK,GAAGx4B,IAAI,CAACw4B,KAAnB;AACA,gBAAMt/B,KAAK,GAAG8G,IAAI,CAAC9G,KAAL,GAAa,aAAa8G,IAAI,CAAC9G,KAAlB,GAA0B,IAAvC,GAA8C,EAA5D;AACA,gBAAMzE,SAAS,GAAGuL,IAAI,CAACvL,SAAL,GAAiB,aAAauL,IAAI,CAACvL,SAAlB,GAA8B,GAA/C,GAAqD,EAAvE;AAEA,iBAAO,MAAMg9B,GAAN,GAAYv4B,KAAZ,GAAoBzE,SAApB,GAAgC,GAAhC,GAAsC+jC,KAAtC,GAA8C,IAA9C,GAAqD/G,GAArD,GAA2D,GAAlE;AACD,SAfc;AAgBfz8B,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAhBQ,OAAjB,CAXyB,CAApB,EA6BJtd,MA7BI,EAAP;AA8BD,KA/BD;;AAiCA,SAAK,IAAIukC,QAAQ,GAAG,CAAf,EAAkBC,QAAQ,GAAG,KAAK1kC,OAAL,CAAaskC,SAAb,CAAuBjjC,MAAzD,EAAiEojC,QAAQ,GAAGC,QAA5E,EAAsFD,QAAQ,EAA9F,EAAkG;AAChG,YAAM14B,IAAI,GAAG,KAAK/L,OAAL,CAAaskC,SAAb,CAAuBG,QAAvB,CAAb;AAEA,WAAK17B,OAAL,CAAasG,IAAb,CAAkB,kBAAkBtD,IAApC,EAA0C,MAAM;AAC9C,eAAO,KAAKu2B,MAAL,CAAY;AACjB9hC,mBAAS,EAAE,oBAAoBuL,IADd;AAEjBzL,kBAAQ,EAAE,sBAAsByL,IAAtB,GAA6B,IAA7B,GAAoCA,IAAI,CAAC2B,WAAL,EAApC,GAAyD,QAFlD;AAGjB4Q,iBAAO,EAAE,KAAK1c,IAAL,CAAUqD,KAAV,CAAgB8G,IAAhB,CAHQ;AAIjBhL,eAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAJU,SAAZ,EAKJtd,MALI,EAAP;AAMD,OAPD;AAQD;;AAED,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,MAAM;AACrC,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,eADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBtc,IAAhC,CAFO;AAGjBuc,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeC,IAAf,GAAsB,KAAKqgC,iBAAL,CAAuB,MAAvB,CAHd;AAIjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,aAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,eAAlB,EAAmC,MAAM;AACvC,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,iBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBrc,MAAhC,CAFO;AAGjBsc,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeE,MAAf,GAAwB,KAAKogC,iBAAL,CAAuB,QAAvB,CAHhB;AAIjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,eAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,oBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBpc,SAAhC,CAFO;AAGjBqc,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeG,SAAf,GAA2B,KAAKmgC,iBAAL,CAAuB,WAAvB,CAHnB;AAIjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,kBAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,MAAM;AACtC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBsmB,MAAhC,CADO;AAEjBrmB,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeI,KAAf,GAAuB,KAAKkgC,iBAAL,CAAuB,cAAvB,CAFf;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,qBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,sBAAlB,EAA0C,MAAM;AAC9C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,wBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBhc,aAAhC,CAFO;AAGjBic,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeO,aAAf,GAA+B,KAAK+/B,iBAAL,CAAuB,eAAvB,CAHvB;AAIjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,sBAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwC,MAAM;AAC5C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,sBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB9b,WAAhC,CAFO;AAGjB+b,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeS,WAHP;AAIjBxB,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,oBAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,oBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB/b,SAAhC,CAFO;AAGjBgc,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeQ,SAHP;AAIjBvB,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,kBAA/C;AAJU,OAAZ,EAKJpd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,iBAAlB,EAAqC,MAAM;AACzC,YAAMia,SAAS,GAAG,KAAKvgB,OAAL,CAAamD,MAAb,CAAoB,qBAApB,CAAlB;;AAEA,UAAI,KAAKlM,OAAL,CAAa4kC,eAAjB,EAAkC;AAChC;AACAvkC,iCAAC,CAACM,IAAF,CAAO2oB,SAAS,CAAC,aAAD,CAAT,CAAyB/b,KAAzB,CAA+B,GAA/B,CAAP,EAA4C,CAACwB,GAAD,EAAM81B,QAAN,KAAmB;AAC7DA,kBAAQ,GAAGA,QAAQ,CAACxrB,IAAT,GAAgBb,OAAhB,CAAwB,QAAxB,EAAkC,EAAlC,CAAX;;AACA,cAAI,KAAKsqB,mBAAL,CAAyB+B,QAAzB,CAAJ,EAAwC;AACtC,gBAAI,KAAK7kC,OAAL,CAAa8kC,SAAb,CAAuBx6B,OAAvB,CAA+Bu6B,QAA/B,MAA6C,CAAC,CAAlD,EAAqD;AACnD,mBAAK7kC,OAAL,CAAa8kC,SAAb,CAAuB/0B,IAAvB,CAA4B80B,QAA5B;AACD;AACF;AACF,SAPD;AAQD;;AAED,aAAO,KAAK5pB,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CACR,uCADQ,EACiC,KAAKtjC,OADtC,CAFA;AAKVse,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeM,IALd;AAMV1B,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AANI,OAAZ,CADyB,EAWzB,KAAK7hB,EAAL,CAAQ8pB,aAAR,CAAsB;AACpBvkC,iBAAS,EAAE,mBADS;AAEpBwkC,sBAAc,EAAE,KAAKhlC,OAAL,CAAaqe,KAAb,CAAmB4mB,SAFf;AAGpB9J,aAAK,EAAE,KAAKn7B,OAAL,CAAa8kC,SAAb,CAAuBpxB,MAAvB,CAA8B,KAAKlL,eAAL,CAAqBwyB,IAArB,CAA0B,IAA1B,CAA9B,CAHa;AAIpBuJ,aAAK,EAAE,KAAK3iC,IAAL,CAAUE,IAAV,CAAeM,IAJF;AAKpBoiC,gBAAQ,EAAGz4B,IAAD,IAAU;AAClB,iBAAO,+BAA+B6G,GAAG,CAACxK,aAAJ,CAAkB2D,IAAlB,CAA/B,GAAyD,IAAzD,GAAgEA,IAAhE,GAAuE,SAA9E;AACD,SAPmB;AAQpBhL,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,iBAA/C;AARa,OAAtB,CAXyB,CAApB,EAqBJpd,MArBI,EAAP;AAsBD,KArCD;AAuCA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,iBAAlB,EAAqC,MAAM;AACzC,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,uCAA/B,EAAwE,KAAKtjC,OAA7E,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeU,IAHd;AAIV9B,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CADyB,EASzB,KAAK7hB,EAAL,CAAQ8pB,aAAR,CAAsB;AACpBvkC,iBAAS,EAAE,mBADS;AAEpBwkC,sBAAc,EAAE,KAAKhlC,OAAL,CAAaqe,KAAb,CAAmB4mB,SAFf;AAGpB9J,aAAK,EAAE,KAAKn7B,OAAL,CAAaklC,SAHA;AAIpBX,aAAK,EAAE,KAAK3iC,IAAL,CAAUE,IAAV,CAAeU,IAJF;AAKpBzB,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,iBAA/C;AALa,OAAtB,CATyB,CAApB,EAgBJpd,MAhBI,EAAP;AAiBD,KAlBD;AAoBA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,qBAAlB,EAAyC,MAAM;AAC7C,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,2CAA/B,EAA4E,KAAKtjC,OAAjF,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeW,QAHd;AAIV/B,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CADyB,EASzB,KAAK7hB,EAAL,CAAQ8pB,aAAR,CAAsB;AACpBvkC,iBAAS,EAAE,uBADS;AAEpBwkC,sBAAc,EAAE,KAAKhlC,OAAL,CAAaqe,KAAb,CAAmB4mB,SAFf;AAGpB9J,aAAK,EAAE,KAAKn7B,OAAL,CAAamlC,aAHA;AAIpBZ,aAAK,EAAE,KAAK3iC,IAAL,CAAUE,IAAV,CAAeW,QAJF;AAKpB1B,aAAK,EAAE,KAAKgI,OAAL,CAAauU,iCAAb,CAA+C,qBAA/C;AALa,OAAtB,CATyB,CAApB,EAgBJpd,MAhBI,EAAP;AAiBD,KAlBD;AAoBA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,MAAM;AACtC,aAAO,KAAK0zB,YAAL,CAAkB,gBAAlB,EAAoC,KAAKnhC,IAAL,CAAU4E,KAAV,CAAgBC,MAApD,EAA4D,IAA5D,EAAkE,IAAlE,CAAP;AACD,KAFD;AAIA,SAAKsC,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAK0zB,YAAL,CAAkB,iBAAlB,EAAqC,KAAKnhC,IAAL,CAAU4E,KAAV,CAAgBI,UAArD,EAAiE,KAAjE,EAAwE,IAAxE,CAAP;AACD,KAFD;AAIA,SAAKmC,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAK0zB,YAAL,CAAkB,iBAAlB,EAAqC,KAAKnhC,IAAL,CAAU4E,KAAV,CAAgBG,UAArD,EAAiE,IAAjE,EAAuE,KAAvE,CAAP;AACD,KAFD;AAIA,SAAKoC,OAAL,CAAasG,IAAb,CAAkB,WAAlB,EAA+B,MAAM;AACnC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB+mB,aAAhC,CADO;AAEjB9mB,eAAO,EAAE,KAAK1c,IAAL,CAAU+D,KAAV,CAAgBC,SAAhB,GAA4B,KAAKw8B,iBAAL,CAAuB,qBAAvB,CAFpB;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,4BAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,WAAlB,EAA+B,MAAM;AACnC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBgnB,WAAhC,CADO;AAEjB/mB,eAAO,EAAE,KAAK1c,IAAL,CAAU+D,KAAV,CAAgBE,OAAhB,GAA0B,KAAKu8B,iBAAL,CAAuB,mBAAvB,CAFlB;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,0BAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,UAAMolC,WAAW,GAAG,KAAKhD,MAAL,CAAY;AAC9BhiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBknB,SAAhC,CADoB;AAE9BjnB,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBG,IAApB,GAA2B,KAAKg8B,iBAAL,CAAuB,aAAvB,CAFN;AAG9BrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAHuB,KAAZ,CAApB;AAMA,UAAMgoB,aAAa,GAAG,KAAKlD,MAAL,CAAY;AAChChiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBonB,WAAhC,CADsB;AAEhCnnB,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBI,MAApB,GAA6B,KAAK+7B,iBAAL,CAAuB,eAAvB,CAFN;AAGhCrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,sBAAjC;AAHyB,KAAZ,CAAtB;AAMA,UAAMkoB,YAAY,GAAG,KAAKpD,MAAL,CAAY;AAC/BhiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBsnB,UAAhC,CADqB;AAE/BrnB,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBK,KAApB,GAA4B,KAAK87B,iBAAL,CAAuB,cAAvB,CAFN;AAG/BrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,qBAAjC;AAHwB,KAAZ,CAArB;AAMA,UAAMooB,WAAW,GAAG,KAAKtD,MAAL,CAAY;AAC9BhiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBwnB,YAAhC,CADoB;AAE9BvnB,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBM,OAApB,GAA8B,KAAK67B,iBAAL,CAAuB,aAAvB,CAFT;AAG9BrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAHuB,KAAZ,CAApB;AAMA,UAAMtX,OAAO,GAAG,KAAKo8B,MAAL,CAAY;AAC1BhiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBnY,OAAhC,CADgB;AAE1BoY,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBC,OAApB,GAA8B,KAAKk8B,iBAAL,CAAuB,SAAvB,CAFb;AAG1BrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,gBAAjC;AAHmB,KAAZ,CAAhB;AAMA,UAAMrX,MAAM,GAAG,KAAKm8B,MAAL,CAAY;AACzBhiC,cAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBlY,MAAhC,CADe;AAEzBmY,aAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBE,MAApB,GAA6B,KAAKi8B,iBAAL,CAAuB,QAAvB,CAFb;AAGzBrhC,WAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC;AAHkB,KAAZ,CAAf;AAMA,SAAKzU,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwCxB,IAAI,CAAC3B,MAAL,CAAYo5B,WAAZ,EAAyB,QAAzB,CAAxC;AACA,SAAKv8B,OAAL,CAAasG,IAAb,CAAkB,sBAAlB,EAA0CxB,IAAI,CAAC3B,MAAL,CAAYs5B,aAAZ,EAA2B,QAA3B,CAA1C;AACA,SAAKz8B,OAAL,CAAasG,IAAb,CAAkB,qBAAlB,EAAyCxB,IAAI,CAAC3B,MAAL,CAAYw5B,YAAZ,EAA0B,QAA1B,CAAzC;AACA,SAAK38B,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwCxB,IAAI,CAAC3B,MAAL,CAAY05B,WAAZ,EAAyB,QAAzB,CAAxC;AACA,SAAK78B,OAAL,CAAasG,IAAb,CAAkB,gBAAlB,EAAoCxB,IAAI,CAAC3B,MAAL,CAAYhG,OAAZ,EAAqB,QAArB,CAApC;AACA,SAAK6C,OAAL,CAAasG,IAAb,CAAkB,eAAlB,EAAmCxB,IAAI,CAAC3B,MAAL,CAAY/F,MAAZ,EAAoB,QAApB,CAAnC;AAEA,SAAK4C,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,KAAKroB,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBknB,SAAhC,CAA/B,EAA2E,KAAKvlC,OAAhF,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAUqE,SAAV,CAAoBA,SAHnB;AAIVvF,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CADyB,EASzB,KAAK7hB,EAAL,CAAQsoB,QAAR,CAAiB,CACf,KAAKtoB,EAAL,CAAQ+nB,WAAR,CAAoB;AAClBxiC,iBAAS,EAAE,YADO;AAElBT,gBAAQ,EAAE,CAACulC,WAAD,EAAcE,aAAd,EAA6BE,YAA7B,EAA2CE,WAA3C;AAFQ,OAApB,CADe,EAKf,KAAK3qB,EAAL,CAAQ+nB,WAAR,CAAoB;AAClBxiC,iBAAS,EAAE,WADO;AAElBT,gBAAQ,EAAE,CAACmG,OAAD,EAAUC,MAAV;AAFQ,OAApB,CALe,CAAjB,CATyB,CAApB,EAmBJjG,MAnBI,EAAP;AAoBD,KArBD;AAuBA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,eAAlB,EAAmC,MAAM;AACvC,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,KAAKroB,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBynB,UAAhC,CAA/B,EAA4E,KAAK9lC,OAAjF,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAUE,IAAV,CAAeK,MAHd;AAIVzB,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CADyB,EASzB,KAAK7hB,EAAL,CAAQ8pB,aAAR,CAAsB;AACpB5J,aAAK,EAAE,KAAKn7B,OAAL,CAAa+lC,WADA;AAEpBf,sBAAc,EAAE,KAAKhlC,OAAL,CAAaqe,KAAb,CAAmB4mB,SAFf;AAGpBzkC,iBAAS,EAAE,sBAHS;AAIpB+jC,aAAK,EAAE,KAAK3iC,IAAL,CAAUE,IAAV,CAAeK,MAJF;AAKpBpB,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,mBAAjC;AALa,OAAtB,CATyB,CAApB,EAgBJtd,MAhBI,EAAP;AAiBD,KAlBD;AAoBA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,MAAM;AACtC,aAAO,KAAK4L,EAAL,CAAQ+nB,WAAR,CAAoB,CACzB,KAAKV,MAAL,CAAY;AACV9hC,iBAAS,EAAE,iBADD;AAEVF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQqoB,sBAAR,CAA+B,KAAKroB,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB7Z,KAAhC,CAA/B,EAAuE,KAAKxE,OAA5E,CAFA;AAGVse,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBA,KAHf;AAIV9D,YAAI,EAAE;AACJo8B,gBAAM,EAAE;AADJ;AAJI,OAAZ,CADyB,EASzB,KAAK7hB,EAAL,CAAQsoB,QAAR,CAAiB;AACfgB,aAAK,EAAE,KAAK3iC,IAAL,CAAU4C,KAAV,CAAgBA,KADR;AAEfhE,iBAAS,EAAE,YAFI;AAGf26B,aAAK,EAAE,CACL,qCADK,EAEH,6FAFG,EAGH,kDAHG,EAIH,oDAJG,EAKL,QALK,EAML,iDANK,EAOLxtB,IAPK,CAOA,EAPA;AAHQ,OAAjB,CATyB,CAApB,EAqBJ;AACD1N,gBAAQ,EAAGG,KAAD,IAAW;AACnB,gBAAM4lC,QAAQ,GAAG5lC,KAAK,CAACc,IAAN,CAAW,qCAAX,CAAjB;AACA8kC,kBAAQ,CAAChe,GAAT,CAAa;AACX7e,iBAAK,EAAE,KAAKnJ,OAAL,CAAaimC,kBAAb,CAAgCC,GAAhC,GAAsC,IADlC;AAEX/jC,kBAAM,EAAE,KAAKnC,OAAL,CAAaimC,kBAAb,CAAgCxX,GAAhC,GAAsC;AAFnC,WAAb,EAGG0X,SAHH,CAGa,KAAKp9B,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC,CAHb,EAIGxc,EAJH,CAIM,WAJN,EAImB,KAAKolC,gBAAL,CAAsBpL,IAAtB,CAA2B,IAA3B,CAJnB;AAKD;AARA,OArBI,EA8BJ96B,MA9BI,EAAP;AA+BD,KAhCD;AAkCA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,MAAM;AACrC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBna,IAAhC,CADO;AAEjBoa,eAAO,EAAE,KAAK1c,IAAL,CAAUsC,IAAV,CAAeA,IAAf,GAAsB,KAAKk+B,iBAAL,CAAuB,iBAAvB,CAFd;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,iBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,gBAAlB,EAAoC,MAAM;AACxC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBgoB,OAAhC,CADO;AAEjB/nB,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBA,KAFR;AAGjB3B,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,kBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,cAAlB,EAAkC,MAAM;AACtC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBta,KAAhC,CADO;AAEjBua,eAAO,EAAE,KAAK1c,IAAL,CAAUmC,KAAV,CAAgBA,KAFR;AAGjBhD,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,kBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,WAAlB,EAA+B,MAAM;AACnC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBioB,KAAhC,CADO;AAEjBhoB,eAAO,EAAE,KAAK1c,IAAL,CAAUoD,EAAV,CAAarC,MAAb,GAAsB,KAAKy/B,iBAAL,CAAuB,sBAAvB,CAFd;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,6BAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,gBADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBkoB,SAAhC,CAFO;AAGjBjoB,eAAO,EAAE,KAAK1c,IAAL,CAAU5B,OAAV,CAAkB+F,UAHV;AAIjBhF,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,mBAAjC;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,iBAAlB,EAAqC,MAAM;AACzC,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,cADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBtC,IAAhC,CAFO;AAGjBuC,eAAO,EAAE,KAAK1c,IAAL,CAAU5B,OAAV,CAAkBgG,QAHV;AAIjBjF,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,iBAAjC;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AASA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,MAAM;AACrC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBzW,IAAhC,CADO;AAEjB0W,eAAO,EAAE,KAAK1c,IAAL,CAAU8F,OAAV,CAAkBE,IAAlB,GAAyB,KAAKw6B,iBAAL,CAAuB,MAAvB,CAFjB;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,aAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,MAAM;AACrC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB1W,IAAhC,CADO;AAEjB2W,eAAO,EAAE,KAAK1c,IAAL,CAAU8F,OAAV,CAAkBC,IAAlB,GAAyB,KAAKy6B,iBAAL,CAAuB,MAAvB,CAFjB;AAGjBrhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,aAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,aAAlB,EAAiC,MAAM;AACrC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBmoB,QAAhC,CADO;AAEjBloB,eAAO,EAAE,KAAK1c,IAAL,CAAU5B,OAAV,CAAkB8F,IAFV;AAGjB/E,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,iBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOD;AAED;;;;;;;;;AAOAuiC,wBAAsB,GAAG;AACvB;AACA,SAAK15B,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,4CADO;AAEjBge,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBE,UAFR;AAGjB7B,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,GAAlD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,2CADO;AAEjBge,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBG,UAFR;AAGjB9B,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,KAAlD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,sBAAlB,EAA0C,MAAM;AAC9C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,2CADO;AAEjBge,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBI,aAFR;AAGjB/B,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,MAAlD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBooB,QAAhC,CADO;AAEjBnoB,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBK,UAFR;AAGjBhC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,GAAlD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND,EAvBuB,CA+BvB;;AACA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBrb,SAAhC,CADO;AAEjBsb,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBM,SAFR;AAGjBjC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,gBAAjC,EAAmD,MAAnD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBpb,UAAhC,CADO;AAEjBqb,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBO,UAFR;AAGjBlC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,gBAAjC,EAAmD,OAAnD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBooB,QAAhC,CADO;AAEjBnoB,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBQ,SAFR;AAGjBnC,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,gBAAjC,EAAmD,MAAnD;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND,EAhDuB,CAwDvB;;AACA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwC,MAAM;AAC5C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBqoB,KAAhC,CADO;AAEjBpoB,eAAO,EAAE,KAAK1c,IAAL,CAAUc,KAAV,CAAgBmB,MAFR;AAGjB9C,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOD;;AAEDwiC,uBAAqB,GAAG;AACtB,SAAK35B,OAAL,CAAasG,IAAb,CAAkB,uBAAlB,EAA2C,MAAM;AAC/C,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBna,IAAhC,CADO;AAEjBoa,eAAO,EAAE,KAAK1c,IAAL,CAAUsC,IAAV,CAAeE,IAFP;AAGjBrD,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,iBAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,eAAlB,EAAmC,MAAM;AACvC,aAAO,KAAKizB,MAAL,CAAY;AACjBhiC,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBla,MAAhC,CADO;AAEjBma,eAAO,EAAE,KAAK1c,IAAL,CAAUsC,IAAV,CAAeC,MAFP;AAGjBpD,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC;AAHU,OAAZ,EAIJtd,MAJI,EAAP;AAKD,KAND;AAOD;AAED;;;;;;;;AAMAyiC,wBAAsB,GAAG;AACvB,SAAK55B,OAAL,CAAasG,IAAb,CAAkB,iBAAlB,EAAqC,MAAM;AACzC,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBsoB,QAAhC,CAFO;AAGjBroB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBC,WAHR;AAIjB1D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,KAAlD;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBuoB,QAAhC,CAFO;AAGjBtoB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBE,WAHR;AAIjB3D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,QAAlD;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,mBAAlB,EAAuC,MAAM;AAC3C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBwoB,SAAhC,CAFO;AAGjBvoB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBG,UAHR;AAIjB5D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,MAAlD;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwC,MAAM;AAC5C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmByoB,QAAhC,CAFO;AAGjBxoB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBI,WAHR;AAIjB7D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,eAAjC,EAAkD,OAAlD;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB0oB,SAAhC,CAFO;AAGjBzoB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBK,MAHR;AAIjB9D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,kBAAjC;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,kBAAlB,EAAsC,MAAM;AAC1C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmB2oB,SAAhC,CAFO;AAGjB1oB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBM,MAHR;AAIjB/D,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,kBAAjC;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQA,SAAK6I,OAAL,CAAasG,IAAb,CAAkB,oBAAlB,EAAwC,MAAM;AAC5C,aAAO,KAAKizB,MAAL,CAAY;AACjB9hC,iBAAS,EAAE,QADM;AAEjBF,gBAAQ,EAAE,KAAK2a,EAAL,CAAQgoB,IAAR,CAAa,KAAKjjC,OAAL,CAAaqe,KAAb,CAAmBqoB,KAAhC,CAFO;AAGjBpoB,eAAO,EAAE,KAAK1c,IAAL,CAAU4C,KAAV,CAAgBO,QAHR;AAIjBhE,aAAK,EAAE,KAAKgI,OAAL,CAAayU,mBAAb,CAAiC,oBAAjC;AAJU,OAAZ,EAKJtd,MALI,EAAP;AAMD,KAPD;AAQD;;AAED+mC,OAAK,CAAChmC,UAAD,EAAaimC,MAAb,EAAqB;AACxB,SAAK,IAAIC,QAAQ,GAAG,CAAf,EAAkBC,QAAQ,GAAGF,MAAM,CAAC7lC,MAAzC,EAAiD8lC,QAAQ,GAAGC,QAA5D,EAAsED,QAAQ,EAA9E,EAAkF;AAChF,YAAME,KAAK,GAAGH,MAAM,CAACC,QAAD,CAApB;AACA,YAAMG,SAAS,GAAG7lC,KAAK,CAACC,OAAN,CAAc2lC,KAAd,IAAuBA,KAAK,CAAC,CAAD,CAA5B,GAAkCA,KAApD;AACA,YAAMjrB,OAAO,GAAG3a,KAAK,CAACC,OAAN,CAAc2lC,KAAd,IAAyBA,KAAK,CAAChmC,MAAN,KAAiB,CAAlB,GAAuB,CAACgmC,KAAK,CAAC,CAAD,CAAN,CAAvB,GAAoCA,KAAK,CAAC,CAAD,CAAjE,GAAwE,CAACA,KAAD,CAAxF;AAEA,YAAME,MAAM,GAAG,KAAKtsB,EAAL,CAAQ+nB,WAAR,CAAoB;AACjCxiC,iBAAS,EAAE,UAAU8mC;AADY,OAApB,EAEZpnC,MAFY,EAAf;;AAIA,WAAK,IAAI6O,GAAG,GAAG,CAAV,EAAaC,GAAG,GAAGoN,OAAO,CAAC/a,MAAhC,EAAwC0N,GAAG,GAAGC,GAA9C,EAAmDD,GAAG,EAAtD,EAA0D;AACxD,cAAMy4B,GAAG,GAAG,KAAKz+B,OAAL,CAAasG,IAAb,CAAkB,YAAY+M,OAAO,CAACrN,GAAD,CAArC,CAAZ;;AACA,YAAIy4B,GAAJ,EAAS;AACPD,gBAAM,CAACjmC,MAAP,CAAc,OAAOkmC,GAAP,KAAe,UAAf,GAA4BA,GAAG,CAAC,KAAKz+B,OAAN,CAA/B,GAAgDy+B,GAA9D;AACD;AACF;;AACDD,YAAM,CAACrf,QAAP,CAAgBjnB,UAAhB;AACD;AACF;AAED;;;;;AAGAwmC,oBAAkB,CAACxmC,UAAD,EAAa;AAC7B,UAAM+oB,KAAK,GAAG/oB,UAAU,IAAI,KAAKm+B,QAAjC;AAEA,UAAM9V,SAAS,GAAG,KAAKvgB,OAAL,CAAamD,MAAb,CAAoB,qBAApB,CAAlB;AACA,SAAKw7B,eAAL,CAAqB1d,KAArB,EAA4B;AAC1B,wBAAkB,MAAM;AACtB,eAAOV,SAAS,CAAC,WAAD,CAAT,KAA2B,MAAlC;AACD,OAHyB;AAI1B,0BAAoB,MAAM;AACxB,eAAOA,SAAS,CAAC,aAAD,CAAT,KAA6B,QAApC;AACD,OANyB;AAO1B,6BAAuB,MAAM;AAC3B,eAAOA,SAAS,CAAC,gBAAD,CAAT,KAAgC,WAAvC;AACD,OATyB;AAU1B,6BAAuB,MAAM;AAC3B,eAAOA,SAAS,CAAC,gBAAD,CAAT,KAAgC,WAAvC;AACD,OAZyB;AAa1B,+BAAyB,MAAM;AAC7B,eAAOA,SAAS,CAAC,kBAAD,CAAT,KAAkC,aAAzC;AACD,OAfyB;AAgB1B,iCAA2B,MAAM;AAC/B,eAAOA,SAAS,CAAC,oBAAD,CAAT,KAAoC,eAA3C;AACD;AAlByB,KAA5B;;AAqBA,QAAIA,SAAS,CAAC,aAAD,CAAb,EAA8B;AAC5B,YAAMwb,SAAS,GAAGxb,SAAS,CAAC,aAAD,CAAT,CAAyB/b,KAAzB,CAA+B,GAA/B,EAAoCC,GAApC,CAAyCpL,IAAD,IAAU;AAClE,eAAOA,IAAI,CAACoW,OAAL,CAAa,SAAb,EAAwB,EAAxB,EACJA,OADI,CACI,MADJ,EACY,EADZ,EAEJA,OAFI,CAEI,MAFJ,EAEY,EAFZ,CAAP;AAGD,OAJiB,CAAlB;AAKA,YAAMnQ,QAAQ,GAAG1C,KAAK,CAACzE,IAAN,CAAW4jC,SAAX,EAAsB,KAAKt8B,eAAL,CAAqBwyB,IAArB,CAA0B,IAA1B,CAAtB,CAAjB;AAEAhR,WAAK,CAAC9oB,IAAN,CAAW,sBAAX,EAAmCP,IAAnC,CAAwC,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACrD,cAAM47B,KAAK,GAAGtnC,yBAAC,CAAC0L,IAAD,CAAf,CADqD,CAErD;;AACA,cAAM67B,SAAS,GAAID,KAAK,CAACjnC,IAAN,CAAW,OAAX,IAAsB,EAAvB,KAAgC2H,QAAQ,GAAG,EAA7D;AACAs/B,aAAK,CAACxQ,WAAN,CAAkB,SAAlB,EAA6ByQ,SAA7B;AACD,OALD;AAMA5d,WAAK,CAAC9oB,IAAN,CAAW,wBAAX,EAAqCgX,IAArC,CAA0C7P,QAA1C,EAAoD2f,GAApD,CAAwD,aAAxD,EAAuE3f,QAAvE;AACD;;AAED,QAAIihB,SAAS,CAAC,WAAD,CAAb,EAA4B;AAC1B,YAAMC,QAAQ,GAAGD,SAAS,CAAC,WAAD,CAA1B;AACAU,WAAK,CAAC9oB,IAAN,CAAW,sBAAX,EAAmCP,IAAnC,CAAwC,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACrD,cAAM47B,KAAK,GAAGtnC,yBAAC,CAAC0L,IAAD,CAAf,CADqD,CAErD;;AACA,cAAM67B,SAAS,GAAID,KAAK,CAACjnC,IAAN,CAAW,OAAX,IAAsB,EAAvB,KAAgC6oB,QAAQ,GAAG,EAA7D;AACAoe,aAAK,CAACxQ,WAAN,CAAkB,SAAlB,EAA6ByQ,SAA7B;AACD,OALD;AAMA5d,WAAK,CAAC9oB,IAAN,CAAW,wBAAX,EAAqCgX,IAArC,CAA0CqR,QAA1C;AAEA,YAAM2L,YAAY,GAAG5L,SAAS,CAAC,gBAAD,CAA9B;AACAU,WAAK,CAAC9oB,IAAN,CAAW,0BAAX,EAAuCP,IAAvC,CAA4C,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AACzD,cAAM47B,KAAK,GAAGtnC,yBAAC,CAAC0L,IAAD,CAAf;AACA,cAAM67B,SAAS,GAAID,KAAK,CAACjnC,IAAN,CAAW,OAAX,IAAsB,EAAvB,KAAgCw0B,YAAY,GAAG,EAAjE;AACAyS,aAAK,CAACxQ,WAAN,CAAkB,SAAlB,EAA6ByQ,SAA7B;AACD,OAJD;AAKA5d,WAAK,CAAC9oB,IAAN,CAAW,4BAAX,EAAyCgX,IAAzC,CAA8Cgd,YAA9C;AACD;;AAED,QAAI5L,SAAS,CAAC,aAAD,CAAb,EAA8B;AAC5B,YAAMe,UAAU,GAAGf,SAAS,CAAC,aAAD,CAA5B;AACAU,WAAK,CAAC9oB,IAAN,CAAW,4BAAX,EAAyCP,IAAzC,CAA8C,CAACoO,GAAD,EAAMhD,IAAN,KAAe;AAC3D;AACA,cAAM67B,SAAS,GAAIvnC,yBAAC,CAAC0L,IAAD,CAAD,CAAQrL,IAAR,CAAa,OAAb,IAAwB,EAAzB,KAAkC2pB,UAAU,GAAG,EAAjE;AACA,aAAK7pB,SAAL,GAAiBonC,SAAS,GAAG,SAAH,GAAe,EAAzC;AACD,OAJD;AAKD;AACF;;AAEDF,iBAAe,CAACzmC,UAAD,EAAa4mC,KAAb,EAAoB;AACjCxnC,6BAAC,CAACM,IAAF,CAAOknC,KAAP,EAAc,CAACC,QAAD,EAAWh5B,IAAX,KAAoB;AAChC,WAAKmM,EAAL,CAAQ8sB,eAAR,CAAwB9mC,UAAU,CAACC,IAAX,CAAgB4mC,QAAhB,CAAxB,EAAmDh5B,IAAI,EAAvD;AACD,KAFD;AAGD;;AAEDs3B,kBAAgB,CAAC7oB,KAAD,EAAQ;AACtB,UAAMyqB,SAAS,GAAG,EAAlB;AACA,UAAMhE,OAAO,GAAG3jC,yBAAC,CAACkd,KAAK,CAACI,MAAN,CAAavK,UAAd,CAAjB,CAFsB,CAEsB;;AAC5C,UAAM60B,iBAAiB,GAAGjE,OAAO,CAAC9zB,IAAR,EAA1B;AACA,UAAM81B,QAAQ,GAAGhC,OAAO,CAAC9iC,IAAR,CAAa,qCAAb,CAAjB;AACA,UAAMgnC,YAAY,GAAGlE,OAAO,CAAC9iC,IAAR,CAAa,oCAAb,CAArB;AACA,UAAMinC,cAAc,GAAGnE,OAAO,CAAC9iC,IAAR,CAAa,sCAAb,CAAvB;AAEA,QAAIknC,SAAJ,CARsB,CAStB;;AACA,QAAI7qB,KAAK,CAAC8qB,OAAN,KAAkBzrB,SAAtB,EAAiC;AAC/B,YAAM0rB,UAAU,GAAGjoC,yBAAC,CAACkd,KAAK,CAACI,MAAP,CAAD,CAAgB3I,MAAhB,EAAnB;AACAozB,eAAS,GAAG;AACV3N,SAAC,EAAEld,KAAK,CAACgrB,KAAN,GAAcD,UAAU,CAACliC,IADlB;AAEVo0B,SAAC,EAAEjd,KAAK,CAACirB,KAAN,GAAcF,UAAU,CAACz7B;AAFlB,OAAZ;AAID,KAND,MAMO;AACLu7B,eAAS,GAAG;AACV3N,SAAC,EAAEld,KAAK,CAAC8qB,OADC;AAEV7N,SAAC,EAAEjd,KAAK,CAACkrB;AAFC,OAAZ;AAID;;AAED,UAAM3R,GAAG,GAAG;AACV4R,OAAC,EAAEtnB,IAAI,CAACunB,IAAL,CAAUP,SAAS,CAAC3N,CAAV,GAAcuN,SAAxB,KAAsC,CAD/B;AAEVY,OAAC,EAAExnB,IAAI,CAACunB,IAAL,CAAUP,SAAS,CAAC5N,CAAV,GAAcwN,SAAxB,KAAsC;AAF/B,KAAZ;AAKAE,gBAAY,CAAClgB,GAAb,CAAiB;AAAE7e,WAAK,EAAE2tB,GAAG,CAAC4R,CAAJ,GAAQ,IAAjB;AAAuBvmC,YAAM,EAAE20B,GAAG,CAAC8R,CAAJ,GAAQ;AAAvC,KAAjB;AACA5C,YAAQ,CAACtlC,IAAT,CAAc,OAAd,EAAuBo2B,GAAG,CAAC4R,CAAJ,GAAQ,GAAR,GAAc5R,GAAG,CAAC8R,CAAzC;;AAEA,QAAI9R,GAAG,CAAC4R,CAAJ,GAAQ,CAAR,IAAa5R,GAAG,CAAC4R,CAAJ,GAAQ,KAAK1oC,OAAL,CAAaimC,kBAAb,CAAgCC,GAAzD,EAA8D;AAC5DiC,oBAAc,CAACngB,GAAf,CAAmB;AAAE7e,aAAK,EAAE2tB,GAAG,CAAC4R,CAAJ,GAAQ,CAAR,GAAY;AAArB,OAAnB;AACD;;AAED,QAAI5R,GAAG,CAAC8R,CAAJ,GAAQ,CAAR,IAAa9R,GAAG,CAAC8R,CAAJ,GAAQ,KAAK5oC,OAAL,CAAaimC,kBAAb,CAAgCxX,GAAzD,EAA8D;AAC5D0Z,oBAAc,CAACngB,GAAf,CAAmB;AAAE7lB,cAAM,EAAE20B,GAAG,CAAC8R,CAAJ,GAAQ,CAAR,GAAY;AAAtB,OAAnB;AACD;;AAEDX,qBAAiB,CAAC1nC,IAAlB,CAAuBu2B,GAAG,CAAC4R,CAAJ,GAAQ,KAAR,GAAgB5R,GAAG,CAAC8R,CAA3C;AACD;;AAj6B0B,C;;ACL7B;AACe,MAAMC,eAAN,CAAc;AAC3BhpC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKu2B,OAAL,GAAej/B,yBAAC,CAACyJ,MAAD,CAAhB;AACA,SAAK8C,SAAL,GAAiBvM,yBAAC,CAACwI,QAAD,CAAlB;AAEA,SAAKoS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKD,KAAL,GAAajS,OAAO,CAACqS,UAAR,CAAmBmD,IAAhC;AACA,SAAK4V,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKijB,QAAL,GAAgBr2B,OAAO,CAACqS,UAAR,CAAmBikB,OAAnC;AACA,SAAKjX,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK4hB,UAAL,GAAkB31B,OAAO,CAACqS,UAAR,CAAmBujB,SAArC;AACA,SAAK3+B,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AAEA,SAAK8oC,WAAL,GAAmB,KAAnB;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkB/N,IAAlB,CAAuB,IAAvB,CAApB;AACD;;AAED7d,kBAAgB,GAAG;AACjB,WAAO,CAAC,KAAKnd,OAAL,CAAa03B,OAArB;AACD;;AAEDrc,YAAU,GAAG;AACX,SAAKrb,OAAL,CAAaq/B,OAAb,GAAuB,KAAKr/B,OAAL,CAAaq/B,OAAb,IAAwB,EAA/C;;AAEA,QAAI,CAAC,KAAKr/B,OAAL,CAAaq/B,OAAb,CAAqBh+B,MAA1B,EAAkC;AAChC,WAAK+9B,QAAL,CAAc5jB,IAAd;AACD,KAFD,MAEO;AACL,WAAKzS,OAAL,CAAamD,MAAb,CAAoB,eAApB,EAAqC,KAAKkzB,QAA1C,EAAoD,KAAKp/B,OAAL,CAAaq/B,OAAjE;AACD;;AAED,QAAI,KAAKr/B,OAAL,CAAagpC,gBAAjB,EAAmC;AACjC,WAAK5J,QAAL,CAAclX,QAAd,CAAuB,KAAKloB,OAAL,CAAagpC,gBAApC;AACD;;AAED,SAAKC,eAAL,CAAqB,KAArB;AAEA,SAAKjuB,KAAL,CAAWha,EAAX,CAAc,uDAAd,EAAuE,MAAM;AAC3E,WAAK+H,OAAL,CAAamD,MAAb,CAAoB,4BAApB;AACD,KAFD;AAIA,SAAKnD,OAAL,CAAamD,MAAb,CAAoB,4BAApB;;AACA,QAAI,KAAKlM,OAAL,CAAakpC,gBAAjB,EAAmC;AACjC,WAAK5J,OAAL,CAAat+B,EAAb,CAAgB,eAAhB,EAAiC,KAAK+nC,YAAtC;AACD;AACF;;AAEDttB,SAAO,GAAG;AACR,SAAK2jB,QAAL,CAAcr/B,QAAd,GAAyB8D,MAAzB;;AAEA,QAAI,KAAK7D,OAAL,CAAakpC,gBAAjB,EAAmC;AACjC,WAAK5J,OAAL,CAAatlB,GAAb,CAAiB,eAAjB,EAAkC,KAAK+uB,YAAvC;AACD;AACF;;AAEDA,cAAY,GAAG;AACb,QAAI,KAAK5U,OAAL,CAAazjB,QAAb,CAAsB,YAAtB,CAAJ,EAAyC;AACvC,aAAO,KAAP;AACD;;AAED,UAAMy4B,YAAY,GAAG,KAAKhV,OAAL,CAAaza,WAAb,EAArB;AACA,UAAM0vB,WAAW,GAAG,KAAKjV,OAAL,CAAahrB,KAAb,EAApB;AACA,UAAMkgC,aAAa,GAAG,KAAKjK,QAAL,CAAcj9B,MAAd,EAAtB;AACA,UAAMmnC,eAAe,GAAG,KAAK5K,UAAL,CAAgBv8B,MAAhB,EAAxB,CARa,CAUb;;AACA,QAAIonC,cAAc,GAAG,CAArB;;AACA,QAAI,KAAKvpC,OAAL,CAAawpC,cAAjB,EAAiC;AAC/BD,oBAAc,GAAGlpC,yBAAC,CAAC,KAAKL,OAAL,CAAawpC,cAAd,CAAD,CAA+B9vB,WAA/B,EAAjB;AACD;;AAED,UAAM+vB,aAAa,GAAG,KAAK78B,SAAL,CAAeE,SAAf,EAAtB;AACA,UAAM48B,eAAe,GAAG,KAAKvV,OAAL,CAAanf,MAAb,GAAsBnI,GAA9C;AACA,UAAM88B,kBAAkB,GAAGD,eAAe,GAAGP,YAA7C;AACA,UAAMS,cAAc,GAAGF,eAAe,GAAGH,cAAzC;AACA,UAAMM,sBAAsB,GAAGF,kBAAkB,GAAGJ,cAArB,GAAsCF,aAAtC,GAAsDC,eAArF;;AAEA,QAAI,CAAC,KAAKR,WAAN,IACDW,aAAa,GAAGG,cADf,IACmCH,aAAa,GAAGI,sBAAsB,GAAGR,aADhF,EACgG;AAC9F,WAAKP,WAAL,GAAmB,IAAnB;AACA,WAAK1J,QAAL,CAAcpX,GAAd,CAAkB;AAChB5S,gBAAQ,EAAE,OADM;AAEhBvI,WAAG,EAAE08B,cAFW;AAGhBpgC,aAAK,EAAEigC,WAHS;AAIhBU,cAAM,EAAE;AAJQ,OAAlB;AAMA,WAAK1hB,SAAL,CAAeJ,GAAf,CAAmB;AACjB+hB,iBAAS,EAAE,KAAK3K,QAAL,CAAcj9B,MAAd,KAAyB;AADnB,OAAnB;AAGD,KAZD,MAYO,IAAI,KAAK2mC,WAAL,KACPW,aAAa,GAAGG,cAAjB,IAAqCH,aAAa,GAAGI,sBAD7C,CAAJ,EAC2E;AAChF,WAAKf,WAAL,GAAmB,KAAnB;AACA,WAAK1J,QAAL,CAAcpX,GAAd,CAAkB;AAChB5S,gBAAQ,EAAE,UADM;AAEhBvI,WAAG,EAAE,CAFW;AAGhB1D,aAAK,EAAE,MAHS;AAIhB2gC,cAAM,EAAE;AAJQ,OAAlB;AAMA,WAAK1hB,SAAL,CAAeJ,GAAf,CAAmB;AACjB+hB,iBAAS,EAAE;AADM,OAAnB;AAGD;AACF;;AAEDd,iBAAe,CAACtJ,YAAD,EAAe;AAC5B,QAAIA,YAAJ,EAAkB;AAChB,WAAKP,QAAL,CAAczD,SAAd,CAAwB,KAAKxH,OAA7B;AACD,KAFD,MAEO;AACL,UAAI,KAAKn0B,OAAL,CAAagpC,gBAAjB,EAAmC;AACjC,aAAK5J,QAAL,CAAclX,QAAd,CAAuB,KAAKloB,OAAL,CAAagpC,gBAApC;AACD;AACF;;AACD,QAAI,KAAKhpC,OAAL,CAAakpC,gBAAjB,EAAmC;AACjC,WAAKH,YAAL;AACD;AACF;;AAEDiB,kBAAgB,CAACrK,YAAD,EAAe;AAC7B,SAAK1kB,EAAL,CAAQ8sB,eAAR,CAAwB,KAAK3I,QAAL,CAAcl+B,IAAd,CAAmB,iBAAnB,CAAxB,EAA+Dy+B,YAA/D;AAEA,SAAKsJ,eAAL,CAAqBtJ,YAArB;AACD;;AAEDsK,gBAAc,CAAChO,UAAD,EAAa;AACzB,SAAKhhB,EAAL,CAAQ8sB,eAAR,CAAwB,KAAK3I,QAAL,CAAcl+B,IAAd,CAAmB,eAAnB,CAAxB,EAA6D+6B,UAA7D;;AACA,QAAIA,UAAJ,EAAgB;AACd,WAAKc,UAAL;AACD,KAFD,MAEO;AACL,WAAKC,QAAL;AACD;AACF;;AAEDA,UAAQ,CAACkN,iBAAD,EAAoB;AAC1B,QAAIC,IAAI,GAAG,KAAK/K,QAAL,CAAcl+B,IAAd,CAAmB,QAAnB,CAAX;;AACA,QAAI,CAACgpC,iBAAL,EAAwB;AACtBC,UAAI,GAAGA,IAAI,CAAC1+B,GAAL,CAAS,eAAT,EAA0BA,GAA1B,CAA8B,iBAA9B,CAAP;AACD;;AACD,SAAKwP,EAAL,CAAQmvB,SAAR,CAAkBD,IAAlB,EAAwB,IAAxB;AACD;;AAEDpN,YAAU,CAACmN,iBAAD,EAAoB;AAC5B,QAAIC,IAAI,GAAG,KAAK/K,QAAL,CAAcl+B,IAAd,CAAmB,QAAnB,CAAX;;AACA,QAAI,CAACgpC,iBAAL,EAAwB;AACtBC,UAAI,GAAGA,IAAI,CAAC1+B,GAAL,CAAS,eAAT,EAA0BA,GAA1B,CAA8B,iBAA9B,CAAP;AACD;;AACD,SAAKwP,EAAL,CAAQmvB,SAAR,CAAkBD,IAAlB,EAAwB,KAAxB;AACD;;AAnJ0B,C;;ACD7B;AACA;AACA;AACA;AAEe,MAAME,qBAAN,CAAiB;AAC9BxqC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKqvB,KAAL,GAAajqC,yBAAC,CAACwI,QAAQ,CAACkW,IAAV,CAAd;AACA,SAAKoV,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKnc,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AAEArV,WAAO,CAACsG,IAAR,CAAa,sBAAb,EAAqC,KAAKrP,OAAL,CAAaoe,QAAb,CAAsBtY,IAAtB,CAA2B,iBAA3B,CAArC;AACD;;AAEDuV,YAAU,GAAG;AACX,UAAMpa,UAAU,GAAG,KAAKjB,OAAL,CAAauqC,aAAb,GAA6B,KAAKD,KAAlC,GAA0C,KAAKtqC,OAAL,CAAa+X,SAA1E;AACA,UAAMgH,IAAI,GAAG,CACX,0CADW,EAER,oCAAmC,KAAK/e,OAAL,CAAayM,EAAG,6BAA4B,KAAK7K,IAAL,CAAUsC,IAAV,CAAeG,aAAc,UAFpG,EAGR,mCAAkC,KAAKrE,OAAL,CAAayM,EAAG,kFAH1C,EAIX,QAJW,EAKX,0CALW,EAMR,oCAAmC,KAAKzM,OAAL,CAAayM,EAAG,6BAA4B,KAAK7K,IAAL,CAAUsC,IAAV,CAAeN,GAAI,UAN1F,EAOR,mCAAkC,KAAK5D,OAAL,CAAayM,EAAG,iGAP1C,EAQX,QARW,EASX,CAAC,KAAKzM,OAAL,CAAawqC,iBAAd,GACInqC,yBAAC,CAAC,QAAD,CAAD,CAAYiB,MAAZ,CAAmB,KAAK2Z,EAAL,CAAQwvB,QAAR,CAAiB;AACpCjqC,eAAS,EAAE,gCADyB;AAEpC0X,UAAI,EAAE,KAAKtW,IAAL,CAAUsC,IAAV,CAAeI,eAFe;AAGpComC,aAAO,EAAE;AAH2B,KAAjB,EAIlBxqC,MAJkB,EAAnB,EAIWK,IAJX,EADJ,GAMI,EAfO,EAgBXF,yBAAC,CAAC,QAAD,CAAD,CAAYiB,MAAZ,CAAmB,KAAK2Z,EAAL,CAAQwvB,QAAR,CAAiB;AAClCjqC,eAAS,EAAE,0BADuB;AAElC0X,UAAI,EAAE,KAAKtW,IAAL,CAAUsC,IAAV,CAAeK,WAFa;AAGlCmmC,aAAO,EAAE;AAHyB,KAAjB,EAIhBxqC,MAJgB,EAAnB,EAIaK,IAJb,EAhBW,EAqBXoN,IArBW,CAqBN,EArBM,CAAb;AAuBA,UAAMg9B,WAAW,GAAG,yDAApB;AACA,UAAMC,MAAM,GAAI,wCAAuCD,WAAY,YAAW,KAAK/oC,IAAL,CAAUsC,IAAV,CAAevB,MAAO,aAApG;AAEA,SAAKkoC,OAAL,GAAe,KAAK5vB,EAAL,CAAQ6vB,MAAR,CAAe;AAC5BtqC,eAAS,EAAE,aADiB;AAE5B+jC,WAAK,EAAE,KAAK3iC,IAAL,CAAUsC,IAAV,CAAevB,MAFM;AAG5BooC,UAAI,EAAE,KAAK/qC,OAAL,CAAagrC,WAHS;AAI5BjsB,UAAI,EAAEA,IAJsB;AAK5B6rB,YAAM,EAAEA;AALoB,KAAf,EAMZ1qC,MANY,GAMHgoB,QANG,CAMMjnB,UANN,CAAf;AAOD;;AAEDwa,SAAO,GAAG;AACR,SAAKR,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,SAAKA,OAAL,CAAahnC,MAAb;AACD;;AAEDqnC,cAAY,CAACC,MAAD,EAAShB,IAAT,EAAe;AACzBgB,UAAM,CAACnqC,EAAP,CAAU,UAAV,EAAuBuc,KAAD,IAAW;AAC/B,UAAIA,KAAK,CAACuI,OAAN,KAAkB3Y,QAAG,CAAC4O,IAAJ,CAASkK,KAA/B,EAAsC;AACpC1I,aAAK,CAACE,cAAN;AACA0sB,YAAI,CAACjtB,OAAL,CAAa,OAAb;AACD;AACF,KALD;AAMD;AAED;;;;;AAGAkuB,eAAa,CAACC,QAAD,EAAWC,SAAX,EAAsBC,QAAtB,EAAgC;AAC3C,SAAKtwB,EAAL,CAAQmvB,SAAR,CAAkBiB,QAAlB,EAA4BC,SAAS,CAACxyB,GAAV,MAAmByyB,QAAQ,CAACzyB,GAAT,EAA/C;AACD;AAED;;;;;;;;AAMA0yB,gBAAc,CAAC1V,QAAD,EAAW;AACvB,WAAOz1B,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B,YAAMokB,SAAS,GAAG,KAAKT,OAAL,CAAa3pC,IAAb,CAAkB,iBAAlB,CAAlB;AACA,YAAMqqC,QAAQ,GAAG,KAAKV,OAAL,CAAa3pC,IAAb,CAAkB,gBAAlB,CAAjB;AACA,YAAMmqC,QAAQ,GAAG,KAAKR,OAAL,CAAa3pC,IAAb,CAAkB,gBAAlB,CAAjB;AACA,YAAMuqC,gBAAgB,GAAG,KAAKZ,OAAL,CACtB3pC,IADsB,CACjB,sDADiB,CAAzB;AAEA,YAAMwqC,YAAY,GAAG,KAAKb,OAAL,CAClB3pC,IADkB,CACb,gDADa,CAArB;AAGA,WAAK+Z,EAAL,CAAQ0wB,aAAR,CAAsB,KAAKd,OAA3B,EAAoC,MAAM;AACxC,aAAK9hC,OAAL,CAAa2T,YAAb,CAA0B,cAA1B,EADwC,CAGxC;;AACA,YAAI,CAACoZ,QAAQ,CAAClyB,GAAV,IAAiBiK,IAAI,CAACS,UAAL,CAAgBwnB,QAAQ,CAAC5d,IAAzB,CAArB,EAAqD;AACnD4d,kBAAQ,CAAClyB,GAAT,GAAekyB,QAAQ,CAAC5d,IAAxB;AACD;;AAEDozB,iBAAS,CAACtqC,EAAV,CAAa,4BAAb,EAA2C,MAAM;AAC/C;AACA;AACA80B,kBAAQ,CAAC5d,IAAT,GAAgBozB,SAAS,CAACxyB,GAAV,EAAhB;AACA,eAAKsyB,aAAL,CAAmBC,QAAnB,EAA6BC,SAA7B,EAAwCC,QAAxC;AACD,SALD,EAKGzyB,GALH,CAKOgd,QAAQ,CAAC5d,IALhB;AAOAqzB,gBAAQ,CAACvqC,EAAT,CAAY,4BAAZ,EAA0C,MAAM;AAC9C;AACA;AACA,cAAI,CAAC80B,QAAQ,CAAC5d,IAAd,EAAoB;AAClBozB,qBAAS,CAACxyB,GAAV,CAAcyyB,QAAQ,CAACzyB,GAAT,EAAd;AACD;;AACD,eAAKsyB,aAAL,CAAmBC,QAAnB,EAA6BC,SAA7B,EAAwCC,QAAxC;AACD,SAPD,EAOGzyB,GAPH,CAOOgd,QAAQ,CAAClyB,GAPhB;;AASA,YAAI,CAACgP,GAAG,CAAC5I,cAAT,EAAyB;AACvBuhC,kBAAQ,CAACruB,OAAT,CAAiB,OAAjB;AACD;;AAED,aAAKkuB,aAAL,CAAmBC,QAAnB,EAA6BC,SAA7B,EAAwCC,QAAxC;AACA,aAAKL,YAAL,CAAkBK,QAAlB,EAA4BF,QAA5B;AACA,aAAKH,YAAL,CAAkBI,SAAlB,EAA6BD,QAA7B;AAEA,cAAMO,kBAAkB,GAAG9V,QAAQ,CAACG,WAAT,KAAyBrZ,SAAzB,GACvBkZ,QAAQ,CAACG,WADc,GACA,KAAKltB,OAAL,CAAa/I,OAAb,CAAqBmhC,eADhD;AAGAsK,wBAAgB,CAACI,IAAjB,CAAsB,SAAtB,EAAiCD,kBAAjC;AAEA,cAAME,kBAAkB,GAAGhW,QAAQ,CAAClyB,GAAT,GACvB,KADuB,GACf,KAAKmF,OAAL,CAAa/I,OAAb,CAAqBuE,WADjC;AAGAmnC,oBAAY,CAACG,IAAb,CAAkB,SAAlB,EAA6BC,kBAA7B;AAEAT,gBAAQ,CAACvjB,GAAT,CAAa,OAAb,EAAuBvK,KAAD,IAAW;AAC/BA,eAAK,CAACE,cAAN;AAEAyJ,kBAAQ,CAACI,OAAT,CAAiB;AACfkB,iBAAK,EAAEsN,QAAQ,CAACtN,KADD;AAEf5kB,eAAG,EAAE2nC,QAAQ,CAACzyB,GAAT,EAFU;AAGfZ,gBAAI,EAAEozB,SAAS,CAACxyB,GAAV,EAHS;AAIfmd,uBAAW,EAAEwV,gBAAgB,CAAC7Q,EAAjB,CAAoB,UAApB,CAJE;AAKf1E,yBAAa,EAAEwV,YAAY,CAAC9Q,EAAb,CAAgB,UAAhB;AALA,WAAjB;AAOA,eAAK3f,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACD,SAXD;AAYD,OAtDD;AAwDA,WAAK5vB,EAAL,CAAQ8wB,cAAR,CAAuB,KAAKlB,OAA5B,EAAqC,MAAM;AACzC;AACAS,iBAAS,CAACtxB,GAAV;AACAuxB,gBAAQ,CAACvxB,GAAT;AACAqxB,gBAAQ,CAACrxB,GAAT;;AAEA,YAAIkN,QAAQ,CAAC8kB,KAAT,OAAqB,SAAzB,EAAoC;AAClC9kB,kBAAQ,CAACO,MAAT;AACD;AACF,OATD;AAWA,WAAKxM,EAAL,CAAQgxB,UAAR,CAAmB,KAAKpB,OAAxB;AACD,KA7EM,EA6EJljB,OA7EI,EAAP;AA8ED;AAED;;;;;AAGA2R,MAAI,GAAG;AACL,UAAMxD,QAAQ,GAAG,KAAK/sB,OAAL,CAAamD,MAAb,CAAoB,oBAApB,CAAjB;AAEA,SAAKnD,OAAL,CAAamD,MAAb,CAAoB,kBAApB;AACA,SAAKs/B,cAAL,CAAoB1V,QAApB,EAA8BsD,IAA9B,CAAoCtD,QAAD,IAAc;AAC/C,WAAK/sB,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACA,WAAKnD,OAAL,CAAamD,MAAb,CAAoB,mBAApB,EAAyC4pB,QAAzC;AACD,KAHD,EAGGtqB,IAHH,CAGQ,MAAM;AACZ,WAAKzC,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,KALD;AAMD;;AA3K6B,C;;ACLhC;AACA;AACA;AAEe,MAAMggC,uBAAN,CAAkB;AAC/BrsC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKjb,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK2d,MAAL,GAAc5U,OAAO,CAAC/I,OAAR,CAAgB+X,SAA9B;AACA,SAAK6B,MAAL,GAAc;AACZ,iFAA2E,MAAM;AAC/E,aAAKomB,MAAL;AACD,OAHW;AAIZ,oEAA8D,MAAM;AAClE,aAAKxkB,IAAL;AACD;AANW,KAAd;AAQD;;AAED2B,kBAAgB,GAAG;AACjB,WAAO,CAACxX,KAAK,CAAC8J,OAAN,CAAc,KAAKzP,OAAL,CAAamsC,OAAb,CAAqBjoC,IAAnC,CAAR;AACD;;AAEDmX,YAAU,GAAG;AACX,SAAK+wB,QAAL,GAAgB,KAAKnxB,EAAL,CAAQkxB,OAAR,CAAgB;AAC9B3rC,eAAS,EAAE,mBADmB;AAE9BP,cAAQ,EAAGG,KAAD,IAAW;AACnB,cAAMisC,QAAQ,GAAGjsC,KAAK,CAACc,IAAN,CAAW,wCAAX,CAAjB;AACAmrC,gBAAQ,CAACnI,OAAT,CAAiB,4CAAjB;AACD;AAL6B,KAAhB,EAMbhkC,MANa,GAMJgoB,QANI,CAMK,KAAKvK,MANV,CAAhB;AAOA,UAAM0uB,QAAQ,GAAG,KAAKD,QAAL,CAAclrC,IAAd,CAAmB,wCAAnB,CAAjB;AAEA,SAAK6H,OAAL,CAAamD,MAAb,CAAoB,eAApB,EAAqCmgC,QAArC,EAA+C,KAAKrsC,OAAL,CAAamsC,OAAb,CAAqBjoC,IAApE;AAEA,SAAKkoC,QAAL,CAAcprC,EAAd,CAAiB,WAAjB,EAA+BsjB,CAAD,IAAO;AAAEA,OAAC,CAAC7G,cAAF;AAAqB,KAA5D;AACD;;AAEDhC,SAAO,GAAG;AACR,SAAK2wB,QAAL,CAAcvoC,MAAd;AACD;;AAEDm8B,QAAM,GAAG;AACP;AACA,QAAI,CAAC,KAAKj3B,OAAL,CAAamD,MAAb,CAAoB,iBAApB,CAAL,EAA6C;AAC3C,WAAKsP,IAAL;AACA;AACD;;AAED,UAAM0H,GAAG,GAAG,KAAKna,OAAL,CAAamD,MAAb,CAAoB,qBAApB,CAAZ;;AACA,QAAIgX,GAAG,CAACV,WAAJ,MAAqBU,GAAG,CAACrC,UAAJ,EAAzB,EAA2C;AACzC,YAAM0J,MAAM,GAAGvO,GAAG,CAAC/J,QAAJ,CAAaiR,GAAG,CAAC5C,EAAjB,EAAqBtE,GAAG,CAACjK,QAAzB,CAAf;AACA,YAAMu6B,IAAI,GAAGjsC,yBAAC,CAACkqB,MAAD,CAAD,CAAUzpB,IAAV,CAAe,MAAf,CAAb;AACA,WAAKsrC,QAAL,CAAclrC,IAAd,CAAmB,GAAnB,EAAwBJ,IAAxB,CAA6B,MAA7B,EAAqCwrC,IAArC,EAA2C/rC,IAA3C,CAAgD+rC,IAAhD;AAEA,YAAM7yB,GAAG,GAAGuC,GAAG,CAAC1C,kBAAJ,CAAuBiR,MAAvB,CAAZ;AACA,YAAMgiB,YAAY,GAAGlsC,yBAAC,CAAC,KAAKsd,MAAN,CAAD,CAAe3I,MAAf,EAArB;AACAyE,SAAG,CAAC5M,GAAJ,IAAW0/B,YAAY,CAAC1/B,GAAxB;AACA4M,SAAG,CAACrT,IAAJ,IAAYmmC,YAAY,CAACnmC,IAAzB;AAEA,WAAKgmC,QAAL,CAAcpkB,GAAd,CAAkB;AAChBC,eAAO,EAAE,OADO;AAEhB7hB,YAAI,EAAEqT,GAAG,CAACrT,IAFM;AAGhByG,WAAG,EAAE4M,GAAG,CAAC5M;AAHO,OAAlB;AAKD,KAfD,MAeO;AACL,WAAK2O,IAAL;AACD;AACF;;AAEDA,MAAI,GAAG;AACL,SAAK4wB,QAAL,CAAc5wB,IAAd;AACD;;AAtE8B,C;;ACJjC;AACA;AACA;AAEe,MAAMgxB,uBAAN,CAAkB;AAC/B3sC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKqvB,KAAL,GAAajqC,yBAAC,CAACwI,QAAQ,CAACkW,IAAV,CAAd;AACA,SAAKoV,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKnc,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AACD;;AAED/C,YAAU,GAAG;AACX,QAAIoxB,eAAe,GAAG,EAAtB;;AACA,QAAI,KAAKzsC,OAAL,CAAa05B,oBAAjB,EAAuC;AACrC,YAAM1E,IAAI,GAAG5T,IAAI,CAACsrB,KAAL,CAAWtrB,IAAI,CAACurB,GAAL,CAAS,KAAK3sC,OAAL,CAAa05B,oBAAtB,IAA8CtY,IAAI,CAACurB,GAAL,CAAS,IAAT,CAAzD,CAAb;AACA,YAAMC,YAAY,GAAG,CAAC,KAAK5sC,OAAL,CAAa05B,oBAAb,GAAoCtY,IAAI,CAACyrB,GAAL,CAAS,IAAT,EAAe7X,IAAf,CAArC,EAA2D1K,OAA3D,CAAmE,CAAnE,IAAwE,CAAxE,GACF,GADE,GACI,SAAS0K,IAAT,CADJ,GACqB,GAD1C;AAEAyX,qBAAe,GAAI,UAAS,KAAK7qC,IAAL,CAAUc,KAAV,CAAgBgB,eAAhB,GAAkC,KAAlC,GAA0CkpC,YAAa,UAAnF;AACD;;AAED,UAAM3rC,UAAU,GAAG,KAAKjB,OAAL,CAAauqC,aAAb,GAA6B,KAAKD,KAAlC,GAA0C,KAAKtqC,OAAL,CAAa+X,SAA1E;AACA,UAAMgH,IAAI,GAAG,CACX,uEADW,EAET,wCAAwC,KAAK/e,OAAL,CAAayM,EAArD,GAA0D,4BAA1D,GAAyF,KAAK7K,IAAL,CAAUc,KAAV,CAAgBe,eAAzG,GAA2H,UAFlH,EAGT,uCAAuC,KAAKzD,OAAL,CAAayM,EAApD,GAAyD,4EAHhD,EAIT,kEAJS,EAKTggC,eALS,EAMX,QANW,EAOX,+CAPW,EAQT,uCAAuC,KAAKzsC,OAAL,CAAayM,EAApD,GAAyD,4BAAzD,GAAwF,KAAK7K,IAAL,CAAUc,KAAV,CAAgBkB,GAAxG,GAA8G,UARrG,EAST,sCAAsC,KAAK5D,OAAL,CAAayM,EAAnD,GAAwD,kFAT/C,EAUX,QAVW,EAWXkB,IAXW,CAWN,EAXM,CAAb;AAYA,UAAMg9B,WAAW,GAAG,0DAApB;AACA,UAAMC,MAAM,GAAI,wCAAuCD,WAAY,YAAW,KAAK/oC,IAAL,CAAUc,KAAV,CAAgBC,MAAO,aAArG;AAEA,SAAKkoC,OAAL,GAAe,KAAK5vB,EAAL,CAAQ6vB,MAAR,CAAe;AAC5BvG,WAAK,EAAE,KAAK3iC,IAAL,CAAUc,KAAV,CAAgBC,MADK;AAE5BooC,UAAI,EAAE,KAAK/qC,OAAL,CAAagrC,WAFS;AAG5BjsB,UAAI,EAAEA,IAHsB;AAI5B6rB,YAAM,EAAEA;AAJoB,KAAf,EAKZ1qC,MALY,GAKHgoB,QALG,CAKMjnB,UALN,CAAf;AAMD;;AAEDwa,SAAO,GAAG;AACR,SAAKR,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,SAAKA,OAAL,CAAahnC,MAAb;AACD;;AAEDqnC,cAAY,CAACC,MAAD,EAAShB,IAAT,EAAe;AACzBgB,UAAM,CAACnqC,EAAP,CAAU,UAAV,EAAuBuc,KAAD,IAAW;AAC/B,UAAIA,KAAK,CAACuI,OAAN,KAAkB3Y,QAAG,CAAC4O,IAAJ,CAASkK,KAA/B,EAAsC;AACpC1I,aAAK,CAACE,cAAN;AACA0sB,YAAI,CAACjtB,OAAL,CAAa,OAAb;AACD;AACF,KALD;AAMD;;AAEDoc,MAAI,GAAG;AACL,SAAKvwB,OAAL,CAAamD,MAAb,CAAoB,kBAApB;AACA,SAAK4gC,eAAL,GAAuB1T,IAAvB,CAA6B14B,IAAD,IAAU;AACpC;AACA,WAAKua,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,WAAK9hC,OAAL,CAAamD,MAAb,CAAoB,qBAApB;;AAEA,UAAI,OAAOxL,IAAP,KAAgB,QAApB,EAA8B;AAAE;AAC9B;AACA,YAAI,KAAKV,OAAL,CAAaid,SAAb,CAAuB8vB,iBAA3B,EAA8C;AAC5C,eAAKhkC,OAAL,CAAa2T,YAAb,CAA0B,mBAA1B,EAA+Chc,IAA/C;AACD,SAFD,MAEO;AACL,eAAKqI,OAAL,CAAamD,MAAb,CAAoB,oBAApB,EAA0CxL,IAA1C;AACD;AACF,OAPD,MAOO;AAAE;AACP,aAAKqI,OAAL,CAAamD,MAAb,CAAoB,+BAApB,EAAqDxL,IAArD;AACD;AACF,KAfD,EAeG8K,IAfH,CAeQ,MAAM;AACZ,WAAKzC,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,KAjBD;AAkBD;AAED;;;;;;;;AAMA4gC,iBAAe,GAAG;AAChB,WAAOzsC,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B,YAAM8lB,WAAW,GAAG,KAAKnC,OAAL,CAAa3pC,IAAb,CAAkB,mBAAlB,CAApB;AACA,YAAM+rC,SAAS,GAAG,KAAKpC,OAAL,CAAa3pC,IAAb,CAAkB,iBAAlB,CAAlB;AACA,YAAMgsC,SAAS,GAAG,KAAKrC,OAAL,CAAa3pC,IAAb,CAAkB,iBAAlB,CAAlB;AAEA,WAAK+Z,EAAL,CAAQ0wB,aAAR,CAAsB,KAAKd,OAA3B,EAAoC,MAAM;AACxC,aAAK9hC,OAAL,CAAa2T,YAAb,CAA0B,cAA1B,EADwC,CAGxC;;AACAswB,mBAAW,CAACG,WAAZ,CAAwBH,WAAW,CAACx1B,KAAZ,GAAoBxW,EAApB,CAAuB,QAAvB,EAAkCuc,KAAD,IAAW;AAClE2J,kBAAQ,CAACI,OAAT,CAAiB/J,KAAK,CAACI,MAAN,CAAa6b,KAAb,IAAsBjc,KAAK,CAACI,MAAN,CAAa/E,KAApD;AACD,SAFuB,EAErBE,GAFqB,CAEjB,EAFiB,CAAxB;AAIAm0B,iBAAS,CAACjsC,EAAV,CAAa,4BAAb,EAA2C,MAAM;AAC/C,eAAKia,EAAL,CAAQmvB,SAAR,CAAkB8C,SAAlB,EAA6BD,SAAS,CAACn0B,GAAV,EAA7B;AACD,SAFD,EAEGA,GAFH,CAEO,EAFP;;AAIA,YAAI,CAAClG,GAAG,CAAC5I,cAAT,EAAyB;AACvBijC,mBAAS,CAAC/vB,OAAV,CAAkB,OAAlB;AACD;;AAEDgwB,iBAAS,CAACnsC,KAAV,CAAiBwc,KAAD,IAAW;AACzBA,eAAK,CAACE,cAAN;AACAyJ,kBAAQ,CAACI,OAAT,CAAiB2lB,SAAS,CAACn0B,GAAV,EAAjB;AACD,SAHD;AAKA,aAAKoyB,YAAL,CAAkB+B,SAAlB,EAA6BC,SAA7B;AACD,OAtBD;AAwBA,WAAKjyB,EAAL,CAAQ8wB,cAAR,CAAuB,KAAKlB,OAA5B,EAAqC,MAAM;AACzCmC,mBAAW,CAAChzB,GAAZ;AACAizB,iBAAS,CAACjzB,GAAV;AACAkzB,iBAAS,CAAClzB,GAAV;;AAEA,YAAIkN,QAAQ,CAAC8kB,KAAT,OAAqB,SAAzB,EAAoC;AAClC9kB,kBAAQ,CAACO,MAAT;AACD;AACF,OARD;AAUA,WAAKxM,EAAL,CAAQgxB,UAAR,CAAmB,KAAKpB,OAAxB;AACD,KAxCM,CAAP;AAyCD;;AA/H8B,C;;ACJjC;AACA;AACA;AAEA;;;;;;AAKe,MAAMuC,yBAAN,CAAmB;AAChCvtC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AAEA,SAAK6B,QAAL,GAAgB/T,OAAO,CAACqS,UAAR,CAAmB0B,QAAnB,CAA4B,CAA5B,CAAhB;AACA,SAAK9c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AAEA,SAAK4Z,MAAL,GAAc;AACZ,4CAAsC,MAAM;AAC1C,aAAK4B,IAAL;AACD;AAHW,KAAd;AAKD;;AAED2B,kBAAgB,GAAG;AACjB,WAAO,CAACxX,KAAK,CAAC8J,OAAN,CAAc,KAAKzP,OAAL,CAAamsC,OAAb,CAAqBzpC,KAAnC,CAAR;AACD;;AAED2Y,YAAU,GAAG;AACX,SAAK+wB,QAAL,GAAgB,KAAKnxB,EAAL,CAAQkxB,OAAR,CAAgB;AAC9B3rC,eAAS,EAAE;AADmB,KAAhB,EAEbN,MAFa,GAEJgoB,QAFI,CAEK,KAAKloB,OAAL,CAAa+X,SAFlB,CAAhB;AAGA,UAAMs0B,QAAQ,GAAG,KAAKD,QAAL,CAAclrC,IAAd,CAAmB,wCAAnB,CAAjB;AACA,SAAK6H,OAAL,CAAamD,MAAb,CAAoB,eAApB,EAAqCmgC,QAArC,EAA+C,KAAKrsC,OAAL,CAAamsC,OAAb,CAAqBzpC,KAApE;AAEA,SAAK0pC,QAAL,CAAcprC,EAAd,CAAiB,WAAjB,EAA+BsjB,CAAD,IAAO;AAAEA,OAAC,CAAC7G,cAAF;AAAqB,KAA5D;AACD;;AAEDhC,SAAO,GAAG;AACR,SAAK2wB,QAAL,CAAcvoC,MAAd;AACD;;AAEDm8B,QAAM,CAACriB,MAAD,EAASJ,KAAT,EAAgB;AACpB,QAAIvB,GAAG,CAACnB,KAAJ,CAAU8C,MAAV,CAAJ,EAAuB;AACrB,YAAMvI,QAAQ,GAAG/U,yBAAC,CAACsd,MAAD,CAAD,CAAU3I,MAAV,EAAjB;AACA,YAAMq4B,aAAa,GAAGhtC,yBAAC,CAAC,KAAK0I,OAAL,CAAaqS,UAAb,CAAwB0kB,WAAzB,CAAD,CAAuC9qB,MAAvC,EAAtB;AACA,YAAMyE,GAAG,GAAG;AACVrT,YAAI,EAAEgP,QAAQ,CAAChP,IAAT,GAAgBinC,aAAa,CAACjnC,IAD1B;AAEVyG,WAAG,EAAEuI,QAAQ,CAACvI,GAAT,GAAewgC,aAAa,CAACxgC;AAFxB,OAAZ;AAIA,WAAKu/B,QAAL,CAAcpkB,GAAd,CAAkB;AAChBC,eAAO,EAAE,OADO;AAEhB7hB,YAAI,EAAE,KAAKpG,OAAL,CAAastC,UAAb,GAA0B/vB,KAAK,CAACgrB,KAAN,GAAc,EAAxC,GAA6C9uB,GAAG,CAACrT,IAFvC;AAGhByG,WAAG,EAAE,KAAK7M,OAAL,CAAastC,UAAb,GAA0B/vB,KAAK,CAACirB,KAAhC,GAAwC/uB,GAAG,CAAC5M;AAHjC,OAAlB;AAKD,KAZD,MAYO;AACL,WAAK2O,IAAL;AACD;AACF;;AAEDA,MAAI,GAAG;AACL,SAAK4wB,QAAL,CAAc5wB,IAAd;AACD;;AArD+B,C;;ACTlC;AACA;AACA;AACA;AAEe,MAAM+xB,yBAAN,CAAmB;AAChC1tC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKjb,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4Z,MAAL,GAAc;AACZ,8BAAwB,CAACmmB,EAAD,EAAKzb,CAAL,KAAW;AACjC,aAAK0b,MAAL,CAAY1b,CAAC,CAAC3G,MAAd;AACD,OAHW;AAIZ,8DAAwD,MAAM;AAC5D,aAAKqiB,MAAL;AACD,OANW;AAOZ,4CAAsC,MAAM;AAC1C,aAAKxkB,IAAL;AACD;AATW,KAAd;AAWD;;AAED2B,kBAAgB,GAAG;AACjB,WAAO,CAACxX,KAAK,CAAC8J,OAAN,CAAc,KAAKzP,OAAL,CAAamsC,OAAb,CAAqB3nC,KAAnC,CAAR;AACD;;AAED6W,YAAU,GAAG;AACX,SAAK+wB,QAAL,GAAgB,KAAKnxB,EAAL,CAAQkxB,OAAR,CAAgB;AAC9B3rC,eAAS,EAAE;AADmB,KAAhB,EAEbN,MAFa,GAEJgoB,QAFI,CAEK,KAAKloB,OAAL,CAAa+X,SAFlB,CAAhB;AAGA,UAAMs0B,QAAQ,GAAG,KAAKD,QAAL,CAAclrC,IAAd,CAAmB,wCAAnB,CAAjB;AAEA,SAAK6H,OAAL,CAAamD,MAAb,CAAoB,eAApB,EAAqCmgC,QAArC,EAA+C,KAAKrsC,OAAL,CAAamsC,OAAb,CAAqB3nC,KAApE,EANW,CAQX;;AACA,QAAIoO,GAAG,CAACrI,IAAR,EAAc;AACZ1B,cAAQ,CAAC+rB,WAAT,CAAqB,0BAArB,EAAiD,KAAjD,EAAwD,KAAxD;AACD;;AAED,SAAKwX,QAAL,CAAcprC,EAAd,CAAiB,WAAjB,EAA+BsjB,CAAD,IAAO;AAAEA,OAAC,CAAC7G,cAAF;AAAqB,KAA5D;AACD;;AAEDhC,SAAO,GAAG;AACR,SAAK2wB,QAAL,CAAcvoC,MAAd;AACD;;AAEDm8B,QAAM,CAACriB,MAAD,EAAS;AACb,QAAI,KAAK5U,OAAL,CAAa+S,UAAb,EAAJ,EAA+B;AAC7B,aAAO,KAAP;AACD;;AAED,UAAMhK,MAAM,GAAGkK,GAAG,CAAClK,MAAJ,CAAW6L,MAAX,CAAf;;AAEA,QAAI7L,MAAJ,EAAY;AACV,YAAM2H,GAAG,GAAGuC,GAAG,CAAC1C,kBAAJ,CAAuBqE,MAAvB,CAAZ;AACA,WAAKyuB,QAAL,CAAcpkB,GAAd,CAAkB;AAChBC,eAAO,EAAE,OADO;AAEhB7hB,YAAI,EAAEqT,GAAG,CAACrT,IAFM;AAGhByG,WAAG,EAAE4M,GAAG,CAAC5M;AAHO,OAAlB;AAKD,KAPD,MAOO;AACL,WAAK2O,IAAL;AACD;;AAED,WAAO1J,MAAP;AACD;;AAED0J,MAAI,GAAG;AACL,SAAK4wB,QAAL,CAAc5wB,IAAd;AACD;;AAlE+B,C;;ACLlC;AACA;AACA;AAEe,MAAMgyB,uBAAN,CAAkB;AAC/B3tC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKqvB,KAAL,GAAajqC,yBAAC,CAACwI,QAAQ,CAACkW,IAAV,CAAd;AACA,SAAKoV,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKnc,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AACD;;AAED/C,YAAU,GAAG;AACX,UAAMpa,UAAU,GAAG,KAAKjB,OAAL,CAAauqC,aAAb,GAA6B,KAAKD,KAAlC,GAA0C,KAAKtqC,OAAL,CAAa+X,SAA1E;AACA,UAAMgH,IAAI,GAAG,CACX,oDADW,EAER,qCAAoC,KAAK/e,OAAL,CAAayM,EAAG,6BAA4B,KAAK7K,IAAL,CAAUmC,KAAV,CAAgBH,GAAI,8BAA6B,KAAKhC,IAAL,CAAUmC,KAAV,CAAgBE,SAAU,kBAFnJ,EAGR,oCAAmC,KAAKjE,OAAL,CAAayM,EAAG,kFAH3C,EAIX,QAJW,EAKXkB,IALW,CAKN,EALM,CAAb;AAMA,UAAMg9B,WAAW,GAAG,0DAApB;AACA,UAAMC,MAAM,GAAI,wCAAuCD,WAAY,YAAW,KAAK/oC,IAAL,CAAUmC,KAAV,CAAgBpB,MAAO,aAArG;AAEA,SAAKkoC,OAAL,GAAe,KAAK5vB,EAAL,CAAQ6vB,MAAR,CAAe;AAC5BvG,WAAK,EAAE,KAAK3iC,IAAL,CAAUmC,KAAV,CAAgBpB,MADK;AAE5BooC,UAAI,EAAE,KAAK/qC,OAAL,CAAagrC,WAFS;AAG5BjsB,UAAI,EAAEA,IAHsB;AAI5B6rB,YAAM,EAAEA;AAJoB,KAAf,EAKZ1qC,MALY,GAKHgoB,QALG,CAKMjnB,UALN,CAAf;AAMD;;AAEDwa,SAAO,GAAG;AACR,SAAKR,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,SAAKA,OAAL,CAAahnC,MAAb;AACD;;AAEDqnC,cAAY,CAACC,MAAD,EAAShB,IAAT,EAAe;AACzBgB,UAAM,CAACnqC,EAAP,CAAU,UAAV,EAAuBuc,KAAD,IAAW;AAC/B,UAAIA,KAAK,CAACuI,OAAN,KAAkB3Y,QAAG,CAAC4O,IAAJ,CAASkK,KAA/B,EAAsC;AACpC1I,aAAK,CAACE,cAAN;AACA0sB,YAAI,CAACjtB,OAAL,CAAa,OAAb;AACD;AACF,KALD;AAMD;;AAEDuwB,iBAAe,CAAC7pC,GAAD,EAAM;AACnB;AACA,UAAM8pC,QAAQ,GAAG,sHAAjB;AACA,UAAMC,gBAAgB,GAAG,qCAAzB;AACA,UAAMC,OAAO,GAAGhqC,GAAG,CAACqV,KAAJ,CAAUy0B,QAAV,CAAhB;AAEA,UAAMG,QAAQ,GAAG,oDAAjB;AACA,UAAMC,OAAO,GAAGlqC,GAAG,CAACqV,KAAJ,CAAU40B,QAAV,CAAhB;AAEA,UAAME,OAAO,GAAG,iCAAhB;AACA,UAAMC,MAAM,GAAGpqC,GAAG,CAACqV,KAAJ,CAAU80B,OAAV,CAAf;AAEA,UAAME,SAAS,GAAG,mDAAlB;AACA,UAAMC,QAAQ,GAAGtqC,GAAG,CAACqV,KAAJ,CAAUg1B,SAAV,CAAjB;AAEA,UAAME,QAAQ,GAAG,gEAAjB;AACA,UAAMC,OAAO,GAAGxqC,GAAG,CAACqV,KAAJ,CAAUk1B,QAAV,CAAhB;AAEA,UAAME,WAAW,GAAG,6CAApB;AACA,UAAMC,UAAU,GAAG1qC,GAAG,CAACqV,KAAJ,CAAUo1B,WAAV,CAAnB;AAEA,UAAME,QAAQ,GAAG,2BAAjB;AACA,UAAMC,OAAO,GAAG5qC,GAAG,CAACqV,KAAJ,CAAUs1B,QAAV,CAAhB;AAEA,UAAME,SAAS,GAAG,2DAAlB;AACA,UAAMC,QAAQ,GAAG9qC,GAAG,CAACqV,KAAJ,CAAUw1B,SAAV,CAAjB;AAEA,UAAME,SAAS,GAAG,gBAAlB;AACA,UAAMC,QAAQ,GAAGhrC,GAAG,CAACqV,KAAJ,CAAU01B,SAAV,CAAjB;AAEA,UAAME,SAAS,GAAG,gBAAlB;AACA,UAAMC,QAAQ,GAAGlrC,GAAG,CAACqV,KAAJ,CAAU41B,SAAV,CAAjB;AAEA,UAAME,UAAU,GAAG,aAAnB;AACA,UAAMC,SAAS,GAAGprC,GAAG,CAACqV,KAAJ,CAAU81B,UAAV,CAAlB;AAEA,UAAME,QAAQ,GAAG,yDAAjB;AACA,UAAMC,OAAO,GAAGtrC,GAAG,CAACqV,KAAJ,CAAUg2B,QAAV,CAAhB;AAEA,QAAIE,MAAJ;;AACA,QAAIvB,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAWvsC,MAAX,KAAsB,EAArC,EAAyC;AACvC,YAAM+tC,SAAS,GAAGxB,OAAO,CAAC,CAAD,CAAzB;AACA,UAAIyB,KAAK,GAAG,CAAZ;;AACA,UAAI,OAAOzB,OAAO,CAAC,CAAD,CAAd,KAAsB,WAA1B,EAAuC;AACrC,cAAM0B,eAAe,GAAG1B,OAAO,CAAC,CAAD,CAAP,CAAW30B,KAAX,CAAiB00B,gBAAjB,CAAxB;;AACA,YAAI2B,eAAJ,EAAqB;AACnB,eAAK,IAAI17B,CAAC,GAAG,CAAC,IAAD,EAAO,EAAP,EAAW,CAAX,CAAR,EAAuBqD,CAAC,GAAG,CAA3B,EAA8B2xB,CAAC,GAAGh1B,CAAC,CAACvS,MAAzC,EAAiD4V,CAAC,GAAG2xB,CAArD,EAAwD3xB,CAAC,EAAzD,EAA6D;AAC3Do4B,iBAAK,IAAK,OAAOC,eAAe,CAACr4B,CAAC,GAAG,CAAL,CAAtB,KAAkC,WAAlC,GAAgDrD,CAAC,CAACqD,CAAD,CAAD,GAAOuS,QAAQ,CAAC8lB,eAAe,CAACr4B,CAAC,GAAG,CAAL,CAAhB,EAAyB,EAAzB,CAA/D,GAA8F,CAAxG;AACD;AACF;AACF;;AACDk4B,YAAM,GAAG9uC,yBAAC,CAAC,UAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEM,6BAA6BsuC,SAA7B,IAA0CC,KAAK,GAAG,CAAR,GAAY,YAAYA,KAAxB,GAAgC,EAA1E,CAFN,EAGNvuC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,CAAT;AAID,KAfD,MAeO,IAAIgtC,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAWzsC,MAA1B,EAAkC;AACvC8tC,YAAM,GAAG9uC,yBAAC,CAAC,UAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEM,6BAA6BgtC,OAAO,CAAC,CAAD,CAApC,GAA0C,SAFhD,EAGNhtC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,EAINA,IAJM,CAID,WAJC,EAIY,IAJZ,EAKNA,IALM,CAKD,mBALC,EAKoB,MALpB,CAAT;AAMD,KAPM,MAOA,IAAIktC,MAAM,IAAIA,MAAM,CAAC,CAAD,CAAN,CAAU3sC,MAAxB,EAAgC;AACrC8tC,YAAM,GAAG9uC,yBAAC,CAAC,UAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEMktC,MAAM,CAAC,CAAD,CAAN,GAAY,eAFlB,EAGNltC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,EAINA,IAJM,CAID,OAJC,EAIQ,YAJR,CAAT;AAKD,KANM,MAMA,IAAIotC,QAAQ,IAAIA,QAAQ,CAAC,CAAD,CAAR,CAAY7sC,MAA5B,EAAoC;AACzC8tC,YAAM,GAAG9uC,yBAAC,CAAC,mEAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEM,8BAA8BotC,QAAQ,CAAC,CAAD,CAF5C,EAGNptC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,CAAT;AAID,KALM,MAKA,IAAIstC,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAW/sC,MAA1B,EAAkC;AACvC8tC,YAAM,GAAG9uC,yBAAC,CAAC,UAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEM,uCAAuCstC,OAAO,CAAC,CAAD,CAFpD,EAGNttC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,CAAT;AAID,KALM,MAKA,IAAIwtC,UAAU,IAAIA,UAAU,CAAC,CAAD,CAAV,CAAcjtC,MAAhC,EAAwC;AAC7C8tC,YAAM,GAAG9uC,yBAAC,CAAC,mEAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,QAFC,EAES,KAFT,EAGNA,IAHM,CAGD,OAHC,EAGQ,KAHR,EAINA,IAJM,CAID,KAJC,EAIM,8BAA8BwtC,UAAU,CAAC,CAAD,CAJ9C,CAAT;AAKD,KANM,MAMA,IAAKE,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAWntC,MAAvB,IAAmCqtC,QAAQ,IAAIA,QAAQ,CAAC,CAAD,CAAR,CAAYrtC,MAA/D,EAAwE;AAC7E,YAAMkuC,GAAG,GAAKf,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAWntC,MAAvB,GAAiCmtC,OAAO,CAAC,CAAD,CAAxC,GAA8CE,QAAQ,CAAC,CAAD,CAAnE;AACAS,YAAM,GAAG9uC,yBAAC,CAAC,mEAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,QAFC,EAES,KAFT,EAGNA,IAHM,CAGD,OAHC,EAGQ,KAHR,EAINA,IAJM,CAID,KAJC,EAIM,6CAA6CyuC,GAA7C,GAAmD,aAJzD,CAAT;AAKD,KAPM,MAOA,IAAIX,QAAQ,IAAIE,QAAZ,IAAwBE,SAA5B,EAAuC;AAC5CG,YAAM,GAAG9uC,yBAAC,CAAC,kBAAD,CAAD,CACNS,IADM,CACD,KADC,EACM8C,GADN,EAEN9C,IAFM,CAED,OAFC,EAEQ,KAFR,EAEeA,IAFf,CAEoB,QAFpB,EAE8B,KAF9B,CAAT;AAGD,KAJM,MAIA,IAAIouC,OAAO,IAAIA,OAAO,CAAC,CAAD,CAAP,CAAW7tC,MAA1B,EAAkC;AACvC8tC,YAAM,GAAG9uC,yBAAC,CAAC,UAAD,CAAD,CACNS,IADM,CACD,aADC,EACc,CADd,EAENA,IAFM,CAED,KAFC,EAEM,qDAAqD0uC,kBAAkB,CAACN,OAAO,CAAC,CAAD,CAAR,CAAvE,GAAsF,wBAF5F,EAGNpuC,IAHM,CAGD,OAHC,EAGQ,KAHR,EAGeA,IAHf,CAGoB,QAHpB,EAG8B,KAH9B,EAINA,IAJM,CAID,WAJC,EAIY,IAJZ,EAKNA,IALM,CAKD,mBALC,EAKoB,MALpB,CAAT;AAMD,KAPM,MAOA;AACL;AACA,aAAO,KAAP;AACD;;AAEDquC,UAAM,CAAC1uC,QAAP,CAAgB,iBAAhB;AAEA,WAAO0uC,MAAM,CAAC,CAAD,CAAb;AACD;;AAED7V,MAAI,GAAG;AACL,UAAMphB,IAAI,GAAG,KAAKnP,OAAL,CAAamD,MAAb,CAAoB,wBAApB,CAAb;AACA,SAAKnD,OAAL,CAAamD,MAAb,CAAoB,kBAApB;AACA,SAAKujC,eAAL,CAAqBv3B,IAArB,EAA2BkhB,IAA3B,CAAiCx1B,GAAD,IAAS;AACvC;AACA,WAAKqX,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,WAAK9hC,OAAL,CAAamD,MAAb,CAAoB,qBAApB,EAHuC,CAKvC;;AACA,YAAM9L,KAAK,GAAG,KAAKqtC,eAAL,CAAqB7pC,GAArB,CAAd;;AAEA,UAAIxD,KAAJ,EAAW;AACT;AACA,aAAK2I,OAAL,CAAamD,MAAb,CAAoB,mBAApB,EAAyC9L,KAAzC;AACD;AACF,KAZD,EAYGoL,IAZH,CAYQ,MAAM;AACZ,WAAKzC,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,KAdD;AAeD;AAED;;;;;;;;AAMAujC,iBAAe,CAACv3B,IAAD,EAAO;AACpB,WAAO7X,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B,YAAMwoB,SAAS,GAAG,KAAK7E,OAAL,CAAa3pC,IAAb,CAAkB,iBAAlB,CAAlB;AACA,YAAMyuC,SAAS,GAAG,KAAK9E,OAAL,CAAa3pC,IAAb,CAAkB,iBAAlB,CAAlB;AAEA,WAAK+Z,EAAL,CAAQ0wB,aAAR,CAAsB,KAAKd,OAA3B,EAAoC,MAAM;AACxC,aAAK9hC,OAAL,CAAa2T,YAAb,CAA0B,cAA1B;AAEAgzB,iBAAS,CAAC1uC,EAAV,CAAa,4BAAb,EAA2C,MAAM;AAC/C,eAAKia,EAAL,CAAQmvB,SAAR,CAAkBuF,SAAlB,EAA6BD,SAAS,CAAC52B,GAAV,EAA7B;AACD,SAFD;;AAIA,YAAI,CAAClG,GAAG,CAAC5I,cAAT,EAAyB;AACvB0lC,mBAAS,CAACxyB,OAAV,CAAkB,OAAlB;AACD;;AAEDyyB,iBAAS,CAAC5uC,KAAV,CAAiBwc,KAAD,IAAW;AACzBA,eAAK,CAACE,cAAN;AACAyJ,kBAAQ,CAACI,OAAT,CAAiBooB,SAAS,CAAC52B,GAAV,EAAjB;AACD,SAHD;AAKA,aAAKoyB,YAAL,CAAkBwE,SAAlB,EAA6BC,SAA7B;AACD,OAjBD;AAmBA,WAAK10B,EAAL,CAAQ8wB,cAAR,CAAuB,KAAKlB,OAA5B,EAAqC,MAAM;AACzC6E,iBAAS,CAAC11B,GAAV;AACA21B,iBAAS,CAAC31B,GAAV;;AAEA,YAAIkN,QAAQ,CAAC8kB,KAAT,OAAqB,SAAzB,EAAoC;AAClC9kB,kBAAQ,CAACO,MAAT;AACD;AACF,OAPD;AASA,WAAKxM,EAAL,CAAQgxB,UAAR,CAAmB,KAAKpB,OAAxB;AACD,KAjCM,CAAP;AAkCD;;AAzN8B,C;;ACJjC;AACA;AAEe,MAAM+E,qBAAN,CAAiB;AAC9B/vC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKqvB,KAAL,GAAajqC,yBAAC,CAACwI,QAAQ,CAACkW,IAAV,CAAd;AACA,SAAKoV,OAAL,GAAeprB,OAAO,CAACqS,UAAR,CAAmBe,MAAlC;AACA,SAAKnc,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK4B,IAAL,GAAY,KAAK5B,OAAL,CAAaoe,QAAzB;AACD;;AAED/C,YAAU,GAAG;AACX,UAAMpa,UAAU,GAAG,KAAKjB,OAAL,CAAauqC,aAAb,GAA6B,KAAKD,KAAlC,GAA0C,KAAKtqC,OAAL,CAAa+X,SAA1E;AACA,UAAMgH,IAAI,GAAG,CACX,yBADW,EAET,gFAFS,EAGT,mFAHS,EAIT,sFAJS,EAKX,MALW,EAMXpR,IANF;AAQA,SAAKk9B,OAAL,GAAe,KAAK5vB,EAAL,CAAQ6vB,MAAR,CAAe;AAC5BvG,WAAK,EAAE,KAAK3iC,IAAL,CAAU5B,OAAV,CAAkB8F,IADG;AAE5BilC,UAAI,EAAE,KAAK/qC,OAAL,CAAagrC,WAFS;AAG5BjsB,UAAI,EAAE,KAAK8wB,kBAAL,EAHsB;AAI5BjF,YAAM,EAAE7rB,IAJoB;AAK5B9e,cAAQ,EAAGG,KAAD,IAAW;AACnBA,aAAK,CAACc,IAAN,CAAW,8BAAX,EAA2C8mB,GAA3C,CAA+C;AAC7C,wBAAc,GAD+B;AAE7C,sBAAY;AAFiC,SAA/C;AAID;AAV2B,KAAf,EAWZ9nB,MAXY,GAWHgoB,QAXG,CAWMjnB,UAXN,CAAf;AAYD;;AAEDwa,SAAO,GAAG;AACR,SAAKR,EAAL,CAAQgwB,UAAR,CAAmB,KAAKJ,OAAxB;AACA,SAAKA,OAAL,CAAahnC,MAAb;AACD;;AAEDgsC,oBAAkB,GAAG;AACnB,UAAM/X,MAAM,GAAG,KAAK93B,OAAL,CAAa83B,MAAb,CAAoBllB,GAAG,CAACxI,KAAJ,GAAY,KAAZ,GAAoB,IAAxC,CAAf;AACA,WAAOyP,MAAM,CAACC,IAAP,CAAYge,MAAZ,EAAoBtqB,GAApB,CAAyBL,GAAD,IAAS;AACtC,YAAM2iC,OAAO,GAAGhY,MAAM,CAAC3qB,GAAD,CAAtB;AACA,YAAM4iC,IAAI,GAAG1vC,yBAAC,CAAC,0CAAD,CAAd;AACA0vC,UAAI,CAACzuC,MAAL,CAAYjB,yBAAC,CAAC,iBAAiB8M,GAAjB,GAAuB,gBAAxB,CAAD,CAA2C6a,GAA3C,CAA+C;AACzD,iBAAS,GADgD;AAEzD,wBAAgB;AAFyC,OAA/C,CAAZ,EAGI1mB,MAHJ,CAGWjB,yBAAC,CAAC,SAAD,CAAD,CAAaE,IAAb,CAAkB,KAAKwI,OAAL,CAAasG,IAAb,CAAkB,UAAUygC,OAA5B,KAAwCA,OAA1D,CAHX;AAIA,aAAOC,IAAI,CAACxvC,IAAL,EAAP;AACD,KARM,EAQJoN,IARI,CAQC,EARD,CAAP;AASD;AAED;;;;;;;AAKAqiC,gBAAc,GAAG;AACf,WAAO3vC,yBAAC,CAAC4mB,QAAF,CAAYC,QAAD,IAAc;AAC9B,WAAKjM,EAAL,CAAQ0wB,aAAR,CAAsB,KAAKd,OAA3B,EAAoC,MAAM;AACxC,aAAK9hC,OAAL,CAAa2T,YAAb,CAA0B,cAA1B;AACAwK,gBAAQ,CAACI,OAAT;AACD,OAHD;AAIA,WAAKrM,EAAL,CAAQgxB,UAAR,CAAmB,KAAKpB,OAAxB;AACD,KANM,EAMJljB,OANI,EAAP;AAOD;;AAED2R,MAAI,GAAG;AACL,SAAKvwB,OAAL,CAAamD,MAAb,CAAoB,kBAApB;AACA,SAAK8jC,cAAL,GAAsB5W,IAAtB,CAA2B,MAAM;AAC/B,WAAKrwB,OAAL,CAAamD,MAAb,CAAoB,qBAApB;AACD,KAFD;AAGD;;AAzE6B,C;;ACHhC;AACA;AACA;AAEA,MAAM+jC,yBAAyB,GAAG,EAAlC;AAEe,MAAMC,qBAAN,CAAiB;AAC9BrwC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AACA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKjb,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AAEA,SAAKmwC,OAAL,GAAe,IAAf;AAEA,SAAKv2B,MAAL,GAAc;AACZ,+DAAyD,MAAM;AAC7D,YAAI,KAAK5Z,OAAL,CAAagd,OAAjB,EAA0B;AACxB,eAAKgjB,MAAL;AACD;AACF,OALW;AAMZ,sFAAgF,MAAM;AACpF,aAAKxkB,IAAL;AACD,OARW;AASZ,6BAAuB,CAACukB,EAAD,EAAKzb,CAAL,KAAW;AAChC,YAAI,CAAC,KAAK8nB,QAAL,CAAcxR,EAAd,CAAiB,gBAAjB,CAAL,EAAyC;AACvC,eAAKpf,IAAL;AACD;AACF;AAbW,KAAd;AAeD;;AAED2B,kBAAgB,GAAG;AACjB,WAAO,KAAKnd,OAAL,CAAa03B,OAAb,IAAwB,CAAC/xB,KAAK,CAAC8J,OAAN,CAAc,KAAKzP,OAAL,CAAamsC,OAAb,CAAqBiE,GAAnC,CAAhC;AACD;;AAED/0B,YAAU,GAAG;AACX,SAAK+wB,QAAL,GAAgB,KAAKnxB,EAAL,CAAQkxB,OAAR,CAAgB;AAC9B3rC,eAAS,EAAE;AADmB,KAAhB,EAEbN,MAFa,GAEJgoB,QAFI,CAEK,KAAKloB,OAAL,CAAa+X,SAFlB,CAAhB;AAGA,UAAMs0B,QAAQ,GAAG,KAAKD,QAAL,CAAclrC,IAAd,CAAmB,kBAAnB,CAAjB;AAEA,SAAK6H,OAAL,CAAamD,MAAb,CAAoB,eAApB,EAAqCmgC,QAArC,EAA+C,KAAKrsC,OAAL,CAAamsC,OAAb,CAAqBiE,GAApE,EANW,CAQX;;AACA,SAAKhE,QAAL,CAAcprC,EAAd,CAAiB,WAAjB,EAA8B,MAAM;AAAE,WAAKmvC,OAAL,GAAe,KAAf;AAAuB,KAA7D,EATW,CAUX;;AACA,SAAK/D,QAAL,CAAcprC,EAAd,CAAiB,SAAjB,EAA4B,MAAM;AAAE,WAAKmvC,OAAL,GAAe,IAAf;AAAsB,KAA1D;AACD;;AAED10B,SAAO,GAAG;AACR,SAAK2wB,QAAL,CAAcvoC,MAAd;AACD;;AAEDm8B,QAAM,GAAG;AACP,UAAM1W,SAAS,GAAG,KAAKvgB,OAAL,CAAamD,MAAb,CAAoB,qBAApB,CAAlB;;AACA,QAAIod,SAAS,CAACd,KAAV,IAAmB,CAACc,SAAS,CAACd,KAAV,CAAgBhG,WAAhB,EAAxB,EAAuD;AACrD,YAAM7V,IAAI,GAAGhH,KAAK,CAAC+I,IAAN,CAAW4a,SAAS,CAACd,KAAV,CAAgB/D,cAAhB,EAAX,CAAb;;AACA,UAAI9X,IAAJ,EAAU;AACR,cAAM0jC,GAAG,GAAGxiC,IAAI,CAACnB,QAAL,CAAcC,IAAd,CAAZ;AAEA,aAAKy/B,QAAL,CAAcpkB,GAAd,CAAkB;AAChBC,iBAAO,EAAE,OADO;AAEhB7hB,cAAI,EAAEgb,IAAI,CAAC8d,GAAL,CAASmR,GAAG,CAACjqC,IAAJ,GAAWiqC,GAAG,CAAClnC,KAAJ,GAAY,CAAhC,EAAmC,CAAnC,IAAwC8mC,yBAF9B;AAGhBpjC,aAAG,EAAEwjC,GAAG,CAACxjC,GAAJ,GAAUwjC,GAAG,CAACluC;AAHH,SAAlB;AAKA,aAAK4G,OAAL,CAAamD,MAAb,CAAoB,4BAApB,EAAkD,KAAKkgC,QAAvD;AACD;AACF,KAZD,MAYO;AACL,WAAK5wB,IAAL;AACD;AACF;;AAEDA,MAAI,GAAG;AACL,QAAI,KAAK20B,OAAT,EAAkB;AAChB,WAAK/D,QAAL,CAAc5wB,IAAd;AACD;AACF;;AAtE6B,C;;ACNhC;AACA;AACA;AACA;AACA;AACA;AAEA,MAAM80B,YAAY,GAAG,CAArB;AAEe,MAAMC,uBAAN,CAAkB;AAC/B1wC,aAAW,CAACkJ,OAAD,EAAU;AACnB,SAAKA,OAAL,GAAeA,OAAf;AAEA,SAAKkS,EAAL,GAAU5a,yBAAC,CAACsB,UAAF,CAAasZ,EAAvB;AACA,SAAKmN,SAAL,GAAiBrf,OAAO,CAACqS,UAAR,CAAmB0B,QAApC;AACA,SAAK9c,OAAL,GAAe+I,OAAO,CAAC/I,OAAvB;AACA,SAAK2d,MAAL,GAAc5U,OAAO,CAAC/I,OAAR,CAAgB+X,SAA9B;AACA,SAAKy4B,IAAL,GAAY,KAAKxwC,OAAL,CAAawwC,IAAb,IAAqB,EAAjC;AACA,SAAKC,SAAL,GAAiB,KAAKzwC,OAAL,CAAa0wC,aAAb,IAA8B,QAA/C;AACA,SAAKC,KAAL,GAAalvC,KAAK,CAACC,OAAN,CAAc,KAAK8uC,IAAnB,IAA2B,KAAKA,IAAhC,GAAuC,CAAC,KAAKA,IAAN,CAApD;AAEA,SAAK52B,MAAL,GAAc;AACZ,0BAAoB,CAACmmB,EAAD,EAAKzb,CAAL,KAAW;AAC7B,YAAI,CAACA,CAAC,CAAC+S,kBAAF,EAAL,EAA6B;AAC3B,eAAKyJ,WAAL,CAAiBxc,CAAjB;AACD;AACF,OALW;AAMZ,4BAAsB,CAACyb,EAAD,EAAKzb,CAAL,KAAW;AAC/B,aAAKyc,aAAL,CAAmBzc,CAAnB;AACD,OARW;AASZ,oEAA8D,MAAM;AAClE,aAAK9I,IAAL;AACD;AAXW,KAAd;AAaD;;AAED2B,kBAAgB,GAAG;AACjB,WAAO,KAAKwzB,KAAL,CAAWtvC,MAAX,GAAoB,CAA3B;AACD;;AAEDga,YAAU,GAAG;AACX,SAAK2lB,aAAL,GAAqB,IAArB;AACA,SAAK4P,YAAL,GAAoB,IAApB;AACA,SAAKxE,QAAL,GAAgB,KAAKnxB,EAAL,CAAQkxB,OAAR,CAAgB;AAC9B3rC,eAAS,EAAE,mBADmB;AAE9BqwC,eAAS,EAAE,IAFmB;AAG9BJ,eAAS,EAAE;AAHmB,KAAhB,EAIbvwC,MAJa,GAIJgoB,QAJI,CAIK,KAAKvK,MAJV,CAAhB;AAMA,SAAKyuB,QAAL,CAAc5wB,IAAd;AACA,SAAK6wB,QAAL,GAAgB,KAAKD,QAAL,CAAclrC,IAAd,CAAmB,wCAAnB,CAAhB;AACA,SAAKmrC,QAAL,CAAcrrC,EAAd,CAAiB,OAAjB,EAA0B,iBAA1B,EAA8CsjB,CAAD,IAAO;AAClD,WAAK+nB,QAAL,CAAcnrC,IAAd,CAAmB,SAAnB,EAA8Bm7B,WAA9B,CAA0C,QAA1C;AACAh8B,+BAAC,CAACikB,CAAC,CAAC6e,aAAH,CAAD,CAAmB1iC,QAAnB,CAA4B,QAA5B;AACA,WAAK+X,OAAL;AACD,KAJD;AAMA,SAAK4zB,QAAL,CAAcprC,EAAd,CAAiB,WAAjB,EAA+BsjB,CAAD,IAAO;AAAEA,OAAC,CAAC7G,cAAF;AAAqB,KAA5D;AACD;;AAEDhC,SAAO,GAAG;AACR,SAAK2wB,QAAL,CAAcvoC,MAAd;AACD;;AAEDitC,YAAU,CAACnJ,KAAD,EAAQ;AAChB,SAAK0E,QAAL,CAAcnrC,IAAd,CAAmB,SAAnB,EAA8Bm7B,WAA9B,CAA0C,QAA1C;AACAsL,SAAK,CAAClnC,QAAN,CAAe,QAAf;AAEA,SAAK4rC,QAAL,CAAc,CAAd,EAAiBv/B,SAAjB,GAA6B66B,KAAK,CAAC,CAAD,CAAL,CAAS3lB,SAAT,GAAsB,KAAKqqB,QAAL,CAAc0E,WAAd,KAA8B,CAAjF;AACD;;AAEDC,UAAQ,GAAG;AACT,UAAMC,QAAQ,GAAG,KAAK5E,QAAL,CAAcnrC,IAAd,CAAmB,wBAAnB,CAAjB;AACA,UAAMgwC,KAAK,GAAGD,QAAQ,CAAC/gC,IAAT,EAAd;;AAEA,QAAIghC,KAAK,CAAC7vC,MAAV,EAAkB;AAChB,WAAKyvC,UAAL,CAAgBI,KAAhB;AACD,KAFD,MAEO;AACL,UAAIC,UAAU,GAAGF,QAAQ,CAAC38B,MAAT,GAAkBpE,IAAlB,EAAjB;;AAEA,UAAI,CAACihC,UAAU,CAAC9vC,MAAhB,EAAwB;AACtB8vC,kBAAU,GAAG,KAAK9E,QAAL,CAAcnrC,IAAd,CAAmB,kBAAnB,EAAuCsd,KAAvC,EAAb;AACD;;AAED,WAAKsyB,UAAL,CAAgBK,UAAU,CAACjwC,IAAX,CAAgB,iBAAhB,EAAmCsd,KAAnC,EAAhB;AACD;AACF;;AAED4yB,QAAM,GAAG;AACP,UAAMH,QAAQ,GAAG,KAAK5E,QAAL,CAAcnrC,IAAd,CAAmB,wBAAnB,CAAjB;AACA,UAAMmwC,KAAK,GAAGJ,QAAQ,CAAC9gC,IAAT,EAAd;;AAEA,QAAIkhC,KAAK,CAAChwC,MAAV,EAAkB;AAChB,WAAKyvC,UAAL,CAAgBO,KAAhB;AACD,KAFD,MAEO;AACL,UAAIC,UAAU,GAAGL,QAAQ,CAAC38B,MAAT,GAAkBnE,IAAlB,EAAjB;;AAEA,UAAI,CAACmhC,UAAU,CAACjwC,MAAhB,EAAwB;AACtBiwC,kBAAU,GAAG,KAAKjF,QAAL,CAAcnrC,IAAd,CAAmB,kBAAnB,EAAuCwN,IAAvC,EAAb;AACD;;AAED,WAAKoiC,UAAL,CAAgBQ,UAAU,CAACpwC,IAAX,CAAgB,iBAAhB,EAAmCwN,IAAnC,EAAhB;AACD;AACF;;AAED8J,SAAO,GAAG;AACR,UAAMmvB,KAAK,GAAG,KAAK0E,QAAL,CAAcnrC,IAAd,CAAmB,wBAAnB,CAAd;;AAEA,QAAIymC,KAAK,CAACtmC,MAAV,EAAkB;AAChB,UAAIoP,IAAI,GAAG,KAAK8gC,YAAL,CAAkB5J,KAAlB,CAAX,CADgB,CAEhB;;AACA,UAAI,KAAKiJ,YAAL,KAAsB,IAAtB,IAA8B,KAAKA,YAAL,CAAkBvvC,MAAlB,KAA6B,CAA/D,EAAkE;AAChE,aAAK2/B,aAAL,CAAmBzgB,EAAnB,GAAwB,KAAKygB,aAAL,CAAmBvgB,EAA3C,CADgE,CAElE;AACC,OAHD,MAGO,IAAI,KAAKmwB,YAAL,KAAsB,IAAtB,IAA8B,KAAKA,YAAL,CAAkBvvC,MAAlB,GAA2B,CAAzD,IAA8D,CAAC,KAAK2/B,aAAL,CAAmBxe,WAAnB,EAAnE,EAAqG;AAC1G,YAAIgvB,YAAY,GAAG,KAAKxQ,aAAL,CAAmBvgB,EAAnB,GAAwB,KAAKugB,aAAL,CAAmBzgB,EAA3C,GAAgD,KAAKqwB,YAAL,CAAkBvvC,MAArF;;AACA,YAAImwC,YAAY,GAAG,CAAnB,EAAsB;AACpB,eAAKxQ,aAAL,CAAmBzgB,EAAnB,IAAyBixB,YAAzB;AACD;AACF;;AACD,WAAKxQ,aAAL,CAAmBxd,UAAnB,CAA8B/S,IAA9B;;AAEA,UAAI,KAAKzQ,OAAL,CAAayxC,UAAb,KAA4B,MAAhC,EAAwC;AACtC,YAAIt3B,KAAK,GAAGtR,QAAQ,CAACsP,cAAT,CAAwB,EAAxB,CAAZ;AACA9X,iCAAC,CAACoQ,IAAD,CAAD,CAAQ2hB,KAAR,CAAcjY,KAAd;AACAqO,kBAAK,CAAChD,oBAAN,CAA2BrL,KAA3B,EAAkCrS,MAAlC;AACD,OAJD,MAIO;AACL0gB,kBAAK,CAAC/C,mBAAN,CAA0BhV,IAA1B,EAAgC3I,MAAhC;AACD;;AAED,WAAKk5B,aAAL,GAAqB,IAArB;AACA,WAAKxlB,IAAL;AACA,WAAKzS,OAAL,CAAamD,MAAb,CAAoB,cAApB;AACD;AACF;;AAEDqlC,cAAY,CAAC5J,KAAD,EAAQ;AAClB,UAAM6I,IAAI,GAAG,KAAKG,KAAL,CAAWhJ,KAAK,CAACjnC,IAAN,CAAW,OAAX,CAAX,CAAb;AACA,UAAMqL,IAAI,GAAG47B,KAAK,CAACjnC,IAAN,CAAW,MAAX,CAAb;AACA,QAAI+P,IAAI,GAAG+/B,IAAI,CAAChU,OAAL,GAAegU,IAAI,CAAChU,OAAL,CAAazwB,IAAb,CAAf,GAAoCA,IAA/C;;AACA,QAAI,OAAO0E,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,UAAI,GAAGuL,GAAG,CAAC/D,UAAJ,CAAexH,IAAf,CAAP;AACD;;AACD,WAAOA,IAAP;AACD;;AAEDihC,qBAAmB,CAACC,OAAD,EAAUxW,KAAV,EAAiB;AAClC,UAAMqV,IAAI,GAAG,KAAKG,KAAL,CAAWgB,OAAX,CAAb;AACA,WAAOxW,KAAK,CAAC3tB,GAAN,CAAU,CAACzB,IAAD,EAAOgD,GAAP,KAAe;AAC9B,YAAM44B,KAAK,GAAGtnC,yBAAC,CAAC,+BAAD,CAAf;AACAsnC,WAAK,CAACrmC,MAAN,CAAakvC,IAAI,CAAChM,QAAL,GAAgBgM,IAAI,CAAChM,QAAL,CAAcz4B,IAAd,CAAhB,GAAsCA,IAAI,GAAG,EAA1D;AACA47B,WAAK,CAACjnC,IAAN,CAAW;AACT,iBAASixC,OADA;AAET,gBAAQ5lC;AAFC,OAAX;AAIA,aAAO47B,KAAP;AACD,KARM,CAAP;AASD;;AAED5G,eAAa,CAACzc,CAAD,EAAI;AACf,QAAI,CAAC,KAAK8nB,QAAL,CAAcxR,EAAd,CAAiB,UAAjB,CAAL,EAAmC;AACjC;AACD;;AAED,QAAItW,CAAC,CAACwB,OAAF,KAAc3Y,QAAG,CAAC4O,IAAJ,CAASkK,KAA3B,EAAkC;AAChC3B,OAAC,CAAC7G,cAAF;AACA,WAAKjF,OAAL;AACD,KAHD,MAGO,IAAI8L,CAAC,CAACwB,OAAF,KAAc3Y,QAAG,CAAC4O,IAAJ,CAASuK,EAA3B,EAA+B;AACpChC,OAAC,CAAC7G,cAAF;AACA,WAAK2zB,MAAL;AACD,KAHM,MAGA,IAAI9sB,CAAC,CAACwB,OAAF,KAAc3Y,QAAG,CAAC4O,IAAJ,CAASyK,IAA3B,EAAiC;AACtClC,OAAC,CAAC7G,cAAF;AACA,WAAKuzB,QAAL;AACD;AACF;;AAEDY,eAAa,CAAC1tB,KAAD,EAAQ+c,OAAR,EAAiBhhC,QAAjB,EAA2B;AACtC,UAAMuwC,IAAI,GAAG,KAAKG,KAAL,CAAWzsB,KAAX,CAAb;;AACA,QAAIssB,IAAI,IAAIA,IAAI,CAACv3B,KAAL,CAAW1P,IAAX,CAAgB03B,OAAhB,CAAR,IAAoCuP,IAAI,CAACqB,MAA7C,EAAqD;AACnD,YAAMpoC,OAAO,GAAG+mC,IAAI,CAACv3B,KAAL,CAAWvP,IAAX,CAAgBu3B,OAAhB,CAAhB;AACA,WAAK2P,YAAL,GAAoBnnC,OAAO,CAAC,CAAD,CAA3B;AACA+mC,UAAI,CAACqB,MAAL,CAAYpoC,OAAO,CAAC,CAAD,CAAnB,EAAwBxJ,QAAxB;AACD,KAJD,MAIO;AACLA,cAAQ;AACT;AACF;;AAED6xC,aAAW,CAAC/iC,GAAD,EAAMkyB,OAAN,EAAe;AACxB,UAAMsG,MAAM,GAAGlnC,yBAAC,CAAC,iDAAiD0O,GAAjD,GAAuD,KAAxD,CAAhB;AACA,SAAK6iC,aAAL,CAAmB7iC,GAAnB,EAAwBkyB,OAAxB,EAAkC9F,KAAD,IAAW;AAC1CA,WAAK,GAAGA,KAAK,IAAI,EAAjB;;AACA,UAAIA,KAAK,CAAC95B,MAAV,EAAkB;AAChBkmC,cAAM,CAAChnC,IAAP,CAAY,KAAKmxC,mBAAL,CAAyB3iC,GAAzB,EAA8BosB,KAA9B,CAAZ;AACA,aAAK7B,IAAL;AACD;AACF,KAND;AAQA,WAAOiO,MAAP;AACD;;AAEDzG,aAAW,CAACxc,CAAD,EAAI;AACb,QAAI,CAAC3e,KAAK,CAACuJ,QAAN,CAAe,CAAC/B,QAAG,CAAC4O,IAAJ,CAASkK,KAAV,EAAiB9Y,QAAG,CAAC4O,IAAJ,CAASuK,EAA1B,EAA8BnZ,QAAG,CAAC4O,IAAJ,CAASyK,IAAvC,CAAf,EAA6DlC,CAAC,CAACwB,OAA/D,CAAL,EAA8E;AAC5E,UAAI0C,KAAK,GAAG,KAAKzf,OAAL,CAAamD,MAAb,CAAoB,qBAApB,CAAZ;AACA,UAAIk1B,SAAJ,EAAeH,OAAf;;AACA,UAAI,KAAKjhC,OAAL,CAAa+xC,QAAb,KAA0B,OAA9B,EAAuC;AACrC3Q,iBAAS,GAAG5Y,KAAK,CAAC1E,aAAN,CAAoB0E,KAApB,CAAZ;AACAyY,eAAO,GAAGG,SAAS,CAACzd,QAAV,EAAV;AAEA,aAAKgtB,KAAL,CAAWxvC,OAAX,CAAoBqvC,IAAD,IAAU;AAC3B,cAAIA,IAAI,CAACv3B,KAAL,CAAW1P,IAAX,CAAgB03B,OAAhB,CAAJ,EAA8B;AAC5BG,qBAAS,GAAG5Y,KAAK,CAACxE,kBAAN,CAAyBwsB,IAAI,CAACv3B,KAA9B,CAAZ;AACA,mBAAO,KAAP;AACD;AACF,SALD;;AAOA,YAAI,CAACmoB,SAAL,EAAgB;AACd,eAAK5lB,IAAL;AACA;AACD;;AAEDylB,eAAO,GAAGG,SAAS,CAACzd,QAAV,EAAV;AACD,OAjBD,MAiBO;AACLyd,iBAAS,GAAG5Y,KAAK,CAAC5E,YAAN,EAAZ;AACAqd,eAAO,GAAGG,SAAS,CAACzd,QAAV,EAAV;AACD;;AAED,UAAI,KAAKgtB,KAAL,CAAWtvC,MAAX,IAAqB4/B,OAAzB,EAAkC;AAChC,aAAKoL,QAAL,CAAcxR,KAAd;AAEA,cAAMwV,GAAG,GAAGxiC,IAAI,CAACnB,QAAL,CAAc/G,KAAK,CAAC+I,IAAN,CAAW0yB,SAAS,CAAC3c,cAAV,EAAX,CAAd,CAAZ;AACA,cAAM8nB,YAAY,GAAGlsC,yBAAC,CAAC,KAAKsd,MAAN,CAAD,CAAe3I,MAAf,EAArB;;AACA,YAAIq7B,GAAJ,EAAS;AACPA,aAAG,CAACxjC,GAAJ,IAAW0/B,YAAY,CAAC1/B,GAAxB;AACAwjC,aAAG,CAACjqC,IAAJ,IAAYmmC,YAAY,CAACnmC,IAAzB;AAEA,eAAKgmC,QAAL,CAAc5wB,IAAd;AACA,eAAKwlB,aAAL,GAAqBI,SAArB;AACA,eAAKuP,KAAL,CAAWxvC,OAAX,CAAmB,CAACqvC,IAAD,EAAOzhC,GAAP,KAAe;AAChC,gBAAIyhC,IAAI,CAACv3B,KAAL,CAAW1P,IAAX,CAAgB03B,OAAhB,CAAJ,EAA8B;AAC5B,mBAAK6Q,WAAL,CAAiB/iC,GAAjB,EAAsBkyB,OAAtB,EAA+B/Y,QAA/B,CAAwC,KAAKmkB,QAA7C;AACD;AACF,WAJD,EANO,CAWP;;AACA,eAAKA,QAAL,CAAcnrC,IAAd,CAAmB,uBAAnB,EAA4CT,QAA5C,CAAqD,QAArD,EAZO,CAcP;;AACA,cAAI,KAAKgwC,SAAL,KAAmB,KAAvB,EAA8B;AAC5B,iBAAKrE,QAAL,CAAcpkB,GAAd,CAAkB;AAChB5hB,kBAAI,EAAEiqC,GAAG,CAACjqC,IADM;AAEhByG,iBAAG,EAAEwjC,GAAG,CAACxjC,GAAJ,GAAU,KAAKu/B,QAAL,CAAc1yB,WAAd,EAAV,GAAwC42B;AAF7B,aAAlB;AAID,WALD,MAKO;AACL,iBAAKlE,QAAL,CAAcpkB,GAAd,CAAkB;AAChB5hB,kBAAI,EAAEiqC,GAAG,CAACjqC,IADM;AAEhByG,iBAAG,EAAEwjC,GAAG,CAACxjC,GAAJ,GAAUwjC,GAAG,CAACluC,MAAd,GAAuBmuC;AAFZ,aAAlB;AAID;AACF;AACF,OAhCD,MAgCO;AACL,aAAK90B,IAAL;AACD;AACF;AACF;;AAED8d,MAAI,GAAG;AACL,SAAK8S,QAAL,CAAc9S,IAAd;AACD;;AAED9d,MAAI,GAAG;AACL,SAAK4wB,QAAL,CAAc5wB,IAAd;AACD;;AArQ8B,C;;ACTjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAnb,yBAAC,CAACsB,UAAF,GAAetB,yBAAC,CAACwB,MAAF,CAASxB,yBAAC,CAACsB,UAAX,EAAuB;AACpCqwC,SAAO,EAAE,SAD2B;AAEpC31B,SAAO,EAAE,EAF2B;AAIpCL,KAAG,EAAEA,GAJ+B;AAKpCwM,OAAK,EAAEA,UAL6B;AAMpC7iB,OAAK,EAAEA,KAN6B;AAQpC3F,SAAO,EAAE;AACPoe,YAAQ,EAAE/d,yBAAC,CAACsB,UAAF,CAAaC,IAAb,CAAkB,OAAlB,CADH;AAEPob,WAAO,EAAE,IAFF;AAGP7B,WAAO,EAAE;AACP,gBAAU+Y,aADH;AAEP,mBAAa4G,mBAFN;AAGP,kBAAYS,iBAHL;AAIP,kBAAY0W,iBAJL;AAKP,mBAAaxT,mBALN;AAMP,oBAAcU,qBANP;AAOP,gBAAUS,aAPH;AAQP;AACA;AACA,qBAAe2Q,uBAVR;AAWP,kBAAY1P,iBAXL;AAYP,kBAAYQ,iBAZL;AAaP,qBAAeC,uBAbR;AAcP,qBAAeS,uBAdR;AAeP,iBAAWG,eAfJ;AAgBP,iBAAW2G,eAhBJ;AAiBP,oBAAcwB,qBAjBP;AAkBP,qBAAe6B,uBAlBR;AAmBP,qBAAeM,uBAnBR;AAoBP,sBAAgBY,yBApBT;AAqBP,sBAAgBG,yBArBT;AAsBP,qBAAeC,uBAtBR;AAuBP,oBAAcoC,qBAvBP;AAwBP,oBAAcM,qBAAUA;AAxBjB,KAHF;AA8BP9zB,WAAO,EAAE,EA9BF;AAgCPxa,QAAI,EAAE,OAhCC;AAkCPsnC,oBAAgB,EAAE,KAlCX;AAmCPgJ,mBAAe,EAAE,KAnCV;AAoCP1I,kBAAc,EAAE,EApCT;AAsCP;AACAnK,WAAO,EAAE,CACP,CAAC,OAAD,EAAU,CAAC,OAAD,CAAV,CADO,EAEP,CAAC,MAAD,EAAS,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB,CAAT,CAFO,EAGP,CAAC,UAAD,EAAa,CAAC,UAAD,CAAb,CAHO,EAIP,CAAC,OAAD,EAAU,CAAC,OAAD,CAAV,CAJO,EAKP,CAAC,MAAD,EAAS,CAAC,IAAD,EAAO,IAAP,EAAa,WAAb,CAAT,CALO,EAMP,CAAC,OAAD,EAAU,CAAC,OAAD,CAAV,CANO,EAOP,CAAC,QAAD,EAAW,CAAC,MAAD,EAAS,SAAT,EAAoB,OAApB,CAAX,CAPO,EAQP,CAAC,MAAD,EAAS,CAAC,YAAD,EAAe,UAAf,EAA2B,MAA3B,CAAT,CARO,CAvCF;AAkDP;AACAiO,cAAU,EAAE,IAnDL;AAoDPnB,WAAO,EAAE;AACPzpC,WAAK,EAAE,CACL,CAAC,QAAD,EAAW,CAAC,YAAD,EAAe,YAAf,EAA6B,eAA7B,EAA8C,YAA9C,CAAX,CADK,EAEL,CAAC,OAAD,EAAU,CAAC,WAAD,EAAc,YAAd,EAA4B,WAA5B,CAAV,CAFK,EAGL,CAAC,QAAD,EAAW,CAAC,aAAD,CAAX,CAHK,CADA;AAMPwB,UAAI,EAAE,CACJ,CAAC,MAAD,EAAS,CAAC,gBAAD,EAAmB,QAAnB,CAAT,CADI,CANC;AASPM,WAAK,EAAE,CACL,CAAC,KAAD,EAAQ,CAAC,YAAD,EAAe,UAAf,EAA2B,YAA3B,EAAyC,aAAzC,CAAR,CADK,EAEL,CAAC,QAAD,EAAW,CAAC,WAAD,EAAc,WAAd,EAA2B,aAA3B,CAAX,CAFK,CATA;AAaP4rC,SAAG,EAAE,CACH,CAAC,OAAD,EAAU,CAAC,OAAD,CAAV,CADG,EAEH,CAAC,MAAD,EAAS,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB,CAAT,CAFG,EAGH,CAAC,MAAD,EAAS,CAAC,IAAD,EAAO,WAAP,CAAT,CAHG,EAIH,CAAC,OAAD,EAAU,CAAC,OAAD,CAAV,CAJG,EAKH,CAAC,QAAD,EAAW,CAAC,MAAD,EAAS,SAAT,CAAX,CALG,EAMH,CAAC,MAAD,EAAS,CAAC,YAAD,EAAe,UAAf,CAAT,CANG;AAbE,KApDF;AA2EP;AACA1Y,WAAO,EAAE,KA5EF;AA8EPvuB,SAAK,EAAE,IA9EA;AA+EPhH,UAAM,EAAE,IA/ED;AAgFPg/B,mBAAe,EAAE,IAhFV;AAiFP58B,eAAW,EAAE,IAjFN;AAkFP+xB,mBAAe,EAAE,SAlFV;AAoFP7X,SAAK,EAAE,KApFA;AAqFP0zB,eAAW,EAAE,KArFN;AAsFPnZ,WAAO,EAAE,CAtFF;AAuFPoZ,iBAAa,EAAE,IAvFR;AAwFPjrC,aAAS,EAAE,IAxFJ;AAyFPkrC,oBAAgB,EAAE,IAzFX;AA0FP/zB,WAAO,EAAE,MA1FF;AA2FPvG,aAAS,EAAE,IA3FJ;AA4FPwgB,iBAAa,EAAE,CA5FR;AA6FP7L,2BAAuB,EAAE,CA7FlB;AA8FP8K,cAAU,EAAE,IA9FL;AA+FPC,kBAAc,EAAE,KA/FT;AAgGPle,eAAW,EAAE,IAhGN;AAiGPyoB,sBAAkB,EAAE,KAjGb;AAmGP;AACA+P,YAAQ,EAAE,MApGH;AAqGPN,cAAU,EAAE,OArGL;AAsGPf,iBAAa,EAAE,QAtGR;AAwGPpM,aAAS,EAAE,CAAC,GAAD,EAAM,YAAN,EAAoB,KAApB,EAA2B,IAA3B,EAAiC,IAAjC,EAAuC,IAAvC,EAA6C,IAA7C,EAAmD,IAAnD,EAAyD,IAAzD,CAxGJ;AA0GPQ,aAAS,EAAE,CACT,OADS,EACA,aADA,EACe,eADf,EACgC,aADhC,EAET,gBAFS,EAES,WAFT,EAEsB,QAFtB,EAEgC,eAFhC,EAGT,QAHS,EAGC,iBAHD,EAGoB,SAHpB,CA1GJ;AA+GPjC,wBAAoB,EAAE,EA/Gf;AAgHP+B,mBAAe,EAAE,IAhHV;AAkHPM,aAAS,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,IAAX,EAAiB,IAAjB,EAAuB,IAAvB,EAA6B,IAA7B,EAAmC,IAAnC,EAAyC,IAAzC,EAA+C,IAA/C,CAlHJ;AAoHPC,iBAAa,EAAE,CAAC,IAAD,EAAO,IAAP,CApHR;AAsHP;AACAxB,UAAM,EAAE,CACN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CADM,EAEN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CAFM,EAGN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CAHM,EAIN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CAJM,EAKN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CALM,EAMN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CANM,EAON,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CAPM,EAQN,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,EAA8E,SAA9E,CARM,CAvHD;AAkIP;AACAC,cAAU,EAAE,CACV,CAAC,OAAD,EAAU,SAAV,EAAqB,WAArB,EAAkC,WAAlC,EAA+C,YAA/C,EAA6D,SAA7D,EAAwE,WAAxE,EAAqF,OAArF,CADU,EAEV,CAAC,KAAD,EAAQ,aAAR,EAAuB,QAAvB,EAAiC,OAAjC,EAA0C,MAA1C,EAAkD,MAAlD,EAA0D,iBAA1D,EAA6E,SAA7E,CAFU,EAGV,CAAC,QAAD,EAAW,OAAX,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,YAA1C,EAAwD,eAAxD,EAAyE,SAAzE,EAAoF,UAApF,CAHU,EAIV,CAAC,YAAD,EAAe,cAAf,EAA+B,cAA/B,EAA+C,QAA/C,EAAyD,QAAzD,EAAmE,QAAnE,EAA6E,aAA7E,EAA4F,aAA5F,CAJU,EAKV,CAAC,OAAD,EAAU,OAAV,EAAmB,WAAnB,EAAgC,SAAhC,EAA2C,aAA3C,EAA0D,QAA1D,EAAoE,iBAApE,EAAuF,MAAvF,CALU,EAMV,CAAC,eAAD,EAAkB,WAAlB,EAA+B,cAA/B,EAA+C,kBAA/C,EAAmE,YAAnE,EAAiF,aAAjF,EAAgG,gBAAhG,EAAkH,UAAlH,CANU,EAOV,CAAC,SAAD,EAAY,SAAZ,EAAuB,aAAvB,EAAsC,cAAtC,EAAsD,MAAtD,EAA8D,aAA9D,EAA6E,WAA7E,EAA0F,QAA1F,CAPU,EAQV,CAAC,UAAD,EAAa,UAAb,EAAyB,OAAzB,EAAkC,SAAlC,EAA6C,OAA7C,EAAsD,eAAtD,EAAuE,WAAvE,EAAoF,QAApF,CARU,CAnIL;AA8IPP,eAAW,EAAE;AACX1M,eAAS,EAAE,SADA;AAEXC,eAAS,EAAE;AAFA,KA9IN;AAmJPmP,eAAW,EAAE,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,CAnJN;AAqJPhS,kBAAc,EAAE,sBArJT;AAuJPkS,sBAAkB,EAAE;AAClBC,SAAG,EAAE,EADa;AAElBzX,SAAG,EAAE;AAFa,KAvJb;AA4JP;AACA8b,iBAAa,EAAE,KA7JR;AA8JPS,eAAW,EAAE,KA9JN;AAgKPtR,wBAAoB,EAAE,IAhKf;AAkKPzc,aAAS,EAAE;AACTq1B,qBAAe,EAAE,IADR;AAETC,YAAM,EAAE,IAFC;AAGTC,oBAAc,EAAE,IAHP;AAITC,cAAQ,EAAE,IAJD;AAKTC,sBAAgB,EAAE,IALT;AAMT/G,mBAAa,EAAE,IANN;AAOTgH,aAAO,EAAE,IAPA;AAQTC,aAAO,EAAE,IARA;AAST7F,uBAAiB,EAAE,IATV;AAUTnT,mBAAa,EAAE,IAVN;AAWTiZ,wBAAkB,EAAE,IAXX;AAYTC,YAAM,EAAE,IAZC;AAaTC,eAAS,EAAE,IAbF;AAcTC,aAAO,EAAE,IAdA;AAeTC,iBAAW,EAAE,IAfJ;AAgBTC,eAAS,EAAE,IAhBF;AAiBTC,aAAO,EAAE,IAjBA;AAkBTC,cAAQ,EAAE;AAlBD,KAlKJ;AAuLPvV,cAAU,EAAE;AACVwV,UAAI,EAAE,WADI;AAEVC,cAAQ,EAAE,IAFA;AAGVC,iBAAW,EAAE;AAHH,KAvLL;AA6LPrW,kBAAc,EAAE,KA7LT;AA8LPC,uBAAmB,EAAE,yIA9Ld;AA+LPC,wBAAoB,EAAE,IA/Lf;AAgMPE,8BAA0B,EAAE,EAhMrB;AAiMPC,kCAA8B,EAAE,CAC9B,iBAD8B,EAE9B,0BAF8B,EAG9B,kBAH8B,EAI9B,SAJ8B,EAK9B,eAL8B,EAM9B,kBAN8B,EAO9B,qBAP8B,EAQ9B,kBAR8B,EAS9B,UAT8B,CAjMzB;AA6MPzF,UAAM,EAAE;AACN0b,QAAE,EAAE;AACF,iBAAS,iBADP;AAEF,kBAAU,MAFR;AAGF,kBAAU,MAHR;AAIF,eAAO,KAJL;AAKF,qBAAa,OALX;AAMF,kBAAU,MANR;AAOF,kBAAU,QAPR;AAQF,kBAAU,WARR;AASF,wBAAgB,eATd;AAUF,0BAAkB,cAVhB;AAWF,wBAAgB,aAXd;AAYF,wBAAgB,eAZd;AAaF,wBAAgB,cAbd;AAcF,wBAAgB,aAdd;AAeF,2BAAmB,qBAfjB;AAgBF,2BAAmB,mBAhBjB;AAiBF,4BAAoB,SAjBlB;AAkBF,6BAAqB,QAlBnB;AAmBF,qBAAa,YAnBX;AAoBF,qBAAa,UApBX;AAqBF,qBAAa,UArBX;AAsBF,qBAAa,UAtBX;AAuBF,qBAAa,UAvBX;AAwBF,qBAAa,UAxBX;AAyBF,qBAAa,UAzBX;AA0BF,sBAAc,sBA1BZ;AA2BF,kBAAU;AA3BR,OADE;AA+BNC,SAAG,EAAE;AACH,iBAAS,iBADN;AAEH,iBAAS,MAFN;AAGH,uBAAe,MAHZ;AAIH,eAAO,KAJJ;AAKH,qBAAa,OALV;AAMH,iBAAS,MANN;AAOH,iBAAS,QAPN;AAQH,iBAAS,WARN;AASH,uBAAe,eATZ;AAUH,yBAAiB,cAVd;AAWH,uBAAe,aAXZ;AAYH,uBAAe,eAZZ;AAaH,uBAAe,cAbZ;AAcH,uBAAe,aAdZ;AAeH,0BAAkB,qBAff;AAgBH,0BAAkB,mBAhBf;AAiBH,2BAAmB,SAjBhB;AAkBH,4BAAoB,QAlBjB;AAmBH,oBAAY,YAnBT;AAoBH,oBAAY,UApBT;AAqBH,oBAAY,UArBT;AAsBH,oBAAY,UAtBT;AAuBH,oBAAY,UAvBT;AAwBH,oBAAY,UAxBT;AAyBH,oBAAY,UAzBT;AA0BH,qBAAa,sBA1BV;AA2BH,iBAAS;AA3BN;AA/BC,KA7MD;AA0QPp1B,SAAK,EAAE;AACL,eAAS,iBADJ;AAEL,qBAAe,wBAFV;AAGL,sBAAgB,yBAHX;AAIL,mBAAa,sBAJR;AAKL,oBAAc,uBALT;AAML,kBAAY,qBANP;AAOL,mBAAa,sBAPR;AAQL,kBAAY,qBARP;AASL,kBAAY,qBATP;AAUL,mBAAa,sBAVR;AAWL,mBAAa,sBAXR;AAYL,gBAAU,wBAZL;AAaL,iBAAW,yBAbN;AAcL,mBAAa,sBAdR;AAeL,cAAQ,gBAfH;AAgBL,eAAS,iBAhBJ;AAiBL,gBAAU,kBAjBL;AAkBL,eAAS,iBAlBJ;AAmBL,cAAQ,gBAnBH;AAoBL,gBAAU,kBApBL;AAqBL,mBAAa,sBArBR;AAsBL,oBAAc,uBAtBT;AAuBL,cAAQ,gBAvBH;AAwBL,eAAS,iBAxBJ;AAyBL,gBAAU,kBAzBL;AA0BL,cAAQ,gBA1BH;AA2BL,gBAAU,wBA3BL;AA4BL,eAAS,iBA5BJ;AA6BL,mBAAa,sBA7BR;AA8BL,eAAS,iBA9BJ;AA+BL,qBAAe,uBA/BV;AAgCL,gBAAU,kBAhCL;AAiCL,iBAAW,mBAjCN;AAkCL,kBAAY,oBAlCP;AAmCL,cAAQ,gBAnCH;AAoCL,kBAAY,oBApCP;AAqCL,gBAAU,kBArCL;AAsCL,uBAAiB,yBAtCZ;AAuCL,mBAAa,qBAvCR;AAwCL,qBAAe,uBAxCV;AAyCL,eAAS,iBAzCJ;AA0CL,oBAAc,uBA1CT;AA2CL,eAAS,iBA3CJ;AA4CL,mBAAa,qBA5CR;AA6CL,cAAQ,gBA7CH;AA8CL,uBAAiB,yBA9CZ;AA+CL,eAAS;AA/CJ;AA1QA;AAR2B,CAAvB,CAAf,C;;;;;;;AC7BA,uC;;;;;;;;;;;;;;;;;;ACAA;AACA;AAEA,MAAMlC,MAAM,GAAGu3B,2BAAQ,CAACnyC,MAAT,CAAgB,2DAAhB,CAAf;AACA,MAAM89B,OAAO,GAAGqU,2BAAQ,CAACnyC,MAAT,CAAgB,qEAAhB,CAAhB;AACA,MAAMu+B,WAAW,GAAG4T,2BAAQ,CAACnyC,MAAT,CAAgB,kCAAhB,CAApB;AACA,MAAMsb,OAAO,GAAG62B,2BAAQ,CAACnyC,MAAT,CAAgB,wDAAhB,CAAhB;AACA,MAAMub,QAAQ,GAAG42B,2BAAQ,CAACnyC,MAAT,CAAgB,0FAAhB,CAAjB;AACA,MAAMo9B,SAAS,GAAG+U,2BAAQ,CAACnyC,MAAT,CAAgB,CAChC,uEADgC,EAEhC,4CAFgC,EAG9B,kDAH8B,EAI5B,8BAJ4B,EAK5B,8BAL4B,EAM5B,8BAN4B,EAO9B,QAP8B,EAQhC,QARgC,EAShCoM,IATgC,CAS3B,EAT2B,CAAhB,CAAlB;AAWA,MAAMgmC,SAAS,GAAGD,2BAAQ,CAACnyC,MAAT,CAAgB,0CAAhB,CAAlB;AACA,MAAMqyC,WAAW,GAAGF,2BAAQ,CAACnyC,MAAT,CAAgB,CAClC,0FADkC,EAElC,uEAFkC,EAGlCoM,IAHkC,CAG7B,EAH6B,CAAhB,CAApB;AAKA,MAAMq1B,WAAW,GAAG0Q,2BAAQ,CAACnyC,MAAT,CAAgB,wCAAhB,CAApB;AAEA,MAAMgiC,QAAQ,GAAGmQ,2BAAQ,CAACnyC,MAAT,CAAgB,+CAAhB,EAAiE,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AACzG,QAAMF,MAAM,GAAG2B,KAAK,CAACC,OAAN,CAAc1B,OAAO,CAACm7B,KAAtB,IAA+Bn7B,OAAO,CAACm7B,KAAR,CAAc3tB,GAAd,CAAkB,UAASzB,IAAT,EAAe;AAC7E,UAAM6M,KAAK,GAAI,OAAO7M,IAAP,KAAgB,QAAjB,GAA6BA,IAA7B,GAAqCA,IAAI,CAAC6M,KAAL,IAAc,EAAjE;AACA,UAAM4jB,OAAO,GAAGx8B,OAAO,CAACwkC,QAAR,GAAmBxkC,OAAO,CAACwkC,QAAR,CAAiBz4B,IAAjB,CAAnB,GAA4CA,IAA5D;AACA,UAAM8nC,MAAM,GAAI,OAAO9nC,IAAP,KAAgB,QAAjB,GAA6BA,IAAI,CAAC8nC,MAAlC,GAA2Cj3B,SAA1D;AAEA,UAAMk3B,SAAS,GAAG,iBAAiBl7B,KAAjB,GAAyB,GAA3C;AACA,UAAMm7B,UAAU,GAAIF,MAAM,KAAKj3B,SAAZ,GAAyB,mBAAmBi3B,MAAnB,GAA4B,GAArD,GAA2D,EAA9E;AACA,WAAO,qBAAqBj7B,KAArB,GAA6B,gBAA7B,IAAiDk7B,SAAS,GAAGC,UAA7D,IAA2E,GAA3E,GAAiFvX,OAAjF,GAA2F,WAAlG;AACD,GAR6C,EAQ3C7uB,IAR2C,CAQtC,EARsC,CAA/B,GAQD3N,OAAO,CAACm7B,KARtB;AAUA/6B,OAAK,CAACG,IAAN,CAAWT,MAAX,EAAmBgB,IAAnB,CAAwB;AAAE,kBAAcd,OAAO,CAACukC;AAAxB,GAAxB;AACD,CAZgB,CAAjB;;AAcA,MAAMjB,sBAAsB,GAAG,UAAShjC,QAAT,EAAmBN,OAAnB,EAA4B;AACzD,SAAOM,QAAQ,GAAG,GAAX,GAAiB2iC,IAAI,CAACjjC,OAAO,CAACqe,KAAR,CAAc21B,KAAf,EAAsB,MAAtB,CAA5B;AACD,CAFD;;AAIA,MAAMjP,aAAa,GAAG2O,2BAAQ,CAACnyC,MAAT,CAAgB,0DAAhB,EAA4E,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AACzH,QAAMF,MAAM,GAAG2B,KAAK,CAACC,OAAN,CAAc1B,OAAO,CAACm7B,KAAtB,IAA+Bn7B,OAAO,CAACm7B,KAAR,CAAc3tB,GAAd,CAAkB,UAASzB,IAAT,EAAe;AAC7E,UAAM6M,KAAK,GAAI,OAAO7M,IAAP,KAAgB,QAAjB,GAA6BA,IAA7B,GAAqCA,IAAI,CAAC6M,KAAL,IAAc,EAAjE;AACA,UAAM4jB,OAAO,GAAGx8B,OAAO,CAACwkC,QAAR,GAAmBxkC,OAAO,CAACwkC,QAAR,CAAiBz4B,IAAjB,CAAnB,GAA4CA,IAA5D;AACA,WAAO,qBAAqBA,IAArB,GAA4B,4BAA5B,GAA2D6M,KAA3D,GAAmE,IAAnE,GAA0EqqB,IAAI,CAACjjC,OAAO,CAACglC,cAAT,CAA9E,GAAyG,GAAzG,GAA+GxI,OAA/G,GAAyH,WAAhI;AACD,GAJ6C,EAI3C7uB,IAJ2C,CAItC,EAJsC,CAA/B,GAID3N,OAAO,CAACm7B,KAJtB;AAKA/6B,OAAK,CAACG,IAAN,CAAWT,MAAX,EAAmBgB,IAAnB,CAAwB;AAAE,kBAAcd,OAAO,CAACukC;AAAxB,GAAxB;AACD,CAPqB,CAAtB;AASA,MAAMb,OAAO,GAAGgQ,2BAAQ,CAACnyC,MAAT,CAAgB,mCAAhB,EAAqD,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AAC5F,QAAMM,QAAQ,GAAG,EAAjB;;AACA,OAAK,IAAImuB,GAAG,GAAG,CAAV,EAAawlB,OAAO,GAAGj0C,OAAO,CAAC2jC,MAAR,CAAetiC,MAA3C,EAAmDotB,GAAG,GAAGwlB,OAAzD,EAAkExlB,GAAG,EAArE,EAAyE;AACvE,UAAM2J,SAAS,GAAGp4B,OAAO,CAACo4B,SAA1B;AACA,UAAMuL,MAAM,GAAG3jC,OAAO,CAAC2jC,MAAR,CAAelV,GAAf,CAAf;AACA,UAAMmV,UAAU,GAAG5jC,OAAO,CAAC4jC,UAAR,CAAmBnV,GAAnB,CAAnB;AACA,UAAMrS,OAAO,GAAG,EAAhB;;AACA,SAAK,IAAI8pB,GAAG,GAAG,CAAV,EAAagO,OAAO,GAAGvQ,MAAM,CAACtiC,MAAnC,EAA2C6kC,GAAG,GAAGgO,OAAjD,EAA0DhO,GAAG,EAA7D,EAAiE;AAC/D,YAAM1/B,KAAK,GAAGm9B,MAAM,CAACuC,GAAD,CAApB;AACA,YAAMiO,SAAS,GAAGvQ,UAAU,CAACsC,GAAD,CAA5B;AACA9pB,aAAO,CAACrM,IAAR,CAAa,CACX,8CADW,EAEX,0BAFW,EAEiBvJ,KAFjB,EAEwB,IAFxB,EAGX,cAHW,EAGK4xB,SAHL,EAGgB,IAHhB,EAIX,cAJW,EAIK5xB,KAJL,EAIY,IAJZ,EAKX,SALW,EAKA2tC,SALA,EAKW,IALX,EAMX,cANW,EAMKA,SANL,EAMgB,IANhB,EAOX,8CAPW,EAQXxmC,IARW,CAQN,EARM,CAAb;AASD;;AACDrN,YAAQ,CAACyP,IAAT,CAAc,iCAAiCqM,OAAO,CAACzO,IAAR,CAAa,EAAb,CAAjC,GAAoD,QAAlE;AACD;;AACDvN,OAAK,CAACG,IAAN,CAAWD,QAAQ,CAACqN,IAAT,CAAc,EAAd,CAAX;;AAEA,MAAI3N,OAAO,CAACse,OAAZ,EAAqB;AACnBle,SAAK,CAACc,IAAN,CAAW,iBAAX,EAA8Bod,OAA9B,CAAsC;AACpCvG,eAAS,EAAE/X,OAAO,CAAC+X,SADiB;AAEpCmF,aAAO,EAAE,OAF2B;AAGpCk3B,eAAS,EAAE;AAHyB,KAAtC;AAKD;AACF,CA/Be,CAAhB;AAiCA,MAAMtJ,MAAM,GAAG4I,2BAAQ,CAACnyC,MAAT,CAAgB,iFAAhB,EAAmG,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AACzI,MAAIA,OAAO,CAAC+qC,IAAZ,EAAkB;AAChB3qC,SAAK,CAACK,QAAN,CAAe,MAAf;AACD;;AACDL,OAAK,CAACU,IAAN,CAAW;AACT,kBAAcd,OAAO,CAACukC;AADb,GAAX;AAGAnkC,OAAK,CAACG,IAAN,CAAW,CACT,4BADS,EAEP,6BAFO,EAGJP,OAAO,CAACukC,KAAR,GAAgB,+BACf,iHADe,GAEf,0BAFe,GAEcvkC,OAAO,CAACukC,KAFtB,GAE8B,OAF9B,GAGjB,QAHC,GAGU,EANN,EAOL,6BAA6BvkC,OAAO,CAAC+e,IAArC,GAA4C,QAPvC,EAQJ/e,OAAO,CAAC4qC,MAAR,GAAiB,+BAA+B5qC,OAAO,CAAC4qC,MAAvC,GAAgD,QAAjE,GAA4E,EARxE,EASP,QATO,EAUT,QAVS,EAWTj9B,IAXS,CAWJ,EAXI,CAAX;AAYD,CAnBc,CAAf;AAqBA,MAAMw+B,OAAO,GAAGuH,2BAAQ,CAACnyC,MAAT,CAAgB,CAC9B,uCAD8B,EAE5B,sBAF4B,EAG5B,wDAH4B,EAI9B,QAJ8B,EAK9BoM,IAL8B,CAKzB,EALyB,CAAhB,EAKJ,UAASvN,KAAT,EAAgBJ,OAAhB,EAAyB;AACnC,QAAMywC,SAAS,GAAG,OAAOzwC,OAAO,CAACywC,SAAf,KAA6B,WAA7B,GAA2CzwC,OAAO,CAACywC,SAAnD,GAA+D,QAAjF;AAEArwC,OAAK,CAACK,QAAN,CAAegwC,SAAf;;AAEA,MAAIzwC,OAAO,CAAC6wC,SAAZ,EAAuB;AACrBzwC,SAAK,CAACc,IAAN,CAAW,QAAX,EAAqBsa,IAArB;AACD;AACF,CAbe,CAAhB;AAeA,MAAMivB,WAAQ,GAAGiJ,2BAAQ,CAACnyC,MAAT,CAAgB,8BAAhB,EAAgD,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AACxFI,OAAK,CAACG,IAAN,CAAW,CACT,YAAYP,OAAO,CAACyM,EAAR,GAAa,gBAAgBzM,OAAO,CAACyM,EAAxB,GAA6B,GAA1C,GAAgD,EAA5D,IAAkE,GADzD,EAEP,4BAA4BzM,OAAO,CAACyM,EAAR,GAAa,eAAezM,OAAO,CAACyM,EAAvB,GAA4B,GAAzC,GAA+C,EAA3E,CAFO,EAGJzM,OAAO,CAAC0qC,OAAR,GAAkB,UAAlB,GAA+B,EAH3B,EAIL,qBAAqB1qC,OAAO,CAAC0qC,OAAR,GAAkB,MAAlB,GAA2B,OAAhD,IAA2D,KAJtD,EAKN1qC,OAAO,CAACkY,IAAR,GAAelY,OAAO,CAACkY,IAAvB,GAA8B,EALxB,EAMT,UANS,EAOTvK,IAPS,CAOJ,EAPI,CAAX;AAQD,CATgB,CAAjB;;AAWA,MAAMs1B,IAAI,GAAG,UAASoR,aAAT,EAAwBlnB,OAAxB,EAAiC;AAC5CA,SAAO,GAAGA,OAAO,IAAI,GAArB;AACA,SAAO,MAAMA,OAAN,GAAgB,UAAhB,GAA6BknB,aAA7B,GAA6C,KAApD;AACD,CAHD;;AAIA,MAAMp5B,EAAE,GAAG;AACTkB,QAAM,EAAEA,MADC;AAETkjB,SAAO,EAAEA,OAFA;AAGTS,aAAW,EAAEA,WAHJ;AAITjjB,SAAO,EAAEA,OAJA;AAKTC,UAAQ,EAAEA,QALD;AAMT6hB,WAAS,EAAEA,SANF;AAOTgV,WAAS,EAAEA,SAPF;AAQTC,aAAW,EAAEA,WARJ;AAST5Q,aAAW,EAAEA,WATJ;AAUTO,UAAQ,EAAEA,QAVD;AAWTD,wBAAsB,EAAEA,sBAXf;AAYTyB,eAAa,EAAEA,aAZN;AAaTrB,SAAO,EAAEA,OAbA;AAcToH,QAAM,EAAEA,MAdC;AAeTqB,SAAO,EAAEA,OAfA;AAgBT1B,UAAQ,EAAEA,WAhBD;AAiBTxH,MAAI,EAAEA,IAjBG;AAkBTjjC,SAAO,EAAE,EAlBA;AAoBTsiC,QAAM,EAAE,UAASliC,KAAT,EAAgBJ,OAAhB,EAAyB;AAC/B,WAAO0zC,2BAAQ,CAACnyC,MAAT,CAAgB,8EAAhB,EAAgG,UAASnB,KAAT,EAAgBJ,OAAhB,EAAyB;AAC9H,UAAIA,OAAO,IAAIA,OAAO,CAACse,OAAvB,EAAgC;AAC9Ble,aAAK,CAACU,IAAN,CAAW;AACTyjC,eAAK,EAAEvkC,OAAO,CAACse,OADN;AAET,wBAActe,OAAO,CAACse;AAFb,SAAX,EAGGA,OAHH,CAGW;AACTvG,mBAAS,EAAE/X,OAAO,CAAC+X,SADV;AAETmF,iBAAO,EAAE,OAFA;AAGTk3B,mBAAS,EAAE;AAHF,SAHX,EAOGpzC,EAPH,CAOM,OAPN,EAOgBsjB,CAAD,IAAO;AACpBjkB,mCAAC,CAACikB,CAAC,CAAC6e,aAAH,CAAD,CAAmB7kB,OAAnB,CAA2B,MAA3B;AACD,SATD;AAUD;AACF,KAbM,EAaJle,KAbI,EAaGJ,OAbH,CAAP;AAcD,GAnCQ;AAqCToqC,WAAS,EAAE,UAASD,IAAT,EAAemK,QAAf,EAAyB;AAClCnK,QAAI,CAAChT,WAAL,CAAiB,UAAjB,EAA6B,CAACmd,QAA9B;AACAnK,QAAI,CAACrpC,IAAL,CAAU,UAAV,EAAsB,CAACwzC,QAAvB;AACD,GAxCQ;AA0CTvM,iBAAe,EAAE,UAASoC,IAAT,EAAeoK,QAAf,EAAyB;AACxCpK,QAAI,CAAChT,WAAL,CAAiB,QAAjB,EAA2Bod,QAA3B;AACD,GA5CQ;AA8CT5I,eAAa,EAAE,UAASd,OAAT,EAAkBl0B,OAAlB,EAA2B;AACxCk0B,WAAO,CAAC/iB,GAAR,CAAY,gBAAZ,EAA8BnR,OAA9B;AACD,GAhDQ;AAkDTo1B,gBAAc,EAAE,UAASlB,OAAT,EAAkBl0B,OAAlB,EAA2B;AACzCk0B,WAAO,CAAC/iB,GAAR,CAAY,iBAAZ,EAA+BnR,OAA/B;AACD,GApDQ;AAsDTs1B,YAAU,EAAE,UAASpB,OAAT,EAAkB;AAC5BA,WAAO,CAAC2J,KAAR,CAAc,MAAd;AACD,GAxDQ;AA0DTvJ,YAAU,EAAE,UAASJ,OAAT,EAAkB;AAC5BA,WAAO,CAAC2J,KAAR,CAAc,MAAd;AACD,GA5DQ;AA8DTl5B,cAAY,EAAE,UAASN,KAAT,EAAgBhb,OAAhB,EAAyB;AACrC,UAAMm0B,OAAO,GAAG,CAACn0B,OAAO,CAAC03B,OAAR,GAAkBzc,EAAE,CAAC04B,SAAH,CAAa,CAC9C14B,EAAE,CAAC6kB,WAAH,CAAe,CACb7kB,EAAE,CAAC4B,OAAH,EADa,EAEb5B,EAAE,CAAC24B,WAAH,EAFa,CAAf,CAD8C,CAAb,CAAlB,GAKX5zC,OAAO,CAACkyC,eAAR,KAA4B,QAA5B,GACFj3B,EAAE,CAACkB,MAAH,CAAU,CACVlB,EAAE,CAAC6kB,WAAH,CAAe,CACb7kB,EAAE,CAAC4B,OAAH,EADa,EAEb5B,EAAE,CAAC6B,QAAH,EAFa,CAAf,CADU,EAKV7B,EAAE,CAACokB,OAAH,EALU,EAMVpkB,EAAE,CAAC0jB,SAAH,EANU,CAAV,CADE,GASF1jB,EAAE,CAACkB,MAAH,CAAU,CACVlB,EAAE,CAACokB,OAAH,EADU,EAEVpkB,EAAE,CAAC6kB,WAAH,CAAe,CACb7kB,EAAE,CAAC4B,OAAH,EADa,EAEb5B,EAAE,CAAC6B,QAAH,EAFa,CAAf,CAFU,EAMV7B,EAAE,CAAC0jB,SAAH,EANU,CAAV,CAdY,EAsBbz+B,MAtBa,EAAhB;AAwBAi0B,WAAO,CAACzf,WAAR,CAAoBsG,KAApB;AAEA,WAAO;AACLuD,UAAI,EAAEvD,KADD;AAELmB,YAAM,EAAEgY,OAFH;AAGLkL,aAAO,EAAElL,OAAO,CAACjzB,IAAR,CAAa,eAAb,CAHJ;AAIL4+B,iBAAW,EAAE3L,OAAO,CAACjzB,IAAR,CAAa,oBAAb,CAJR;AAKL4b,cAAQ,EAAEqX,OAAO,CAACjzB,IAAR,CAAa,gBAAb,CALL;AAML2b,aAAO,EAAEsX,OAAO,CAACjzB,IAAR,CAAa,eAAb,CANJ;AAOLy9B,eAAS,EAAExK,OAAO,CAACjzB,IAAR,CAAa,iBAAb;AAPN,KAAP;AASD,GAlGQ;AAoGT0a,cAAY,EAAE,UAASZ,KAAT,EAAgBI,UAAhB,EAA4B;AACxCJ,SAAK,CAACza,IAAN,CAAW6a,UAAU,CAAC0B,QAAX,CAAoBvc,IAApB,EAAX;AACA6a,cAAU,CAACe,MAAX,CAAkBtY,MAAlB;AACAmX,SAAK,CAACse,IAAN;AACD;AAxGQ,CAAX;AA2Gere,6CAAf,E;;;;;;;;ACrPA;AACA;AACA;AAEA;AAEA5a,yBAAC,CAACsB,UAAF,GAAetB,yBAAC,CAACwB,MAAF,CAASxB,yBAAC,CAACsB,UAAX,EAAuB;AACpCsZ,IAAE,EAAEA,MADgC;AAEpCw5B,WAAS,EAAE;AAFyB,CAAvB,CAAf,C","file":"summernote.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jQuery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jQuery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jQuery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 51);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undoes the last command',\n 'redo': 'Redoes the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nlet hasCodeMirror = !!window.CodeMirror;\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n hasCodeMirror,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with  \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '
';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex)


,
\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex)

, \n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (isEmpty(point.node)) {\n return null;\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n};\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPoint(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, ,

]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `

${blankHTML}

`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.ui = $.summernote.ui;\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note, this.options);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.layoutInfo.codable.val(html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.sc.data && this.so > this.sc.data.length ? 0 : this.so);\n w3cRange.setEnd(this.ec, this.sc.data ? Math.min(this.eo, this.sc.data.length) : this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |

text

|\n * - chrome:

|text|

\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('
').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n }\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n if (rng.so > 0) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n };\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n };\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import range from '../core/range';\n\nexport default class History {\n constructor($editable) {\n this.stack = [];\n this.stackOffset = -1;\n this.$editable = $editable;\n this.editable = $editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {}\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(