{"version":3,"sources":["fakeAuth.js","misc.js","Card.js","Hand.js","ResourceButton.js","ResourcePicker.js","PaymentForm.js","WonderBoard.js","PlayerField.js","PlayerUI.js","GameUI.js","ScoreCard.js","SevenWonders.js","Game.js","Lobby.js","App.js","index.js","registerServiceWorker.js"],"names":["fakeAuth","isAuthenticated","window","localStorage","getItem","name","logIn","cb","this","trim","setItem","setTimeout","logOut","removeItem","GameVariant","ORIGINAL","LEADERS","WRECK","Resource","CLAY","STONE","WOOD","ORE","GLASS","CLOTH","PAPER","Science","CardType","RESOURCE","GOODS","COMMERCE","GUILD","MILITARY","ACADEMICS","ENGINEERING","LITERATURE","VICTORY","WONDER","LEADER","TradeCost","Scoring","GOLD","SCIENCE","Action","forEach","action","i","Card","age","cost","type","rewards","minPlayers","tooltip","Wonder","resource","stage1A","stage2A","stage3A","stage1B","stage2B","stage3B","stage4B","stages","push","makeLeader","scienceScore","scienceSetBonus","scores","Math","min","apply","calcScienceScore","player","sciences","sort","bonusSciences","longChain","slice","longChainScore","manySets","manySetsScore","max","splitStrat","splitStratScore","fillSet","fillSetScore","scienceReward","science","resourceReward","amount","resources","goldReward","gold","pointsReward","points","victoryPoints","multiResourceReward","args","Array","prototype","call","arguments","multiResources","militaryReward","military","tradeCostReward","tradeCost","AGE1DECK","countCards","types","count","built","indexOf","complexReward","pointType","self","neighbours","victory","extraGold","east","west","endGameRewards","endGameReward","generatorReward","goods","AGE2DECK","AGE3DECK","battleTokens","filter","token","length","floor","multiReward","reward1","reward2","reward3","console","log","discardedReward","playDiscardedNow","PlayerState","board","side","playerInterface","isLeadersGame","stagesBuilt","leaders","canDoubleBuild","discounts","canBuildForFree","freeBuildTypes","currentScore","scoreTotal","clonePlayers","players","clonedPlayers","map","clone","WONDERS","availableGuilds","card","concat","bestReward","bestGuild","baseSciencePoints","currGuild","typeDiscountReward","t","resourceSymbols","backgroundColors","props","data","cardBackUrl","process","isUnknownCard","cardFrontUrl","cardBack","faceDown","react_default","a","createElement","className","style","backgroundImage","selected","unplayable","free","isLast","backgroundColor","margin","key","error","Hand","handleCardClick","e","index","parseInt","currentTarget","getAttribute","_this","onSelect","cards","data-index","display","onClick","src_Card","Component","defaultProps","ResourceButton","toLowerCase","backgroundSize","cursor","height","MozUserSelect","msUserSelect","WebkitUserSelect","width","onButtonClick","ResourceFromNumber","Object","keys","ResourcePicker","handleSelectionChange","value","undefined","onSelectionChange","single","multi","resourceName","isFinite","src_ResourceButton","bind","m","selectedLeft","selectedRight","PaymentForm","classCallCheck","possibleConstructorReturn","getPrototypeOf","state","bank","cardIndex","setState","payment","act","actions","discard","BUILD","build","BUILD_WONDER","buildWonder","resetState","hand","eastPayment","westPayment","src_Hand","handleCardSelection","marginTop","src_ResourcePicker_0","handleWestPaymentChange","marginLeft","handleEastPaymentChange","checked","onChange","handleBankChange","handleButtonClick","DISCARD","WonderBoard","start","delta","stageCount","builtStageCards","left","PlayerField","lastBuiltCard","builtCards","fieldOfBuiltCards","cardList","marginRight","verticalAlign","join","src_WonderBoard_0","wonder","PlayerUI","undo","paymentForm","undoButton","playable","src_PaymentForm","cardsInHand","handleUndoClick","overlay","waiting","background","color","fontSize","game","score","src_PlayerField","GameUI","playerUIList","position","src_PlayerUI_0","playablePlayerCenteredPlayerUIList","numPlayers","startIndex","ScoreCard","nameCells","substr","detailRows","detailCells","details","totalScoreCells","total","getBoard","getCard","minP","minP2","getNextStage","candidate","charAt","executeReward","func","canGenerate","needed","resourcesRemaining","splice","remainingNeeded","canPay","purchase","resourceNeeded","multiResource","j","possibleNeeded","fulfillWithSimpleResources","resourceType","canPlay","some","_loop","v","costOfResource","generators","canGenerateOrPay","resourceList","generatorList","newResourceList","newGeneratorList","generator","_ret","noValidPlays","plays","stage","validPlays","verify","ok","_loop3","resourcesToPurchase","goldNeeded","_ret3","payNeighbours","Turn","hands","playerState","played","undoStack","pop","resume","play","UNDO","payNeighboursFn","endOfRoundPayments","executeRewardsFn","endOfRoundRewards","wreckANation","discarded","_loop4","playersDone","checkEndRound","LeadersDraftTurn","_this2","_loop5","checkEndLeadersDraftRound","SevenWonders","playerInterfaces","init","interfaces","boards","wreck","endGame","endGameCallback","len","random","decks","guildsToRetain","guilds","guildsToDiscard","leadersCards","leadersToRetain","k","round","getKnownGameStateForPlayer","JSON","parse","stringify","cachedPublicGameState","currTurnEnded","rearrangedPlayers","id","currHand","turn","currTurn","_loop2","_ret2","isFree","cachePublicGameState","isLocal","playRound","updateCurrentScores","update","playLeadersRound","p","playLeadersDraftRound","reward","reduce","b","prop","scoreCard","doBattle","allowUndo","draw","shift","unshift","PlayerInterface","requestDraw","turnsRef","ui","playedTurn","pendingTurns","loaded","document","isUndo","success","alert","_this3","spectating","every","Promise","resolve","then","getActions","_this4","assign","notify","msg","Notification","permission","requestPermission","Game","firebase","ref","gameKey","once","snapshot","exists","warn","updates","completedGame","val","completedAt","ServerValue","TIMESTAMP","catch","handleDrawRequest","loadGame","playerCount","playerNames","on","interfaceIndex","isWreck","variant","isLeaders","currGame","componentWillUnmount","off","gameName","match","params","gameId","reject","Error","activeGameRef","completedGameRef","all","snapshots","gameRef","transaction","result","gameDetailsRef","child","gameUI","src_GameUI_0","src_ScoreCard_0","react_router_dom","to","GAME_NAME_MAX_LENGTH","PLAYERS_MIN","PLAYERS_MAX","shuffleWonders","output","shuffleCards","Lobby","withRouter","_Component","_temp","createGame","preventDefault","elements","target","replace","values","includes","str","createdAt","turns","history","renderGame","toggleShowCompleted","showCompleted","activeGamesRef","completedGamesRef","activeGames","completedGames","inherits","createClass","orderByChild","reverse","games","textAlign","onSubmit","autoComplete","defaultChecked","AuthenticatedRoute","_ref","component","rest","objectWithoutProperties","react_router","render","React","pathname","from","location","LoginStatus","_ref2","LoginForm","_getPrototypeOf2","_len","_key","redirectToReferrer","login","updateName","_this$state","buttonAttrs","disabled","GameBrowser","src_Lobby","App","config","App_AuthenticatedRoute","path","firebaseConfigValid","message","ReactDOM","src_App_0","getElementById","navigator","addEventListener","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller"],"mappings":"6bAkBeA,EAlBE,CACfC,kBAAmBC,OAAOC,aAAaC,QAAQ,YAC/CC,KAAMH,OAAOC,aAAaC,QAAQ,aAAe,GACjDE,MAHe,SAGTD,EAAME,GACVC,KAAKP,iBAAkB,EACvBI,EAAOA,EAAKI,OACZD,KAAKH,KAAOA,EACZH,OAAOC,aAAaO,QAAQ,WAAYL,GACxCM,WAAWJ,EAAI,IAEjBK,OAVe,SAURL,GACLC,KAAKP,iBAAkB,EACvBO,KAAKH,KAAO,GACZH,OAAOC,aAAaU,WAAW,YAC/BF,WAAWJ,EAAI,KCdbO,EAAc,CAElBC,SAAU,WACVC,QAAS,UAGTC,MAAO,SAGHC,EAAW,CACfC,KAAM,EACNC,MAAO,EACPC,KAAM,EACNC,IAAK,EACLC,MAAO,EACPC,MAAO,EACPC,MAAO,GAGHC,EACO,EADPA,EAES,EAFTA,EAGQ,EAIRC,EAAW,CACfC,SAAU,EACVC,MAAO,EACPC,SAAU,EACVC,MAAO,EACPC,SAAU,EACVC,UAAW,EACXC,YAAa,EACbC,WAAY,EACZC,QAAS,EACTC,OAAQ,EACRC,OAAQ,IAGJC,EACW,EADXA,EAEW,EAFXA,EAGG,EAGHC,EAAU,CACdR,SAAU,EACVS,KAAM,EACNJ,OAAQ,EACRD,QAAS,EACTN,SAAU,EACVC,MAAO,EACPW,QAAS,EACTJ,OAAQ,GAGNK,EAAS,CAAC,QAAS,eAAgB,UAAW,QAClDA,EAAOC,QAAQ,SAACC,EAAQC,GAAQH,EAAOE,GAAUC,IAEjD,IAAMC,EAAO,SAAS1C,EAAM2C,EAAKC,EAAMC,EAAMC,EAASC,EAAYC,GAChE7C,KAAKH,KAAOA,EACZG,KAAKwC,IAAMA,EACXxC,KAAKyC,KAAOA,EACZzC,KAAK0C,KAAOA,EACZ1C,KAAK2C,QAAUA,EACf3C,KAAK4C,WAAaA,EAClB5C,KAAK6C,QAAUA,GAEXC,EAAS,SAASjD,EAAMkD,EAAUC,EAASC,EAASC,EAASC,EAASC,EAASC,EAASC,GAC5FtD,KAAKH,KAAOA,EACZG,KAAK+C,SAAWA,EAChB/C,KAAKuD,OAAS,CAACP,EAASC,EAASC,EAASC,EAASC,GAC/CC,GACFrD,KAAKuD,OAAOC,KAAKH,GAEfC,GACFtD,KAAKuD,OAAOC,KAAKF,IAGfG,EAAa,SAAS5D,EAAM4C,EAAME,EAASE,GAC/C,OAAO,IAAIN,EAAK1C,EAAM,EAAG,CAAC4C,GAAOtB,EAASW,OAAQa,EAAS,EAAGE,IAG1Da,EAAe,SAASC,EAAiBC,GAC7C,OAAOA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,GACtED,EAAkBE,KAAKC,IAAIC,MAAM,KAAMH,IAEvCI,EAAmB,SAASC,GAChC,IAGIL,EAAS,CAHGK,EAAOC,SAAShD,GACd+C,EAAOC,SAAShD,GACjB+C,EAAOC,SAAShD,IACiBiD,OAClD,GAA6B,IAAzBF,EAAOG,cACT,OAAOV,EAAaO,EAAON,gBAAiBC,GACvC,GAA6B,IAAzBK,EAAOG,cAAqB,CAErC,IAAIC,EAAYT,EAAOU,MAAM,GAC7BD,EAAU,KACV,IAAIE,EAAiBb,EAAaO,EAAON,gBAAiBU,GAEtDG,EAAWZ,EAAOU,MAAM,GAC5BE,EAAS,KACT,IAAIC,EAAgBf,EAAaO,EAAON,gBAAiBa,GACzD,OAAOX,KAAKa,IAAIH,EAAgBE,GAC3B,GAA6B,IAAzBR,EAAOG,cAAqB,CAErC,IAAIC,EAAYT,EAAOU,MAAM,GAC7BD,EAAU,IAAM,EAChB,IAAIE,EAAiBb,EAAaO,EAAON,gBAAiBU,GAGtDM,EAAaf,EAAOU,MAAM,GAC9BK,EAAW,KACXA,EAAW,KACX,IAAIC,EAAkBlB,EAAaO,EAAON,gBAAiBgB,GAGvDE,EAAUjB,EAAOU,MAAM,GAC3BO,EAAQ,KACRA,EAAQ,KACR,IAAIC,EAAepB,EAAaO,EAAON,gBAAiBkB,GAGpDL,EAAWZ,EAAOU,MAAM,GAC5BE,EAAS,IAAM,EACf,IAAIC,EAAgBf,EAAaO,EAAON,gBAAiBa,GAEzD,OAAOX,KAAKa,IAAIH,EAAgBK,EAAiBE,EAAcL,KAI7DM,EAAgB,SAASC,GAC7B,OAAO,SAASf,GACdA,EAAOC,SAASc,OAIdC,EAAiB,SAASlC,EAAUmC,GACxC,OAAO,SAASjB,GACdA,EAAOkB,UAAUpC,IAAamC,IAI5BE,EAAa,SAASF,GAC1B,OAAO,SAASjB,GACdA,EAAOoB,MAAQH,IAIbI,EAAe,SAASC,EAAQ7C,GACpC,OAAO,SAASuB,GACdA,EAAOuB,cAAc9C,IAAS6C,IAI5BE,EAAsB,WAC1B,IAAIC,EAAOC,MAAMC,UAAUtB,MAAMuB,KAAKC,WACtC,OAAO,SAAS7B,GACdA,EAAO8B,eAAevC,KAAKkC,KAIzBM,EAAiB,SAASd,GAC9B,OAAO,SAASjB,GACdA,EAAOgC,UAAYf,IAIjBgB,EAAkB,SAASxD,GAC/B,OAAO,SAASuB,GACdA,EAAOkC,UAAUzD,GAAQ,IAIvB0D,EAAW,CACf,IAAI7D,EAAK,oBAAqB,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAA0B,EAAG,8DACrG,IAAIQ,EAAK,oBAAqB,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAA0B,EAAG,8DACrG,IAAIQ,EAAK,cAAe,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAAkB,EAAG,oDACvF,IAAIQ,EAAK,cAAe,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAAkB,EAAG,oDACvF,IAAIQ,EAAK,SAAU,EAAG,GAAIpB,EAASG,SAAU8D,EAAW,GAAI,EAAG,oBAC/D,IAAI7C,EAAK,SAAU,EAAG,GAAIpB,EAASG,SAAU8D,EAAW,GAAI,EAAG,oBAC/D,IAAI7C,EAAK,SAAU,EAAG,GAAIpB,EAASG,SAAU8D,EAAW,GAAI,EAAG,oBAC/D,IAAI7C,EAAK,oBAAqB,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAA0B,EAAG,8DACrG,IAAIQ,EAAK,oBAAqB,EAAG,GAAIpB,EAASG,SAAU4E,EAAgBnE,GAA0B,EAAG,8DAErG,IAAIQ,EAAK,aAAc,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASK,MAAO,GAAI,EAAG,mBACpF,IAAIwB,EAAK,aAAc,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASK,MAAO,GAAI,EAAG,mBACpF,IAAIwB,EAAK,QAAS,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASO,MAAO,GAAI,EAAG,mBAC/E,IAAIsB,EAAK,QAAS,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASO,MAAO,GAAI,EAAG,mBAC/E,IAAIsB,EAAK,OAAQ,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASM,MAAO,GAAI,EAAG,mBAC9E,IAAIuB,EAAK,OAAQ,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASM,MAAO,GAAI,EAAG,mBAE9E,IAAIuB,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASI,MAAOK,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCACnF,IAAIzD,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASI,MAAOK,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCACnF,IAAIzD,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASC,OAAQQ,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCACvF,IAAIzD,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASC,OAAQQ,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCACvF,IAAIzD,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASG,OAAQM,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCACpF,IAAIzD,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASG,OAAQM,EAASK,SAAUwE,EAAe,GAAI,EAAG,yCAEpF,IAAIzD,EAAK,WAAY,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASC,KAAMD,EAASI,KAAM,EAAG,yBACrG,IAAIyB,EAAK,YAAa,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASC,KAAM,GAAI,EAAG,kBACrF,IAAI4B,EAAK,YAAa,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASC,KAAM,GAAI,EAAG,kBACrF,IAAI4B,EAAK,aAAc,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASE,MAAOF,EAASC,MAAO,EAAG,2BACzG,IAAI4B,EAAK,cAAe,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASG,KAAMH,EAASI,KAAM,EAAG,0BACxG,IAAIyB,EAAK,cAAe,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASG,KAAM,GAAI,EAAG,kBACvF,IAAI0B,EAAK,cAAe,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASG,KAAM,GAAI,EAAG,kBACvF,IAAI0B,EAAK,OAAQ,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASE,MAAOF,EAASI,KAAM,EAAG,0BAClG,IAAIyB,EAAK,WAAY,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASI,IAAK,GAAI,EAAG,iBACnF,IAAIyB,EAAK,WAAY,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASI,IAAK,GAAI,EAAG,iBACnF,IAAIyB,EAAK,YAAa,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASE,MAAO,GAAI,EAAG,mBACtF,IAAI2B,EAAK,YAAa,EAAG,GAAIpB,EAASC,SAAU6D,EAAevE,EAASE,MAAO,GAAI,EAAG,mBACtF,IAAI2B,EAAK,cAAe,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASE,MAAOF,EAASG,MAAO,EAAG,2BAC1G,IAAI0B,EAAK,YAAa,EAAG,CAAC,GAAIpB,EAASC,SAAUqE,EAAoB/E,EAASG,KAAMH,EAASC,MAAO,EAAG,0BAEvG,IAAI4B,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASM,QAASG,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBACvG,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASM,QAASG,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBACvG,IAAIqB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASO,QAASE,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBAC1G,IAAIqB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASO,QAASE,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBAC1G,IAAIqB,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASK,QAASI,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBACzG,IAAIqB,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASK,QAASI,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBAEzG,IAAIqB,EAAK,QAAS,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAChF,IAAIW,EAAK,QAAS,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAChF,IAAIW,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,QAASO,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAChG,IAAIW,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,QAASO,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAChG,IAAIW,EAAK,WAAY,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACnF,IAAIW,EAAK,WAAY,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACnF,IAAIW,EAAK,UAAW,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAClF,IAAIW,EAAK,UAAW,EAAG,GAAIpB,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,6BAG9EyE,EAAa,SAASpC,EAAQqC,GAElC,IADA,IAAIC,EAAQ,EACHjE,EAAI,EAAG2B,EAAOuC,MAAMlE,GAAIA,KACc,IAAzCgE,EAAMG,QAAQxC,EAAOuC,MAAMlE,GAAGI,OAChC6D,IAGJ,OAAOA,GAiBHG,EAAgB,SAASC,EAAWL,EAAOM,EAAMC,EAAYxB,EAAMyB,GACvE,OAAO,SAAS7C,GACd,GAAIoB,EAAO,EAAG,CACZ,IAAI0B,EAAY,EACZH,IACFG,GAAcV,EAAWpC,EAAQqC,GAASjB,GAExCwB,IACFE,GAAcV,EAAWpC,EAAO+C,KAAMV,GAASjB,EAC/C0B,GAAcV,EAAWpC,EAAOgD,KAAMX,GAASjB,GAEjDpB,EAAOoB,MAAQ0B,EAEbD,EAAU,GACZ7C,EAAOiD,eAAe1D,KA5BN,SAASmD,EAAWL,EAAOM,EAAMC,EAAYC,GACjE,OAAO,SAAS7C,GACd,IAAIsB,EAAS,EAQb,OAPIqB,IACFrB,GAAWc,EAAWpC,EAAQqC,GAASQ,GAErCD,IACFtB,GAAWc,EAAWpC,EAAO+C,KAAMV,GAASQ,EAC5CvB,GAAWc,EAAWpC,EAAOgD,KAAMX,GAASQ,GAEvC,CAACpE,KAAMiE,EAAWpB,OAAQA,IAkBJ4B,CAAcR,EAAWL,EAAOM,EAAMC,EAAYC,MAK7EM,EAAkB,SAASjC,EAAWkC,GAC1C,OAAO,SAASpD,GACVkB,EACFlB,EAAO8B,eAAevC,KAAK,CAAC9C,EAASC,KAAMD,EAASE,MAAOF,EAASG,KAAMH,EAASI,MAC1EuG,GACTpD,EAAO8B,eAAevC,KAAK,CAAC9C,EAASK,MAAOL,EAASM,MAAON,EAASO,UAKrEqG,EAAW,CACf,IAAI/E,EAAK,QAAS,EAAG,GAAIpB,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASE,QAAQ,GAAM,EAAM,EAAG,GAAI,EAAG,0EACpH,IAAIkB,EAAK,QAAS,EAAG,GAAIpB,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASE,QAAQ,GAAM,EAAM,EAAG,GAAI,EAAG,0EACpH,IAAIkB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,MAAO,eAAgBM,EAASG,SAAU8F,GAAgB,GAAM,GAAQ,EAAG,0BAChI,IAAI7E,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,MAAO,eAAgBM,EAASG,SAAU8F,GAAgB,GAAM,GAAQ,EAAG,0BAChI,IAAI7E,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,MAAO,eAAgBM,EAASG,SAAU8F,GAAgB,GAAM,GAAQ,EAAG,0BAChI,IAAI7E,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,MAAO,oBAAqB,qBAAsBQ,EAASG,SAAU8F,GAAgB,GAAO,GAAO,EAAG,sBACrJ,IAAI7E,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,MAAO,oBAAqB,qBAAsBQ,EAASG,SAAU8F,GAAgB,GAAO,GAAO,EAAG,sBACrJ,IAAI7E,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,MAAO,oBAAqB,qBAAsBQ,EAASG,SAAU8F,GAAgB,GAAO,GAAO,EAAG,sBACrJ,IAAI7E,EAAK,WAAY,EAAG,GAAIpB,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASC,WAAW,GAAM,EAAM,EAAG,GAAI,EAAG,2EAC1H,IAAImB,EAAK,WAAY,EAAG,GAAIpB,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASC,WAAW,GAAM,EAAM,EAAG,GAAI,EAAG,2EAE1H,IAAImB,EAAK,aAAc,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASK,MAAO,GAAI,EAAG,mBACpF,IAAIwB,EAAK,aAAc,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASK,MAAO,GAAI,EAAG,mBACpF,IAAIwB,EAAK,QAAS,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASO,MAAO,GAAI,EAAG,mBAC/E,IAAIsB,EAAK,QAAS,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASO,MAAO,GAAI,EAAG,mBAC/E,IAAIsB,EAAK,OAAQ,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASM,MAAO,GAAI,EAAG,mBAC9E,IAAIuB,EAAK,OAAQ,EAAG,GAAIpB,EAASE,MAAO4D,EAAevE,EAASM,MAAO,GAAI,EAAG,mBAE9E,IAAIuB,EAAK,gBAAiB,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,KAAM,YAAaK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAClI,IAAIzD,EAAK,gBAAiB,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,KAAM,YAAaK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAClI,IAAIzD,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASG,KAAMH,EAASI,KAAM,cAAeK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAC9H,IAAIzD,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASG,KAAMH,EAASI,KAAM,cAAeK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAC9H,IAAIzD,EAAK,kBAAmB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASG,OAAQM,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACvH,IAAIzD,EAAK,kBAAmB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASG,OAAQM,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACvH,IAAIzD,EAAK,kBAAmB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASG,OAAQM,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACvH,IAAIzD,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAClH,IAAIzD,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAElH,IAAIzD,EAAK,YAAa,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASC,KAAM,GAAI,EAAG,6BACtF,IAAI4B,EAAK,YAAa,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASC,KAAM,GAAI,EAAG,6BACtF,IAAI4B,EAAK,UAAW,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASI,IAAK,GAAI,EAAG,4BACnF,IAAIyB,EAAK,UAAW,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASI,IAAK,GAAI,EAAG,4BACnF,IAAIyB,EAAK,SAAU,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASE,MAAO,GAAI,EAAG,8BACpF,IAAI2B,EAAK,SAAU,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASE,MAAO,GAAI,EAAG,8BACpF,IAAI2B,EAAK,UAAW,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASG,KAAM,GAAI,EAAG,6BACpF,IAAI0B,EAAK,UAAW,EAAG,CAAC,GAAIpB,EAASC,SAAU6D,EAAevE,EAASG,KAAM,GAAI,EAAG,6BAEpF,IAAI0B,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASK,OAAQ,cAAeI,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBACjJ,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASK,OAAQ,cAAeI,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBACjJ,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,OAAQ,YAAaE,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBACrJ,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,OAAQ,YAAaE,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBACrJ,IAAIqB,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASM,OAAQ,eAAgBG,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBACrJ,IAAIqB,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASM,OAAQ,eAAgBG,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBACrJ,IAAIqB,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASO,QAASE,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBACpH,IAAIqB,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASO,QAASE,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBAEpH,IAAIqB,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,OAAQ,SAAUO,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAC5I,IAAIW,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,OAAQ,SAAUO,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAC5I,IAAIW,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASM,OAAQ,eAAgBG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAClJ,IAAIW,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASM,OAAQ,eAAgBG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAClJ,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASG,MAAO,WAAYM,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACvI,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASG,MAAO,WAAYM,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACvI,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASC,KAAMD,EAASK,OAAQ,SAAUI,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACxI,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASC,KAAMD,EAASK,OAAQ,SAAUI,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,6BAwBpI2F,EAAW,CACf,IAAIhF,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,cAAeK,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASU,SAAS,GAAM,EAAO,EAAG,GAAI,EAAG,mEAClL,IAAIU,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,cAAeK,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASU,SAAS,GAAM,EAAO,EAAG,GAAI,EAAG,mEAClL,IAAIU,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,cAAeK,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASU,SAAS,GAAM,EAAO,EAAG,GAAI,EAAG,mEAClL,IAAIU,EAAK,sBAAuB,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,QAASE,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASE,QAAQ,GAAM,EAAO,EAAG,GAAI,EAAG,qDACjL,IAAIkB,EAAK,sBAAuB,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,QAASE,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASE,QAAQ,GAAM,EAAO,EAAG,GAAI,EAAG,qDACjL,IAAIkB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASI,IAAKJ,EAASM,OAAQ,SAAUG,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASC,WAAW,GAAM,EAAO,EAAG,GAAI,EAAG,qDAC9K,IAAImB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASI,IAAKJ,EAASM,OAAQ,SAAUG,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASC,WAAW,GAAM,EAAO,EAAG,GAAI,EAAG,qDAC9K,IAAImB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASK,OAAQ,eAAgBI,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASG,WAAW,GAAM,EAAO,EAAG,GAAI,EAAG,sDAC5K,IAAIiB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASK,OAAQ,eAAgBI,EAASG,SAAUoF,EAAc1E,EAAQV,SAAU,CAACH,EAASG,WAAW,GAAM,EAAO,EAAG,GAAI,EAAG,sDAE5K,IAAIiB,EAAK,iBAAkB,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASC,KAAMD,EAASC,KAAMD,EAASK,QAASI,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASU,SAAS,GAAM,EAAM,EAAG,GAAI,EAAG,8EACtM,IAAIU,EAAK,mBAAoB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASE,MAAOF,EAASE,QAASO,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASE,QAAQ,GAAO,EAAM,EAAG,GAAI,EAAG,qEACtL,IAAIkB,EAAK,oBAAqB,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASG,KAAMH,EAASE,MAAOF,EAASM,QAASG,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASS,UAAU,GAAO,EAAM,EAAG,GAAI,EAAG,oEAC1M,IAAIW,EAAK,qBAAsB,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,KAAMD,EAASO,MAAOP,EAASM,QAASG,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASM,UAAWN,EAASO,YAAaP,EAASQ,aAAa,GAAO,EAAM,EAAG,GAAI,EAAG,qEACxP,IAAIY,EAAK,mBAAoB,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,IAAKJ,EAASI,IAAKJ,EAASO,QAASE,EAASI,MAlChH,SAAS0C,GACdA,EAAOG,iBAiCyI,EAAG,sCACrJ,IAAI7B,EAAK,mBAAoB,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASG,KAAMH,EAASK,MAAOL,EAASO,QAASE,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASC,SAAUD,EAASE,MAAOF,EAASI,QAAQ,GAAM,EAAO,EAAG,GAAI,EAAG,gEAC1O,IAAIgB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,KAAMD,EAASK,QAASI,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASK,WAAW,GAAO,EAAM,EAAG,GAAI,EAAG,mEACrL,IAAIe,EAAK,oBAAqB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASE,MAAOF,EAASM,QAASG,EAASI,MAhCnG,SAAS0C,GACdA,EAAOiD,eAAe1D,KAAK,SAASS,GAClC,IAAIsB,EAAS,EAOb,OANAA,GAAUtB,EAAO+C,KAAKQ,aAAaC,OAAO,SAASC,GACjD,OAAkB,IAAXA,IACNC,OACHpC,GAAUtB,EAAOgD,KAAKO,aAAaC,OAAO,SAASC,GACjD,OAAkB,IAAXA,IACNC,OACI,CAACjF,KAAMV,EAAQT,MAAOgE,OAAQA,MAuB4F,EAAG,4EACxI,IAAIhD,EAAK,gBAAiB,EAAG,CAAC,CAAC7B,EAASK,MAAOL,EAASM,MAAON,EAASO,QAASE,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASG,WAAW,GAAO,EAAM,EAAG,GAAI,EAAG,sEAC1K,IAAIiB,EAAK,gBAAiB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASC,KAAMD,EAASE,MAAOF,EAASG,OAAQM,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASC,WAAW,GAAO,EAAM,EAAG,GAAI,EAAG,qEACpM,IAAImB,EAAK,mBAAoB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,IAAKJ,EAASC,KAAMD,EAASO,MAAOP,EAASM,QAASG,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASI,QAAQ,GAAO,EAAM,EAAG,GAAI,EAAG,uEAEnN,IAAIgB,EAAK,kBAAmB,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASG,KAAMH,EAASK,MAAOL,EAASO,QAASE,EAASI,MAAOmF,EAAc1E,EAAQT,MAAO,CAACJ,EAASW,SAAS,GAAO,EAAM,EAAG,GAAI,EAAG,iEACzL,IAAIS,EAAK,eAAgB,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASC,KAAMD,EAASG,KAAMH,EAASI,MAAOK,EAASI,MAAO,SAAC0C,GAC3GA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQT,MAAOgE,OAAQ1B,KAAK+D,MAAM3D,EAAOoB,KAAO,OAE/D,EAAG,4CAEN,IAAI9C,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,IAAKJ,EAASM,QAASG,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAChI,IAAIzD,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,IAAKJ,EAASM,QAASG,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAChI,IAAIzD,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASI,IAAKJ,EAASM,QAASG,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAChI,IAAIzD,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,mBAAoBK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACpJ,IAAIzD,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,mBAAoBK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACpJ,IAAIzD,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASI,KAAM,mBAAoBK,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACpJ,IAAIzD,EAAK,iBAAkB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,IAAKJ,EAASE,OAAQ,SAAUO,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAC9I,IAAIzD,EAAK,iBAAkB,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,IAAKJ,EAASE,OAAQ,SAAUO,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAC9I,IAAIzD,EAAK,iBAAkB,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,KAAMD,EAASG,MAAO,cAAeM,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CACrJ,IAAIzD,EAAK,iBAAkB,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,KAAMD,EAASG,MAAO,cAAeM,EAASK,SAAUwE,EAAe,GAAI,EAAG,0CAErJ,IAAIzD,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASK,OAAQ,UAAWI,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBAC9J,IAAIqB,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASK,OAAQ,UAAWI,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBAC9J,IAAIqB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,MAAOP,EAASM,OAAQ,cAAeG,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBAC9J,IAAIqB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASO,MAAOP,EAASM,OAAQ,cAAeG,EAASM,UAAWsD,EAAc7D,GAAoB,EAAG,uBAC9J,IAAIqB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASK,MAAOL,EAASM,OAAQ,cAAeG,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBACtK,IAAIqB,EAAK,cAAe,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASK,MAAOL,EAASM,OAAQ,cAAeG,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBACtK,IAAIqB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASO,MAAOP,EAASM,OAAQ,UAAWG,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBAC/I,IAAIqB,EAAK,QAAS,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASO,MAAOP,EAASM,OAAQ,UAAWG,EAASO,YAAaqD,EAAc7D,GAAsB,EAAG,yBAC/I,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASO,MAAOP,EAASK,OAAQ,WAAYI,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBAClK,IAAIqB,EAAK,aAAc,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASO,MAAOP,EAASK,OAAQ,WAAYI,EAASQ,WAAYoD,EAAc7D,GAAqB,EAAG,wBAElK,IAAIqB,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASG,MAAO,UAAWM,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACzI,IAAIW,EAAK,UAAW,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASG,MAAO,UAAWM,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACzI,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASI,IAAKJ,EAASG,KAAMH,EAASC,KAAMD,EAASK,MAAOL,EAASO,MAAOP,EAASM,QAASG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAC7L,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASI,IAAKJ,EAASG,KAAMH,EAASC,KAAMD,EAASK,MAAOL,EAASO,MAAOP,EAASM,QAASG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAC7L,IAAIW,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASI,IAAKJ,EAASK,MAAOL,EAASO,MAAOP,EAASM,OAAQ,UAAWG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACzL,IAAIW,EAAK,WAAY,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASI,IAAKJ,EAASK,MAAOL,EAASO,MAAOP,EAASM,OAAQ,UAAWG,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACzL,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASE,MAAOF,EAASI,KAAM,WAAYK,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACxJ,IAAIW,EAAK,SAAU,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASE,MAAOF,EAASI,KAAM,WAAYK,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BACxJ,IAAIW,EAAK,YAAa,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,IAAKJ,EAASK,QAASI,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAClJ,IAAIW,EAAK,YAAa,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,IAAKJ,EAASK,QAASI,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,4BAClJ,IAAIW,EAAK,YAAa,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASI,IAAKJ,EAASK,QAASI,EAASS,QAAS0D,EAAa,EAAGtD,EAAQJ,SAAU,EAAG,6BAQ9IiG,EAAc,SAASC,EAASC,EAASC,GAC7C,OAAO,SAAS/D,GACdgE,QAAQC,IAAI,0BACZJ,EAAQ7D,GACR8D,EAAQ9D,GACJ+D,GACFA,EAAQ/D,KAKRkE,EAAkB,WACtB,OAAO,SAASlE,GACdgE,QAAQC,IAAI,wCAAyCjE,GACrDA,EAAOmE,kBAAmB,IAUxBC,EAAc,SAASC,EAAOC,EAAMC,EAAiBC,GACzDzI,KAAKkE,SAAW,GAChBlE,KAAKkE,SAAShD,GAAqB,EACnClB,KAAKkE,SAAShD,GAAuB,EACrClB,KAAKkE,SAAShD,GAAsB,EAEpClB,KAAKmG,UAAY,GACjBnG,KAAKmG,UAAUpE,GAA2B,EAC1C/B,KAAKmG,UAAUpE,GAA2B,EAC1C/B,KAAKmG,UAAUpE,GAAmB,EAElC/B,KAAKmF,UAAY,GACjBnF,KAAKmF,UAAUzE,EAASC,MAAQ,EAChCX,KAAKmF,UAAUzE,EAASE,OAAS,EACjCZ,KAAKmF,UAAUzE,EAASG,MAAQ,EAChCb,KAAKmF,UAAUzE,EAASI,KAAO,EAC/Bd,KAAKmF,UAAUzE,EAASK,OAAS,EACjCf,KAAKmF,UAAUzE,EAASM,OAAS,EACjChB,KAAKmF,UAAUzE,EAASO,OAAS,EAEjCjB,KAAKsI,MAAQA,EACbtI,KAAKoE,cAAgB,EACrBpE,KAAK2D,gBAAkB,EACvB3D,KAAKuI,KAAOA,EACZvI,KAAK0I,YAAc,GACnB1I,KAAKwI,gBAAkBA,EACvBxI,KAAKqF,KAAOoD,EAAgB,EAAI,EAChCzI,KAAKiG,SAAW,EAChBjG,KAAK+F,eAAiB,GACtB/F,KAAKwH,aAAe,GACpBxH,KAAKwG,MAAQ,GACbxG,KAAK2I,QAAU,GACf3I,KAAKkH,eAAiB,GACtBlH,KAAK4I,gBAAiB,EACtB5I,KAAKoI,kBAAmB,EACxBpI,KAAK6I,UAAY,GACjB7I,KAAK8I,gBAAkB,EAAC,GAAO,GAAO,GACtC9I,KAAK+I,eAAiB,GACtB/I,KAAKwF,cAAgB,GACrBxF,KAAKwF,cAAcxD,EAAQR,UAAY,EACvCxB,KAAKwF,cAAcxD,EAAQC,MAAQ,EACnCjC,KAAKwF,cAAcxD,EAAQH,QAAU,EACrC7B,KAAKwF,cAAcxD,EAAQJ,SAAW,EACtC5B,KAAKwF,cAAcxD,EAAQV,UAAY,EACvCtB,KAAKwF,cAAcxD,EAAQT,OAAS,EACpCvB,KAAKwF,cAAcxD,EAAQE,SAAW,EACtClC,KAAKwF,cAAcxD,EAAQF,QAAU,EACrC9B,KAAKgJ,aAAe,GACpBhJ,KAAKiJ,WAAa,EAElBjJ,KAAKmF,UAAUnF,KAAKsI,MAAMvF,aAGtBmG,EAAe,SAASC,GA6C5B,IA5CA,IAAIC,EAAgBD,EAAQE,IAAI,SAASpF,GACvC,IAAIqF,EAAQ,IAAIjB,EAAYpE,EAAOqE,MAAOrE,EAAOsE,KAAM,MAuCvD,OArCAe,EAAMpF,SAAShD,GAAqB+C,EAAOC,SAAShD,GACpDoI,EAAMpF,SAAShD,GAAuB+C,EAAOC,SAAShD,GACtDoI,EAAMpF,SAAShD,GAAsB+C,EAAOC,SAAShD,GAErDoI,EAAMnD,UAAUpE,GAA2BkC,EAAOkC,UAAUpE,GAC5DuH,EAAMnD,UAAUpE,GAA2BkC,EAAOkC,UAAUpE,GAC5DuH,EAAMnD,UAAUpE,GAAmBkC,EAAOkC,UAAUpE,GAEpDuH,EAAMnE,UAAUzE,EAASC,MAAQsD,EAAOkB,UAAUzE,EAASC,MAC3D2I,EAAMnE,UAAUzE,EAASE,OAASqD,EAAOkB,UAAUzE,EAASE,OAC5D0I,EAAMnE,UAAUzE,EAASG,MAAQoD,EAAOkB,UAAUzE,EAASG,MAC3DyI,EAAMnE,UAAUzE,EAASI,KAAOmD,EAAOkB,UAAUzE,EAASI,KAC1DwI,EAAMnE,UAAUzE,EAASK,OAASkD,EAAOkB,UAAUzE,EAASK,OAC5DuI,EAAMnE,UAAUzE,EAASM,OAASiD,EAAOkB,UAAUzE,EAASM,OAC5DsI,EAAMnE,UAAUzE,EAASO,OAASgD,EAAOkB,UAAUzE,EAASO,OAE5DqI,EAAMlF,cAAgBH,EAAOG,cAC7BkF,EAAM3F,gBAAkBM,EAAON,gBAC/B2F,EAAMZ,YAAc/C,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAOyE,aACtDY,EAAMjE,KAAOpB,EAAOoB,KACpBiE,EAAMrD,SAAWhC,EAAOgC,SACxBqD,EAAMvD,eAAiBJ,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO8B,eAAesD,IAAI,SAASlE,GACnF,OAAOQ,MAAMC,UAAUtB,MAAMuB,KAAKV,MAEpCmE,EAAM9B,aAAe7B,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAOuD,cACvD8B,EAAM9C,MAAQb,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAOuC,OAChD8C,EAAMX,QAAUhD,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO0E,SAClDW,EAAMpC,eAAiB,GACvBoC,EAAMV,eAAiB3E,EAAO2E,eAC9BU,EAAMlB,iBAAmBnE,EAAOmE,iBAChCkB,EAAMT,UAAYlD,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO4E,WACpDS,EAAMR,gBAAkBnD,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO6E,iBAC1DQ,EAAMP,eAAiBpD,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO8E,gBACzDO,EAAM9D,cAAgBG,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAOuB,eACxD8D,EAAMN,aAAerD,MAAMC,UAAUtB,MAAMuB,KAAK5B,EAAO+E,cACvDM,EAAML,WAAahF,EAAOgF,WAEnBK,IAIAhH,EAAI,EAAG8G,EAAc9G,GAAIA,IAAK,CACrC,IAAI2B,EAASmF,EAAc9G,GAC3B2B,EAAO+C,KAAOoC,GAAe9G,EAAI8G,EAAczB,OAAS,GAAKyB,EAAczB,QAC3E1D,EAAOgD,KAAOmC,GAAe9G,EAAI8G,EAAczB,OAAS,GAAKyB,EAAczB,QAG7E,OAAOyB,GAyDHG,EAAU,CACd,IAAIzG,EAAO,aAAcpC,EAASK,MAChC,IAAIwB,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQuF,GAAgB,GAAM,GAAQ,EAAG,0BACrG,IAAI7E,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASK,MAAOL,EAASK,QAASI,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQuF,GAAgB,GAAM,GAAQ,EAAG,0BACvG,IAAI7E,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQuF,GAAgB,GAAO,GAAO,EAAG,uBACvG,IAAI7E,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,6BAE9H,IAAIiB,EAAO,UAAWpC,EAASC,KAC7B,IAAI4B,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC1G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASG,OAAQM,EAASU,OA7RxE,SAASoC,GACdA,EAAOG,iBA4RkG,EAAG,sCAC5G,IAAI7B,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BACxI,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASM,MAAON,EAASC,OAAQQ,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC3G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASK,MAAOL,EAASG,KAAMH,EAASG,OAAQM,EAASU,OA5MzE,SAASoC,GACdA,EAAO2E,gBAAiB,GA2MmF,EAAG,oDAC9G,IAAIrG,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASO,MAAOP,EAASC,KAAMD,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAjSxF,SAASoC,GACdA,EAAOG,iBAgSkH,EAAG,uCAE9H,IAAItB,EAAO,UAAWpC,EAASO,MAC7B,IAAIsB,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQuD,EAAW,GAAI,EAAG,oBACxF,IAAI7C,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASO,MAAOP,EAASO,QAASE,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQgG,EAAYvC,EAAa,EAAGtD,EAAQH,QAASuD,EAAW,IAAK,EAAG,uCACxI,IAAI7C,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQgG,EAAYvC,EAAa,EAAGtD,EAAQH,QAASuD,EAAW,IAAK,EAAG,uCACtI,IAAI7C,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASO,MAAOP,EAASM,MAAON,EAASK,QAASI,EAASU,OAAQgG,EAAYvC,EAAa,EAAGtD,EAAQH,QAASuD,EAAW,IAAK,EAAG,wCAE1J,IAAItC,EAAO,QAASpC,EAASE,MAC3B,IAAI2B,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BACzH,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5I,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC1G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5H,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BACzH,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASO,MAAOP,EAASE,MAAOF,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,6BAE9J,IAAIiB,EAAO,gBAAiBpC,EAASM,MACnC,IAAIuB,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC1G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQsG,IAAmB,EAAG,+CACxG,IAAI5F,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASM,MAAON,EAASM,QAASG,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQgG,EAAYvC,EAAa,EAAGtD,EAAQH,QAASsG,KAAoB,EAAG,wFACxI,IAAI5F,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQgG,EAAYvC,EAAa,EAAGtD,EAAQH,QAASsG,KAAoB,EAAG,uFACzJ,IAAI5F,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASK,MAAOL,EAASO,MAAOP,EAASM,QAASG,EAASU,OAAQsG,IAAmB,EAAG,gDAEhH,IAAIrF,EAAO,UAAWpC,EAASG,KAC7B,IAAI0B,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC1G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAlN3D,SAASoC,GACdA,EAAO6E,gBAAkB,EAAC,GAAM,GAAM,IAiNqD,EAAG,gDAC9F,IAAIvG,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BACxG,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQgG,EAAY3B,EAAgBnE,GAA0BmE,EAAgBnE,IAA2B,EAAG,uDAC1K,IAAIQ,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC5G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASM,MAAON,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OApGvE,SAASoC,GACdA,EAAOiD,eAAe1D,KAAK,SAASS,GAClCgE,QAAQC,IAAI,SAAUjE,EAAOuB,eAC7B,IAAIgE,EAAkBvF,EAAO+C,KAAKR,MAAMiB,OAAO,SAASgC,GACtD,OAAOA,EAAK/G,OAASvB,EAASI,QAC7BmI,OAAOzF,EAAOgD,KAAKT,MAAMiB,OAAO,SAASgC,GAC1C,OAAOA,EAAK/G,OAASvB,EAASI,SAIhC,GAFA0G,QAAQC,IAAI,mBAAoBsB,GAED,IAA3BA,EAAgB7B,OAClB,MAAO,CAACjF,KAAMV,EAAQT,MAAOgE,OAAQ,GASvC,IANA,IAKIoE,EAAYC,EALZC,EAAoB7F,EAAiBC,GAIrCS,EAAM,EAEDpC,EAAI,EAAGA,EAAIkH,EAAgB7B,OAAQrF,IAAK,CAC/C,IAAIwH,EAAYN,EAAgBlH,GAChC2F,QAAQC,IAAI,SAAU4B,GACtB,IAAIV,EAAgBF,EAAa,CAACjF,EAAO+C,KAAM/C,EAAQA,EAAOgD,OAG1D1B,EAAS,EACbuE,EAAUnH,QAAQyG,EAAc,IAC5BA,EAAc,GAAGlC,eAAeS,OAAS,IAC3CpC,GAAU6D,EAAc,GAAGlC,eAAe,GAAGkC,EAAc,IAAI7D,QAIjEA,GAAUvB,EAAiBoF,EAAc,IACzCnB,QAAQC,IAAI,SAAU3C,GAClBA,EAASb,IACXuD,QAAQC,IAAI,oBACZxD,EAAMa,EAEJoE,EADEP,EAAc,GAAGlC,eAAeS,OAAS,EAC9ByB,EAAc,GAAGlC,eAAe,GAEhC4C,EAAUnH,QAEzBiH,EAAYE,GAIhB,OADA7B,QAAQC,IAAI,cAAeyB,EAAYC,GAChC,CAAClH,KAAMV,EAAQT,MAAOgE,OAAQb,EAAMmF,MAqD0D,EAAG,6DAE5G,IAAI/G,EAAO,SAAUpC,EAASI,IAC5B,IAAIyB,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASG,KAAMH,EAASG,OAAQM,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BAC1G,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASC,KAAMD,EAASC,KAAMD,EAASC,OAAQQ,EAASU,OAAQmE,EAAe,GAAI,EAAG,yCAC3G,IAAIzD,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQyD,EAAa,EAAGtD,EAAQH,QAAS,EAAG,4BACpI,IAAIU,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASE,MAAOF,EAASE,MAAOF,EAASE,QAASO,EAASU,OAAQgG,EAAY7B,EAAe,GAAIV,EAAa,EAAGtD,EAAQH,QAASuD,EAAW,IAAK,EAAG,4EAC3K,IAAI7C,EAAK,MAAO,EAAG,CAAC,CAAC7B,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,IAAKJ,EAASI,MAAOK,EAASU,OAAQgG,EAAY7B,EAAe,GAAIV,EAAa,EAAGtD,EAAQH,QAASuD,EAAW,IAAK,EAAG,8EAIjL2E,EAAqB,WACzB,IAAIrE,EAAOC,MAAMC,UAAUtB,MAAMuB,KAAKC,WACtC,OAAO,SAAS7B,GACdA,EAAO4E,UAAY5E,EAAO4E,UAAUa,OAAOhE,KAIzClF,EAAU,CACdiD,EAAW,YAAa,EAAG,SAACQ,GAC1BA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQF,OAAQyD,OAAQtB,EAAOuD,aAAaC,OAAO,SAACuC,GAAD,OAAc,IAAPA,IAAUrC,WAEnF,mDACHlE,EAAW,SAAU,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASU,SAAS,GAAM,EAAO,EAAG,GAAI,yDAC7F4B,EAAW,aAAc,EACrBsG,EACI5I,EAASM,UAAWN,EAASO,YAAaP,EAASQ,YACvD,uCACJ8B,EAAW,YAAa,EAAG,SAACQ,GAC1BA,EAAON,iBAAmB,GACzB,gEAEHF,EAAW,SAAU,EAAGuC,EAAe,GAAI,0CAC3CvC,EAAW,YAAa,EAAG6B,EAAa,EAAGtD,EAAQF,QAAS,4BAC5D2B,EAAW,UAAW,EAAG2B,EAAW,GAAI,oBAExC3B,EAAW,SAAU,EAAGsB,EAAc7D,GAAoB,wBAC1DuC,EAAW,YAAa,EAAGsG,EAAmB5I,EAASS,SACnD,sCACJ6B,EAAW,WAAY,EAAGuC,EAAe,GAAI,yCAE7CvC,EAAW,QAAS,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASI,QAAQ,GAAM,EAAO,EAAG,GAAI,kDAC3FkC,EAAW,UAAW,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASM,UAAWN,EAASO,YAAaP,EAASQ,aAAa,GAAM,EAAO,EAAG,GAAI,gDAC5I8B,EAAW,UAAW,EAAGsG,EAAmB5I,EAASU,QACjD,yCACJ4B,EAAW,YAAa,EAAG,SAACQ,GAC1BA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQF,OAAQyD,OAAQ,EAAI1B,KAAKC,IAC7CuC,EAAWpC,EAAQ,CAAC9C,EAASK,WAC7B6E,EAAWpC,EAAQ,CAAC9C,EAASM,UAAWN,EAASO,YAAaP,EAASQ,aACvE0E,EAAWpC,EAAQ,CAAC9C,EAASS,eAGhC,uEACH6B,EAAW,WAAY,EAAGsG,EAAmB5I,EAASK,UAClD,qCACJiC,EAAW,QAAS,EAAG,SAACQ,GACtBA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQF,OAAQyD,OAAQ,EAAItB,EAAOuD,aAAaC,OAAO,SAACuC,GAAD,OAAc,IAAPA,IAAUrC,WAEvF,iEACHlE,EAAW,WAAY,EAAG,SAACQ,GACzBA,EAAO8E,eAAevF,KAAKrC,EAASW,SACnC,yBACH2B,EAAW,QAAS,EAAG,SAACQ,GACtBA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQF,OAAQyD,OAAQ1B,KAAK+D,MAAM3D,EAAOoB,KAAO,OAEhE,4CACH5B,EAAW,iBAAkB,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASS,UAAU,GAAM,EAAO,EAAG,GAAI,+CACtG6B,EAAW,YAAa,EAAG6B,EAAa,EAAGtD,EAAQF,QAAS,4BAE5D2B,EAAW,WAAY,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASK,WAAW,GAAM,EAAO,EAAG,GAAI,+CACjGiC,EAAW,UAAW,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASC,WAAW,GAAM,EAAO,EAAG,GAAI,gDAChGqC,EAAW,QAAS,EAAG,SAACQ,GACtBA,EAAOiD,eAAe1D,KAAK,SAACS,GAC1B,MAAO,CAACvB,KAAMV,EAAQF,OAAQyD,OAAQ,EAAI1B,KAAKC,IAC7CuC,EAAWpC,EAAQ,CAAC9C,EAASC,WAC7BiF,EAAWpC,EAAQ,CAAC9C,EAASE,QAC7BgF,EAAWpC,EAAQ,CAAC9C,EAASS,UAC7ByE,EAAWpC,EAAQ,CAAC9C,EAASG,WAC7B+E,EAAWpC,EAAQ,CAAC9C,EAASM,UAAWN,EAASO,YAAaP,EAASQ,aACvE0E,EAAWpC,EAAQ,CAAC9C,EAASK,WAC7B6E,EAAWpC,EAAQ,CAAC9C,EAASI,aAGhC,2DACHkC,EAAW,aAAc,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASE,QAAQ,GAAM,EAAO,EAAG,GAAI,gDAChGoC,EAAW,UAAW,EAAGsB,EAAc7D,GAAqB,yBAC5DuC,EAAW,aAAc,EAAGsB,EAAc7D,GAAsB,0BAChEuC,EAAW,SAAU,EAAG,SAACQ,GACvBA,EAAO8E,eAAevF,KAAKrC,EAASI,QACnC,0BACHkC,EAAW,SAAU,EAAG6B,EAAa,EAAGtD,EAAQF,QAAS,4BAEzD2B,EAAW,UAAW,EAAG0E,IAAmB,+CAG5C1E,EAAW,QAAS,EAAGiD,EAAc1E,EAAQF,OAAQ,CAACX,EAASG,WAAW,GAAM,EAAO,EAAG,GAAI,iDAG9FmC,EAAW,UAAW,EAAG6B,EAAa,EAAGtD,EAAQF,QAAS,6BC5vBtDmI,SAAkB,CAAC,OAAQ,QAAS,OAAQ,MAAO,QAAS,QAAS,UACrEC,GAAmB,CAAC,kBAAkB,mBAAmB,iBAAiB,iBAAiB,eAAe,eAAe,eAAe,eAAe,eAAe,oBA0D7J3H,GAvDF,SAAS4H,GACpB,IAAMC,EAAOD,EAAMC,KACbC,EAAcC,wDAAyDF,EAAK5H,IAAM,YAElF+H,EAA6B,MAAbH,EAAK1H,KACrB8H,EAAeD,EAAgBF,EACjCC,wDAAyDF,EAAK5H,IAAM,IAAM4H,EAAKxH,WAAa,IAAMwH,EAAKvK,KAAO,OAC9G4K,EAAW,GAMf,OALIN,EAAMO,WACRD,EACEE,EAAAC,EAAAC,cAAA,OAAKC,UAAU,iBAAiBC,MAAO,CAAEC,gBAAiB,QAAUX,EAAc,SAIpFM,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QACfH,EAAAC,EAAAC,cAAA,OAAKC,UAAW,QAAUX,EAAMc,SAAW,YAAc,KAAOd,EAAMe,WAAa,cAAgB,KAAOf,EAAMgB,KAAO,QAAU,KAAOhB,EAAMiB,OAAS,QAAU,KAAOjB,EAAMO,SAAW,YAAc,KACrMC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,qBAAqBC,MAAO,CAAEM,gBAAiBd,EAlBjC,qBAkB8EL,GAAiBE,EAAK1H,QAC/HiI,EAAAC,EAAAC,cAAA,MAAIE,MAAO,CAAEO,OAAQ,eAAiBlB,EAAKvK,MAEzCuK,EAAK3H,KAAK4G,IAAI,SAAS5G,EAAMH,GAC3B,MAAoB,kBAATG,EAEPkI,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,GAAIG,GAES,kBAATA,EAEdkI,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,GAENG,EAAK4G,IAAI,SAAStG,EAAUT,GAC1B,OACEqI,EAAAC,EAAAC,cAAA,QAAMU,IAAKjJ,GAAI2H,EAAgBlH,GAA/B,QAMe,kBAATN,EAEdkI,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,GAAIG,EAAd,UAGF/C,OAAOuI,QAAQuD,MAAM,0BACd,QAIbb,EAAAC,EAAAC,cAAA,KAAGE,MAAO,CAAEO,OAAQ,WAAalB,EAAKvH,UAEvC4H,EACDE,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBAAkBC,MAAO,CAAEC,gBAAiB,QAAUR,EAAe,WCrDpFiB,8MAWJC,gBAAkB,SAACC,GACjB,IAAMC,EAAQC,SAASF,EAAEG,cAAcC,aAAa,cAAe,IACnEC,EAAK7B,MAAM8B,SAASL,4EAIpB,IAAMM,EAAQlM,KAAKmK,MAAM+B,MAAM7C,IAAI,SAASI,EAAMnH,GAChD,OACEqI,EAAAC,EAAAC,cAAA,OAAKsB,aAAY7J,EAAGiJ,IAAKjJ,EAAGyI,MAAO,CAACqB,QAAS,gBAAiBC,QAASrM,KAAK0L,iBAC1Ef,EAAAC,EAAAC,cAACyB,GAAD,CAAMlC,KAAMX,EAAMwB,SAAU3I,IAAMtC,KAAKmK,MAAMc,SAAUC,WAAYzB,EAAKyB,WAAYC,KAAM1B,EAAK0B,SAGlGnL,MACH,OACE2K,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QACZoB,UA1BUK,aAAbd,GACGe,aAAe,CACpBvB,UAAW,GA8BAQ,UClBAgB,GAhBQ,SAACtC,GACtB,IAAIa,EAAkB,kEAAwEb,EAAMpH,SAAS2J,eAAiBvC,EAAMc,SAAW,YAAc,IAAO,QACpK,OACEN,EAAAC,EAAAC,cAAA,OAAKE,MAAO,CACVC,gBAAiBA,EACjB2B,eAAgB,UAChBC,OAAQ,UACRC,OAAQ,GACRC,cAAe,OACfC,aAAc,OACdC,iBAAkB,OAClBC,MAAO,IACNZ,QAASlC,EAAM+C,iBCRhBC,UAAqB,IAC3BC,OAAOC,KAAK3M,GAAU0B,QAAQ,SAASmJ,GACrC4B,GAAmBzM,EAAS6K,IAAQA,QAGhC+B,8MAaJC,sBAAwB,SAAC3B,EAAO4B,EAAO7B,GACrC,IAAIV,EAAWe,EAAK7B,MAAMc,SAAS3G,QACnC2G,EAASW,GAAS4B,IAAUvC,EAASW,QAAS6B,EAAYD,EAC1DxB,EAAK7B,MAAMuD,kBAAkBzC,4EAI7B,IAAI0C,EAAS,GAAIC,EAAQ,GAAIhC,EAAQ,EACrC,IAAK,IAAIiC,KAAgBnN,EAGvB,IAFA,IAAI8M,EAAQ9M,EAASmN,GACjB3I,EAASlF,KAAKmK,MAAMwD,OAAOH,GACtBlL,EAAI,EAAGA,EAAI4C,EAAQ5C,IAAK,CAC/B,IAAI2I,EAAW6C,SAAS9N,KAAKmK,MAAMc,SAASW,IAC5C+B,EAAOnK,KACLmH,EAAAC,EAAAC,cAAA,OAAKU,IAAKK,EAAOb,MAAO,CACtBqB,QAAS,iBAETzB,EAAAC,EAAAC,cAACkD,GAAD,CAAgBhL,SAAU8K,EAAc5C,SAAUA,EAAUiC,cAAelN,KAAKuN,sBAAsBS,KAAKhO,KAAM4L,EAAO4B,OAG5HG,EAAOnK,KAAKmH,EAAAC,EAAAC,cAAA,QAAMU,IAAK,QAAUK,GAArB,MACZA,IAQJ,IAJA,IAAI7F,EAAiB/F,KAAKmK,MAAMyD,MAAMnG,OAAO,SAASwG,GAEpD,OAAoB,IAAbA,EAAEtG,SAEFrF,EAAI,EAAGA,EAAIyD,EAAe4B,OAAQrF,IAAK,CAC9C,IAAI2L,EAAIlI,EAAezD,GACnB4L,EAAelO,KAAKmK,MAAMc,SAASW,KAAWqC,EAAE,GAChDE,EAAgBnO,KAAKmK,MAAMc,SAASW,KAAWqC,EAAE,GACrDL,EAAMpK,KACJmH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QAAQS,IAAKK,GAC1BjB,EAAAC,EAAAC,cAACkD,GAAD,CAAgBhL,SAAUoK,GAAmBc,EAAE,IAAKhD,SAAUiD,EAAchB,cAAelN,KAAKuN,sBAAsBS,KAAKhO,KAAM4L,EAAOqC,EAAE,MAC1ItD,EAAAC,EAAAC,cAACkD,GAAD,CAAgBhL,SAAUoK,GAAmBc,EAAE,IAAKhD,SAAUkD,EAAejB,cAAelN,KAAKuN,sBAAsBS,KAAKhO,KAAM4L,EAAOqC,EAAE,QAG/IN,EAAOnK,KAAKmH,EAAAC,EAAAC,cAAA,QAAMU,IAAK,QAAUK,GAArB,MACZA,IAGF,OACEjB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACZ6C,EACAC,UA3DoBrB,aAAvBe,GACGd,aAAe,CACpBoB,MAAO,GACPD,OAAQ,IA8DGL,UCmCAc,eAxGb,SAAAA,EAAYjE,GAAO,IAAA6B,EAAA,OAAAoB,OAAAiB,EAAA,EAAAjB,CAAApN,KAAAoO,IACjBpC,EAAAoB,OAAAkB,EAAA,EAAAlB,CAAApN,KAAAoN,OAAAmB,EAAA,EAAAnB,CAAAgB,GAAAvI,KAAA7F,KAAMmK,KACDqE,MAAQ,CACXC,KAAM,EACNhF,KAAM,GACNiF,WAAY,EACZ1H,KAAM,GACNC,KAAM,IAPS+E,kFAYjBhM,KAAK2O,SAAS,CACZF,MAAOzO,KAAKwO,MAAMC,KAAO,GAAK,8CAIhBpM,GAChB,IAAM+H,EAAO,CACXX,KAAMzJ,KAAKwO,MAAM/E,KACjBmF,QAAS,CACPH,KAAMzO,KAAKwO,MAAMC,KACjBzH,KAAMhH,KAAKwO,MAAMxH,KAAKS,OAAOqG,UAC7B7G,KAAMjH,KAAKwO,MAAMvH,KAAKQ,OAAOqG,YAG7Be,EAAM7O,KAAKmK,MAAM2E,QAAQC,QACzB1M,IAAWF,EAAO6M,MACpBH,EAAM7O,KAAKmK,MAAM2E,QAAQG,MAChB5M,IAAWF,EAAO+M,eAC3BL,EAAM7O,KAAKmK,MAAM2E,QAAQK,aAE3BN,EAAIzE,GACJpK,KAAKoP,yDAGaxD,GAClB5L,KAAK2O,SAAS,CACZlF,KAAMzJ,KAAKmK,MAAMkF,KAAKzD,GACtB8C,UAAW9C,oDAIS0D,GACtBtP,KAAK2O,SAAS,CACZ3H,KAAMsI,oDAIcC,GACtBvP,KAAK2O,SAAS,CACZ1H,KAAMsI,yCAKRvP,KAAK2O,SAAS,CACZF,KAAM,EACNhF,KAAM,KACNiF,WAAY,EACZ1H,KAAM,GACNC,KAAM,sCAKR,OACE0D,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAC2E,GAAD,CAAMtD,MAAOlM,KAAKmK,MAAMkF,KAAMpE,SAAUjL,KAAKwO,MAAME,UAAWzC,SAAUjM,KAAKyP,oBAAoBzB,KAAKhO,QACtG2K,EAAAC,EAAAC,cAAA,OAAKE,MAAO,CACVqB,QAAS,OACTsD,UAAW,SAEX/E,EAAAC,EAAAC,cAAA,oDAEEF,EAAAC,EAAAC,cAAC8E,GAAD,CAAgB/B,MAAO5N,KAAKmK,MAAMlD,KAAK2G,MAAOD,OAAQ3N,KAAKmK,MAAMlD,KAAK0G,OAAQ1C,SAAUjL,KAAKwO,MAAMvH,KAAMyG,kBAAmB1N,KAAK4P,wBAAwB5B,KAAKhO,SAEhK2K,EAAAC,EAAAC,cAAA,OAAKE,MAAO,CAAC8E,WAAY,QAAzB,0CAEElF,EAAAC,EAAAC,cAAC8E,GAAD,CAAgB/B,MAAO5N,KAAKmK,MAAMnD,KAAK4G,MAAOD,OAAQ3N,KAAKmK,MAAMnD,KAAK2G,OAAQ1C,SAAUjL,KAAKwO,MAAMxH,KAAM0G,kBAAmB1N,KAAK8P,wBAAwB9B,KAAKhO,UAGlK2K,EAAAC,EAAAC,cAAA,OAAKE,MAAO,CAACO,OAAQ,WACnBX,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOnI,KAAK,WAAWqN,UAAW/P,KAAKwO,MAAMC,KAAMuB,SAAUhQ,KAAKiQ,iBAAiBjC,KAAKhO,QAD1F,cAIF2K,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,UAAQwB,QAASrM,KAAKkQ,kBAAkBlC,KAAKhO,KAAMmC,EAAO6M,QAA1D,SACArE,EAAAC,EAAAC,cAAA,UAAQE,MAAO,CAAC8E,WAAY,QAASxD,QAASrM,KAAKkQ,kBAAkBlC,KAAKhO,KAAMmC,EAAO+M,eAAvF,gBACAvE,EAAAC,EAAAC,cAAA,UAAQE,MAAO,CAAC8E,WAAY,QAASxD,QAASrM,KAAKkQ,kBAAkBlC,KAAKhO,KAAMmC,EAAOgO,UAAvF,oBA3FgB5D,aCgCX6D,UAhCK,SAASjG,GAC3B,IAAIkG,EAAOC,EACX,GAAmB,MAAfnG,EAAM5B,MAAqC,IAArB4B,EAAMoG,WAC9BF,EAAQ,GACRC,EAAQ,SACH,GAAyB,IAArBnG,EAAMoG,WACfF,EAAQ,EACRC,EAAQ,QACH,IAAyB,IAArBnG,EAAMoG,WAKf,OADAtI,QAAQuD,MAAM,8BACPb,EAAAC,EAAAC,cAAA,YAJPwF,EAAQ,IACRC,EAAQ,IAKV,IAAIE,EAAkBrG,EAAM3D,MAAM6C,IAAI,SAASI,EAAMnH,GACnD,OACEqI,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,EAAGwI,UAAU,YAAYC,MAAO,CAAE0F,KAAMJ,EAAQC,EAAQhO,IAChEqI,EAAAC,EAAAC,cAACyB,GAAD,CAAMlC,KAAMX,EAAMiB,UAAU,OAIlC,OACEC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACZ0F,EACD7F,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QAAQC,MAAO,CAC5BC,gBAAiB,yDAA+Db,EAAMtK,KAAO,IAAMsK,EAAM5B,KAAO,eC6BzGmI,GAxDK,SAASvG,GAC3B,IAAIwG,EAAgBxG,EAAM+B,MAAMvE,OAAS,EAAIwC,EAAM+B,MAAM/B,EAAM+B,MAAMvE,OAAS,GAAK,KAC/EiJ,EAAa,GACjBxD,OAAOC,KAAKlM,GAAUiB,QAAQ,SAASM,GACrCkO,EAAWzP,EAASuB,IAAS,KAE/ByH,EAAM+B,MAAMzE,OAAO,SAASgC,GAC1B,OAAOA,EAAK/G,OAASvB,EAASU,SAC7BO,QAAQ,SAASqH,GAClBmH,EAAWnH,EAAK/G,MAAMc,KAAKiG,KAU7B,IAAIoH,EAAoBD,EAAWvH,IAAI,SAASyH,EAAUxO,GACxD,IAAKwO,EAASnJ,OACZ,OAAO,KAET,IAAI+H,GAAa,GACbxD,EAAQ4E,EAASzH,IAAI,SAASI,EAAMnH,GAEtC,OADAoN,GAAa,GAEX/E,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,EAAGyI,MAAO,CAClBqB,QAAS,eACT2E,aAAc,GACdrB,UAAWA,EACXsB,cAAe,QAEfrG,EAAAC,EAAAC,cAACyB,GAAD,CAAMlC,KAAMX,EAAM2B,OAAQ3B,IAASkH,OAIzC,OACEhG,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,EAAGyI,MAAO,CAClBqB,QAAS,eACT2E,YAAa,KACX7E,KAIR,OACEvB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,OAAKE,MAAO,CAAC2E,UAAW,KAAxB,SAAoCvF,EAAM9E,MAC1CsF,EAAAC,EAAAC,cAAA,6BAAqBV,EAAM3C,aAAayJ,KAAK,MAC7CtG,EAAAC,EAAAC,cAAA,qBACAF,EAAAC,EAAAC,cAAA,WAAMgG,GACNlG,EAAAC,EAAAC,cAACqG,GAAD,CAAa9F,OAAQjB,EAAMgH,OAAO/F,OAAQ5E,MAAO2D,EAAMgH,OAAO3K,MAAO3G,KAAMsK,EAAMgH,OAAOtR,KAAM0I,KAAM4B,EAAMgH,OAAO5I,KAAMgI,WAAYpG,EAAMgH,OAAOZ,eCIvIa,oMArDPpR,KAAKmK,MAAM2E,QAAQuC,MACrBrR,KAAKmK,MAAM2E,QAAQuC,wCAKrB,IAAIC,EAAc,KACdC,EAAa,KACbvR,KAAKmK,MAAMC,KAAKoH,WAClBF,EAAc3G,EAAAC,EAAAC,cAAC4G,GAAD,CAAa3C,QAAS9O,KAAKmK,MAAM2E,QAASO,KAAMrP,KAAKmK,MAAMC,KAAKsH,YAAa1K,KAAMhH,KAAKmK,MAAMC,KAAKjF,UAAU6B,KAAMC,KAAMjH,KAAKmK,MAAMC,KAAKjF,UAAU8B,QAE/JjH,KAAKmK,MAAM2E,SAAW9O,KAAKmK,MAAM2E,QAAQuC,OAC3CE,EAAa5G,EAAAC,EAAAC,cAAA,UAAQC,UAAU,OAAOuB,QAASrM,KAAK2R,gBAAgB3D,KAAKhO,OAA5D,SAEf,IAAI4R,EAAU,KAyBd,OAxBI5R,KAAKmK,MAAMC,KAAKyH,UAEhBD,EADE5R,KAAKmK,MAAMC,KAAKoH,SAEhB7G,EAAAC,EAAAC,cAAA,OAAKC,UAAU,2BAA2BC,MAAO,CAC/C+G,WAAY,yBACZC,MAAO,QACPC,SAAU,SAHZ,4BAMGT,GAKH5G,EAAAC,EAAAC,cAAA,OAAKC,UAAU,kBAAkBC,MAAO,CACtC+G,WAAY,2BACZC,MAAO,OACPC,SAAU,SAHZ,SAWJrH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,WAAWC,MAAO,CAAC+G,WAAY9R,KAAKmK,MAAMC,KAAKoH,SAAW,GAAK,mBAC5E7G,EAAAC,EAAAC,cAAA,MAAIE,MAAO,CAACqB,QAAS,eAAgBd,OAAQ,kBACzCtL,KAAKmK,MAAM8H,KAAKzP,IAAM,EAAI,GAAK,MAAQxC,KAAKmK,MAAMC,KAAKvK,MAAQG,KAAKmK,MAAM8H,KAAKzP,IAAM,EAAI,KAAO,KAFtG,kBAIiBmI,EAAAC,EAAAC,cAAA,SAAI7K,KAAKmK,MAAMC,KAAK8H,OAClCZ,EACD3G,EAAAC,EAAAC,cAACsH,GAAD,CAAa3K,aAAcxH,KAAKmK,MAAMC,KAAK5C,aAAc0E,MAAOlM,KAAKmK,MAAMC,KAAK5D,MAAOnB,KAAMrF,KAAKmK,MAAMC,KAAK/E,KAAM8L,OAAQnR,KAAKmK,MAAMC,KAAK+G,SAC1IS,UAjDcrF,cCqBR6F,UAtBA,SAACjI,GAWd,IAVA,IAAMkI,EAAelI,EAAMC,KAAKjB,QAAQE,IAAI,SAASpF,EAAQ3B,GAC3D,OACEqI,EAAAC,EAAAC,cAAA,OAAKU,IAAKjJ,EAAGyI,MAAO,CAACqB,QAAS,OAAQkG,SAAU,aAC9C3H,EAAAC,EAAAC,cAAC0H,GAAD,CAAUnI,KAAMnG,EAAQgO,KAAM9H,EAAMC,KAAK6H,KAAMnD,QAAS3E,EAAM2E,aAI9D0D,EAAqC,GACrCC,EAAatI,EAAMC,KAAKjB,QAAQxB,OAClC+K,EAAa7O,KAAK+D,MAAM6K,EAAa,EAAI,GACpCnQ,EAAI,EAAGA,EAAImQ,EAAYnQ,IAC9BkQ,EAAmChP,KACjC6O,GAAc/P,EAAIoQ,GAAcD,IAEpC,OACE9H,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UACZ0H,KCiBQG,UAlCG,SAACxI,GACjB,IAAMyI,EAAYzI,EAAMvG,OAAOyF,IAAI,SAAC6I,EAAO5P,GACzC,OACEqI,EAAAC,EAAAC,cAAA,MAAIU,IAAKjJ,GAAI4P,EAAMrS,KAAKgT,OAAO,EAAG,MAGhCC,EAAa1F,OAAOC,KAAKrL,GAASqH,IAAI,SAACkC,EAAKjJ,GAChD,IAAMyQ,EAAc5I,EAAMvG,OAAOyF,IAAI,SAAC6I,EAAO5P,GAC3C,OACEqI,EAAAC,EAAAC,cAAA,MAAIU,IAAKjJ,GAAI4P,EAAMc,QAAQhR,EAAQuJ,OAGvC,OACEZ,EAAAC,EAAAC,cAAA,MAAIU,IAAKjJ,GAAIyQ,KAGXE,EAAkB9I,EAAMvG,OAAOyF,IAAI,SAAC6I,EAAO5P,GAC/C,OACEqI,EAAAC,EAAAC,cAAA,MAAIU,IAAKjJ,GAAI4P,EAAMgB,SAGvB,OACEvI,EAAAC,EAAAC,cAAA,OAAKC,UAAU,YAAYC,MAAO,CAAEC,gBAAiB,sEACnDL,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,UAAK+H,GACJE,EACDnI,EAAAC,EAAAC,cAAA,UAAKoI,QChBTE,GAAW,SAAStT,GACxB,IAAK,IAAIyC,EAAI,EAAGA,EAAIiH,EAAQ5B,OAAQrF,IAClC,GAAIiH,EAAQjH,GAAGzC,OAASA,EACtB,OAAO0J,EAAQjH,IAKf8Q,GAAU,SAASJ,GACvB,OAAKA,EAIS5M,EAASsD,OAAOpC,GAAUoC,OAAOnC,GAAUmC,OAAOlJ,GAASiH,OAAO,SAASgC,GACvF,IAAI4J,EAAOxP,KAAKa,IAAI,EAAGsO,EAAQpQ,YAC3B0Q,EAAQzP,KAAKa,IAAI,EAAG+E,EAAK7G,YAC7B,OAAO6G,EAAK5J,OAASmT,EAAQnT,MAAQwT,IAASC,GAAS7J,EAAKjH,MAAQwQ,EAAQxQ,MAG/D,GATN,MAYL+Q,GAAe,SAAStP,GAC5B,OAAOA,EAAOqE,MAAM/E,OAAOkE,OAAO,SAAS+L,GAEzC,OADAvL,QAAQC,IAAI,WAAYsL,EAAU3T,KAAOoE,EAAOqE,MAAMzI,KAAK4T,OAAO,GAAKxP,EAAOsE,MAAQtE,EAAOyE,YAAYf,OAAS,IAC3G6L,EAAU3T,OAAUoE,EAAOqE,MAAMzI,KAAK4T,OAAO,GAAKxP,EAAOsE,MAAQtE,EAAOyE,YAAYf,OAAS,KACnG,IAGC+L,GAAgB,SAASC,EAAM1P,GACnC,OAAO,WACL0P,EAAK1P,KAIH2P,GAAc,SAAdA,EAAuBzO,EAAW0O,GACtC,GAAsB,IAAlBA,EAAOlM,OACT,OAAO,EAET,IAAK,IAAIrF,EAAI,EAAGA,EAAI6C,EAAUwC,OAAQrF,IAAK,CAGzC,IAAe,IAFO6C,EAAU7C,GACJmE,QAAQoN,EAAO,IACzB,CAChB,IAAMC,EAAqB3O,EAAUb,MAAM,GAC3CwP,EAAmBC,OAAOzR,EAAG,GAC7B,IAAM0R,EAAkBH,EAAOvP,MAAM,GAGrC,GAFA0P,EAAgBD,OAAO,EAAG,GACTH,EAAYE,EAAoBE,GAE/C,OAAO,GAIb,OAAO,GAGHC,GAAS,SAATA,EAAkB9O,EAA6D0O,EAA0EK,GAE7J,GADAjM,QAAQC,IAAI,SAAU/C,EAAUb,MAAM,GAAIuP,EAAOvP,MAAM,IACjC,IAAlBuP,EAAOlM,OAAc,CAEvB,GAAwB,IAApBuM,EAASvM,OAEX,OADAM,QAAQC,IAAI,iBACL,EAEPD,QAAQC,IAAI,0BAA2BgM,EAAS5P,MAAM,GAAI,OAAQa,EAAUb,MAAM,IAClF,IAAK,IAAIhC,EAAI,EAAGA,EAAI6C,EAAUwC,OAAQrF,IAAK,CAEzC,IADA,IACgB6R,EADVC,EAAgBjP,EAAU7C,GACvB+R,EAAI,EAAmBA,EAAIH,EAASvM,OAAQ0M,IAAK,CAExD,GADAF,EAAiBD,EAASG,IACqB,IAA3CD,EAAc3N,QAAQ0N,GAGxB,OADAlM,QAAQC,IAAI,uGACL,EAETD,QAAQC,IAAIiM,EAAgB,eAAgBC,EAAc9P,MAAM,IAElE2D,QAAQC,IAAIkM,EAAc9P,MAAM,GAAI,iBAEtC,OAAO,EAGX,IAAK,IAAIhC,EAAI,EAAGA,EAAI6C,EAAUwC,OAAQrF,IAAK,CACzC,IAAM8R,EAAgBjP,EAAU7C,GAGhC,GAFA2F,QAAQC,IAAI,gBAAiB2L,EAAO,GAAI,KAAMO,EAAc9P,MAAM,KAEnD,IADH8P,EAAc3N,QAAQoN,EAAO,IACvB,CAChB,IAAIC,EAAqB3O,EAAUb,MAAM,GACzCwP,EAAmBC,OAAOzR,EAAG,GAC7B2F,QAAQC,IAAI,YAAa4L,EAAmBxP,MAAM,IAClD,IAAIgQ,EAAiBT,EAAOvP,MAAM,GAGlC,GAFAgQ,EAAeP,OAAO,EAAG,GACVE,EAAOH,EAAoBQ,EAAgBJ,GAExD,OAAO,GAIb,OAAO,GAGHK,GAA6B,SAASV,EAAQ5P,GAElD,IAAK,IAAIlB,KADTkF,QAAQC,IAAI,mCAAoC2L,EAAOvP,MAAM,IACxCL,EAAOkB,UAAW,CACrCpC,EAAW8I,SAAS9I,EAAU,IAE9B,IADA,IAAImC,EAASjB,EAAOkB,UAAUpC,GACrBsR,EAAI,EAAGA,EAAInP,EAAQmP,IAAK,CAC/B,IAAIzI,EAAQiI,EAAOpN,QAAQ1D,GAC3B,IAAe,IAAX6I,EAKF,MAHAiI,EAAOE,OAAOnI,EAAO,MASvB4I,GAAe,SAASzR,EAAUiE,GACtC,OAAIjE,IAAarC,EAASC,MAAQoC,IAAarC,EAASE,OAASmC,IAAarC,EAASG,MAAQkC,IAAarC,EAASI,IAC/GkG,EACKjF,EAEAA,EAGFA,GAuDL0S,GAAU,SAASxQ,EAAQwF,EAAM0B,GAErC,GAAIlH,EAAOuC,MAAMkO,KAAK,SAASlO,GAC7B,OAAOA,EAAM3G,OAAS4J,EAAK5J,OAE3B,OAAO,EAGT,GAAIsL,GAA6B,IAArB1B,EAAKhH,KAAKkF,OACpB,OAAO,EAGT,IAZ2C,IAAAgN,EAAA,WAazC,IAAMlS,EAAOgH,EAAKhH,KAAKH,GACvB,cAAeG,GACb,IAAK,SAEH,GAAIwB,EAAOuC,MAAMkO,KAAK,SAASlO,GAC7B,OAAOA,EAAM3G,OAAS4C,IAEtB,OAAAmS,GAAO,GAET,MACF,IAAK,SACH,GAAI3Q,EAAOoB,MAAQ5C,EACjB,OAAAmS,GAAO,GAET,MACF,IAAK,SAGH,GAFIf,EAASpR,EAAK6B,MAAM,GACxBiQ,GAA2BV,EAAQ5P,GACb,IAAlB4P,EAAOlM,OAET,OAAAiN,GAAO,GAGT,GAAIhB,GAAY3P,EAAO8B,eAAezB,MAAM,GAAIuP,GAE9C,OAAAe,GAAO,GAIT,IAAK,IAAI7R,KADLoC,EAAY,CAAC,GAAI,GAAI,IACJlB,EAAO+C,KAAK7B,UAAW,CAC1CpC,EAAW8I,SAAS9I,EAAU,IAC9B,IAAMmC,EAASjB,EAAO+C,KAAK7B,UAAUpC,GACrC,GAAe,IAAXmC,EAIJ,IADA,IAAM2P,EAAiB5Q,EAAOkC,UAAUqO,GAAazR,GAAU,IACtDsR,EAAI,EAAGA,EAAInP,EAAQmP,IAC1BlP,EAAU0P,GAAgBrR,KAAKT,GAGnC,IAAK,IAAIA,KAAYkB,EAAOgD,KAAK9B,UAAW,CAC1CpC,EAAW8I,SAAS9I,EAAU,IAC9B,IAAMmC,EAASjB,EAAOgD,KAAK9B,UAAUpC,GACrC,GAAe,IAAXmC,EAIJ,IADA,IAAM2P,EAAiB5Q,EAAOkC,UAAUqO,GAAazR,GAAU,IACtDsR,EAAI,EAAGA,EAAInP,EAAQmP,IAC1BlP,EAAU0P,GAAgBrR,KAAKT,GAI/B+R,EAAa,CAAC7Q,EAAO8B,eAAezB,MAAM,GAAI,GAAI,IACtD,IAAK,IAAI+P,EAAI,EAAGA,EAAIpQ,EAAO+C,KAAKjB,eAAe4B,OAAQ0M,IACrD,KAAIpQ,EAAO+C,KAAKjB,eAAesO,GAAG1M,OAAS,GAA3C,CAIA,IAAIkN,EAAiB5Q,EAAOkC,UAAUqO,GAAavQ,EAAO+C,KAAKjB,eAAesO,GAAG,IAAI,IACrFS,EAAWD,GAAgBrR,KAAKS,EAAO+C,KAAKjB,eAAesO,GAAG/P,MAAM,IAEtE,IAAK,IAAI+P,EAAI,EAAGA,EAAIpQ,EAAOgD,KAAKlB,eAAe4B,OAAQ0M,IACrD,KAAIpQ,EAAOgD,KAAKlB,eAAesO,GAAG1M,OAAS,GAA3C,CAIA,IAAIkN,EAAiB5Q,EAAOkC,UAAUqO,GAAavQ,EAAOgD,KAAKlB,eAAesO,GAAG,IAAI,IACrFS,EAAWD,GAAgBrR,KAAKS,EAAOgD,KAAKlB,eAAesO,GAAG/P,MAAM,IAGtE,GAtIiB,SAAnByQ,EAA4BlB,EAAQxO,EAAM2P,EAAcC,GAC5D,GAAsB,IAAlBpB,EAAOlM,OACT,OAAO,EAET,IAAK,IAAIrF,EAAI,EAAGA,EAAI,GAAKA,GAAK+C,EAAM/C,IAAK,CACvC,IAAMsJ,EAAQoJ,EAAa1S,GAAGmE,QAAQoN,EAAO,IAC7C,IAAe,IAAXjI,EAAc,CAChB,IAAMsJ,EAAkBF,EAAa3L,IAAI,SAASlE,GAChD,OAAOA,EAAUb,MAAM,KAEnB6Q,EAAmBF,EAAc5L,IAAI,SAASyL,GAClD,OAAOA,EAAWzL,IAAI,SAAS+L,GAC7B,OAAOA,EAAU9Q,MAAM,OAI3B4Q,EAAgB5S,GAAGyR,OAAOnI,EAAO,GACjC,IAAMoI,EAAkBH,EAAOvP,MAAM,GAGrC,GAFA0P,EAAgBD,OAAO,EAAG,GACTgB,EAAiBf,EAAiB3O,EAAO/C,EAAG4S,EAAiBC,GAE5E,OAAO,EAMX,IADA,IAAML,EAAaG,EAAc3S,GACxB+R,EAAI,EAAGA,EAAIS,EAAWnN,OAAQ0M,IACrC,IAA0C,IAAtCS,EAAWT,GAAG5N,QAAQoN,EAAO,IAAY,CAC3C,IAAMqB,EAAkBF,EAAa3L,IAAI,SAASlE,GAChD,OAAOA,EAAUb,MAAM,KAEnB6Q,EAAmBF,EAAc5L,IAAI,SAASyL,GAClD,OAAOA,EAAWzL,IAAI,SAAS+L,GAC7B,OAAOA,EAAU9Q,MAAM,OAI3B6Q,EAAiB7S,GAAGyR,OAAOM,EAAG,GAC9B,IAAML,EAAkBH,EAAOvP,MAAM,GAGrC,GAFA0P,EAAgBD,OAAO,EAAG,GACTgB,EAAiBf,EAAiB3O,EAAO/C,EAAG4S,EAAiBC,GAE5E,OAAO,GAKf,OAAO,EAsFGJ,CAAiBlB,EAAOvP,MAAM,GAAIL,EAAOoB,KAAMF,EAAW2P,GAC5D,OAAAF,GAAO,GAET,MACF,QACElV,OAAOuI,QAAQuD,MAAM,oCAAuC/I,KA5EzDH,EAAImH,EAAKhH,KAAKkF,OAAS,EAAGrF,GAAK,EAAGA,IAAK,KAiBtCuR,EAYA1O,EAwBA2P,EArDsCO,EAAAV,IAAA,qBAAAU,EAAA,OAAAA,EAAAT,EAgFhD,OAAO,GAsBHU,GAAe,SAASrR,EAAQgO,EAAM5C,EAAMlE,GAChD,OAAwD,IApBvC,SAASlH,EAAQgO,EAAM5C,EAAMlE,GAC9C,IAAIoK,EAAQ,GAGRC,EAAQjC,GAAatP,GACnBuR,IAAUrK,GAAQsJ,GAAQxQ,EAAQuR,GAAO,IAC7CD,EAAM/R,KAAKgS,GAIb,IAAK,IAAIlT,EAAI,EAAGA,EAAI+M,EAAK1H,OAAQrF,IAC3BmS,GAAQxQ,EAAQoL,EAAK/M,GAAI6I,GAAQlH,EAAO6E,gBAAgBmJ,EAAKzP,OAC/D+S,EAAM/R,KAAK6L,EAAK/M,IAIpB,OAAOiT,EAICE,CAAWxR,EAAQgO,EAAM5C,EAAMlE,GAAMxD,QA+CzC+N,GAAS,SAASzR,EAAQwF,EAAMmF,GACpC,GAAyB,IAArBnF,EAAKhH,KAAKkF,OAAc,CAE1B,IAAIgO,EAA6B,IAAxB/G,EAAQ5H,KAAKW,QAAwC,IAAxBiH,EAAQ3H,KAAKU,QAAiC,IAAjBiH,EAAQH,KAI3E,OAHKkH,GACH1N,QAAQC,IAAI,gDAEPyN,EAIT,IAAiD,GAA7C1R,EAAO8E,eAAetC,QAAQgD,EAAK/G,MAAa,CAClD,IAAMiT,EAA6B,IAAxB/G,EAAQ5H,KAAKW,QAAwC,IAAxBiH,EAAQ3H,KAAKU,QAChC,IAAjBiH,EAAQH,KAKZ,OAJKkH,GACH1N,QAAQC,IACN,qEAEGyN,EAGT,IArB6C,IAAAC,EAAA,SAqBpCtT,GACP,IAAMG,EAAOgH,EAAKhH,KAAKH,GACvB,cAAeG,GACb,IAAK,SAEH,GAAIwB,EAAOuC,MAAMiB,OAAO,SAASjB,GAC/B,OAAOA,EAAM3G,OAAS4C,IACrBkF,OAAS,EAAG,CAEb,IAAMgO,EAA6B,IAAxB/G,EAAQ5H,KAAKW,QAAwC,IAAxBiH,EAAQ3H,KAAKU,QAAiC,IAAjBiH,EAAQH,KAM7E,OALKkH,EAGH1N,QAAQC,IAAI,gBAFZD,QAAQC,IAAI,uDAId,CAAA0M,EAAOe,GAET,MACF,IAAK,SACH,IAAM9B,EAASpR,EAAK6B,MAAM,GAC1B2D,QAAQC,IAAI,OAAQ2L,EAAOvP,MAAM,IAEjCiQ,GAA2BV,EAAQ5P,GACnCgE,QAAQC,IAAI2L,EAAOvP,MAAM,GAAI,gDAG7B,IAAK,IAAI+P,EAAI,EAAGA,EAAIzF,EAAQ5H,KAAKW,OAAQ0M,IAAK,CAC5C,IAAIzI,EAAQiI,EAAOpN,QAAQmI,EAAQ5H,KAAKqN,IACxC,IAAe,IAAXzI,EAKF,OADA3D,QAAQC,IAAI,sBACZ,CAAA0M,GAAO,GAJPf,EAAOE,OAAOnI,EAAO,GAOzB3D,QAAQC,IAAI2L,EAAOvP,MAAM,GAAI,0BAE7B,IAAK,IAAI+P,EAAI,EAAGA,EAAIzF,EAAQ3H,KAAKU,OAAQ0M,IAAK,CAC5C,IAAIzI,EAAQiI,EAAOpN,QAAQmI,EAAQ3H,KAAKoN,IACxC,IAAe,IAAXzI,EAKF,OADA3D,QAAQC,IAAI,sBACZ,CAAA0M,GAAO,GAJPf,EAAOE,OAAOnI,EAAO,GAQzB3D,QAAQC,IAAI2L,EAAOvP,MAAM,GACrB,qDAEJ,IAAMuR,EAAsBjH,EAAQ5H,KAAK0C,OAAOkF,EAAQ3H,MAClDlB,EAAiB9B,EAAO8B,eAAezB,MAAM,GAKnD,IAJ4C,GAAxCL,EAAO4E,UAAUpC,QAAQgD,EAAK/G,OAChCqD,EAAevC,KAAK,CAAC9C,EAASC,KAAMD,EAASE,MAAOF,EAASG,KACzDH,EAASI,IAAKJ,EAASK,MAAOL,EAASM,MAAON,EAASO,SAExDgT,GACDlO,EAAgB8N,EAAOvP,MAAM,GAAIuR,EAAoBvR,MAAM,IAG7D,OAFA2D,QAAQC,IAAI,yFAEZ,CAAA0M,GAAO,GAIT,IAAMtF,EAAcV,EAAQ5H,KAAK1C,MAAM,GAEvC,GADAiQ,GAA2BjF,EAAarL,EAAO+C,OAC1CiN,GAAOhQ,EAAO+C,KAAKjB,eAAe0B,OAAO,SAAS2M,GACrD,OAAgC,IAAzBA,EAAczM,SACnB2H,EAAa,IAGf,OAFArH,QAAQC,IAAI,4CACZD,QAAQC,IAAI,2CAA4CoH,EAAarL,EAAO+C,MAC5E,CAAA4N,GAAO,GAGT,IAAMrF,EAAcX,EAAQ3H,KAAK3C,MAAM,GAEvC,GADAiQ,GAA2BhF,EAAatL,EAAOgD,OAC1CgN,GAAOhQ,EAAOgD,KAAKlB,eAAe0B,OAAO,SAAS2M,GACrD,OAAgC,IAAzBA,EAAczM,SACnB4H,EAAa,IAGf,OAFAtH,QAAQC,IAAI,4CACZD,QAAQC,IAAI,2CAA4CqH,EAAatL,EAAOgD,MAC5E,CAAA2N,GAAO,GAIT,IAAIkB,EAAa,EACjB,IAASzB,EAAI,EAAGA,EAAIzF,EAAQ5H,KAAKW,OAAQ0M,IACvCyB,GAAc7R,EAAOkC,UAAUqO,GAAa5F,EAAQ5H,KAAKqN,IAAI,IAE/D,IAAK,IAAIA,EAAI,EAAGA,EAAIzF,EAAQ3H,KAAKU,OAAQ0M,IACvCyB,GAAc7R,EAAOkC,UAAUqO,GAAa5F,EAAQ3H,KAAKoN,IAAI,IAI/D,GAAIpQ,EAAOoB,KAAOyQ,EAEhB,OADA7N,QAAQC,IAAI,4BACZ,CAAA0M,GAAO,GAEP,IAAMe,EAAsB,IAAjB/G,EAAQH,KAMnB,OALKkH,EAGH1N,QAAQC,IAAI,gBAFZD,QAAQC,IAAI,+CAId,CAAA0M,EAAOe,GAEX,IAAK,SACH,GAA4B,IAAxB/G,EAAQ5H,KAAKW,QAAwC,IAAxBiH,EAAQ3H,KAAKU,OAE5C,OADAM,QAAQC,IAAI,oDACZ,CAAA0M,GAAO,GACF,GAAI3Q,EAAOoB,MAAQ5C,GAAyB,IAAjBmM,EAAQH,KAExC,OADAxG,QAAQC,IAAI,WACZ,CAAA0M,GAAO,GACF,KAAI3Q,EAAOoB,KAAO5C,GAIvB,OADAwF,QAAQC,IAAI,0DACZ,CAAA0M,GAAO,GAHP3M,QAAQC,IAAI,0CApHX5F,EAAImH,EAAKhH,KAAKkF,OAAS,EAAGrF,GAAK,EAAGA,IAAK,KAwFjC+R,EAxFiC0B,EAAAH,EAAvCtT,GAAuC,qBAAAyT,EAAA,OAAAA,EAAAnB,EA+HhD,OADA3M,QAAQC,IAAI,iDACL,GAGH8N,GAAgB,SAAS/R,EAAQ2K,GACrC,OAAO,WACL,IAAK,IAAItM,EAAI,EAAGA,EAAIsM,EAAQ5H,KAAKW,OAAQrF,IAAK,CAC5C,IAAMS,EAAW6L,EAAQ5H,KAAK1E,GACxB4C,EAASjB,EAAOkC,UAAUqO,GAAazR,GAAU,IACvDkB,EAAOoB,MAAQH,EACfjB,EAAO+C,KAAK3B,MAAQH,EAEtB,IAAK,IAAI5C,EAAI,EAAGA,EAAIsM,EAAQ3H,KAAKU,OAAQrF,IAAK,CAC5C,IAAMS,EAAW6L,EAAQ3H,KAAK3E,GACxB4C,EAASjB,EAAOkC,UAAUqO,GAAazR,GAAU,IACvDkB,EAAOoB,MAAQH,EACfjB,EAAOgD,KAAK5B,MAAQH,EAEtBjB,EAAOoB,MAAQuJ,EAAQH,OAIrBwH,GAAO,SAAShS,EAAQgO,EAAMiE,EAAOtK,EACvCT,GACFnL,KAAKmW,YAAclS,EACnBjE,KAAKiS,KAAOA,EACZjS,KAAKmL,KAAOA,EACZnL,KAAKwC,IAAMyP,EAAKzP,IAChBxC,KAAKoW,QAAS,EACdpW,KAAKqW,UAAY,GACjB,IAAIzP,EAAO5G,KACXA,KAAKqR,KAAO,WACV,KAAMrR,KAAKqW,UAAU1O,OAAS,GAC5B3H,KAAKqW,UAAUC,KAAftW,GAEFN,OAAOS,WAAW8R,EAAKsE,OAAOvI,KAAKiE,GAAO,IAE5CjS,KAAKwW,KAAO,SAASnU,EAAQoH,EAAMmF,GAAoD,IAAA5C,EAAAhM,KAGrF,GAFAiI,QAAQC,IAAIlI,KAAKmW,YAAY3N,gBAAgB3I,KAAMsC,EAAOE,IAAUoH,GAAQ,IAAI5J,KAAM+O,GAElFvM,IAAWF,EAAOsU,KACpB,OAAIzW,KAAKoW,QACPpW,KAAKqR,QACE,IAEPpJ,QAAQC,IAAI,6DACL,GAaX,GARK0G,EAAQ5H,OACX4H,EAAQ5H,KAAO,IAGZ4H,EAAQ3H,OACX2H,EAAQ3H,KAAO,IAGbjH,KAAKoW,OAEP,OADAnO,QAAQC,IAAI,sDACL,EAET,IAAoC,IAAhCgO,EAAMtK,GAAOnF,QAAQgD,GAEvB,OADAxB,QAAQC,IAAI,wDACL,EAGT,GAAI7F,IAAWF,EAAO6M,MAAO,CAE3B,IAAK,IAAI1M,EAAI,EAAGA,EAAI2B,EAAOuC,MAAMmB,OAAQrF,IACvC,GAAI2B,EAAOuC,MAAMlE,GAAGzC,OAAS4J,EAAK5J,KAEhC,OADAoI,QAAQC,IAAI,wCACL,EAIX,GAAIiD,EACFlH,EAAOuC,MAAMhD,KAAKiG,GAClBzJ,KAAKqW,UAAU7S,KAAK,WAClBS,EAAOuC,MAAM8P,aAEV,GAAIZ,GAAOzR,EAAQwF,EAAMmF,GAAU,CAIxC,GAHA3K,EAAOuC,MAAMhD,KAAKiG,GAGdmF,EAAQH,KAAO,EACjB,IAAK,IAAInM,EAAImH,EAAKhH,KAAKkF,OAAS,EAAGrF,GAAK,EAAGA,IAAK,CAC9C,IAAMG,EAAOgH,EAAKhH,KAAKH,GACvB,GAAoB,kBAATG,EAAmB,CAC5BmM,EAAQH,KAAOhM,EACf,OAKN,IAAMiU,EAAkBV,GAAc/R,EAAQ2K,GAC9CqD,EAAK0E,mBAAmBnT,KAAKkT,GAC7B1W,KAAKqW,UAAU7S,KAAK,WAClB,IAAMlB,EAAI2P,EAAK0E,mBAAmBlQ,QAAQiQ,GAC1CzE,EAAK0E,mBAAmB5C,OAAOzR,EAAG,GAClC2B,EAAOuC,MAAM8P,YAEV,KAAIrS,EAAO6E,gBAAgBmJ,EAAKzP,MAAgC,IAAxBoM,EAAQ5H,KAAKW,QAAwC,IAAxBiH,EAAQ3H,KAAKU,QAAiC,IAAjBiH,EAAQH,KAS/G,OADAxG,QAAQC,IAAI,8DACL,EARPjE,EAAOuC,MAAMhD,KAAKiG,GAClBxF,EAAO6E,gBAAgBmJ,EAAKzP,MAAO,EACnCxC,KAAKqW,UAAU7S,KAAK,WAClBS,EAAO6E,gBAAgBmJ,EAAKzP,MAAO,EACnCyB,EAAOuC,MAAM8P,QAOjB,IAAMM,EAAmBlD,GAAcjK,EAAK9G,QAASsB,GACrDgO,EAAK4E,kBAAkBrT,KAAKoT,GAC5B5W,KAAKqW,UAAU7S,KAAK,WAClB,IAAMlB,EAAI2P,EAAK4E,kBAAkBpQ,QAAQmQ,GACzC3E,EAAK4E,kBAAkB9C,OAAOzR,EAAG,UAE9B,GAAID,IAAWF,EAAO+M,cAAiB/D,EA0BvC,GAAI9I,IAAWF,EAAOgO,QAAS,CACpC,GAAI8B,EAAK6E,aAAc,CACrB,IAAIxB,GAAarR,EAAQgO,EAAMiE,EAAMtK,GAAQT,GAI3C,OADAlD,QAAQC,IAAI,6GACL,EAHPD,QAAQC,IAAI,8BAA+BjE,EAAQiS,EAAMtK,IAM7DqG,EAAK8E,UAAUvT,KAAKiG,GACpBxF,EAAOoB,MAAQ,EACfrF,KAAKqW,UAAU7S,KAAK,WAClB,IAAMlB,EAAI2P,EAAK8E,UAAUtQ,QAAQgD,GACjCxF,EAAOoB,MAAQ,EACf4M,EAAK8E,UAAUhD,OAAOzR,EAAG,SAEtB,IAAc,MAAVD,EAIT,OADA4F,QAAQC,IAAI,oIACL,EAHPD,QAAQC,IAAI,+BA3CsC,CAClD,IAAMsN,EAAQjC,GAAatP,GAC3B,IAAKuR,EAEH,OADAvN,QAAQC,IAAI,gCACL,EAET,IAAKwN,GAAOzR,EAAQuR,EAAO5G,GAEzB,OADA3G,QAAQC,IAAI,2CACL,EAETjE,EAAOuC,MAAMhD,KAAKgS,GAClBvR,EAAOyE,YAAYlF,KAAKiG,GAExB,IAAMiN,EAAkBV,GAAc/R,EAAQ2K,GAC9CqD,EAAK0E,mBAAmBnT,KAAKkT,GAE7B,IAAME,EAAmBlD,GAAc8B,EAAM7S,QAASsB,GACtDgO,EAAK4E,kBAAkBrT,KAAKoT,GAC5B5W,KAAKqW,UAAU7S,KAAK,WAClB,IAAIlB,EAAI2P,EAAK4E,kBAAkBpQ,QAAQmQ,GACvC3E,EAAK4E,kBAAkB9C,OAAOzR,EAAG,GACjCA,EAAI2P,EAAK0E,mBAAmBlQ,QAAQiQ,GACpCzE,EAAK0E,mBAAmB5C,OAAOzR,EAAG,GAClC2B,EAAOyE,YAAY4N,MACnBrS,EAAOuC,MAAM8P,QAwBjB,IApIqF,IAAAU,EAAA,SAoI5E1U,GACP,GAAI4T,EAAMtK,GAAOtJ,KAAOmH,EAKtB,OAJAyM,EAAMtK,GAAOmI,OAAOzR,EAAG,GACvB0J,EAAKqK,UAAU7S,KAAK,WAClB0S,EAAMtK,GAAOmI,OAAOzR,EAAG,EAAGmH,KAE5B,SANKnH,EAAI,EAAGA,EAAI4T,EAAMtK,GAAOjE,OAAQrF,IAAK,cAAA0U,EAArC1U,GAML,MAYJ,OATAtC,KAAKoW,QAAS,EACdnE,EAAKgF,cACLjX,KAAKqW,UAAU7S,KAAK,WAClByO,EAAKgF,cACLrQ,EAAKwP,QAAS,IAGhBnE,EAAKiF,iBAEE,IAILC,GAAmB,SAASlT,EAAQgO,EAAMiE,EAAOtK,GACrD5L,KAAKmW,YAAclS,EACnBjE,KAAKiS,KAAOA,EACZjS,KAAKwC,IAAMyP,EAAKzP,IAChBxC,KAAKoW,QAAS,EACdpW,KAAKqW,UAAY,GACjB,IAAIzP,EAAO5G,KACXA,KAAKqR,KAAO,WACV,KAAMrR,KAAKqW,UAAU1O,OAAS,GAC5B3H,KAAKqW,UAAUC,KAAftW,GAEFN,OAAOS,WAAW8R,EAAKsE,OAAOvI,KAAKiE,GAAO,IAE5CjS,KAAKwW,KAAO,SAASnU,EAAQoH,GAAM,IAAA2N,EAAApX,KAGjC,GAFAiI,QAAQC,IAAIjE,EAAQgO,EAAMiE,EAAOtK,EAAOvJ,EAAQoH,GAE5CpH,IAAWF,EAAOsU,KACpB,OAAIzW,KAAKoW,QACPpW,KAAKqR,QACE,IAEPpJ,QAAQC,IAAI,6DACL,GAIX,GAAIlI,KAAKoW,OAEP,OADAnO,QAAQC,IAAI,sDACL,EAET,IAAoC,IAAhCgO,EAAMtK,GAAOnF,QAAQgD,GAEvB,OADAxB,QAAQC,IAAI,wDACL,EAGTjE,EAAO0E,QAAQnF,KAAKiG,GACpBzJ,KAAKqW,UAAU7S,KAAK,WAClBS,EAAO0E,QAAQ2N,QAGjB,IA3BiC,IAAAe,EAAA,SA2BxB/U,GACP,GAAI4T,EAAMtK,GAAOtJ,KAAOmH,EAKtB,OAJAyM,EAAMtK,GAAOmI,OAAOzR,EAAG,GACvB8U,EAAKf,UAAU7S,KAAK,WAClB0S,EAAMtK,GAAOmI,OAAOzR,EAAG,EAAGmH,KAE5B,SANKnH,EAAI,EAAGA,EAAI4T,EAAMtK,GAAOjE,OAAQrF,IAAK,cAAA+U,EAArC/U,GAML,MAYJ,OATAtC,KAAKoW,QAAS,EACdnE,EAAKgF,cACLjX,KAAKqW,UAAU7S,KAAK,WAClByO,EAAKgF,cACLrQ,EAAKwP,QAAS,IAGhBnE,EAAKqF,6BAEE,IAILC,GAAe,WACnBvX,KAAKuW,OAAS,WACZ,IAAK,IAAIjU,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGgI,WAI7BtK,KAAKyX,KAAO,SAASC,EAAYC,EAAQzB,EAAO0B,EAAOC,EAASlP,GAC9D3I,KAAKyS,WAAaiF,EAAW/P,OAC7B3H,KAAKwX,iBAAmBE,EAAWpT,MAAM,GACzCtE,KAAK8W,eAAiBc,EACtB5X,KAAK2I,UAAYA,EACjB3I,KAAK8X,gBAAkBD,EAGvB,IAAIE,EAAM/X,KAAKyS,WACf,GAAKkF,EAME,CACL3X,KAAKmJ,QAAU,GACf,IAAK,IAAI7G,EAAI,EAAGA,EAAIyV,EAAKzV,IACvBtC,KAAKmJ,QAAQ3F,KAAK,IAAI6E,EAAY8K,GAASwE,EAAOrV,GAAGzC,MAAO8X,EAAOrV,GAAGiG,KAAMvI,KAAKwX,iBAAiBlV,GAAItC,KAAK2I,cATlG,CACXgP,EAAShS,MAAMC,UAAUtB,MAAMuB,KAAK0D,GACpC,IAAIhB,EAAO1E,KAAKmU,SAAW,GAAM,IAAM,IACvChY,KAAKmJ,QAAUnJ,KAAKwX,iBAAiBnO,IAAI,SAASb,GAChD,OAAO,IAAIH,EAAYsP,EAAO5D,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWL,EAAOhQ,QAAS,GAAG,GAAIY,EAAMC,EAAiBxI,KAAK2I,WAUvH,IAAK,IAAIrG,EAAI,EAAGA,EAAItC,KAAKmJ,QAAQxB,OAAQrF,IAAK,CAC5C,IAAM2B,EAASjE,KAAKmJ,QAAQ7G,GAC5B2B,EAAO+C,KAAOhH,KAAKmJ,SAAS7G,EAAIyV,EAAM,GAAKA,GAC3C9T,EAAOgD,KAAOjH,KAAKmJ,SAAS7G,EAAIyV,EAAM,GAAKA,GAQ7C,GAJA/X,KAAK+W,UAAY,GAIZb,EA+DHlW,KAAKkW,MAAQA,EAAM7M,IAAI,SAASgG,GAC9B,OAAOA,EAAKhG,IAAI,SAAS6C,GACvB,OAAOA,EAAM7C,IAAI,SAASI,GACxB,OAAO2J,GAAQ3J,aAlEX,CACV,IAAIwO,EAAQ,GACZA,EAAM,GAAK7R,EAASqB,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcmV,IAG5BE,EAAM,GAAK3Q,EAASG,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcmV,IAG5B,IAAIG,EAAiB,EAAIH,EACrBI,EAAS5Q,EAASE,OAAO,SAASgC,GACpC,OAA2B,IAApBA,EAAK7G,aAGT5C,KAAK2I,UACRwP,EAASA,EAAO1Q,OAAO,SAACgC,GACtB,MAAqB,qBAAdA,EAAK5J,MAA6C,oBAAd4J,EAAK5J,QAIpD,IADA,IAAIuY,EAAkBD,EAAOxQ,OAASuQ,EAC7B5V,EAAI,EAAGA,EAAI8V,EAAiB9V,IACnC6V,EAAOpE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWG,EAAOxQ,QAAS,GAO3D,GALAsQ,EAAM,GAAK1Q,EAASE,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcmV,GAAOtO,EAAK7G,WAAa,IAClD8G,OAAOyO,GAGNnY,KAAK2I,QAAS,CAIhB,IAHA,IAAI0P,EAAe7X,EAAQ8D,MAAM,GAE7BgU,EAAkB,EAAIP,EACnBM,EAAa1Q,OAAS2Q,GAC3BD,EAAatE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWK,EAAa1Q,QAAS,GAEvEsQ,EAAM,GAAKI,EAIbrY,KAAKkW,MAAQ,GACb,IAAK,IAAI5T,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1BtC,KAAKkW,MAAM5T,GAAK,GAChB,IAAK,IAAI+R,EAAI,EAAGA,EAAI0D,EAAK1D,IAAK,CAE5B,IADA,IAAIhF,EAAO,GACFkJ,EAAI,EAAGA,EAAI,EAAGA,IACrBlJ,EAAK7L,KAAKyU,EAAM3V,GAAGyR,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWC,EAAM3V,GAAGqF,QAAS,GAAG,IAE5E3H,KAAKkW,MAAM5T,GAAGkB,KAAK6L,IAIvB,GAAIrP,KAAK2I,QAAS,CAChB3I,KAAKkW,MAAM,GAAK,GAChB,IAAK,IAAI7B,EAAI,EAAGA,EAAI0D,EAAK1D,IAAK,CAC5BhF,EAAO,GACP,IAAK,IAAIkJ,EAAI,EAAGA,EAAI,EAAGA,IACrBlJ,EAAK7L,KAAKyU,EAAM,GAAGlE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWC,EAAM,GAAGtQ,QAAS,GAAG,IAE5E3H,KAAKkW,MAAM,GAAG1S,KAAK6L,KAczBrP,KAAKwC,IAAM,EACXxC,KAAKwY,MAAQ,EACbxY,KAAKiX,YAAc,EAEnBjX,KAAK6W,kBAAoB,GACzB7W,KAAK2W,mBAAqB,GAE1B3W,KAAKqQ,SAOPrQ,KAAKyY,2BAA6B,SAAStC,GAIzC,IAHA,IAAM3H,EAAQkK,KAAKC,MAAMD,KAAKE,UAAU5Y,KAAK6Y,wBAGpCvW,EAAI,EAAGA,EAAIkM,EAAMrF,QAAQxB,OAAQrF,IACxCkM,EAAMrF,QAAQ7G,GAAGuP,QAAU7R,KAAKwX,iBAAiBlV,GAAGwW,cAItD,IAAK3C,EACH,OAAO3H,EAKT,IADA,IAAMuK,EAAoB,GACjBzW,EAAI6T,EAAY3N,gBAAgBwQ,GAAI1W,EAAIkM,EAAMrF,QAAQxB,OAAQrF,IACrEyW,EAAkBvV,KAAKgL,EAAMrF,QAAQ7G,IAEvC,IAAK,IAAIA,EAAI,EAAGA,EAAI6T,EAAY3N,gBAAgBwQ,GAAI1W,IAClDyW,EAAkBvV,KAAKgL,EAAMrF,QAAQ7G,IAEvCkM,EAAMrF,QAAU4P,EAGhB,IAAM1J,EAAOqJ,KAAKC,MAAMD,KAAKE,UAAUzC,EAAY3N,gBAAgByQ,WAC7DC,EAAO/C,EAAY3N,gBAAgB2Q,SACzC9J,EAAKjN,QAAQ,SAASqH,GACpBA,EAAKyB,YAAcuJ,GACf0B,EACA1M,EACAyP,EAAK/N,MAAQgL,EAAYrN,gBAAgBoQ,EAAK1W,MAClDiH,EAAK0B,KA3lBI,SAASlH,EAAQwF,EAAM0B,GAEpC,GAAIlH,EAAOuC,MAAMkO,KAAK,SAASlO,GAC7B,OAAOA,EAAM3G,OAAS4J,EAAK5J,OAE3B,OAAO,EAGT,GAAIsL,GAA6B,IAArB1B,EAAKhH,KAAKkF,OACpB,OAAO,EAGT,IAZ0C,IAAAyR,EAAA,SAYjC9W,GACP,IAAMG,EAAOgH,EAAKhH,KAAKH,GACvB,cAAeG,GACb,IAAK,SAEH,GAAIwB,EAAOuC,MAAMkO,KAAK,SAAClO,GAAD,OAAWA,EAAM3G,OAAS4C,IAC9C,OAAAmS,GAAO,GAET,MACF,IAAK,SACH,IAAMf,EAASpR,EAAK6B,MAAM,GAE1B,GADAiQ,GAA2BV,EAAQ5P,GACb,IAAlB4P,EAAOlM,OAET,OAAAiN,GAAO,GAGT,GAAIhB,GAAY3P,EAAO8B,eAAezB,MAAM,GAAIuP,GAE9C,OAAAe,GAAO,GAET,MACF,IAAK,SAEH,MACF,QACElV,OAAOuI,QAAQuD,MAAM,oCAAsC/I,KA1BxDH,EAAImH,EAAKhH,KAAKkF,OAAS,EAAGrF,GAAK,EAAGA,IAAK,KAAA+W,EAAAD,EAAvC9W,GAAuC,qBAAA+W,EAAA,OAAAA,EAAAzE,EA6BhD,OAAO,EAkjBS0E,CACRnD,EACA1M,EACAyP,EAAK/N,MAAQgL,EAAYrN,gBAAgBoQ,EAAK1W,QAEpDgM,EAAMrF,QAAQ,GAAGuI,YAAcrC,EAG/B,IAAM3G,EAAcgQ,KAAKC,MAAMD,KAAKE,UAAUzC,EAAYzN,cAG1D,OAFA8F,EAAMrF,QAAQ,GAAGgI,OAAO3K,MAAQkC,EAEzB8F,GAGTxO,KAAKuZ,qBAAuB,WAC1B,IAAMpQ,EAAUnJ,KAAKmJ,QAAQE,IAAI,SAAS8M,GACxC,MAAO,CACL3O,aAAc2O,EAAY3O,aAC1BhB,MAAO2P,EAAY3P,MACnBnB,KAAM8Q,EAAY9Q,KAClB2T,GAAI7C,EAAY3N,gBAAgBwQ,GAChCnZ,KAAMsW,EAAY3N,gBAAgB3I,KAElC2R,SAAU2E,EAAY3N,gBAAgBgR,QACtCrU,UAAW,CACT6B,KAAM,CACJ2G,OAAQwI,EAAYnP,KAAK7B,UACzByI,MAAOuI,EAAYnP,KAAKjB,gBAE1B4H,OAAQwI,EAAYhR,UACpByI,MAAOuI,EAAYpQ,eACnBkB,KAAM,CACJ0G,OAAQwI,EAAYlP,KAAK9B,UACzByI,MAAOuI,EAAYlP,KAAKlB,iBAG5BmM,MAAOiE,EAAYlN,WACnB4I,QAASsE,EAAY3N,gBAAgBsQ,cACrC3H,OAAQ,CACN/F,OAAQ+K,EAAY3P,MAAMmB,OAAS,GAC/BwO,EAAY3P,MAAM2P,EAAY3P,MAAMmB,OAAS,GAAGjF,OAASvB,EAASU,OACtE2E,MAAO2P,EAAYzN,YAAYW,IAAI,SAAAI,GACjC,MAAO,CACLjH,IAAKiH,EAAKjH,IACVC,KAAM,GACN5C,KAAM,eAAiB4J,EAAKjH,OAGhC3C,KAAMsW,EAAY7N,MAAMzI,KACxB0I,KAAM4N,EAAY5N,KAClBgI,WAAY4F,EAAY7N,MAAM/E,OAAOoE,WAU3C,OANA3H,KAAK6Y,sBAAwBH,KAAKC,MAAMD,KAAKE,UAAU,CACrD3G,KAAM,CACJzP,IAAKxC,KAAKwC,KAEZ2G,QAASA,KAEJnJ,KAAK6Y,uBAGd7Y,KAAKyZ,UAAY,WACfxR,QAAQC,IAAI,cAAelI,KAAKkW,MAAMlW,KAAKwC,KAAK6G,IAAI,SAAAgG,GAAI,OAAIA,EAAKhG,IAAI,SAAAI,GAAI,OAAIA,EAAK5J,UAClFG,KAAK0Z,sBACL,IAAK,IAAIpX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGqX,OAAOhU,MAAMC,UAAUtB,MAAMuB,KAAK7F,KAAKkW,MAAMlW,KAAKwC,KAAKF,IAAK,IAAI2T,GAAKjW,KAAKmJ,QAAQ7G,GAAItC,KAAMA,KAAKkW,MAAMlW,KAAKwC,KAAMF,IAE7ItC,KAAKuZ,uBACL,IAAK,IAAIjX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGkU,QAI7BxW,KAAK4Z,iBAAmB,WACtB3R,QAAQC,IAAI,mBACZD,QAAQC,IAAIlI,KAAKkW,MAAOlW,KAAKwC,IAAKxC,KAAKyS,YACvCzS,KAAK0Z,sBACL,IAAK,IAAIpX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGqX,OAAOhU,MAAMC,UAAUtB,MAAMuB,KAAK7F,KAAKmJ,QAAQ7G,GAAGqG,SAAU,IAAIsN,GAAKjW,KAAKmJ,QAAQ7G,GAAItC,KAAMA,KAAKmJ,QAAQE,IAAI,SAACwQ,GAAD,OAAOA,EAAElR,UAAUrG,IAE3JtC,KAAKuZ,uBACL,IAAK,IAAIjX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGkU,QAI7BxW,KAAK8Z,sBAAwB,WAC3B7R,QAAQC,IAAI,qBACZD,QAAQC,IAAIlI,KAAKkW,MAAOlW,KAAKyS,YAC7B,IAAK,IAAInQ,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGqX,OAAOhU,MAAMC,UAAUtB,MAAMuB,KAAK7F,KAAKkW,MAAM,GAAG5T,IAAK,IAAI6U,GAAiBnX,KAAKmJ,QAAQ7G,GAAItC,KAAMA,KAAKkW,MAAM,GAAI5T,IAE3ItC,KAAKuZ,uBACL,IAAK,IAAIjX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGkU,QAI7BxW,KAAKqQ,MAAQ,WACPrQ,KAAK2I,QACP3I,KAAK8Z,wBAEL9Z,KAAKyZ,aAITzZ,KAAK0Z,oBAAsB,WACzB,IAAK,IAAIpX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IAAK,CACxCtC,KAAKmJ,QAAQ7G,GAAG0G,aAAehJ,KAAKmJ,QAAQ7G,GAAGkD,cAAclB,MAAM,GACnE,IAAK,IAAI+P,EAAI,EAAGrU,KAAKmJ,QAAQ7G,GAAG4E,eAAemN,GAAIA,IAAK,CACtD,IACMnC,GAAQ6H,EADC/Z,KAAKmJ,QAAQ7G,GAAG4E,eAAemN,IACzBrU,KAAKmJ,QAAQ7G,IAClCtC,KAAKmJ,QAAQ7G,GAAG0G,aAAakJ,EAAMxP,OAASwP,EAAM3M,OAIpDvF,KAAKmJ,QAAQ7G,GAAG0G,aAAahH,EAAQR,UAAYxB,KAAKmJ,QAAQ7G,GAAGkF,aAAawS,OAAO,SAASpP,EAAGqP,GAC/F,OAAOrP,EAAIqP,GACV,GAGHja,KAAKmJ,QAAQ7G,GAAG0G,aAAahH,EAAQC,MAAQ4B,KAAK+D,MAAM5H,KAAKmJ,QAAQ7G,GAAG+C,KAAO,GAG/ErF,KAAKmJ,QAAQ7G,GAAG0G,aAAahH,EAAQE,SAAW8B,EAAiBhE,KAAKmJ,QAAQ7G,IAE9E,IAAI4Q,EAAQ,EACZ,IAAK,IAAIgH,KAAQlY,EACfkR,GAASlT,KAAKmJ,QAAQ7G,GAAG0G,aAAahH,EAAQkY,IAEhDla,KAAKmJ,QAAQ7G,GAAG2G,WAAaiK,IAIjClT,KAAK6X,QAAU,WACb7X,KAAK0Z,sBACL,IAAK,IAAIpX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKmJ,QAAQ7G,GAAGkD,cAAgBxF,KAAKmJ,QAAQ7G,GAAG0G,aAAa1E,MAAM,GACnE2D,QAAQC,IAAIlI,KAAKmJ,QAAQ7G,GAAGkD,eAE9BxF,KAAKuZ,uBACL,IAAK,IAAIjX,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IACnCtC,KAAKwX,iBAAiBlV,GAAGuV,QAAQ,IAAI5B,GAAKjW,KAAKmJ,QAAQ7G,GAAItC,KAAMA,KAAKkW,MAAMlW,KAAKwC,KAAMF,IAGzF,IADA,IAAM6X,EAAY,GACT7X,EAAI,EAAGA,EAAItC,KAAKmJ,QAAQxB,OAAQrF,IACvC6X,EAAU3W,KAAK,CACb3D,KAAMG,KAAKwX,iBAAiBlV,GAAGzC,KAC/BmT,QAAShT,KAAKmJ,QAAQ7G,GAAGkD,cACzB0N,MAAOlT,KAAKmJ,QAAQ7G,GAAG2G,aAG3BjJ,KAAK8X,gBAAgBqC,IAGvBna,KAAKoa,SAAW,WACd,IAAK,IAAI9X,EAAI,EAAGA,EAAItC,KAAKyS,WAAYnQ,IAC/BtC,KAAKmJ,QAAQ7G,GAAG2D,SAAWjG,KAAKmJ,QAAQ7G,GAAG0E,KAAKf,SAClDjG,KAAKmJ,QAAQ7G,GAAGkF,aAAahE,MAAM,GAC1BxD,KAAKmJ,QAAQ7G,GAAG2D,SAAWjG,KAAKmJ,QAAQ7G,GAAG0E,KAAKf,UACzDjG,KAAKmJ,QAAQ7G,GAAGkF,aAAahE,KAAgB,EAAXxD,KAAKwC,IAAU,GAE/CxC,KAAKmJ,QAAQ7G,GAAG2D,SAAWjG,KAAKmJ,QAAQ7G,GAAG2E,KAAKhB,SAClDjG,KAAKmJ,QAAQ7G,GAAGkF,aAAahE,MAAM,GAC1BxD,KAAKmJ,QAAQ7G,GAAG2D,SAAWjG,KAAKmJ,QAAQ7G,GAAG2E,KAAKhB,UACzDjG,KAAKmJ,QAAQ7G,GAAGkF,aAAahE,KAAgB,EAAXxD,KAAKwC,IAAU,IAKvDxC,KAAKkX,cAAgB,WACnB,IAAIa,EAAM/X,KAAKyS,WAEf,GAAIzS,KAAKiX,cAAgBc,EAAK,CAE5B,IAAK,IAAIzV,EAAI,EAAGA,EAAItC,KAAK2W,mBAAmBhP,OAAQrF,IAAK,CACvD,IAAMsM,EAAU5O,KAAK2W,mBAAmBrU,GACxC2F,QAAQC,IAAI,UAAW0G,GACvBA,IAEF5O,KAAK2W,mBAAqB,GAG1B,IAAK,IAAIrU,EAAI,EAAGA,EAAItC,KAAK6W,kBAAkBlP,OAAQrF,IAAK,CACtD,IAAMyX,EAAS/Z,KAAK6W,kBAAkBvU,GACtC2F,QAAQC,IAAI,SAAU6R,GACtBA,IAKF,GAHA/Z,KAAK6W,kBAAoB,GAGN,IAAf7W,KAAKwY,MACP,IAAK,IAAIlW,EAAI,EAAGA,EAAIyV,EAAKzV,IAEvB,GADA2F,QAAQC,IAAI,SAAU5F,EAAG,oBAAqBtC,KAAKmJ,QAAQ7G,GAAGsG,gBAC1D5I,KAAKmJ,QAAQ7G,GAAGsG,gBAAqD,IAAnC5I,KAAKkW,MAAMlW,KAAKwC,KAAKF,GAAGqF,OAAc,CAC1E3H,KAAKiX,cACL,IAAK,IAAI5C,EAAI,EAAGA,EAAI0D,EAAK1D,IACvBrU,KAAKwX,iBAAiBnD,GAAGgG,WAAY,EACrCra,KAAKwX,iBAAiBnD,GAAGiG,OAI3B,OAFAta,KAAKwX,iBAAiBlV,GAAGqX,OAAOhU,MAAMC,UAAUtB,MAAMuB,KAAK7F,KAAKkW,MAAMlW,KAAKwC,KAAKF,IAAK,IAAI2T,GAAKjW,KAAKmJ,QAAQ7G,GAAItC,KAAMA,KAAKkW,MAAMlW,KAAKwC,KAAMF,SAC3ItC,KAAKwX,iBAAiBlV,GAAGkU,OAO/B,GAAmB,IAAfxW,KAAKwY,MACP,IAAK,IAAIlW,EAAI,EAAGA,EAAIyV,EAAKzV,IACnBtC,KAAKkW,MAAMlW,KAAKwC,KAAKF,GAAGqF,OAAS,IACnC3H,KAAK+W,UAAUvT,KAAKxD,KAAKkW,MAAMlW,KAAKwC,KAAKF,GAAG,IAE5CtC,KAAKwX,iBAAiBlV,GAAGgY,QAK/B,IAAK,IAAIhY,EAAI,EAAGA,EAAIyV,EAAKzV,IAEvB,GADA2F,QAAQC,IAAI,SAAU5F,EAAG,sBAAuBtC,KAAKmJ,QAAQ7G,GAAG8F,kBAC5DpI,KAAKmJ,QAAQ7G,GAAG8F,mBAClBpI,KAAKmJ,QAAQ7G,GAAG8F,kBAAmB,EAC/BpI,KAAK+W,UAAUpP,OAAS,GAAG,CAC7B3H,KAAKiX,cACL,IAAK,IAAI5C,EAAI,EAAGA,EAAI0D,EAAK1D,IACvBrU,KAAKwX,iBAAiBnD,GAAGgG,WAAY,EACrCra,KAAKwX,iBAAiBnD,GAAGiG,OAM3B,OAJAta,KAAKwX,iBAAiBlV,GAAGqX,OAAO3Z,KAAK+W,UAAUtP,OAAO,SAACgC,GACrD,OAAOA,EAAK/G,MAAQvB,EAASW,SAC3B,IAAImU,GAAKjW,KAAKmJ,QAAQ7G,GAAItC,KAAM,CAACA,KAAK+W,WAAY,GAAG,SACzD/W,KAAKwX,iBAAiBlV,GAAGkU,OAK/BxW,KAAKiX,YAAc,EAEnBhP,QAAQC,IAAI,qBAEZ,IAAK,IAAI5F,EAAI,EAAGA,EAAIyV,EAAKzV,IACvB2F,QAAQC,IAAI,SAAU5F,EAAG,MAAOtC,KAAKmJ,QAAQ7G,GAAG+C,KAAM,QAKxD,GADArF,KAAKwY,QACc,IAAfxY,KAAKwY,MAAa,CAIpB,GAHAxY,KAAKwY,MAAQ,EACbxY,KAAKoa,WACLpa,KAAKwC,MACY,IAAbxC,KAAKwC,IAGP,YADAxC,KAAK6X,UAGH7X,KAAK2I,SACP3I,KAAKwY,OAAS,EACdxY,KAAK4Z,oBAEL5Z,KAAKyZ,iBAGHzZ,KAAKwC,IAAM,IAAM,EACnBxC,KAAKkW,MAAMlW,KAAKwC,KAAKgB,KAAKxD,KAAKkW,MAAMlW,KAAKwC,KAAK+X,SAE/Cva,KAAKkW,MAAMlW,KAAKwC,KAAKgY,QAAQxa,KAAKkW,MAAMlW,KAAKwC,KAAK8T,OAEpDtW,KAAKyZ,cAKXzZ,KAAKsX,0BAA4B,WAC/B,IAAIS,EAAM/X,KAAKyS,WAEXzS,KAAKiX,cAAgBc,IACvB/X,KAAKiX,YAAc,EAGnBjX,KAAKwY,QACc,IAAfxY,KAAKwY,OACPxY,KAAKwY,OAAS,EACdxY,KAAK4Z,qBAEL5Z,KAAKkW,MAAM,GAAG1S,KAAKxD,KAAKkW,MAAM,GAAGqE,SACjCva,KAAK8Z,2BAKPhU,UAAU6B,OAAS,GACrB3H,KAAKyX,KAAK1T,MAAM/D,KAAM8F,YAmL1ByR,GAAakD,gBA/KW,SAASC,EAAaC,EAAU3B,EAAInZ,EAAM2Z,GAChE,GAAKkB,GAAgBC,GAAmB,OAAP3B,EAAjC,CAkBA,IAE2B4B,EAhB3B5a,KAAKgZ,GAAKA,EACVhZ,KAAKwZ,QAAUA,EACfxZ,KAAK0a,YAAcA,EACnB1a,KAAKqa,WAAY,EACjBra,KAAKiZ,SAAW,GAChBjZ,KAAKmZ,SAAW,KAChBnZ,KAAK8Y,eAAgB,EACrB9Y,KAAK6a,WAAa,KAClB7a,KAAKqC,OAAS,KACdrC,KAAK4O,QAAU,KACf5O,KAAK8a,aAAe,GACpB9a,KAAK+a,QAAS,EACd/a,KAAKH,KAAOA,EACZG,KAAK4R,QAAUoJ,SAASnQ,cAAc,OAGtCnL,OAAOS,YAAoBya,EAFL5a,KAGb,WACL4a,EAAGG,QAAS,IAEI,KAEpB/a,KAAKsK,QAAU,WAEb,IAAI4O,EADJjR,QAAQC,IAAIlI,KAAKH,KAAM,WAEvB,IAAIob,GAAS,EAKb,GAJIjb,KAAK8a,aAAanT,OAAS,IAE7BsT,GADA/B,EAAOlZ,KAAK8a,aAAa,IACXzY,SAAWF,EAAOsU,QAE5BzW,KAAK8Y,eAAiBmC,IAAWjb,KAAK8a,aAAanT,OAAS,EAAG,CACnEM,QAAQC,IAAIlI,KAAKH,KAAM,mBAAoBqZ,GAC3ClZ,KAAK8a,aAAe9a,KAAK8a,aAAaxW,MAAM,GAC5C2D,QAAQC,IAAIlI,KAAKH,KAAM,iBAAkBsC,EAAO+W,EAAK7W,SAAU+Q,GAAQ8F,EAAKzP,OAAS,IAAI5J,KAAMqZ,EAAKtK,SAEpG,IAAIuK,EAAWnZ,KAAKmZ,SAChB+B,EAAU/B,EAAS3C,KAAK0C,EAAK7W,OAAQ+Q,GAAQ8F,EAAKzP,MAAOyP,EAAKtK,SAClE3G,QAAQC,IAAIlI,KAAKH,KAAM,yBAA0Bqb,EAASlb,KAAKmZ,WAAaA,GACxE+B,GAAWlb,KAAKmZ,WAAaA,GAC/BlR,QAAQC,IAAIlI,KAAKH,KAAM,mBACnBob,GACFjb,KAAK8Y,eAAgB,EACrB9Y,KAAKmZ,SAASlH,KAAKuF,iBAAiBpV,QAAQ,SAAS6B,GAC/CA,EAAOkV,UACTlV,EAAOqW,KAAKzU,KAAK5B,OAIrBjE,KAAK8Y,eAAgB,EACrB9Y,KAAKmZ,SAASlH,KAAKuF,iBAAiBpV,QAAQ,SAAS6B,GAC/CA,EAAOkV,UACTlV,EAAOqW,KAAKzU,KAAK5B,QAKvBgE,QAAQC,IAAI,0EACPgT,GAAWlb,KAAK+a,QAAU/a,KAAKwZ,SAClC2B,MAAM,0CAGNnb,KAAK8a,aAAanT,OAAS,GAC7B3H,KAAKsK,YAKXtK,KAAKsa,KAAO,WAAW,IAAAc,EAAApb,KACfqb,EAAarb,KAAKmZ,SAASlH,KAAKuF,iBAAiB8D,MAAM,SAAArX,GAAM,OAAKA,EAAOuV,UAC/E,GAAI6B,GAA0B,IAAZrb,KAAKgZ,GAAU,CAC/B/Q,QAAQC,IAAI,sBACZ,IAAMkC,EAAOpK,KAAKmZ,SAASlH,KAAKwG,6BAChC8C,QAAQC,UAAUC,KAAK,WACrBL,EAAKV,YAAYtQ,EAAM,WAEpB,IAAKiR,GAAcrb,KAAKwZ,QAAS,CACtCvR,QAAQC,IAAIlI,KAAKH,KAAM,QACvB,IAAMuK,EAAOpK,KAAKmZ,SAASlH,KAAKwG,2BAC5BzY,KAAKmZ,SAAShD,aACZrH,EAAU9O,KAAK0b,aACrBH,QAAQC,UAAUC,KAAK,WACrBL,EAAKV,YAAYtQ,EAAM0E,OAS7B9O,KAAK0b,WAAa,WAAW,IAAAC,EAAA3b,KAC3B,GAAIA,KAAK8Y,eAAiB9Y,KAAKqa,UAC7B,MAAO,CACLhJ,KAAM,WACJsJ,EAASnX,KAAK,CAACwV,GAAI2C,EAAK3C,GAAI3W,OAAQF,EAAOsU,SAG1C,GAAKzW,KAAK8Y,cAqBf,MAAO,GApBP,IAAMjK,EAAO,SAASzE,EAAM/H,GAC1B+H,EAAOsO,KAAKC,MAAMD,KAAKE,UAAUxO,IACjCgD,OAAOwO,OAAOxR,EAAM,CAClB4O,GAAIhZ,KAAKgZ,GACT3W,OAAQA,IAEVsY,EAASnX,KAAK4G,IACb4D,KAAKhO,MACR,MAAO,CACLiP,MAAO,SAAS7E,GACdyE,EAAIzE,EAAMjI,EAAO6M,QAEnBG,YAAa,SAAS/E,GACpByE,EAAIzE,EAAMjI,EAAO+M,eAEnBH,QAAS,SAAS3E,GAChByE,EAAIzE,EAAMjI,EAAOgO,YAQzBnQ,KAAK6X,QAAU,SAASqB,GAClBlZ,KAAK+a,QACP/a,KAAK6b,OAAO,cAEd7b,KAAKiZ,SAAW,GAChBjZ,KAAKmZ,SAAWD,EAChBjR,QAAQC,IAAIlI,KAAKH,KAAM,YACvBG,KAAKsa,QAGPta,KAAK6b,OAAS,SAASC,GAChB9b,KAAKwZ,UAGJ,iBAAkB9Z,OAEe,YAA5Bqc,aAAaC,WACtB,IAAID,aAAaD,GACoB,WAA5BC,aAAaC,YACtBD,aAAaE,kBAAkB,SAAUD,GAClC,eAAgBD,eACnBA,aAAaC,WAAaA,GAET,YAAfA,GACF,IAAID,aAAaD,KATrBX,MAAMW,KAeV9b,KAAKwW,KAAO,WACVvO,QAAQC,IAAIlI,KAAKH,KAAM,WACvBG,KAAKsa,OACLta,KAAKsK,WAGPtK,KAAK2Z,OAAS,SAAStK,EAAM6J,GACvBlZ,KAAK+a,QACP/a,KAAK6b,OAAO,6CAEd7b,KAAKqa,WAAY,EACjBra,KAAKiZ,SAAW5J,EAChBrP,KAAKmZ,SAAWD,EAChBlZ,KAAK8Y,eAAgB,QAxKrB7Q,QAAQuD,MAAM,0CA8KH+L,UChtCA2E,sBA5Ib,SAAAA,EAAY/R,GAAO,IAAA6B,EAEjB,OAFiBoB,OAAAiB,EAAA,EAAAjB,CAAApN,KAAAkc,IACjBlQ,EAAAoB,OAAAkB,EAAA,EAAAlB,CAAApN,KAAAoN,OAAAmB,EAAA,EAAAnB,CAAA8O,GAAArW,KAAA7F,KAAMmK,KA+DR0N,QAAU,SAACsC,GAET,OADsBgC,aAAoBC,IAApB,iBAAA1S,OAAyCsC,EAAKqQ,UAC/CC,KAAK,SAASb,KAAK,SAACc,GACvC,GAAIA,EAASC,SAAU,CACrB9c,OAAOuI,QAAQwU,KAAK,mCACpB,IAAMC,EAAU,GAChBA,EAAO,iBAAAhT,OAAkBsC,EAAKqQ,UAAa,KAC3C,IAAMM,EAAgBJ,EAASK,MAG/B,OAFAD,EAAcE,YAAcV,WAAkBW,YAAYC,UAC1DL,EAAO,oBAAAhT,OAAqBsC,EAAKqQ,UAAaM,EACvCR,aAAoBC,MAAMzC,OAAO+C,MAEzCjB,KAAK,WACNzP,EAAK2C,SAAS,CACZwL,UAAWA,MAEZ6C,MAAM,SAACxR,GACR9L,OAAOuI,QAAQuD,MAAMA,MAjFNQ,EAqFnBiR,kBAAoB,SAAC7S,EAAM0E,GACzB9C,EAAK2C,SAAS,CACZvE,KAAMA,EACN0E,QAASA,KAxFM9C,EA4FnBkR,SAAW,SAACjL,GAEV,IADA,IAAMyF,EAAa,GACVpV,EAAI,EAAGA,EAAI2P,EAAKkL,YAAa7a,IAAK,CACzC,IAAMkG,EAAkB,IAAI+O,GAAakD,gBACrCzO,EAAKiR,kBAAmBjR,EAAK2O,SAAUrY,EAAG2P,EAAKmL,YAAY9a,GAC3D2P,EAAKmL,YAAY9a,KAAO9C,EAASK,MACrC6X,EAAWlU,KAAKgF,GAGlBwD,EAAK2O,SAAS0C,GAAG,cAAe,SAASd,GACvC,IAAMrD,EAAOqD,EAASK,MAChBU,EAAiB5F,EAAWrO,IAAI,SAAC/G,GAAD,OAAOA,EAAE0W,KAAIvS,QAAQyS,EAAKF,IAChEtB,EAAW4F,GAAgBxC,aAAatX,KAAK0V,GAC7CxB,EAAW4F,GAAgBhT,YAE7B,IAAMiT,EAAUtL,EAAKuL,UAAYld,EAAYG,QAAWwR,EAAKuL,SAA0C,IAA/BvL,EAAKpS,KAAK4G,QAAQ,SACpFgX,EAAYxL,EAAKuL,UAAYld,EAAYE,UAAayR,EAAKuL,SAAyC,IAA9BvL,EAAKpS,KAAK4G,QAAQ,QAC9FuF,EAAK0R,SAAW,IAAInG,GAClBG,EAAYzF,EAAK0F,OAAQ1F,EAAKiE,MAAOqH,EAASvR,EAAK6L,QAAS4F,IA9G7CzR,EAqInB2R,qBAAuB,WACjB3R,EAAK2O,UACP3O,EAAK2O,SAASiD,OArIXpe,EAASC,iBAIduM,EAAKwC,MAAQ,GANIxC,IAGftM,OAAOuI,QAAQuD,MAAM,mDACrB4B,OAAAkB,EAAA,EAAAlB,CAAApB,qFAKgB,IAAAoL,EAAApX,KAClBA,KAAK6d,SAAW7d,KAAKmK,MAAM2T,MAAMC,OAAOC,OACxC7B,aAAoBC,IAApB,cAAA1S,OAAsC1J,KAAK6d,WAAYvB,KAAK,SAASb,KAAK,SAACc,GACzE,OAAOA,EAASK,OAASrB,QAAQ0C,OAAO,IAAIC,MAAJ,iBAAAxU,OAA2B0N,EAAKyG,cACvEpC,KAAK,SAAClQ,GACP6L,EAAKiF,QAAU9Q,EACf,IAAM4S,EAAgBhC,aAAoBC,IAApB,iBAAA1S,OAAyC6B,IACzD6S,EAAmBjC,aAAoBC,IAApB,oBAAA1S,OAA4C6B,IACrE,OAAOgQ,QAAQ8C,IACX,CAACF,EAAc7B,KAAK,SAAU8B,EAAiB9B,KAAK,WAAWb,KAAK,SAAC6C,GACvE,OAAOA,EAAU,GAAG9B,SAAW2B,EAAgBC,MAEhD3C,KAAK,SAAC8C,GACP,OAAOA,EAAQC,YAAY,SAACvM,GAC1B,OAAY,MAARA,EACK,MAGTA,EAAK9I,QAAU8I,EAAK9I,SAAW,GAC3B8I,EAAK9I,QAAQ1C,QAAQjH,EAASK,OAAS,GAGvCoS,EAAK9I,QAAQxB,QAAUsK,EAAKkL,iBAHhC,GAMAlL,EAAK9I,QAAQ3F,KAAKhE,EAASK,MACpBoS,QAERwJ,KAAK,SAACgD,GACP,GAAIA,EAAOjT,MACT,OAAO+P,QAAQ0C,OAAOQ,EAAOjT,OAE/B,IAAKiT,EAAOlC,SAASC,SACnB,OAAOjB,QAAQ0C,OAAO,IAAIC,MAAM,wBAGlC,IAAMjM,EAAOwM,EAAOlC,SAASK,MACvB8B,EAAiBvC,aAAoBC,IAApB,gBAAA1S,OAAwC0N,EAAKiF,UAEpE,OADAjF,EAAKuD,SAAW+D,EAAeC,MAAM,SAC9BD,EAAepC,KAAK,SAASb,KAAK,SAACc,GACxC,IAAMvJ,EAAUuJ,EAASK,MACzB,MAAO,CACLjF,OAAQ3E,EAAQ2E,OAChBzB,MAAOlD,EAAQkD,MACfrW,KAAMoS,EAAKpS,KACXsd,YAAalL,EAAKkL,YAClBC,YAAanL,EAAK9I,QAClBqU,QAASvL,EAAKuL,aAGjB/B,KAAKzb,KAAKkd,UAAUF,MAAM,SAACxR,GAC5B9L,OAAOuI,QAAQuD,MAAMA,sCAsDvB,IAAMoT,EAAS5e,KAAKwO,MAAMpE,MAAQpK,KAAKwO,MAAMM,QAEvCnE,EAAAC,EAAAC,cAACgU,GAAD,CAAQzU,KAAMpK,KAAKwO,MAAMpE,KAAM0E,QAAS9O,KAAKwO,MAAMM,UAEnD,KACAqL,EAAYna,KAAKwO,MAAM2L,UAEvBxP,EAAAC,EAAAC,cAACiU,GAAD,CAAWlb,OAAQ5D,KAAKwO,MAAM2L,YAE9B,KACN,OACExP,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QACbH,EAAAC,EAAAC,cAACkU,EAAA,EAAD,CAAMC,GAAI1U,kBAA8BK,EAAAC,EAAAC,cAAA,uBACvCsP,EACAyE,UArIUrS,cCNb0S,UAAuB,IACvBC,GAAc,EACdC,GAAc,EAEpB,SAASC,GAAejW,EAASZ,GAG/B,IAFA,IAAMoP,EAAShS,MAAMC,UAAUtB,MAAMuB,KAAK0D,GACpC8V,EAAS,GACN/c,EAAI,EAAGA,EAAI6G,EAAS7G,IAC3B+c,EAAO7b,KAAK,CACV3D,KAAM8X,EAAO5D,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWL,EAAOhQ,QAAS,GAAG,GAAG9H,KACrE0I,KAAMA,IAGV,OAAO8W,EAGT,SAASC,GAAanW,EAASqU,GAC7B,IAAMvF,EAAQ,GACdA,EAAM,GAAK7R,EAASqB,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcuG,IAE5B8O,EAAM,GAAK3Q,EAASG,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcuG,IAE5B,IAAM+O,EAAiB,EAAI/O,EACvBgP,EAAS5Q,EAASE,OAAO,SAASgC,GACpC,OAA2B,IAApBA,EAAK7G,aAGV4a,IAAYld,EAAYE,UAC1B2X,EAASA,EAAO1Q,OAAO,SAACgC,GACtB,MAAqB,qBAAdA,EAAK5J,MAA6C,oBAAd4J,EAAK5J,QAIpD,IADA,IAAMuY,EAAkBD,EAAOxQ,OAASuQ,EAC/B5V,EAAI,EAAGA,EAAI8V,EAAiB9V,IACnC6V,EAAOpE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWG,EAAOxQ,QAAS,GAM3D,GAJAsQ,EAAM,GAAK1Q,EAASE,OAAO,SAASgC,GAClC,OAAOA,EAAK7G,YAAcuG,GAAWM,EAAK7G,WAAa,IACtD8G,OAAOyO,GAENqF,IAAYld,EAAYE,QAAS,CAInC,IAHA,IAAI6X,EAAe7X,EAAQ8D,MAAM,GAE7BgU,EAAkB,EAAInP,EACnBkP,EAAa1Q,OAAS2Q,GAC3BD,EAAatE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWK,EAAa1Q,QAAS,GAEvEsQ,EAAM,GAAKI,EAKb,IADA,IAAMnC,EAAQ,GACL5T,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B4T,EAAM5T,GAAK,GACX,IAAK,IAAI+R,EAAI,EAAGA,EAAIlL,EAASkL,IAAK,CAEhC,IADA,IAAMhF,EAAO,GACJkJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAM9O,EAAOwO,EAAM3V,GAAGyR,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWC,EAAM3V,GAAGqF,QAAS,GAAG,GAC7E0H,EAAK7L,KAAK,CAAC3D,KAAM4J,EAAK5J,KAAM+C,WAAY6G,EAAK7G,WAAYJ,IAAKiH,EAAKjH,MAErE0T,EAAM5T,GAAGkB,KAAK6L,IAKlB,GAAImO,IAAYld,EAAYE,QAAS,CACnC0V,EAAM,GAAK,GACX,IAAK,IAAI7B,EAAI,EAAGA,EAAIlL,EAASkL,IAAK,CAEhC,IADA,IAAMhF,EAAO,GACJkJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAM9O,EAAOwO,EAAM,GAAGlE,OAAOlQ,KAAK+D,MAAM/D,KAAKmU,SAAWC,EAAM,GAAGtQ,QAAS,GAAG,GAC7E0H,EAAK7L,KAAK,CAAC3D,KAAM4J,EAAK5J,KAAM+C,WAAY,EAAGJ,IAAK,IAElD0T,EAAM,GAAG1S,KAAK6L,IAIlB,OAAO6G,EAGT,IA2KeqJ,GA3KDC,YAAU,SAAAC,GAKtB,SAAAC,EAAYvV,GAAO,IAAA6B,EAAA,OAAAoB,OAAAiB,EAAA,EAAAjB,CAAApN,KAAA0f,IACjB1T,EAAAoB,OAAAkB,EAAA,EAAAlB,CAAApN,KAAAoN,OAAAmB,EAAA,EAAAnB,CAAAsS,GAAA7Z,KAAA7F,KAAMmK,KAmBRwV,WAAa,SAAChU,GACZA,EAAEiU,iBACF,IAAMC,EAAWlU,EAAEmU,OAAOD,SACpBhC,EAAWgC,EAAQ,KAASrS,MAAMvN,OAAO8f,QAAQ,WAAY,IAC7DvC,EAAUqC,EAAQ,QAAYrS,MAC9BjF,EAAOsX,EAAQ,KAASrS,QAAU3J,KAAKmU,SAAW,GAAM,IAAM,KAC9DvF,EAAa5G,SAASgU,EAAQ,QAAYrS,MAAO,KAClDqQ,GAAYA,EAASlW,OAASsX,KAAyBnR,SAAS2E,IACjEA,EAAayM,IAAezM,EAAa0M,GAC3ChE,MAAK,4BAAAzR,OAA6BwV,GAA7B,KAAAxV,OAA4CyV,GAA5C,cAGF/R,OAAO4S,OAAO1f,GAAa2f,SAASzC,GAI5B,MAATjV,GAAyB,MAATA,EAKpB4T,aAAoBC,IAApB,cAAA1S,OAAsCmU,IAAYvB,KAAK,SAASb,KAAK,SAACc,GACpE,GAAIA,EAASC,SAAU,CACrB,IAAM0D,EAAM,+CAEZ,OADA/E,MAAM+E,GACC3E,QAAQ0C,OAAO,IAAIC,MAAMgC,OAEjCzE,KAAK,WACN,IAAMlQ,EAAM4Q,aAAoBC,IAAI,gBAAgB5Y,OAAO+H,IACrDmR,EAAU,GAehB,OAdAA,EAAO,cAAAhT,OAAemU,IAActS,EACpCmR,EAAO,iBAAAhT,OAAkB6B,IAAS,CAChC4U,UAAWhE,WAAkBW,YAAYC,UACzCld,KAAMge,EACN1U,QAAS,GACTgU,YAAa1K,EACb+K,QAASA,GAGXd,EAAO,gBAAAhT,OAAiB6B,IAAS,CAC/BoM,OAAQyH,GAAe3M,EAAYlK,GACnC2N,MAAOoJ,GAAa7M,EAAY+K,GAChC4C,MAAO,IAEFjE,aAAoBC,MAAMzC,OAAO+C,KACvCjB,KAAK,WACNzP,EAAK7B,MAAMkW,QAAQ7c,KAAK8G,gBAAA,SAAAZ,OAAkCmU,MACzDb,MAAM,SAACxR,GACR9L,OAAOuI,QAAQuD,MAAMA,KA/BrB2P,MAAK,8DAJLA,MAAK,gCAjCUnP,EA6InBsU,WAAa,SAACrO,GAEZ,OADAA,EAAK9I,QAAU8I,EAAK9I,SAAW,GAE7BwB,EAAAC,EAAAC,cAAA,MAAIU,IAAK0G,EAAKpS,KAAMiL,UAAWmH,EAAK4K,YAAc,kBAAoB,IACpElS,EAAAC,EAAAC,cAAA,UAAKoH,EAAKpS,MACV8K,EAAAC,EAAAC,cAAA,UAAKoH,EAAK9I,QAAQ8H,KAAK,OACvBtG,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAACkU,EAAA,EAAD,CAAMC,GAAI1U,gBAAA,SAAAZ,OAAkCuI,EAAKpS,OAC/C8K,EAAAC,EAAAC,cAAA,0BArJSmB,EA4JnBuU,oBAAsB,SAAC5U,GACrBK,EAAK2C,SAAS,CAAE6R,cAAe7U,EAAEmU,OAAO/P,WA7JvB/D,EAgKnB2R,qBAAuB,WACrB3R,EAAKyU,eAAe7C,MACpB5R,EAAK0U,kBAAkB9C,OAhKvB5R,EAAKwC,MAAQ,CACXmS,YAAa,GACbC,eAAgB,GAChBJ,eAAe,GALAxU,EALG,OAAAoB,OAAAyT,EAAA,EAAAzT,CAAAsS,EAAAD,GAAArS,OAAA0T,EAAA,EAAA1T,CAAAsS,EAAA,EAAAnU,IAAA,oBAAAiC,MAAA,WAcF,IAAA4J,EAAApX,KAClBA,KAAKygB,eAAiBtE,aAAoBC,IAAI,kBAAkB2E,aAAa,aAC7E/gB,KAAKygB,eAAepD,GAAG,QAAS,SAACd,GAC/BnF,EAAKzI,SAAS,CAAEgS,YAAapE,EAASK,UAExC5c,KAAK0gB,kBAAoBvE,aAAoBC,IAAI,qBAAqB2E,aAAa,eACnF/gB,KAAK0gB,kBAAkBrD,GAAG,QAAS,SAACd,GAClCnF,EAAKzI,SAAS,CAAEiS,eAAgBrE,EAASK,YArBvB,CAAArR,IAAA,SAAAiC,MAAA,WA6Eb,IAAA4N,EAAApb,KACD2gB,EAAcvT,OAAOC,KAAKrN,KAAKwO,MAAMmS,aAAaK,UACnD3X,IAAI,SAACkC,GAAD,OAAS6P,EAAK5M,MAAMmS,YAAYpV,KAAMlC,IAAIrJ,KAAKsgB,YAClDM,EAAiB5gB,KAAKwO,MAAMgS,cAC9BpT,OAAOC,KAAKrN,KAAKwO,MAAMoS,gBAAgBI,UAClC3X,IAAI,SAACkC,GAAD,OAAS6P,EAAK5M,MAAMoS,eAAerV,KAAMlC,IAAIrJ,KAAKsgB,YAAa,GACtEW,EAAQN,EAAYjX,OAAOkX,GACjC,OACEjW,EAAAC,EAAAC,cAAA,OAAKC,UAAU,SACbH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOnI,KAAK,WAAW2J,QAASrM,KAAKugB,sBADvC,yBAKF5V,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,MAAIE,MAAO,CAACmW,UAAW,SACrBvW,EAAAC,EAAAC,cAAA,kBACAF,EAAAC,EAAAC,cAAA,qBACAF,EAAAC,EAAAC,cAAA,oBAGJF,EAAAC,EAAAC,cAAA,aACGoW,IAGLtW,EAAAC,EAAAC,cAAA,yBACAF,EAAAC,EAAAC,cAAA,QAAMsW,SAAUnhB,KAAK2f,WAAY7U,UAAU,cACzCH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,2BACaF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,OAAOuhB,aAAa,UAG/CzW,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,mCACqBF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,UAAU6C,KAAK,SAAS0e,aAAa,UAGxEzW,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eAAf,YACWH,EAAAC,EAAAC,cAAA,aACPF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,UAAU6C,KAAK,QAAQ8K,MAAOlN,EAAYC,SAAU8gB,gBAAc,IAAG1W,EAAAC,EAAAC,cAAA,yBAEnFF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,UAAU6C,KAAK,QAAQ8K,MAAOlN,EAAYE,UAAWmK,EAAAC,EAAAC,cAAA,wBAEnEF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,UAAU6C,KAAK,QAAQ8K,MAAOlN,EAAYG,QAASkK,EAAAC,EAAAC,cAAA,kCAGnEF,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eAAf,SACQH,EAAAC,EAAAC,cAAA,aACJF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,OAAO6C,KAAK,QAAQ8K,MAAM,GAAG6T,gBAAc,IAAG1W,EAAAC,EAAAC,cAAA,uBAE5DF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,OAAO6C,KAAK,QAAQ8K,MAAM,MAAM7C,EAAAC,EAAAC,cAAA,kBAE9CF,EAAAC,EAAAC,cAAA,aACEF,EAAAC,EAAAC,cAAA,SAAOhL,KAAK,OAAO6C,KAAK,QAAQ8K,MAAM,MAAM7C,EAAAC,EAAAC,cAAA,mBAGhDF,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,SAAOnI,KAAK,SAAS8K,MAAM,kBA3IfkS,EAAA,CAAenT,cC1EjC+U,UAAqB,SAAAC,GAAA,IAAGC,EAAHD,EAAGC,UAAcC,EAAjBrU,OAAAsU,EAAA,EAAAtU,CAAAmU,EAAA,sBACzB5W,EAAAC,EAAAC,cAAC8W,EAAA,EAADvU,OAAAwO,OAAA,GAAW6F,EAAX,CAAiBG,OAAQ,SAAAzX,GAAK,OAC5B3K,EAASC,gBACPoiB,IAAMhX,cAAc2W,EAAWrX,GAE/BQ,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,CAAU3C,GAAI,CACZ8C,SAAUxX,sBACVkE,MAAO,CAAEuT,KAAM5X,EAAM6X,mBAMvBC,GAAczC,YAAW,SAAA0C,GAAA,IAAG7B,EAAH6B,EAAG7B,QAAH,OAC7B7gB,EAASC,gBACPkL,EAAAC,EAAAC,cAAA,qBACYrL,EAASK,KADrB,KAC4B8K,EAAAC,EAAAC,cAAA,UAAQwB,QAAS,WACzC7M,EAASY,OAAO,kBAAMigB,EAAQ7c,KAAK8G,sBADX,YAK5BK,EAAAC,EAAAC,cAAA,SACEF,EAAAC,EAAAC,cAACkU,EAAA,EAAD,CAAMC,GAAI1U,uBAAV,aAKA6X,GAAY3C,YAAU,SAAAC,GAAA,SAAAC,IAAA,IAAA0C,EAAApW,EAAAoB,OAAAiB,EAAA,EAAAjB,CAAApN,KAAA0f,GAAA,QAAA2C,EAAAvc,UAAA6B,OAAAjC,EAAA,IAAAC,MAAA0c,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA5c,EAAA4c,GAAAxc,UAAAwc,GAAA,OAAAtW,EAAAoB,OAAAkB,EAAA,EAAAlB,CAAApN,MAAAoiB,EAAAhV,OAAAmB,EAAA,EAAAnB,CAAAsS,IAAA7Z,KAAA9B,MAAAqe,EAAA,CAAApiB,MAAA0J,OAAAhE,MAC1B8I,MAAQ,CACN3O,KAAML,EAASK,MAAQ,GACvB0iB,oBAAoB,GAHIvW,EAM1BwW,MAAQ,WACNhjB,EAASM,MAAMkM,EAAKwC,MAAM3O,KAAM,WAC9BmM,EAAK2C,SAAS,CAAE4T,oBAAoB,OARdvW,EAY1ByW,WAAa,SAAC9W,GACZK,EAAK2C,SAAS,CAAE9O,KAAM8L,EAAEmU,OAAOtS,SAbPxB,EAAA,OAAAoB,OAAAyT,EAAA,EAAAzT,CAAAsS,EAAAD,GAAArS,OAAA0T,EAAA,EAAA1T,CAAAsS,EAAA,EAAAnU,IAAA,SAAAiC,MAAA,WAgBjB,IACCuU,GAAS/hB,KAAKmK,MAAM6X,SAASxT,OACjC,CAAEuT,KAAM,CAAED,SAAUxX,oBADhByX,KADDW,EAG8B1iB,KAAKwO,MAAlC+T,EAHDG,EAGCH,mBAAoB1iB,EAHrB6iB,EAGqB7iB,KAE5B,GAAI0iB,EACF,OACE5X,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,CAAU3C,GAAI+C,IAIlB,GAAIviB,EAASC,gBACX,OACEkL,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,CAAU3C,GAAI,CAAC8C,SAAUxX,oBAI7B,IAAIqY,EAAc,GAIlB,OAHK3iB,KAAKwO,MAAM3O,KAAKI,SACnB0iB,EAAYC,SAAW,YAGvBjY,EAAAC,EAAAC,cAAA,QAAMC,UAAU,aACdH,EAAAC,EAAAC,cAAA,kDACAF,EAAAC,EAAAC,cAAA,SAAO2C,MAAO3N,EAAMmQ,SAAUhQ,KAAKyiB,aACnC9X,EAAAC,EAAAC,cAAA,SAAAuC,OAAAwO,OAAA,CAAQvP,QAASrM,KAAKwiB,OAAWG,GAAjC,eAzCoBjD,EAAA,CAAenT,cAgDrCsW,oLAEF,OACElY,EAAAC,EAAAC,cAAA,OAAKC,UAAU,eACbH,EAAAC,EAAAC,cAAA,0BACAF,EAAAC,EAAAC,cAACoX,GAAD,MACAtX,EAAAC,EAAAC,cAACiY,GAAD,cANkBvW,aAkCXwW,eArBb,SAAAA,IAAc,IAAA3L,EAAAhK,OAAAiB,EAAA,EAAAjB,CAAApN,KAAA+iB,GACZ3L,EAAAhK,OAAAkB,EAAA,EAAAlB,CAAApN,KAAAoN,OAAAmB,EAAA,EAAAnB,CAAA2V,GAAAld,KAAA7F,OACA,IAAMgjB,EAAStK,KAAKC,MAAMrO,8QAFd,OAGZ6R,gBAAuB6G,GAHX5L,wEAOZ,OACEzM,EAAAC,EAAAC,cAAA,OAAKC,UAAU,OACbH,EAAAC,EAAAC,cAACkU,EAAA,EAAD,KACEpU,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,KACEhX,EAAAC,EAAAC,cAACoY,GAAD,CAAoBC,KAAM5Y,6BAA0CkX,UAAWtF,KAC/EvR,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,CAAOuB,KAAM5Y,sBAAmCkX,UAAWW,KAC3DxX,EAAAC,EAAAC,cAAC8W,EAAA,EAAD,CAAOH,UAAWqB,eAdZtW,uBChGd4W,IAAsB,EAC1B,IACEzK,KAAKC,MAAMrO,8QACX6Y,IAAsB,EACtB,MAAOxX,IACP1D,QAAQuD,MAAM,qCAAsCG,GAAEyX,SAEpDD,KACFE,IAASzB,OAAOjX,EAAAC,EAAAC,cAACyY,GAAD,MAAStI,SAASuI,eAAe,SCHJ,kBAAmBC,WAC9D9jB,OAAO+jB,iBAAiB,OAAQ,WAC9B,IAAMC,EAAK,GAAAha,OAAMY,gBAAN,sBACXkZ,UAAUG,cACPC,SAASF,GACTjI,KAAK,SAAAoI,GACJA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACtCD,EAAiBE,cAAgB,WACA,cAA3BF,EAAiBvV,QACfgV,UAAUG,cAAcO,WAK1Bjc,QAAQC,IAAI,6CAKZD,QAAQC,IAAI,2CAMrB8U,MAAM,SAAAxR,GACLvD,QAAQuD,MAAM,4CAA6CA","file":"static/js/main.53b7b5e2.chunk.js","sourcesContent":["const fakeAuth = {\n isAuthenticated: !!window.localStorage.getItem('username'),\n name: window.localStorage.getItem('username') || '',\n logIn(name, cb) {\n this.isAuthenticated = true;\n name = name.trim();\n this.name = name;\n window.localStorage.setItem('username', name);\n setTimeout(cb, 0);\n },\n logOut(cb) {\n this.isAuthenticated = false;\n this.name = '';\n window.localStorage.removeItem('username');\n setTimeout(cb, 0);\n }\n};\n\nexport default fakeAuth;\n","const GameVariant = {\n // Official variants\n ORIGINAL: 'original',\n LEADERS: 'leaders',\n\n // and some custom ones\n WRECK: 'wreck'\n};\n\nconst Resource = {\n CLAY: 0,\n STONE: 1,\n WOOD: 2,\n ORE: 3,\n GLASS: 4,\n CLOTH: 5,\n PAPER: 6\n};\n\nconst Science = {\n ACADEMICS: 0, // Sextant\n ENGINEERING: 1, // Gear\n LITERATURE: 2 // Tablet\n};\n\n// The number assigned to a type is used for ordering (e.g. when displaying all cards).\nconst CardType = {\n RESOURCE: 0, // Brown\n GOODS: 1, // Grey\n COMMERCE: 2, // Yellow\n GUILD: 3, // Purple\n MILITARY: 4, // Red\n ACADEMICS: 5, // Green Sextant\n ENGINEERING: 6, // Green Gear\n LITERATURE: 7, // Green Tablet\n VICTORY: 8, // Blue\n WONDER: 9,\n LEADER: 10 // White\n};\n\nconst TradeCost = {\n RESOURCE_EAST: 0,\n RESOURCE_WEST: 1,\n GOODS: 2\n};\n\nconst Scoring = {\n MILITARY: 0,\n GOLD: 1,\n WONDER: 2,\n VICTORY: 3,\n COMMERCE: 4,\n GUILD: 5,\n SCIENCE: 6,\n LEADER: 7\n};\n\nvar Action = ['BUILD', 'BUILD_WONDER', 'DISCARD', 'UNDO'];\nAction.forEach((action, i) => { Action[action] = i; });\n\nconst Card = function(name, age, cost, type, rewards, minPlayers, tooltip) {\n this.name = name;\n this.age = age;\n this.cost = cost;\n this.type = type;\n this.rewards = rewards;\n this.minPlayers = minPlayers;\n this.tooltip = tooltip;\n};\nconst Wonder = function(name, resource, stage1A, stage2A, stage3A, stage1B, stage2B, stage3B, stage4B) {\n this.name = name;\n this.resource = resource;\n this.stages = [stage1A, stage2A, stage3A, stage1B, stage2B];\n if (stage3B) {\n this.stages.push(stage3B);\n }\n if (stage4B) {\n this.stages.push(stage4B);\n }\n};\nconst makeLeader = function(name, cost, rewards, tooltip) {\n return new Card(name, 0, [cost], CardType.LEADER, rewards, 0, tooltip);\n}\n\nconst scienceScore = function(scienceSetBonus, scores) {\n return scores[0] * scores[0] + scores[1] * scores[1] + scores[2] * scores[2] +\n scienceSetBonus * Math.min.apply(null, scores);\n}\nconst calcScienceScore = function(player) {\n var academics = player.sciences[Science.ACADEMICS];\n var engineering = player.sciences[Science.ENGINEERING];\n var literature = player.sciences[Science.LITERATURE];\n var scores = [academics, engineering, literature].sort();\n if (player.bonusSciences === 0) {\n return scienceScore(player.scienceSetBonus, scores);\n } else if (player.bonusSciences === 1) {\n // Add both to highest\n let longChain = scores.slice(0);\n longChain[2]++;\n let longChainScore = scienceScore(player.scienceSetBonus, longChain);\n // Add both to lowest\n let manySets = scores.slice(0);\n manySets[0]++;\n let manySetsScore = scienceScore(player.scienceSetBonus, manySets);\n return Math.max(longChainScore, manySetsScore);\n } else if (player.bonusSciences === 2) {\n // Add both to highest\n let longChain = scores.slice(0);\n longChain[2] += 2;\n let longChainScore = scienceScore(player.scienceSetBonus, longChain);\n\n // Add one to highest and one to lowest\n let splitStrat = scores.slice(0);\n splitStrat[0]++;\n splitStrat[2]++;\n let splitStratScore = scienceScore(player.scienceSetBonus, splitStrat);\n\n // Add one to middle and one to lowest\n let fillSet = scores.slice(0);\n fillSet[0]++;\n fillSet[1]++;\n let fillSetScore = scienceScore(player.scienceSetBonus, fillSet);\n\n // Add both to lowest\n var manySets = scores.slice(0);\n manySets[0] += 2;\n var manySetsScore = scienceScore(player.scienceSetBonus, manySets);\n\n return Math.max(longChainScore, splitStratScore, fillSetScore, manySetsScore);\n }\n};\n\nconst scienceReward = function(science) {\n return function(player) {\n player.sciences[science]++;\n };\n};\n\nconst resourceReward = function(resource, amount) {\n return function(player) {\n player.resources[resource] += amount;\n };\n};\n\nconst goldReward = function(amount) {\n return function(player) {\n player.gold += amount;\n }\n};\n\nconst pointsReward = function(points, type) {\n return function(player) {\n player.victoryPoints[type] += points;\n };\n};\n\nconst multiResourceReward = function() {\n var args = Array.prototype.slice.call(arguments);\n return function(player) {\n player.multiResources.push(args);\n };\n};\n\nconst militaryReward = function(amount) {\n return function(player) {\n player.military += amount;\n };\n};\n\nconst tradeCostReward = function(type) {\n return function(player) {\n player.tradeCost[type] = 1;\n };\n};\n\nconst AGE1DECK = [\n new Card('East Trading Post', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.RESOURCE_EAST), 3, 'Provides discounted resource trade with eastern neighbour.'),\n new Card('East Trading Post', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.RESOURCE_EAST), 7, 'Provides discounted resource trade with eastern neighbour.'),\n new Card('Marketplace', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.GOODS), 2, 'Provides discounted goods trade with neighbours.'),\n new Card('Marketplace', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.GOODS), 6, 'Provides discounted goods trade with neighbours.'),\n new Card('Tavern', 1, [], CardType.COMMERCE, goldReward(5), 4, 'Produces 5 gold.'),\n new Card('Tavern', 1, [], CardType.COMMERCE, goldReward(5), 5, 'Produces 5 gold.'),\n new Card('Tavern', 1, [], CardType.COMMERCE, goldReward(5), 7, 'Produces 5 gold.'),\n new Card('West Trading Post', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.RESOURCE_WEST), 2, 'Provides discounted resource trade with western neighbour.'),\n new Card('West Trading Post', 1, [], CardType.COMMERCE, tradeCostReward(TradeCost.RESOURCE_WEST), 7, 'Provides discounted resource trade with western neighbour.'),\n\n new Card('Glassworks', 1, [], CardType.GOODS, resourceReward(Resource.GLASS, 1), 2, 'Produces glass.'),\n new Card('Glassworks', 1, [], CardType.GOODS, resourceReward(Resource.GLASS, 1), 6, 'Produces glass.'),\n new Card('Press', 1, [], CardType.GOODS, resourceReward(Resource.PAPER, 1), 2, 'Produces paper.'),\n new Card('Press', 1, [], CardType.GOODS, resourceReward(Resource.PAPER, 1), 6, 'Produces paper.'),\n new Card('Loom', 1, [], CardType.GOODS, resourceReward(Resource.CLOTH, 1), 2, 'Produces cloth.'),\n new Card('Loom', 1, [], CardType.GOODS, resourceReward(Resource.CLOTH, 1), 6, 'Produces cloth.'),\n\n new Card('Barracks', 1, [[Resource.ORE]], CardType.MILITARY, militaryReward(1), 2, 'Provides 1 unit of military strength.'),\n new Card('Barracks', 1, [[Resource.ORE]], CardType.MILITARY, militaryReward(1), 5, 'Provides 1 unit of military strength.'),\n new Card('Guard Tower', 1, [[Resource.CLAY]], CardType.MILITARY, militaryReward(1), 3, 'Provides 1 unit of military strength.'),\n new Card('Guard Tower', 1, [[Resource.CLAY]], CardType.MILITARY, militaryReward(1), 4, 'Provides 1 unit of military strength.'),\n new Card('Stockade', 1, [[Resource.WOOD]], CardType.MILITARY, militaryReward(1), 2, 'Provides 1 unit of military strength.'),\n new Card('Stockade', 1, [[Resource.WOOD]], CardType.MILITARY, militaryReward(1), 7, 'Provides 1 unit of military strength.'),\n\n new Card('Clay Pit', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.CLAY, Resource.ORE), 2, 'Produces clay or ore.'),\n new Card('Clay Pool', 1, [], CardType.RESOURCE, resourceReward(Resource.CLAY, 1), 3, 'Produces clay.'),\n new Card('Clay Pool', 1, [], CardType.RESOURCE, resourceReward(Resource.CLAY, 1), 5, 'Produces clay.'),\n new Card('Excavation', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.STONE, Resource.CLAY), 4, 'Produces stone or clay.'),\n new Card('Forest Cave', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.WOOD, Resource.ORE), 5, 'Produces wood or clay.'),\n new Card('Lumber Yard', 1, [], CardType.RESOURCE, resourceReward(Resource.WOOD, 1), 3, 'Produces wood.'),\n new Card('Lumber Yard', 1, [], CardType.RESOURCE, resourceReward(Resource.WOOD, 1), 4, 'Produces wood.'),\n new Card('Mine', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.STONE, Resource.ORE), 6, 'Produces stone or ore.'),\n new Card('Ore Vein', 1, [], CardType.RESOURCE, resourceReward(Resource.ORE, 1), 3, 'Produces ore.'),\n new Card('Ore Vein', 1, [], CardType.RESOURCE, resourceReward(Resource.ORE, 1), 4, 'Produces ore.'),\n new Card('Stone Pit', 1, [], CardType.RESOURCE, resourceReward(Resource.STONE, 1), 3, 'Produces stone.'),\n new Card('Stone Pit', 1, [], CardType.RESOURCE, resourceReward(Resource.STONE, 1), 5, 'Produces stone.'),\n new Card('Timber Yard', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.STONE, Resource.WOOD), 2, 'Produces stone or wood.'),\n new Card('Tree Farm', 1, [1], CardType.RESOURCE, multiResourceReward(Resource.WOOD, Resource.CLAY), 6, 'Produces wood or clay.'),\n\n new Card('Apothecary', 1, [[Resource.CLOTH]], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 2, 'Enhances academics.'),\n new Card('Apothecary', 1, [[Resource.CLOTH]], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 5, 'Enhances academics.'),\n new Card('Scriptorium', 1, [[Resource.PAPER]], CardType.LITERATURE, scienceReward(Science.LITERATURE), 2, 'Enhances literature.'),\n new Card('Scriptorium', 1, [[Resource.PAPER]], CardType.LITERATURE, scienceReward(Science.LITERATURE), 4, 'Enhances literature.'),\n new Card('Workshop', 1, [[Resource.GLASS]], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 2, 'Enhances engineering.'),\n new Card('Workshop', 1, [[Resource.GLASS]], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 7, 'Enhances engineering.'),\n\n new Card('Altar', 1, [], CardType.VICTORY, pointsReward(2, Scoring.VICTORY), 2, 'Yields 2 victory points.'),\n new Card('Altar', 1, [], CardType.VICTORY, pointsReward(2, Scoring.VICTORY), 5, 'Yields 2 victory points.'),\n new Card('Baths', 1, [[Resource.STONE]], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 3, 'Yields 3 victory points.'),\n new Card('Baths', 1, [[Resource.STONE]], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 7, 'Yields 3 victory points.'),\n new Card('Pawnshop', 1, [], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 4, 'Yields 3 victory points.'),\n new Card('Pawnshop', 1, [], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 7, 'Yields 3 victory points.'),\n new Card('Theater', 1, [], CardType.VICTORY, pointsReward(2, Scoring.VICTORY), 2, 'Yields 2 victory points.'),\n new Card('Theater', 1, [], CardType.VICTORY, pointsReward(2, Scoring.VICTORY), 6, 'Yields 2 victory points.'),\n];\n\nconst countCards = function(player, types) {\n var count = 0;\n for (var i = 0; player.built[i]; i++) {\n if (types.indexOf(player.built[i].type) !== -1) {\n count++;\n }\n }\n return count;\n};\n\nconst endGameReward = function(pointType, types, self, neighbours, victory) {\n return function(player) {\n var points = 0;\n if (self) {\n points += (countCards(player, types) * victory);\n }\n if (neighbours) {\n points += (countCards(player.east, types) * victory);\n points += (countCards(player.west, types) * victory);\n }\n return {type: pointType, points: points};\n }\n};\n\nconst complexReward = function(pointType, types, self, neighbours, gold, victory) {\n return function(player) {\n if (gold > 0) {\n var extraGold = 0;\n if (self) {\n extraGold += (countCards(player, types) * gold);\n }\n if (neighbours) {\n extraGold += (countCards(player.east, types) * gold);\n extraGold += (countCards(player.west, types) * gold);\n }\n player.gold += extraGold;\n }\n if (victory > 0) {\n player.endGameRewards.push(endGameReward(pointType, types, self, neighbours, victory));\n }\n };\n};\n\nconst generatorReward = function(resources, goods) {\n return function(player) {\n if (resources) {\n player.multiResources.push([Resource.CLAY, Resource.STONE, Resource.WOOD, Resource.ORE]);\n } else if (goods) {\n player.multiResources.push([Resource.GLASS, Resource.CLOTH, Resource.PAPER]);\n }\n };\n};\n\nconst AGE2DECK = [\n new Card('Bazar', 2, [], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.GOODS], true, true, 2, 0), 4, 'Produces 2 gold for every grey card you or your neighbours have built.'),\n new Card('Bazar', 2, [], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.GOODS], true, true, 2, 0), 7, 'Produces 2 gold for every grey card you or your neighbours have built.'),\n new Card('Caravansery', 2, [[Resource.WOOD, Resource.WOOD], 'Marketplace'], CardType.COMMERCE, generatorReward(true, false), 2, 'Produces any resource.'),\n new Card('Caravansery', 2, [[Resource.WOOD, Resource.WOOD], 'Marketplace'], CardType.COMMERCE, generatorReward(true, false), 5, 'Produces any resource.'),\n new Card('Caravansery', 2, [[Resource.WOOD, Resource.WOOD], 'Marketplace'], CardType.COMMERCE, generatorReward(true, false), 6, 'Produces any resource.'),\n new Card('Forum', 2, [[Resource.CLAY, Resource.CLAY], 'East Trading Post', 'West Trading Post'], CardType.COMMERCE, generatorReward(false, true), 2, 'Produces any good.'),\n new Card('Forum', 2, [[Resource.CLAY, Resource.CLAY], 'East Trading Post', 'West Trading Post'], CardType.COMMERCE, generatorReward(false, true), 6, 'Produces any good.'),\n new Card('Forum', 2, [[Resource.CLAY, Resource.CLAY], 'East Trading Post', 'West Trading Post'], CardType.COMMERCE, generatorReward(false, true), 7, 'Produces any good.'),\n new Card('Vineyard', 2, [], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.RESOURCE], true, true, 1, 0), 3, 'Produces 1 gold for every brown card you or your neighbours have built.'),\n new Card('Vineyard', 2, [], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.RESOURCE], true, true, 1, 0), 6, 'Produces 1 gold for every brown card you or your neighbours have built.'),\n\n new Card('Glassworks', 2, [], CardType.GOODS, resourceReward(Resource.GLASS, 1), 3, 'Produces glass.'),\n new Card('Glassworks', 2, [], CardType.GOODS, resourceReward(Resource.GLASS, 1), 5, 'Produces glass.'),\n new Card('Press', 2, [], CardType.GOODS, resourceReward(Resource.PAPER, 1), 3, 'Produces paper.'),\n new Card('Press', 2, [], CardType.GOODS, resourceReward(Resource.PAPER, 1), 5, 'Produces paper.'),\n new Card('Loom', 2, [], CardType.GOODS, resourceReward(Resource.CLOTH, 1), 3, 'Produces cloth.'),\n new Card('Loom', 2, [], CardType.GOODS, resourceReward(Resource.CLOTH, 1), 5, 'Produces cloth.'),\n\n new Card('Archery Range', 2, [[Resource.WOOD, Resource.WOOD, Resource.ORE], 'Workshop'], CardType.MILITARY, militaryReward(2), 2, 'Provides 2 units of military strength.'),\n new Card('Archery Range', 2, [[Resource.WOOD, Resource.WOOD, Resource.ORE], 'Workshop'], CardType.MILITARY, militaryReward(2), 6, 'Provides 2 units of military strength.'),\n new Card('Stables', 2, [[Resource.CLAY, Resource.WOOD, Resource.ORE], 'Apothecary'], CardType.MILITARY, militaryReward(2), 2, 'Provides 2 units of military strength.'),\n new Card('Stables', 2, [[Resource.CLAY, Resource.WOOD, Resource.ORE], 'Apothecary'], CardType.MILITARY, militaryReward(2), 5, 'Provides 2 units of military strength.'),\n new Card('Training Ground', 2, [[Resource.ORE, Resource.ORE, Resource.WOOD]], CardType.MILITARY, militaryReward(2), 4, 'Provides 2 units of military strength.'),\n new Card('Training Ground', 2, [[Resource.ORE, Resource.ORE, Resource.WOOD]], CardType.MILITARY, militaryReward(2), 6, 'Provides 2 units of military strength.'),\n new Card('Training Ground', 2, [[Resource.ORE, Resource.ORE, Resource.WOOD]], CardType.MILITARY, militaryReward(2), 7, 'Provides 2 units of military strength.'),\n new Card('Walls', 2, [[Resource.STONE, Resource.STONE, Resource.STONE]], CardType.MILITARY, militaryReward(2), 3, 'Provides 2 units of military strength.'),\n new Card('Walls', 2, [[Resource.STONE, Resource.STONE, Resource.STONE]], CardType.MILITARY, militaryReward(2), 7, 'Provides 2 units of military strength.'),\n\n new Card('Brickyard', 2, [1], CardType.RESOURCE, resourceReward(Resource.CLAY, 2), 2, 'Produces 2 units of clay.'),\n new Card('Brickyard', 2, [1], CardType.RESOURCE, resourceReward(Resource.CLAY, 2), 4, 'Produces 2 units of clay.'),\n new Card('Foundry', 2, [1], CardType.RESOURCE, resourceReward(Resource.ORE, 2), 2, 'Produces 2 units of ore.'),\n new Card('Foundry', 2, [1], CardType.RESOURCE, resourceReward(Resource.ORE, 2), 4, 'Produces 2 units of ore.'),\n new Card('Quarry', 2, [1], CardType.RESOURCE, resourceReward(Resource.STONE, 2), 2, 'Produces 2 units of stone.'),\n new Card('Quarry', 2, [1], CardType.RESOURCE, resourceReward(Resource.STONE, 2), 4, 'Produces 2 units of stone.'),\n new Card('Sawmill', 2, [1], CardType.RESOURCE, resourceReward(Resource.WOOD, 2), 2, 'Produces 2 units of wood.'),\n new Card('Sawmill', 2, [1], CardType.RESOURCE, resourceReward(Resource.WOOD, 2), 4, 'Produces 2 units of wood.'),\n\n new Card('Dispensary', 2, [[Resource.ORE, Resource.ORE, Resource.GLASS], 'Apothecary'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 2, 'Enhances academics.'),\n new Card('Dispensary', 2, [[Resource.ORE, Resource.ORE, Resource.GLASS], 'Apothecary'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 4, 'Enhances academics.'),\n new Card('Laboratory', 2, [[Resource.CLAY, Resource.CLAY, Resource.PAPER], 'Workshop'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 2, 'Enhances engineering.'),\n new Card('Laboratory', 2, [[Resource.CLAY, Resource.CLAY, Resource.PAPER], 'Workshop'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 5, 'Enhances engineering.'),\n new Card('Library', 2, [[Resource.STONE, Resource.STONE, Resource.CLOTH], 'Scriptorium'], CardType.LITERATURE, scienceReward(Science.LITERATURE), 2, 'Enhances literature.'),\n new Card('Library', 2, [[Resource.STONE, Resource.STONE, Resource.CLOTH], 'Scriptorium'], CardType.LITERATURE, scienceReward(Science.LITERATURE), 6, 'Enhances literature.'),\n new Card('School', 2, [[Resource.WOOD, Resource.PAPER]], CardType.LITERATURE, scienceReward(Science.LITERATURE), 3, 'Enhances literature.'),\n new Card('School', 2, [[Resource.WOOD, Resource.PAPER]], CardType.LITERATURE, scienceReward(Science.LITERATURE), 7, 'Enhances literature.'),\n\n new Card('Aquaduct', 2, [[Resource.STONE, Resource.STONE, Resource.STONE], 'Baths'], CardType.VICTORY, pointsReward(5, Scoring.VICTORY), 3, 'Yields 5 victory points.'),\n new Card('Aquaduct', 2, [[Resource.STONE, Resource.STONE, Resource.STONE], 'Baths'], CardType.VICTORY, pointsReward(5, Scoring.VICTORY), 7, 'Yields 5 victory points.'),\n new Card('Courthouse', 2, [[Resource.CLAY, Resource.CLAY, Resource.CLOTH], 'Scriptorium'], CardType.VICTORY, pointsReward(4, Scoring.VICTORY), 2, 'Yields 4 victory points.'),\n new Card('Courthouse', 2, [[Resource.CLAY, Resource.CLAY, Resource.CLOTH], 'Scriptorium'], CardType.VICTORY, pointsReward(4, Scoring.VICTORY), 5, 'Yields 4 victory points.'),\n new Card('Statue', 2, [[Resource.ORE, Resource.ORE, Resource.WOOD], 'Theater'], CardType.VICTORY, pointsReward(4, Scoring.VICTORY), 2, 'Yields 4 victory points.'),\n new Card('Statue', 2, [[Resource.ORE, Resource.ORE, Resource.WOOD], 'Theater'], CardType.VICTORY, pointsReward(4, Scoring.VICTORY), 7, 'Yields 4 victory points.'),\n new Card('Temple', 2, [[Resource.WOOD, Resource.CLAY, Resource.GLASS], 'Altar'], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 2, 'Yields 3 victory points.'),\n new Card('Temple', 2, [[Resource.WOOD, Resource.CLAY, Resource.GLASS], 'Altar'], CardType.VICTORY, pointsReward(3, Scoring.VICTORY), 6, 'Yields 3 victory points.'),\n];\n\n// Change to end of game, greedy does not work.\nconst anyScienceReward = function() {\n return function(player) {\n player.bonusSciences++;\n };\n};\nconst strategistReward = function() {\n return function(player) {\n player.endGameRewards.push(function(player) {\n var points = 0;\n points += player.east.battleTokens.filter(function(token) {\n return token === -1;\n }).length;\n points += player.west.battleTokens.filter(function(token) {\n return token === -1;\n }).length;\n return {type: Scoring.GUILD, points: points};\n });\n };\n};\n\nconst AGE3DECK = [\n new Card('Arena', 3, [[Resource.STONE, Resource.STONE, Resource.ORE], 'Dispensary'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.WONDER], true, false, 3, 1), 2, 'Yields 3 gold and 1 victory point for every wonder stage built.'),\n new Card('Arena', 3, [[Resource.STONE, Resource.STONE, Resource.ORE], 'Dispensary'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.WONDER], true, false, 3, 1), 5, 'Yields 3 gold and 1 victory point for every wonder stage built.'),\n new Card('Arena', 3, [[Resource.STONE, Resource.STONE, Resource.ORE], 'Dispensary'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.WONDER], true, false, 3, 1), 7, 'Yields 3 gold and 1 victory point for every wonder stage built.'),\n new Card('Chamber Of Commerce', 3, [[Resource.CLAY, Resource.CLAY, Resource.PAPER]], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.GOODS], true, false, 2, 2), 4, 'Yields 2 gold and 2 victory points for grey card.'),\n new Card('Chamber Of Commerce', 3, [[Resource.CLAY, Resource.CLAY, Resource.PAPER]], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.GOODS], true, false, 2, 2), 6, 'Yields 2 gold and 2 victory points for grey card.'),\n new Card('Haven', 3, [[Resource.WOOD, Resource.ORE, Resource.CLOTH], 'Forum'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.RESOURCE], true, false, 1, 1), 2, 'Yields 1 gold and 1 victory point for brown card.'),\n new Card('Haven', 3, [[Resource.WOOD, Resource.ORE, Resource.CLOTH], 'Forum'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.RESOURCE], true, false, 1, 1), 4, 'Yields 1 gold and 1 victory point for brown card.'),\n new Card('Lighthouse', 3, [[Resource.STONE, Resource.GLASS], 'Caravansery'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.COMMERCE], true, false, 1, 1), 2, 'Yields 1 gold and 1 victory point for yellow card.'),\n new Card('Lighthouse', 3, [[Resource.STONE, Resource.GLASS], 'Caravansery'], CardType.COMMERCE, complexReward(Scoring.COMMERCE, [CardType.COMMERCE], true, false, 1, 1), 6, 'Yields 1 gold and 1 victory point for yellow card.'),\n\n new Card('Builders Guild', 3, [[Resource.STONE, Resource.STONE, Resource.CLAY, Resource.CLAY, Resource.GLASS]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.WONDER], true, true, 0, 1), 0, 'Yields 1 victory point for wonder stage you or your neighbours have built.'),\n new Card('Craftsmens Guild', 3, [[Resource.ORE, Resource.ORE, Resource.STONE, Resource.STONE]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.GOODS], false, true, 0, 2), 0, 'Yields 2 victory points for every grey card your neighbours have.'),\n new Card('Magistrates Guild', 3, [[Resource.WOOD, Resource.WOOD, Resource.WOOD, Resource.STONE, Resource.CLOTH]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.VICTORY], false, true, 0, 1), 0, 'Yields 1 victory point for every blue card your neighbours have.'),\n new Card('Philosophers Guild', 3, [[Resource.CLAY, Resource.CLAY, Resource.CLAY, Resource.PAPER, Resource.CLOTH]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.ACADEMICS, CardType.ENGINEERING, CardType.LITERATURE], false, true, 0, 1), 0, 'Yields 1 victory point for every green card your neighbours have.'),\n new Card('Scientists Guild', 3, [[Resource.WOOD, Resource.WOOD, Resource.ORE, Resource.ORE, Resource.PAPER]], CardType.GUILD, anyScienceReward(), 0, 'Enhances a science of your choice.'),\n new Card('Shipowners Guild', 3, [[Resource.WOOD, Resource.WOOD, Resource.WOOD, Resource.GLASS, Resource.PAPER]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.RESOURCE, CardType.GOODS, CardType.GUILD], true, false, 0, 1), 0, 'Yields 1 victory point for every brown, grey or purple card.'),\n new Card('Spies Guild', 3, [[Resource.CLAY, Resource.CLAY, Resource.CLAY, Resource.GLASS]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.MILITARY], false, true, 0, 1), 0, 'Yields 1 victory point for every red card your neighbours have.'),\n new Card('Strategists Guild', 3, [[Resource.ORE, Resource.ORE, Resource.STONE, Resource.CLOTH]], CardType.GUILD, strategistReward(), 0, 'Yields 1 victory point for every combat loss token your neighbours have.'),\n new Card('Traders Guild', 3, [[Resource.GLASS, Resource.CLOTH, Resource.PAPER]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.COMMERCE], false, true, 0, 1), 0, 'Yields 1 victory point for every yellow card your neighbours have.'),\n new Card('Workers Guild', 3, [[Resource.ORE, Resource.ORE, Resource.CLAY, Resource.STONE, Resource.WOOD]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.RESOURCE], false, true, 0, 1), 0, 'Yields 1 victory point for every brown card your neighbours have.'),\n new Card('Architects Guild', 3, [[Resource.ORE, Resource.ORE, Resource.ORE, Resource.CLAY, Resource.PAPER, Resource.CLOTH]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.GUILD], false, true, 0, 3), 0, 'Yields 3 victory points for every purple card your neighbours have.'),\n // Courtesans Guild. Copy a leader.\n new Card('Diplomats Guild', 3, [[Resource.STONE, Resource.WOOD, Resource.GLASS, Resource.PAPER]], CardType.GUILD, complexReward(Scoring.GUILD, [CardType.LEADER], false, true, 0, 1), 0, 'Yields 1 victory point for every leader your neighbours have.'),\n new Card('Gamers Guild', 3, [[Resource.STONE, Resource.CLAY, Resource.WOOD, Resource.ORE]], CardType.GUILD, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.GUILD, points: Math.floor(player.gold / 3)};\n });\n }, 0, 'Yields 1 victory point for every 3 gold.'),\n\n new Card('Arsenal', 3, [[Resource.WOOD, Resource.WOOD, Resource.ORE, Resource.CLOTH]], CardType.MILITARY, militaryReward(3), 3, 'Provides 3 units of military strength.'),\n new Card('Arsenal', 3, [[Resource.WOOD, Resource.WOOD, Resource.ORE, Resource.CLOTH]], CardType.MILITARY, militaryReward(3), 4, 'Provides 3 units of military strength.'),\n new Card('Arsenal', 3, [[Resource.WOOD, Resource.WOOD, Resource.ORE, Resource.CLOTH]], CardType.MILITARY, militaryReward(3), 7, 'Provides 3 units of military strength.'),\n new Card('Circus', 3, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.ORE], 'Training Ground'], CardType.MILITARY, militaryReward(3), 4, 'Provides 3 units of military strength.'),\n new Card('Circus', 3, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.ORE], 'Training Ground'], CardType.MILITARY, militaryReward(3), 5, 'Provides 3 units of military strength.'),\n new Card('Circus', 3, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.ORE], 'Training Ground'], CardType.MILITARY, militaryReward(3), 6, 'Provides 3 units of military strength.'),\n new Card('Fortifications', 3, [[Resource.ORE, Resource.ORE, Resource.ORE, Resource.STONE], 'Walls'], CardType.MILITARY, militaryReward(3), 3, 'Provides 3 units of military strength.'),\n new Card('Fortifications', 3, [[Resource.ORE, Resource.ORE, Resource.ORE, Resource.STONE], 'Walls'], CardType.MILITARY, militaryReward(3), 7, 'Provides 3 units of military strength.'),\n new Card('Siege Workshop', 3, [[Resource.CLAY, Resource.CLAY, Resource.CLAY, Resource.WOOD], 'Laboratory'], CardType.MILITARY, militaryReward(3), 2, 'Provides 3 units of military strength.'),\n new Card('Siege Workshop', 3, [[Resource.CLAY, Resource.CLAY, Resource.CLAY, Resource.WOOD], 'Laboratory'], CardType.MILITARY, militaryReward(3), 5, 'Provides 3 units of military strength.'),\n\n new Card('Academy', 3, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.GLASS], 'School'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 3, 'Enhances academics.'),\n new Card('Academy', 3, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.GLASS], 'School'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 7, 'Enhances academics.'),\n new Card('Lodge', 3, [[Resource.CLAY, Resource.CLAY, Resource.PAPER, Resource.CLOTH], 'Dispensary'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 2, 'Enhances academics.'),\n new Card('Lodge', 3, [[Resource.CLAY, Resource.CLAY, Resource.PAPER, Resource.CLOTH], 'Dispensary'], CardType.ACADEMICS, scienceReward(Science.ACADEMICS), 6, 'Enhances academics.'),\n new Card('Observatory', 3, [[Resource.ORE, Resource.ORE, Resource.GLASS, Resource.CLOTH], 'Laboratory'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 2, 'Enhances engineering.'),\n new Card('Observatory', 3, [[Resource.ORE, Resource.ORE, Resource.GLASS, Resource.CLOTH], 'Laboratory'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 7, 'Enhances engineering.'),\n new Card('Study', 3, [[Resource.WOOD, Resource.PAPER, Resource.CLOTH], 'School'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 3, 'Enhances engineering.'),\n new Card('Study', 3, [[Resource.WOOD, Resource.PAPER, Resource.CLOTH], 'School'], CardType.ENGINEERING, scienceReward(Science.ENGINEERING), 5, 'Enhances engineering.'),\n new Card('University', 3, [[Resource.WOOD, Resource.WOOD, Resource.PAPER, Resource.GLASS], 'Library'], CardType.LITERATURE, scienceReward(Science.LITERATURE), 2, 'Enhances literature.'),\n new Card('University', 3, [[Resource.WOOD, Resource.WOOD, Resource.PAPER, Resource.GLASS], 'Library'], CardType.LITERATURE, scienceReward(Science.LITERATURE), 4, 'Enhances literature.'),\n\n new Card('Gardens', 3, [[Resource.CLAY, Resource.CLAY, Resource.WOOD], 'Statue'], CardType.VICTORY, pointsReward(5, Scoring.VICTORY), 2, 'Yields 5 victory points.'),\n new Card('Gardens', 3, [[Resource.CLAY, Resource.CLAY, Resource.WOOD], 'Statue'], CardType.VICTORY, pointsReward(5, Scoring.VICTORY), 4, 'Yields 5 victory points.'),\n new Card('Palace', 3, [[Resource.STONE, Resource.ORE, Resource.WOOD, Resource.CLAY, Resource.GLASS, Resource.PAPER, Resource.CLOTH]], CardType.VICTORY, pointsReward(8, Scoring.VICTORY), 3, 'Yields 8 victory points.'),\n new Card('Palace', 3, [[Resource.STONE, Resource.ORE, Resource.WOOD, Resource.CLAY, Resource.GLASS, Resource.PAPER, Resource.CLOTH]], CardType.VICTORY, pointsReward(8, Scoring.VICTORY), 7, 'Yields 8 victory points.'),\n new Card('Pantheon', 3, [[Resource.CLAY, Resource.CLAY, Resource.ORE, Resource.GLASS, Resource.PAPER, Resource.CLOTH], 'Temple'], CardType.VICTORY, pointsReward(7, Scoring.VICTORY), 2, 'Yields 7 victory points.'),\n new Card('Pantheon', 3, [[Resource.CLAY, Resource.CLAY, Resource.ORE, Resource.GLASS, Resource.PAPER, Resource.CLOTH], 'Temple'], CardType.VICTORY, pointsReward(7, Scoring.VICTORY), 6, 'Yields 7 victory points.'),\n new Card('Senate', 3, [[Resource.WOOD, Resource.WOOD, Resource.STONE, Resource.ORE], 'Library'], CardType.VICTORY, pointsReward(6, Scoring.VICTORY), 2, 'Yields 6 victory points.'),\n new Card('Senate', 3, [[Resource.WOOD, Resource.WOOD, Resource.STONE, Resource.ORE], 'Library'], CardType.VICTORY, pointsReward(6, Scoring.VICTORY), 5, 'Yields 6 victory points.'),\n new Card('Town Hall', 3, [[Resource.STONE, Resource.STONE, Resource.ORE, Resource.GLASS]], CardType.VICTORY, pointsReward(6, Scoring.VICTORY), 3, 'Yields 6 victory points.'),\n new Card('Town Hall', 3, [[Resource.STONE, Resource.STONE, Resource.ORE, Resource.GLASS]], CardType.VICTORY, pointsReward(6, Scoring.VICTORY), 5, 'Yields 6 victory points.'),\n new Card('Town Hall', 3, [[Resource.STONE, Resource.STONE, Resource.ORE, Resource.GLASS]], CardType.VICTORY, pointsReward(6, Scoring.VICTORY), 6, 'Yields 6 victory points.'),\n];\nconst doubleBuildReward = function() {\n return function(player) {\n player.canDoubleBuild = true;\n };\n};\n\nconst multiReward = function(reward1, reward2, reward3) {\n return function(player) {\n console.log('executing multi reward');\n reward1(player);\n reward2(player);\n if (reward3) {\n reward3(player);\n }\n };\n};\n\nconst discardedReward = function() {\n return function(player) {\n console.log('setting play discarded now for player', player);\n player.playDiscardedNow = true;\n };\n};\n\nconst freeBuildReward = function() {\n return function(player) {\n player.canBuildForFree = [true, true, true];\n };\n};\n\nconst PlayerState = function(board, side, playerInterface, isLeadersGame) {\n this.sciences = {};\n this.sciences[Science.ACADEMICS] = 0;\n this.sciences[Science.ENGINEERING] = 0;\n this.sciences[Science.LITERATURE] = 0;\n\n this.tradeCost = {}\n this.tradeCost[TradeCost.RESOURCE_EAST] = 2;\n this.tradeCost[TradeCost.RESOURCE_WEST] = 2;\n this.tradeCost[TradeCost.GOODS] = 2;\n\n this.resources = {};\n this.resources[Resource.CLAY] = 0;\n this.resources[Resource.STONE] = 0;\n this.resources[Resource.WOOD] = 0;\n this.resources[Resource.ORE] = 0;\n this.resources[Resource.GLASS] = 0;\n this.resources[Resource.CLOTH] = 0;\n this.resources[Resource.PAPER] = 0;\n\n this.board = board;\n this.bonusSciences = 0;\n this.scienceSetBonus = 7;\n this.side = side;\n this.stagesBuilt = [];\n this.playerInterface = playerInterface;\n this.gold = isLeadersGame ? 6 : 3;\n this.military = 0;\n this.multiResources = [];\n this.battleTokens = [];\n this.built = [];\n this.leaders = [];\n this.endGameRewards = [];\n this.canDoubleBuild = false;\n this.playDiscardedNow = false;\n this.discounts = [];\n this.canBuildForFree = [false, false, false];\n this.freeBuildTypes = [];\n this.victoryPoints = [];\n this.victoryPoints[Scoring.MILITARY] = 0;\n this.victoryPoints[Scoring.GOLD] = 0;\n this.victoryPoints[Scoring.WONDER] = 0;\n this.victoryPoints[Scoring.VICTORY] = 0;\n this.victoryPoints[Scoring.COMMERCE] = 0;\n this.victoryPoints[Scoring.GUILD] = 0;\n this.victoryPoints[Scoring.SCIENCE] = 0;\n this.victoryPoints[Scoring.LEADER] = 0;\n this.currentScore = [];\n this.scoreTotal = 0;\n\n this.resources[this.board.resource]++;\n};\n\nconst clonePlayers = function(players) {\n var clonedPlayers = players.map(function(player) {\n var clone = new PlayerState(player.board, player.side, null /* not cloned */);\n\n clone.sciences[Science.ACADEMICS] = player.sciences[Science.ACADEMICS];\n clone.sciences[Science.ENGINEERING] = player.sciences[Science.ENGINEERING];\n clone.sciences[Science.LITERATURE] = player.sciences[Science.LITERATURE];\n\n clone.tradeCost[TradeCost.RESOURCE_EAST] = player.tradeCost[TradeCost.RESOURCE_EAST];\n clone.tradeCost[TradeCost.RESOURCE_WEST] = player.tradeCost[TradeCost.RESOURCE_WEST];\n clone.tradeCost[TradeCost.GOODS] = player.tradeCost[TradeCost.GOODS];\n\n clone.resources[Resource.CLAY] = player.resources[Resource.CLAY];\n clone.resources[Resource.STONE] = player.resources[Resource.STONE];\n clone.resources[Resource.WOOD] = player.resources[Resource.WOOD];\n clone.resources[Resource.ORE] = player.resources[Resource.ORE];\n clone.resources[Resource.GLASS] = player.resources[Resource.GLASS];\n clone.resources[Resource.CLOTH] = player.resources[Resource.CLOTH];\n clone.resources[Resource.PAPER] = player.resources[Resource.PAPER];\n\n clone.bonusSciences = player.bonusSciences;\n clone.scienceSetBonus = player.scienceSetBonus;\n clone.stagesBuilt = Array.prototype.slice.call(player.stagesBuilt);\n clone.gold = player.gold;\n clone.military = player.military;\n clone.multiResources = Array.prototype.slice.call(player.multiResources.map(function(resources) {\n return Array.prototype.slice.call(resources);\n }));\n clone.battleTokens = Array.prototype.slice.call(player.battleTokens);\n clone.built = Array.prototype.slice.call(player.built);\n clone.leaders = Array.prototype.slice.call(player.leaders);\n clone.endGameRewards = []; // not cloned\n clone.canDoubleBuild = player.canDoubleBuild; // Babylon B\n clone.playDiscardedNow = player.playDiscardedNow; // Halikarnassos\n clone.discounts = Array.prototype.slice.call(player.discounts);\n clone.canBuildForFree = Array.prototype.slice.call(player.canBuildForFree); // Olympia A\n clone.freeBuildTypes = Array.prototype.slice.call(player.freeBuildTypes);\n clone.victoryPoints = Array.prototype.slice.call(player.victoryPoints);\n clone.currentScore = Array.prototype.slice.call(player.currentScore);\n clone.scoreTotal = player.scoreTotal;\n\n return clone;\n });\n\n // Clockface\n for (var i = 0; clonedPlayers[i]; i++) {\n var player = clonedPlayers[i];\n player.east = clonedPlayers[(i + clonedPlayers.length - 1) % clonedPlayers.length];\n player.west = clonedPlayers[(i + clonedPlayers.length + 1) % clonedPlayers.length];\n }\n\n return clonedPlayers;\n};\n\n// TODO: Refactor this to be simpler since we can calculate current score now.\nconst guildCopyReward = function() {\n return function(player) {\n player.endGameRewards.push(function(player) {\n console.log('before', player.victoryPoints);\n var availableGuilds = player.east.built.filter(function(card) {\n return card.type === CardType.GUILD;\n }).concat(player.west.built.filter(function(card) {\n return card.type === CardType.GUILD;\n }));\n console.log('available guilds', availableGuilds);\n\n if (availableGuilds.length === 0) {\n return {type: Scoring.GUILD, points: 0};\n }\n\n var baseSciencePoints = calcScienceScore(player);\n\n // Count score for guilds using cloned player state\n // Get highest score\n var max = 0;\n var bestReward, bestGuild;\n for (var i = 0; i < availableGuilds.length; i++) {\n var currGuild = availableGuilds[i];\n console.log('trying', currGuild);\n var clonedPlayers = clonePlayers([player.east, player, player.west]);\n\n // Execute reward\n var points = 0;\n currGuild.rewards(clonedPlayers[1]);\n if (clonedPlayers[1].endGameRewards.length > 0) {\n points += clonedPlayers[1].endGameRewards[0](clonedPlayers[1]).points;\n }\n\n // Calculate science reward\n points += calcScienceScore(clonedPlayers[1]);\n console.log('points', points);\n if (points > max) {\n console.log('better than max!');\n max = points;\n if (clonedPlayers[1].endGameRewards.length > 0) {\n bestReward = clonedPlayers[1].endGameRewards[0];\n } else {\n bestReward = currGuild.rewards;\n }\n bestGuild = currGuild\n }\n }\n console.log('best reward', bestReward, bestGuild);\n return {type: Scoring.GUILD, points: max - baseSciencePoints};\n });\n };\n};\n\nconst WONDERS = [\n new Wonder('Alexandria', Resource.GLASS,\n new Card('AA1', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('AA2', 0, [[Resource.ORE, Resource.ORE]], CardType.WONDER, generatorReward(true, false), 0, 'Produces any resource.'),\n new Card('AA3', 0, [[Resource.GLASS, Resource.GLASS]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('AB1', 0, [[Resource.CLAY, Resource.CLAY]], CardType.WONDER, generatorReward(true, false), 0, 'Produces any resource.'),\n new Card('AB2', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, generatorReward(false, true), 0, 'Produces any goods.'),\n new Card('AB3', 0, [[Resource.STONE, Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.')\n ),\n new Wonder('Babylon', Resource.CLAY,\n new Card('BA1', 0, [[Resource.CLAY, Resource.CLAY]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('BA2', 0, [[Resource.WOOD, Resource.WOOD, Resource.WOOD]], CardType.WONDER, anyScienceReward(), 0, 'Enhances a science of your choice.'),\n new Card('BA3', 0, [[Resource.CLAY, Resource.CLAY, Resource.CLAY, Resource.CLAY]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('BB1', 0, [[Resource.CLOTH, Resource.CLAY]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('BB2', 0, [[Resource.GLASS, Resource.WOOD, Resource.WOOD]], CardType.WONDER, doubleBuildReward(), 0, 'Both cards may be played at the end of each age.'),\n new Card('BB3', 0, [[Resource.PAPER, Resource.CLAY, Resource.CLAY, Resource.CLAY]], CardType.WONDER, anyScienceReward(), 0, 'Enhances a science of your choice.')\n ),\n new Wonder('Ephesos', Resource.PAPER,\n new Card('EA1', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('EA2', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, goldReward(9), 0, 'Produces 9 gold.'),\n new Card('EA3', 0, [[Resource.PAPER, Resource.PAPER]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('EB1', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, multiReward(pointsReward(2, Scoring.WONDER), goldReward(4)), 0, 'Yields 2 victory points and 4 gold.'),\n new Card('EB2', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, multiReward(pointsReward(3, Scoring.WONDER), goldReward(4)), 0, 'Yields 3 victory points and 4 gold.'),\n new Card('EB3', 0, [[Resource.PAPER, Resource.CLOTH, Resource.GLASS]], CardType.WONDER, multiReward(pointsReward(5, Scoring.WONDER), goldReward(4)), 0, 'Yields 5 victory points and 4 gold.')\n ),\n new Wonder('Gizah', Resource.STONE,\n new Card('GA1', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('GA2', 0, [[Resource.WOOD, Resource.WOOD, Resource.WOOD]], CardType.WONDER, pointsReward(5, Scoring.WONDER), 0, 'Yields 5 victory points.'),\n new Card('GA3', 0, [[Resource.STONE, Resource.STONE, Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('GB1', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('GB2', 0, [[Resource.STONE, Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(5, Scoring.WONDER), 0, 'Yields 5 victory points.'),\n new Card('GB3', 0, [[Resource.CLAY, Resource.CLAY, Resource.CLAY]], CardType.WONDER, pointsReward(5, Scoring.WONDER), 0, 'Yields 5 victory points.'),\n new Card('GB4', 0, [[Resource.PAPER, Resource.STONE, Resource.STONE, Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.')\n ),\n new Wonder('Halikarnassos', Resource.CLOTH,\n new Card('HA1', 0, [[Resource.CLAY, Resource.CLAY]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('HA2', 0, [[Resource.ORE, Resource.ORE, Resource.ORE]], CardType.WONDER, discardedReward(), 0, 'Play a card from the discard pile for free.'),\n new Card('HA3', 0, [[Resource.CLOTH, Resource.CLOTH]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('HB1', 0, [[Resource.ORE, Resource.ORE]], CardType.WONDER, multiReward(pointsReward(2, Scoring.WONDER), discardedReward()), 0, 'Yields 2 victory points and allows playing of a card from the discard pile for free.'),\n new Card('HB2', 0, [[Resource.CLAY, Resource.CLAY, Resource.CLAY]], CardType.WONDER, multiReward(pointsReward(1, Scoring.WONDER), discardedReward()), 0, 'Yields 1 victory point and allows playing of a card from the discard pile for free.'),\n new Card('HB3', 0, [[Resource.GLASS, Resource.PAPER, Resource.CLOTH]], CardType.WONDER, discardedReward(), 0, 'Play a card from the discard pile for free.')\n ),\n new Wonder('Olympia', Resource.WOOD,\n new Card('OA1', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('OA2', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, freeBuildReward(), 0, 'Once per age, construct a building for free.'),\n new Card('OA3', 0, [[Resource.ORE, Resource.ORE]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('OB1', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, multiReward(tradeCostReward(TradeCost.RESOURCE_EAST), tradeCostReward(TradeCost.RESOURCE_WEST)), 0, 'Provides discounted resource trade with neighbours.'),\n new Card('OB2', 0, [[Resource.STONE, Resource.STONE]], CardType.WONDER, pointsReward(5, Scoring.WONDER), 0, 'Yields 5 victory points.'),\n new Card('OB3', 0, [[Resource.CLOTH, Resource.ORE, Resource.ORE]], CardType.WONDER, guildCopyReward(), 0, 'At the end of the game, copy one guild from a neighbour.')\n ),\n new Wonder('Rhodos', Resource.ORE,\n new Card('RA1', 0, [[Resource.WOOD, Resource.WOOD]], CardType.WONDER, pointsReward(3, Scoring.WONDER), 0, 'Yields 3 victory points.'),\n new Card('RA2', 0, [[Resource.CLAY, Resource.CLAY, Resource.CLAY]], CardType.WONDER, militaryReward(2), 0, 'Provides 2 units of military stength.'),\n new Card('RA3', 0, [[Resource.ORE, Resource.ORE, Resource.ORE, Resource.ORE]], CardType.WONDER, pointsReward(7, Scoring.WONDER), 0, 'Yields 7 victory points.'),\n new Card('RB1', 0, [[Resource.STONE, Resource.STONE, Resource.STONE]], CardType.WONDER, multiReward(militaryReward(1), pointsReward(3, Scoring.WONDER), goldReward(3)), 0, 'Yields 3 victory points, 3 gold and provides 1 unit of military stength.'),\n new Card('RB2', 0, [[Resource.ORE, Resource.ORE, Resource.ORE, Resource.ORE]], CardType.WONDER, multiReward(militaryReward(1), pointsReward(4, Scoring.WONDER), goldReward(4)), 0, 'Yields 4 victory points, 4 gold and provides 1 unit of military stength.')\n ),\n];\n\nconst typeDiscountReward = function() {\n var args = Array.prototype.slice.call(arguments);\n return function(player) {\n player.discounts = player.discounts.concat(args);\n };\n};\n\nconst LEADERS = [\n makeLeader('Alexander', 3, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.LEADER, points: player.battleTokens.filter((t) => t !== -1).length};\n });\n }, 'Yields 1 victory point for every victory token.'),\n makeLeader('Amytis', 4, complexReward(Scoring.LEADER, [CardType.WONDER], true, false, 0, 2), 'Yields 2 victory points for every wonder stage built.'),\n makeLeader('Archimedes', 4,\n typeDiscountReward(\n CardType.ACADEMICS, CardType.ENGINEERING, CardType.LITERATURE),\n 'Green cards cost one less resource.'),\n makeLeader('Aristotle', 3, (player) => {\n player.scienceSetBonus += 3;\n }, 'Yields 3 victory points for every completed set of Sciences.'),\n // Bilkis. Once per turn, resources may be purchased from the bank for 1 gold.\n makeLeader('Caesar', 5, militaryReward(2), 'Provides 2 units of military strength.'),\n makeLeader('Cleopatra', 4, pointsReward(5, Scoring.LEADER), 'Yields 5 victory points.'),\n makeLeader('Croesus', 1, goldReward(6), 'Produces 6 gold.'),\n // Diocletian. Wat.\n makeLeader('Euclid', 5, scienceReward(Science.ACADEMICS), 'Enchances academics.'),\n makeLeader('Hammurabi', 2, typeDiscountReward(CardType.VICTORY),\n 'Blue cards cost one less resource.'),\n makeLeader('Hannibal', 2, militaryReward(1), 'Provides 1 unit of military strength.'),\n // Hatshepsut. Whenever you pay a neighbor, gain 1 gold.\n makeLeader('Hiram', 3, complexReward(Scoring.LEADER, [CardType.GUILD], true, false, 0, 2), 'Yields 2 victory points for every purple card.'),\n makeLeader('Hypatia', 4, complexReward(Scoring.LEADER, [CardType.ACADEMICS, CardType.ENGINEERING, CardType.LITERATURE], true, false, 0, 1), 'Yields 1 victory point for every green card.'),\n makeLeader('Imhotep', 3, typeDiscountReward(CardType.WONDER),\n 'Wonder stages cost one less resource.'),\n makeLeader('Justinian', 3, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.LEADER, points: 3 * Math.min(\n countCards(player, [CardType.MILITARY]),\n countCards(player, [CardType.ACADEMICS, CardType.ENGINEERING, CardType.LITERATURE]),\n countCards(player, [CardType.VICTORY])\n )};\n });\n }, 'Yields 3 victory points for every set of Red, Blue and Green cards.'),\n makeLeader('Leonidas', 2, typeDiscountReward(CardType.MILITARY),\n 'Red cards cost one less resource.'),\n makeLeader('Louis', 4, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.LEADER, points: 7 - player.battleTokens.filter((t) => t !== -1).length};\n });\n }, 'Yields 7 victory points less 1 point for every victory token.'),\n makeLeader('Maecenas', 1, (player) => {\n player.freeBuildTypes.push(CardType.LEADER);\n }, 'White cards are free.'),\n makeLeader('Midas', 3, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.LEADER, points: Math.floor(player.gold / 3)};\n });\n }, 'Yields 1 victory point for every 3 gold.'),\n makeLeader('Nebuchadnezzar', 4, complexReward(Scoring.LEADER, [CardType.VICTORY], true, false, 0, 1), 'Yields 1 victory point for every blue card.'),\n makeLeader('Nefertiti', 3, pointsReward(4, Scoring.LEADER), 'Yields 4 victory points.'),\n // Nero. Whenever you gain a victory token, gain 2 gold.\n makeLeader('Pericles', 6, complexReward(Scoring.LEADER, [CardType.MILITARY], true, false, 0, 2), 'Yields 2 victory points for every red card.'),\n makeLeader('Phidias', 3, complexReward(Scoring.LEADER, [CardType.RESOURCE], true, false, 0, 1), 'Yields 1 victory point for every brown card.'),\n makeLeader('Plato', 4, (player) => {\n player.endGameRewards.push((player) => {\n return {type: Scoring.LEADER, points: 7 * Math.min(\n countCards(player, [CardType.RESOURCE]),\n countCards(player, [CardType.GOODS]),\n countCards(player, [CardType.VICTORY]),\n countCards(player, [CardType.COMMERCE]),\n countCards(player, [CardType.ACADEMICS, CardType.ENGINEERING, CardType.LITERATURE]),\n countCards(player, [CardType.MILITARY]),\n countCards(player, [CardType.GUILD])\n )};\n });\n }, 'Yields 7 victory points for every set of all Age cards.'),\n makeLeader('Praxiteles', 3, complexReward(Scoring.LEADER, [CardType.GOODS], true, false, 0, 2), 'Yields 2 victory points for every grey card.'),\n makeLeader('Ptolemy', 5, scienceReward(Science.LITERATURE), 'Enchances literature.'),\n makeLeader('Pythagoras', 5, scienceReward(Science.ENGINEERING), 'Enchances engineering.'),\n makeLeader('Ramses', 5, (player) => {\n player.freeBuildTypes.push(CardType.GUILD);\n }, 'Purple cards are free.'),\n makeLeader('Sappho', 1, pointsReward(2, Scoring.LEADER), 'Yields 2 victory points.'),\n // Semiramis. Wat.\n makeLeader('Solomon', 3, discardedReward(), 'Play a card from the discard pile for free.'),\n // Stevie. When building a wonder stage using Stevie, pay gold equal to the number of resources required instead.\n // Tomyris. Whenever you are to gain a defeat token, your neighbor takes it instead.\n makeLeader('Varro', 3, complexReward(Scoring.LEADER, [CardType.COMMERCE], true, false, 0, 1), 'Yields 1 victory point for every yellow card.'),\n // Vitruvius. Whenever you build an Age card by fulfilling its prerequisites, gain 2 gold.\n // Xenophon. Whenever you build a yellow card, gain 2 gold.\n makeLeader('Zenobia', 2, pointsReward(3, Scoring.LEADER), 'Yields 3 victory points.')\n];\n\nexport {\n AGE1DECK,\n AGE2DECK,\n AGE3DECK,\n WONDERS,\n LEADERS,\n Action,\n CardType,\n GameVariant,\n PlayerState,\n Resource,\n Scoring,\n TradeCost,\n calcScienceScore\n}\n","import React from 'react';\nimport './card.css';\n\n// TODO: Move these elsewhere?\nconst resourceSymbols = ['clay', 'stone', 'wood', 'ore', 'glass', 'cloth', 'paper'];\nconst backgroundColors = ['rgb(192,128,96)','rgb(192,192,192)','rgb(255,255,0)','rgb(128,0,128)','rgb(255,0,0)','rgb(0,128,0)','rgb(0,128,0)','rgb(0,128,0)','rgb(0,0,255)','rgb(255,255,255)'];\nconst unknownCardBackgroundColor = 'rgb(224, 224, 224)';\n\nconst Card = function(props) {\n const data = props.data;\n const cardBackUrl = process.env.REACT_APP_ASSET_URL_PREFIX + 'Assets/Age ' + data.age + '/Back.jpg';\n // Card is 'unknown' if we only know the back of the card.\n const isUnknownCard = data.type == null;\n const cardFrontUrl = isUnknownCard ? cardBackUrl :\n process.env.REACT_APP_ASSET_URL_PREFIX + 'Assets/Age ' + data.age + '/' + data.minPlayers + ' ' + data.name + '.jpg';\n let cardBack = '';\n if (props.faceDown) {\n cardBack = (\n
\n );\n }\n return (\n{data.tooltip}
\nName | \nPlayers | \nJoin | \n
---|
\n Welcome, {fakeAuth.name}! \n
\n ) : (\n\n Log in\n
\n )\n))\n\nconst LoginForm = withRouter(class extends Component {\n state = {\n name: fakeAuth.name || '',\n redirectToReferrer: false\n }\n\n login = () => {\n fakeAuth.logIn(this.state.name, () => {\n this.setState({ redirectToReferrer: true });\n });\n }\n\n updateName = (e) => {\n this.setState({ name: e.target.value });\n }\n\n render() {\n const { from } = this.props.location.state ||\n { from: { pathname: process.env.PUBLIC_URL + '/' } };\n const { redirectToReferrer, name } = this.state;\n\n if (redirectToReferrer) {\n return (\n