@jeremyckahn/farmhand 1.24.2 → 1.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/assets/{index-C9kG86vs.js → index-CUCDQafy.js} +6 -6
  2. package/dist/assets/{index-C9kG86vs.js.map → index-CUCDQafy.js.map} +1 -1
  3. package/dist/index.html +1 -1
  4. package/dist/service-worker.js +1 -1
  5. package/dist/service-worker.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/components/CowPen/Cow.tsx +50 -6
  8. package/src/img/animals/cows/cow-variation-1-blinking.piskel +1 -0
  9. package/src/img/animals/cows/cow-variation-1-blinking.png +0 -0
  10. package/src/img/animals/cows/cow-variation-2-blinking.piskel +1 -0
  11. package/src/img/animals/cows/cow-variation-2-blinking.png +0 -0
  12. package/src/img/animals/cows/cow-variation-3-blinking.piskel +1 -0
  13. package/src/img/animals/cows/cow-variation-3-blinking.png +0 -0
  14. package/src/img/animals/cows/cow-variation-4-blinking.piskel +1 -0
  15. package/src/img/animals/cows/cow-variation-4-blinking.png +0 -0
  16. package/src/img/animals/cows/cow-variation-5-blinking.piskel +1 -0
  17. package/src/img/animals/cows/cow-variation-5-blinking.png +0 -0
  18. package/src/img/animals/cows/cow-variation-6-blinking.piskel +1 -0
  19. package/src/img/animals/cows/cow-variation-6-blinking.png +0 -0
  20. package/src/img/animals/cows/cow-variation-7-blinking.piskel +1 -0
  21. package/src/img/animals/cows/cow-variation-7-blinking.png +0 -0
  22. package/src/img/animals/cows/rainbow-cow-blinking.piskel +1 -0
  23. package/src/img/animals/cows/rainbow-cow-blinking.png +0 -0
  24. package/src/img/index.ts +21 -0
  25. package/src/utils/__snapshots__/getCowImage.test.ts.snap +2 -0
  26. package/src/utils/getCowImage.test.ts +14 -0
  27. package/src/utils/getCowImage.ts +20 -6
@@ -150,7 +150,7 @@ You earned: ${L}`,LOAN_PAYOFF=F=>`You paid off your loan to the bank! You're fin
150
150
  `;return Object.keys(I).sort().forEach(F=>L+=` - ${I[F]} ${F}${I[F]>1?`s`:``}
151
151
  `),L},NEW_COW_OFFERED_FOR_TRADE=(F,I)=>`A new cow is being offered for trade by ${getPlayerName(I.playerId)}!`,FOREST_EXPANDED=(F,I)=>`The Forest has expanded! You can now plant up to ${I} trees.`,EXPERIENCE_GAUGE_TOOLTIP_LABEL=(F,I,L)=>I===1?`Just 1 more experience point needed to reach level ${integerString(L)}!`:`${integerString(I)} more experience points needed to reach level ${integerString(L)}`,inventorySpaceConsumed=memoize(F=>F.reduce((F,{quantity:I=0})=>F+I,0),{}),inventorySpaceRemaining=({inventory:F,inventoryLimit:I})=>I===-1?1/0:Math.max(0,I-inventorySpaceConsumed(F)),addItemToInventory=(F,I,L=1,R=!1)=>{let{id:z}=I,De=[...F.inventory],Oe=R?L:Math.min(L,inventorySpaceRemaining(F));if(Oe===0)return F;let ke=De.findIndex(({id:F})=>z===F);if(~ke){let F=De[ke];De[ke]={...F,quantity:F.quantity+Oe}}else De.push({id:z,quantity:Oe});return{...F,inventory:De}},showNotification=(F,I,L=`info`,R=void 0,z=void 0)=>{let{showNotifications:De,todaysNotifications:Oe}=F;return{...F,...De&&{latestNotification:{message:I,onClick:R,actionLabel:z,severity:L}},todaysNotifications:Oe.find(F=>F.message===I)?Oe:Oe.concat({message:I,onClick:R,actionLabel:z,severity:L})}},unlockTool=(F,I)=>{let{toolLevels:L}=F;return L[I]===toolLevel.UNAVAILABLE?{...F,toolLevels:{...L,[I]:toolLevel.DEFAULT}}:F},processLevelUp=(F,I)=>{let{experience:L,selectedItemId:R}=F,z=levelAchieved(L);for(let De=z;De>I;De--){let I=levels[De]||{},z;if(Object.keys(I).length<2)z=getRandomLevelUpReward(De),F=addItemToInventory(F,z,getRandomLevelUpRewardQuantity(De),!0);else if(I?.unlocksTool)for(let L of I.unlocksTool)F=unlockTool(F,L);else if(I&&I.increasesSprinklerRange&&R===`sprinkler`){let{sprinklerRange:I}=getLevelEntitlements(levelAchieved(L));I>F.hoveredPlotRangeSize&&(F={...F,hoveredPlotRangeSize:I})}F=showNotification(F,LEVEL_GAINED_NOTIFICATION(``,De,z),`success`)}return F},addExperience=(F,I)=>{let{experience:L}=F,R=levelAchieved(L),z={...F,experience:L+I};return z=processLevelUp(z,R),z},addPeer=(F,I)=>{let L={...F.peers};return L[I]=null,{...F,peers:L,activePlayers:(F.activePlayers??1)+1}},addRevenue=(F,I)=>{let{money:L,revenue:R,todaysRevenue:z}=F;return{...F,money:moneyTotal(L,I),revenue:moneyTotal(R,I),todaysRevenue:moneyTotal(z,I)}},adjustLoan=(F,I)=>{let L=moneyTotal(F.loanBalance,I),R=moneyTotal(F.money,I);return L===0&&I<0?F=showNotification(F,LOAN_PAYOFF(),`success`):I>0&&(F={...showNotification(F,LOAN_INCREASED(``,L),`info`),loansTakenOut:F.loansTakenOut+1}),{...F,loanBalance:L,money:R}},getInventoryQuantityMap=memoize(F=>F.reduce((F,{id:I,quantity:L})=>(F[I]=L,F),{})),shouldStormToday=()=>random$1(randomStream.STORM)<STORM_CHANCE,getPlotContentType=({itemId:F})=>F?itemsMap[F].type:null,memoizationSerializer=F=>JSON.stringify([...F].map(F=>typeof F==`function`?F.toString():F)),findInField=memoize((F,I)=>{for(let L of F)for(let F of L)if(I(F))return F;return null},{serializer:memoizationSerializer}),setWasWateredProperty=(F,I)=>F===null?null:getPlotContentType(F)===itemType.CROP?{...F,wasWateredToday:I}:{...F},setWasWatered=F=>setWasWateredProperty(F,!0),fieldHasScarecrow=F=>!!(F&&findInField(F,plotContainsScarecrow)),applyChanceEvent=(F,I)=>F.reduce((F,[I,L])=>I()?L(F):F,I),plotContainsScarecrow=F=>!!(F&&F.itemId===`scarecrow`),applyDestructionYield=(F,I)=>I?.destructionYield?addItemToInventory(F,itemsMap[I.destructionYield.itemId],I.destructionYield.quantity):F,plotContainsLightningRod=F=>!!(F&&itemsMap[F.itemId]?.type===itemType.LIGHTNING_ROD),fieldHasLightningRod=F=>!!(F&&findInField(F,plotContainsLightningRod));function updateField(F,I){return F.map((F,L)=>F.map((F,R)=>I(F,R,L)))}var decrementItemFromInventory=(F,I,L=1)=>{let R=[...F.inventory],z=R.findIndex(({id:F})=>F===I);if(z===-1)return F;let{quantity:De}=R[z];return De>L?R[z]={...R[z],quantity:De-L}:R.splice(z,1),{...F,inventory:R}},waterField=F=>({...F,field:updateField(F.field,setWasWatered)}),applyPrecipitation=F=>{let{field:I}=F,L=0,R,z=[],De=[];if(shouldStormToday())if(fieldHasLightningRod(I)){let L={...getInventoryQuantityMap(F.inventory)},Oe=!1,ke=!1;I=updateField(I,F=>{if(!F||!plotContainsLightningRod(F))return F;let I=itemsMap[F.itemId],R=(F.lightningStrikesSustained??0)+1;if(R>=(I.lightningStrikeCapacity??1/0)){let R=L[F.itemId]||0;return F.fertilizerType===fertilizerType.RAINBOW&&R>0?(L[F.itemId]=R-1,De.push(F.itemId),ke=!0,{...F,lightningStrikesSustained:0}):(Oe=!0,z.push(I),null)}return{...F,lightningStrikesSustained:R}}),R={message:Oe?LIGHTNING_ROD_DESTROYED_MESSAGE:ke?LIGHTNING_ROD_REPLANTED_MESSAGE:LIGHTNING_ROD_STRUCK_MESSAGE,severity:Oe?`error`:ke?`success`:`info`}}else if(fieldHasScarecrow(I)){R={message:STORM_DESTROYS_SCARECROWS_MESSAGE,severity:`error`};let{scarecrow:z=0}=getInventoryQuantityMap(F.inventory);I=updateField(I,F=>plotContainsScarecrow(F)?z&&F&&F.fertilizerType===fertilizerType.RAINBOW?(z--,L++,F):null:F)}else R={message:STORM_MESSAGE,severity:`info`};else R={message:RAIN_MESSAGE,severity:`info`};F=decrementItemFromInventory({...F,field:I},`scarecrow`,L);for(let I of De)F=decrementItemFromInventory(F,I);for(let I of z)F=applyDestructionYield(F,I);return F={...F,newDayNotifications:[...F.newDayNotifications,R]},F=waterField(F),F},areHuggingMachinesInInventory=memoize(F=>F.some(({id:F})=>F===HUGGING_MACHINE_ITEM_ID)),findCowById=memoize((F,I)=>F.find(F=>I===F.id)),modifyCow=(F,I,L)=>{let R=findCowById(F.cowInventory,I);if(!R)return F;let z=[...F.cowInventory],De=z.indexOf(R);return z[De]={...R,...L(R)},{...F,cowInventory:z}},changeCowAutomaticHugState=(F,I,L)=>L&&(I.isUsingHuggingMachine||!areHuggingMachinesInInventory(F.inventory))?F:(F=modifyCow(F,I.id,F=>({...F,isUsingHuggingMachine:L})),F=L?decrementItemFromInventory(F,HUGGING_MACHINE_ITEM_ID):addItemToInventory(F,itemsMap[HUGGING_MACHINE_ITEM_ID]),F),cowCanBeAdded=(F,I,L)=>{let{cowId1:R,cowId2:z}=I,De=R!==null&&z!==null,Oe=R===F.id||z===F.id;return!!L.find(({id:I})=>I===F.id)&&!De&&!Oe},changeCowBreedingPenResident=(F,I,L)=>{let{cowBreedingPen:R,cowInventory:z}=F,{cowId1:De,cowId2:Oe}=R,ke=De===I.id||Oe===I.id,Ae={...R};if(L&&!cowCanBeAdded(I,R,z)||!L&&!ke)return F;if(L){let F=De===null?`cowId1`:`cowId2`;Ae={...Ae,[F]:I.id}}else De===I.id&&(Ae={...Ae,cowId1:Ae.cowId2}),Ae={...Ae,cowId2:null};return{...F,cowBreedingPen:{...Ae,daysUntilBirth:3}}},changeCowName=(F,I,L)=>modifyCow(F,I,()=>({name:L.slice(0,30)})),doesInventorySpaceRemain=F=>inventorySpaceRemaining(F)>0,getChopWoodYieldRange=(F,I)=>{let L=AXE_WOOD_YIELD_RANGE[F];if(!L)return null;let[R,z]=L;return I?[R,z]:[Math.max(1,Math.floor(R/2)),Math.max(1,Math.floor(z/2))]},{SEED:SEED$5,GROWN:GROWN$11}=cropLifeStage,getFruitLifeStage=(F,I)=>{if((I??getTreeLifeStage(F))!==GROWN$11)return SEED$5;let{itemId:L,daysSinceLastHarvest:R=0}=F,z=itemsMap[L];if(!z)throw Error(`${L} is not a valid item`);let{fruitTimeline:De}=z;if(!De)throw Error(`${L} has no fruitTimeline`);return getLifeStageForTimeline(De,R)},modifyForestPlotAt=(F,I,L,R)=>{let{forest:z}=F,De=z[L];if(!De)return F;let Oe=[...De];Oe[I]=R(Oe[I]);let ke=[...z];return ke[L]=Oe,{...F,forest:ke}},{GROWN:GROWN$10}=cropLifeStage,{DEAD:DEAD$2}=treeLifeStage,{UNAVAILABLE:UNAVAILABLE$1}=toolLevel,getWoodYield=(F,I)=>{let L=getChopWoodYieldRange(F,I);if(!L)return 0;let[R,z]=L;return R+Math.floor(random$1()*(z-R+1))},chopForestPlot=(F,I,L)=>{let R=F.forest[L]?.[I];if(!isPlantedTree(R)||F.toolLevels[toolType.AXE]===UNAVAILABLE$1||!doesInventorySpaceRemain(F))return F;let z=getTreeLifeStage(R);if(getFruitLifeStage(R,z)===GROWN$10){let I=itemsMap[R.itemId];I&&(F=addItemToInventory(F,I),F={...F,treeFruitsHarvested:{...F.treeFruitsHarvested,[I.id]:(F.treeFruitsHarvested[I.id]||0)+1}})}let De=itemsMap.wood;if(De){let I=getWoodYield(F.toolLevels[toolType.AXE],z===GROWN$10||z===DEAD$2);I>0&&(F=addItemToInventory(F,De,I))}return F={...F,treesChopped:F.treesChopped+1},modifyForestPlotAt(F,I,L,()=>null)},{SEED:SEED$4,GROWING:GROWING$2,GROWN:GROWN$9}=cropLifeStage,getCropLifeStage=F=>{let{itemId:I,daysWatered:L=0}=F,{cropTimeline:R}=itemsMap[I];if(!R)throw Error(`${I} has no cropTimeline`);return getLifeStageRange(R)[Math.floor(L)]||GROWN$9},getSeedItemIdFromFinalStageCropItemId=memoize(F=>{let I=Object.values(itemsMap).find(I=>{let{growsInto:L}=I;return Array.isArray(L)?L.includes(F):L===F})?.id;if(!I)throw Error(`Crop item ID ${F} does not have a corresponding seed`);return I},{cacheSize:Object.keys(itemsMap).length}),modifyFieldPlotAt=(F,I,L,R)=>{let{field:z}=F,De=[...z[L]];De[I]=R(De[I]);let Oe=[...z];return Oe[L]=De,{...F,field:Oe}},removeFieldPlotAt=(F,I,L)=>modifyFieldPlotAt(F,I,L,()=>null),{GROWN:GROWN$8}=cropLifeStage,clearPlot=(F,I,L)=>{let R=F.field[L][I],z=F.toolLevels[toolType.HOE];if(!R||R.isShoveled)return F;if(getPlotContentType(R)===itemType.LIGHTNING_ROD){let z=itemsMap[R.itemId];return F=removeFieldPlotAt(F,I,L),R.lightningStrikesSustained?F:applyDestructionYield(F,z)}if(getPlotContentType(R)===itemType.CROP&&getCropLifeStage(R)!==GROWN$8&&randomNumberService.isRandomNumberLessThan(HOE_LEVEL_TO_SEED_RECLAIM_RATE[z]||0)){let I=getSeedItemIdFromFinalStageCropItemId(R.itemId);F=addItemToInventory(F,itemsMap[I])}let De=itemsMap[R.itemId];return De.isReplantable&&!doesInventorySpaceRemain(F)?F:(F=removeFieldPlotAt(F,I,L),De.isReplantable||getPlotContentType(R)===itemType.WEED||getCropLifeStage(R)===GROWN$8?addItemToInventory(F,De):F)},computeCowInventoryForNextDay=F=>({...F,cowInventory:F.cowInventory.map(F=>({...F,daysOld:F.daysOld+1,daysSinceMilking:F.daysSinceMilking+1,daysSinceProducingFertilizer:(F.daysSinceProducingFertilizer||0)+1,happiness:Math.max(0,F.isUsingHuggingMachine?Math.min(1,F.happiness+2*COW_HUG_BENEFIT):F.happiness-COW_HUG_BENEFIT),happinessBoostsToday:F.isUsingHuggingMachine?3:0}))}),byteToHex=[];for(let F=0;F<256;++F)byteToHex.push((F+256).toString(16).slice(1));function unsafeStringify(F,I=0){return(byteToHex[F[I+0]]+byteToHex[F[I+1]]+byteToHex[F[I+2]]+byteToHex[F[I+3]]+`-`+byteToHex[F[I+4]]+byteToHex[F[I+5]]+`-`+byteToHex[F[I+6]]+byteToHex[F[I+7]]+`-`+byteToHex[F[I+8]]+byteToHex[F[I+9]]+`-`+byteToHex[F[I+10]]+byteToHex[F[I+11]]+byteToHex[F[I+12]]+byteToHex[F[I+13]]+byteToHex[F[I+14]]+byteToHex[F[I+15]]).toLowerCase()}var rnds8=new Uint8Array(16);function rng(){return crypto.getRandomValues(rnds8)}function v4(F,I,L){return!I&&!F&&crypto.randomUUID?crypto.randomUUID():_v4(F,I,L)}function _v4(F,I,L){F||={};let R=F.random??F.rng?.()??rng();if(R.length<16)throw Error(`Random bytes length must be >= 16`);if(R[6]=R[6]&15|64,R[8]=R[8]&63|128,I){if(L||=0,L<0||L+16>I.length)throw RangeError(`UUID byte range ${L}:${L+15} is out of buffer bounds`);for(let F=0;F<16;++F)I[L+F]=R[F];return I}return unsafeStringify(R)}var generateCow=(F={})=>{let I=F.gender||chooseRandom(Object.values(genders)),L=F.color||chooseRandom(Object.values(standardCowColors)),R=F.id||v4(),z={baseWeight:Math.round(COW_STARTING_WEIGHT_BASE*(I===genders.MALE?MALE_COW_WEIGHT_MULTIPLIER:1)-200+random$1()*400),color:L,colorsInBloodline:{[L]:!0},daysOld:1,daysSinceMilking:0,daysSinceProducingFertilizer:0,gender:I,happiness:0,happinessBoostsToday:0,id:R,isBred:!1,isUsingHuggingMachine:!1,name:``,ownerId:``,originalOwnerId:``,timesTraded:0,weightMultiplier:1,...F};return z.name=getDefaultCowName(z),z},castToMoney=F=>Math.round(F*100)/100,applyLoanInterest=F=>{let I=moneyTotal(F.loanBalance,castToMoney(F.loanBalance*LOAN_INTEREST_RATE)),L=I>0?[...F.newDayNotifications,{severity:`warning`,message:LOAN_BALANCE_NOTIFICATION(``,I)}]:F.newDayNotifications;return{...F,loanBalance:I,newDayNotifications:L}},getPriceEventForCrop=F=>({itemId:F.id,daysRemaining:getCropLifecycleDuration(F)-1}),getFinalCropItemIdFromSeedItemId=(F,I=0)=>{let{growsInto:L}=itemsMap[F];return Array.isArray(L)?L[I]:L},getRandomUnlockedCrop=(F,I)=>{let L=chooseRandom(F,I),R=itemsMap[L],z=getFinalCropItemIdFromSeedItemId(L,Array.isArray(R.growsInto)?chooseRandomIndex(R.growsInto,I):0);if(!z)throw Error(`Seed item ID ${L} has no corresponding final crop ID`);return itemsMap[z]},createPriceEvent=(F,I,L)=>({...F,[L]:{...F[L],[I.itemId]:I}}),TYPE_CRASH=`priceCrashes`,TYPE_SURGE=`priceSurges`,generatePriceEvents=F=>{let I={...F.priceCrashes},L={...F.priceSurges},R=[...F.newDayNotifications],z;if(random$1(randomStream.PRICE_EVENT_CHANCE)<.2){let{items:De}=getLevelEntitlements(levelAchieved(F.experience)),Oe=getRandomUnlockedCrop(filterItemIdsToSeeds(Object.keys(De)),randomStream.PRICE_EVENT_CROP),{id:ke}=Oe;if(!(I[ke]||L[ke])){let I=random$1(randomStream.PRICE_EVENT_TYPE)<.5?TYPE_CRASH:TYPE_SURGE;z=createPriceEvent(F,getPriceEventForCrop(Oe),I),R.push(I===TYPE_CRASH?{message:PRICE_CRASH(``,Oe),severity:`warning`}:{message:PRICE_SURGE(``,Oe),severity:`success`})}}return{...F,...z,newDayNotifications:R}},WineService=class{maturityDayMultiplier=3;getDaysToMature=F=>wineVarietyValueMap[F]*this.maturityDayMultiplier;isWineRecipe=F=>`recipeType`in F&&F.recipeType===recipeType.WINE;getMaxWineYield=({grape:F,inventory:I,cellarInventory:L,cellarSize:R})=>{let{[F.id]:z=0,[itemsMap.yeast?.id??``]:De=0}=getInventoryQuantityMap(I),Oe=R-L.length,ke=Math.floor(z/50),Ae=Math.floor(De/getYeastRequiredForWine(F.variety));return Math.min(Oe,ke,Ae)}},wineService=new WineService,getKegDisplayName=F=>wineService.isWineRecipe(F)?F.name:FERMENTED_CROP_NAME(``,F),CellarService=class{_uuid=v4;getItemInstancesInCellar=memoize((F,I)=>F.filter(F=>F.itemId===I.id).length,{cacheSize:Object.keys(fermentableItemsMap).length});generateKeg=F=>{let I={id:this._uuid(),itemId:F.id,daysUntilMature:F.daysToFerment??0};return wineService.isWineRecipe(F)&&(I.daysUntilMature=getYeastRequiredForWine(F.variety)),I};doesCellarSpaceRemain=(F,I)=>F.length<(PURCHASEABLE_CELLARS.get(I)?.space??0);doesKegSpoil=F=>{let I=itemsMap[F.itemId];return!wineService.isWineRecipe(I)}},cellarService=new CellarService,getKegSpoilageRate=F=>!cellarService.doesKegSpoil(F)||F.daysUntilMature>0?0:Math.abs(F.daysUntilMature)*KEG_SPOILAGE_RATE_MULTIPLIER,removeKegFromCellar=(F,I)=>{let{cellarInventory:L}=F,R=L.findIndex(({id:F})=>F===I);if(R===-1)return console.error(`removeKegFromCellar: kegId ${I} not found`),F;let z=[...L.slice(0,R),...L.slice(R+1,L.length)];return F={...F,cellarInventory:z},F},processCellarSpoilage=F=>{let{cellarInventory:I}=F,L=[...I];for(let I=L.length-1;I>-1;I--){let R=L[I],z=itemsMap[R.itemId],De=getKegSpoilageRate(R);!wineService.isWineRecipe(z)&&randomNumberService.isRandomNumberLessThan(De)&&(F=removeKegFromCellar(F,R.id),F={...F,newDayNotifications:[...F.newDayNotifications,{message:KEG_SPOILED_MESSAGE`${R}`,severity:`error`}]})}return F={...F},F},processCellar=F=>{F=processCellarSpoilage(F);let{cellarInventory:I}=F,L=[...I],R={};for(let F=0;F<L.length;F++){let I=L[F],z=I.daysUntilMature-1,De=itemsMap[I.itemId];if(wineService.isWineRecipe(De)&&I.daysUntilMature>0&&z<=0){let F=getKegDisplayName(De);R[F]=(R[F]||0)+1}L[F]={...I,daysUntilMature:z}}let z=[...F.newDayNotifications];return Object.keys(R).length&&z.push({message:KEGS_READY_TO_SELL(``,R),severity:`success`}),F={...F,cellarInventory:L,newDayNotifications:z},F},removeCowFromInventory=(F,I)=>{let L=[...F.cowInventory],{isUsingHuggingMachine:R}=I;return L.splice(L.indexOf(I),1),R&&(F=addItemToInventory(F,itemsMap[HUGGING_MACHINE_ITEM_ID])),F=changeCowBreedingPenResident(F,I,!1),{...F,cowInventory:L}},processCowAttrition=F=>{let I=[...F.newDayNotifications],L=[...F.cowInventory];for(let R=0;R<L.length;R++){let z=L[R];Number(z.weightMultiplier.toFixed(2))===.5&&(F=removeCowFromInventory(F,z),I.push({message:COW_ATTRITION_MESSAGE(``,z),severity:`error`}))}return{...F,newDayNotifications:I}},generateOffspringCow=(F,I,L,R={})=>{if(F.gender===I.gender)throw Error(`${JSON.stringify(F)} ${JSON.stringify(I)} cannot produce offspring because they have the same gender`);let z=F.gender===genders.MALE?F:I,De=F.gender===genders.MALE?I:F,Oe={[z.color]:!0,[De.color]:!0,...z.colorsInBloodline,...De.colorsInBloodline};return delete Oe[cowColors.RAINBOW],generateCow({color:Object.keys(Oe).length===Object.keys(standardCowColors).length?cowColors.RAINBOW:chooseRandom([De.color,z.color]),colorsInBloodline:Oe,baseWeight:(z.baseWeight+De.baseWeight)/2,isBred:!0,ownerId:L,originalOwnerId:L,...R})},processCowBreeding=F=>{let{cowBreedingPen:I,cowInventory:L,playerId:R,newDayNotifications:z,purchasedCowPen:De}=F,{cowId1:Oe,cowId2:ke}=I;if(!ke)return F;let Ae=Oe?findCowById(L,Oe):null,je=ke?findCowById(L,ke):null;if(!Ae||!je||Ae.gender===je.gender)return F;let Me=Ae.happiness>=.8&&je.happiness>=.8?I.daysUntilBirth-1:3,Ne=PURCHASEABLE_COW_PENS.get(De),Pe=Ne&&L.length<Ne.cows&&Me===0,Fe=Pe?generateOffspringCow(Ae,je,R):null;if(Fe){let I=Fe.color===cowColors.RAINBOW?EXPERIENCE_VALUES.RAINBOW_COW_BRED:EXPERIENCE_VALUES.COW_BRED;F=addExperience(F,I)}return{...F,cowInventory:Pe&&Fe?[...L,Fe]:L,cowBreedingPen:{...I,daysUntilBirth:Pe?3:Me},newDayNotifications:Fe?[...z,{message:COW_BORN_MESSAGE(``,Ae,je,Fe),severity:`success`}]:z}},getCowFertilizerItem=({color:F})=>itemsMap[F===cowColors.RAINBOW?`rainbow-fertilizer`:`fertilizer`],scaleNumber=(F,I,L,R,z)=>(F-I)*(z-R)/(L-I)+R,getCowFertilizerProductionRate=F=>F.gender===genders.MALE?scaleNumber(F.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,1):1/0,processCowFertilizerProduction=F=>{let I=[...F.cowInventory],L=[...F.newDayNotifications],{length:R}=I,z={},De=F.hasProducedRainbowFertilizer;for(let L=0;L<R;L++){let R=I[L];if((R.daysSinceProducingFertilizer||0)>getCowFertilizerProductionRate(R)){I[L]={...R,daysSinceProducingFertilizer:0};let Oe=getCowFertilizerItem(R),{name:ke}=Oe;if(!doesInventorySpaceRemain(F))break;z[ke]=(z[ke]||0)+1,F=addItemToInventory(F,Oe),Oe.id===`rainbow-fertilizer`&&(De=!0)}}return Object.keys(z).length&&L.push({message:FERTILIZERS_PRODUCED(``,z),severity:`success`}),{...F,cowInventory:I,hasProducedRainbowFertilizer:De,newDayNotifications:L}},clampNumber=(F,I,L)=>F<=I?I:F>=L?L:F,processFeedingCows=F=>{let I=[...F.cowInventory],{length:L}=I,R=[...F.newDayNotifications],z=[...F.inventory],De=z[z.findIndex(({id:F})=>F===COW_FEED_ITEM_ID)],Oe=De?De.quantity:0,ke=0;for(let F=0;F<L;F++){let L=I[F],R=ke<Oe;I[F]={...L,weightMultiplier:clampNumber(R?L.weightMultiplier+COW_WEIGHT_MULTIPLIER_FEED_BENEFIT:L.weightMultiplier-COW_WEIGHT_MULTIPLIER_FEED_BENEFIT,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM)},R&&ke++}return Oe<=L&&L>0&&R.push({message:OUT_OF_COW_FEED_NOTIFICATION,severity:`error`}),decrementItemFromInventory({...F,cowInventory:I,inventory:z,newDayNotifications:R},COW_FEED_ITEM_ID,ke)},incrementPlotContentAge=F=>F&&getPlotContentType(F)===itemType.CROP?{...F,daysOld:(F.daysOld||0)+1,daysWatered:(F.daysWatered||0)+(F.wasWateredToday?1+(F.fertilizerType===fertilizerType.NONE?0:FERTILIZER_BONUS):0)}:F,updatePlotShoveledState=F=>F&&F.isShoveled&&F.daysUntilClear!==void 0&&F.daysUntilClear>1?{...F,daysUntilClear:F.daysUntilClear-1}:F&&!F.isShoveled?F:null,getPlotContentFromItemId=F=>({itemId:F,fertilizerType:fertilizerType.NONE});function spawnWeeds(F){if(F)return F;let I=null;return randomNumberService.isRandomNumberLessThan(.15)&&(I=getPlotContentFromItemId(weed.id)),I}var fieldReducer=(F,I)=>I(F),resetWasWatered=F=>setWasWateredProperty(F,!1),fieldUpdaters=[incrementPlotContentAge,resetWasWatered,spawnWeeds,updatePlotShoveledState],processField=F=>({...F,field:updateField(F.field,F=>fieldUpdaters.reduce(fieldReducer,F))}),{GROWN:GROWN$7}=cropLifeStage,{NONE:NONE$2,RAINBOW:RAINBOW$1}=fertilizerType,incrementTreeAge=F=>{if(!F)return null;let I=F.daysOld+1;if(!isPlantedTree(F))return{...F,daysOld:I};let L=F.fertilizerType!=null&&F.fertilizerType!==NONE$2,R=F.fertilizerType===RAINBOW$1,z=(F.daysGrown??F.daysOld)+(L?1+FERTILIZER_BONUS:1),De={...F,daysOld:I,daysGrown:z};return{...De,daysSinceLastHarvest:getTreeLifeStage(De)===GROWN$7?De.daysSinceLastHarvest+(R?1+FERTILIZER_BONUS:1):De.daysSinceLastHarvest}},processForest=F=>{let I=F.forest.map(F=>F.map(incrementTreeAge)),L={};I.forEach((I,R)=>I.forEach((I,z)=>{let De=F.forest[R]?.[z];if(!isPlantedTree(De)||!isPlantedTree(I)||getFruitLifeStage(De)===GROWN$7||getFruitLifeStage(I)!==GROWN$7)return;let{name:Oe}=itemsMap[I.itemId]??{};Oe&&(L[Oe]=(L[Oe]||0)+1)}));let R=[...F.newDayNotifications];return Object.keys(L).length&&R.push({message:FRUIT_READY_TO_HARVEST(``,L),severity:`success`}),{...F,forest:I,newDayNotifications:R}},getCowMilkItem=({color:F,happiness:I})=>{if(F===cowColors.BROWN)return chocolateMilk;let L=F===cowColors.RAINBOW;return I<1/3?L?rainbowMilk1:milk1:I<2/3?L?rainbowMilk2:milk2:L?rainbowMilk3:milk3},getCowMilkRate=F=>F.gender===genders.FEMALE?scaleNumber(F.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,2):1/0,processMilkingCows=F=>{let I=[...F.cowInventory],L=[...F.newDayNotifications],{length:R}=I,z={};for(let L=0;L<R;L++){let R=I[L];if(R.daysSinceMilking>getCowMilkRate(R)){I[L]={...R,daysSinceMilking:0};let De=getCowMilkItem(R),{name:Oe}=De;if(!doesInventorySpaceRemain(F))break;z[Oe]=(z[Oe]||0)+1,F=addItemToInventory(F,De)}}return Object.keys(z).length&&L.push({message:MILKS_PRODUCED(``,z),severity:`success`}),{...F,cowInventory:I,newDayNotifications:L}},doesPlotContainCrop=F=>F!==null&&getPlotContentType(F)===itemType.CROP;function forEachPlot(F,I){F.field.forEach((F,L)=>F.forEach((F,R)=>I(F,R,L)))}var applyCrows=F=>{let{field:I,purchasedField:L}=F;if(fieldHasScarecrow(I)||randomNumberService.isRandomNumberLessThan(.6))return F;let R=[...F.newDayNotifications],z=[],De=[];forEachPlot(F,(I,L,R)=>{doesPlotContainCrop(F.field[R][L])&&De.push({x:L,y:R})});let Oe=Math.min(De.length,Math.floor(random$1()*(L+1)*5)),ke=0;for(let I=0;I<Oe;I++){let I=Math.floor(random$1()*De.length),L=De.splice(I,1)[0];F=modifyFieldPlotAt(F,L.x,L.y,()=>null),ke+=1}return ke>0&&z.push(CROWS_DESTROYED(``,ke)),z.length&&R.push({message:z.join(`
152
152
 
153
- `),severity:`error`}),{...F,newDayNotifications:R}},processNerfs=F=>applyChanceEvent([[()=>!0,applyCrows]],F),getRangeCoords=(F,I,L)=>{let R=2*F+1,z=I-F,De=L-F;return Array(R).fill(null).map((F,I)=>Array(R).fill(null).map((F,L)=>({x:z+L,y:De+I})))},processSprinklers=F=>{let{field:I,experience:L}=F,R=new Map,z=[...I],{sprinklerRange:De}=getLevelEntitlements(levelAchieved(L));return I.forEach((L,Oe)=>{L.forEach((L,ke)=>{!L||getPlotContentType(L)!==itemType.SPRINKLER||getRangeCoords(De,ke,Oe).flat().forEach(({x:L,y:De})=>{let Oe=I[De];if(!Oe)return;let ke=Oe[L];ke&&getPlotContentType(ke)===itemType.CROP&&(R.has(ke)||(z=modifyFieldPlotAt({...F,field:z},L,De,setWasWatered).field),R.set(ke,{x:L,y:De}))})})}),{...F,field:z}},shouldPrecipitateToday=()=>random$1(randomStream.PRECIPITATION)<PRECIPITATION_CHANCE,processWeather=F=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],F),rotateNotificationLogs=F=>{let I=[...F.notificationLog],{dayCount:L,newDayNotifications:R}=F,z={error:[],info:[],success:[],warning:[]};return R.forEach(({message:F,severity:I})=>z[I].push(F)),R.length&&I.unshift({day:L,notifications:z}),I.length=Math.min(I.length,14),{...F,notificationLog:I}},get7DayAverage=F=>F.reduce((F,I)=>moneyTotal(F,I),0)/7,getProfit=(F,I)=>moneyTotal(F,I),updateFinancialRecords=F=>{let{profitabilityStreak:I,todaysLosses:L,todaysRevenue:R,record7dayProfitAverage:z,recordProfitabilityStreak:De}=F,{historicalDailyLosses:Oe,historicalDailyRevenue:ke,recordSingleDayProfit:Ae}=F;Oe=[L,...Oe].slice(0,7),ke=[R,...ke].slice(0,7);let je=get7DayAverage(Oe.map((F,I)=>moneyTotal(ke[I],F))),Me=R+L>0?I+1:0;return{...F,historicalDailyLosses:Oe,historicalDailyRevenue:ke,profitabilityStreak:Me,record7dayProfitAverage:Math.max(z,je),recordProfitabilityStreak:Math.max(De,Me),recordSingleDayProfit:Math.max(Ae,getProfit(R,L)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=F=>({...F,todaysPurchases:{},todaysStartingInventory:F.inventory.reduce((F,{id:I,quantity:L})=>(F[I]=L,F),{})}),decrementPriceEventDays=F=>Object.keys(F).reduce((I,L)=>{let R=F[L];if(!R)return I;let{itemId:z,daysRemaining:De}=R;return De>1&&(I[L]={itemId:z,daysRemaining:De-1}),I},{}),updatePriceEvents=F=>{let{priceCrashes:I,priceSurges:L}=F;return{...F,priceCrashes:decrementPriceEventDays(I),priceSurges:decrementPriceEventDays(L)}},adjustItemValues=F=>({...F,historicalValueAdjustments:[F.valueAdjustments],valueAdjustments:generateValueAdjustments(F.priceCrashes,F.priceSurges)}),computeStateForNextDay=(F,I=!1)=>(F=(I?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((F,I)=>I({...F}),{...F,cowForSale:generateCow(),dayCount:F.dayCount+1,todaysNotifications:[]}),F.dayCount%60==0&&(F=addExperience(F,EXPERIENCE_VALUES.NEW_YEAR)),F),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(F,I,L)=>{let{field:R,selectedItemId:z}=F,De=R[L][I];if(!De||itemsMap[z]?.type!==itemType.FERTILIZER)return F;let{id:Oe}=itemsMap[z],ke=F.inventory.find(F=>F.id===Oe),Ae=getPlotContentType(De);if(!De||!ke||De.fertilizerType!==fertilizerType.NONE||z===`fertilizer`&&Ae!==itemType.CROP||z===`rainbow-fertilizer`&&Ae!==itemType.CROP&&Ae!==itemType.SCARECROW)return F;let{quantity:je}=ke;F=decrementItemFromInventory(F,Oe);let Me=je>1;return F=modifyFieldPlotAt(F,I,L,F=>F&&{...F,fertilizerType:fertilizerItemIdToTypeMap[Oe]}),{...F,fieldMode:Me?FERTILIZE$3:OBSERVE$5,selectedItemId:Me?Oe:``}},forRange=(F,I,L,R,z,...De)=>{let Oe=Math.max(R-L,0),ke=Math.min(R+L,F.field[0].length-1),Ae=Math.max(z-L,0),je=Math.min(z+L,F.field.length-1);for(let L=Ae;L<=je;L++)for(let R=Oe;R<=ke;R++)F=I(F,R,L,...De);return F},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(F,I,L)=>{let R=F.forest[L]?.[I];if(!R||!(`itemId`in R)||F.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(F)||getFruitLifeStage(R)!==GROWN$6)return F;let z=itemsMap[R.itemId];if(!z)return F;let De=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[F.toolLevels[toolType.PICKER_POLE]]??1,Oe=Math.min(De,inventorySpaceRemaining(F));return F=addItemToInventory(F,z,De),F={...F,treeFruitsHarvested:{...F.treeFruitsHarvested,[z.id]:(F.treeFruitsHarvested[z.id]||0)+Oe}},modifyForestPlotAt(F,I,L,F=>F&&`itemId`in F?{...F,daysSinceLastHarvest:0}:F)},getCropFromItemId=F=>({...getPlotContentFromItemId(F),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(F,I,L,R)=>{if(!R||!F.inventory.some(({id:F})=>F===R))return F;let{field:z}=F;if(z[L][I])return F;let{growsInto:De}=itemsMap[R],Oe=getFinalCropItemIdFromSeedItemId(R,Array.isArray(De)?chooseRandomIndex(De):0);return Oe?(F=modifyFieldPlotAt(F,I,L,()=>getCropFromItemId(Oe)),F=decrementItemFromInventory(F,R),F=processSprinklers(F),{...F,selectedItemId:F.inventory.find(({id:F})=>F===R)?R:``}):F},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(F){let I=1;switch(F.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:I+=1;break;case toolLevel.IRON:I+=2;break;case toolLevel.SILVER:I+=3;break;case toolLevel.GOLD:I+=4;break;default:I=1}return Math.min(I,inventorySpaceRemaining(F))}function harvestCrops(F,I,L){let R=F.field[L][I];if(!R)return F;let z=itemsMap[R.itemId];if(!z)return F;let De=getSeedItemIdFromFinalStageCropItemId(z.id),Oe=R.fertilizerType===fertilizerType.RAINBOW,ke=getHarvestedQuantity(F);F=removeFieldPlotAt(F,I,L),F=addItemToInventory(F,z,ke);let{cropType:Ae}=z;if(!Ae)return F;Oe&&getInventoryQuantityMap(F.inventory)[De]>0&&(F=plantInPlot(F,I,L,De),F=modifyFieldPlotAt(F,I,L,F=>F&&{...F,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:je}=F;return{...F,cropsHarvested:{...je,[Ae]:(je[Ae]||0)+ke}}}function harvestWeed(F,I,L){let R=F.field[L][I];if(!R)return F;let z=itemsMap[R.itemId],De=getHarvestedQuantity(F);return F=removeFieldPlotAt(F,I,L),F=addItemToInventory(F,z,De),F}var harvestPlot=(F,I,L)=>{let R=F.field[L][I];return!R||!doesInventorySpaceRemain(F)?F:getPlotContentType(R)===itemType.CROP&&getCropLifeStage(R)===GROWN$5?harvestCrops(F,I,L):getPlotContentType(R)===itemType.WEED?harvestWeed(F,I,L):F},hugCow=(F,I)=>modifyCow(F,I,F=>F.happinessBoostsToday>=3?F:{happiness:Math.min(1,F.happiness+COW_HUG_BENEFIT),happinessBoostsToday:F.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:F},I)=>{let L=getInventoryQuantityMap(I);return Math.min(...Object.keys(F).map(I=>Math.floor(L[I]/F[I])))||0},{}),canMakeRecipe=(F,I,L)=>maxYieldOfRecipe(F,I)>=L,consumeIngredients=(F,I,L=1,R=0)=>I.ingredients&&!canMakeRecipe(I,F.inventory,L)?F:(F=addExperience(F,R),Object.keys(I.ingredients||{}).reduce((F,R)=>decrementItemFromInventory(F,R,I.ingredients[R]*L),F)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(F,I,L=1)=>{let R=F;return F=consumeIngredients(F,I,L,EXPERIENCE_FOR_RECIPE[I.recipeType]||0),F===R?F:(F={...F,recipesMade:{...F.recipesMade,[I.id]:(F.recipesMade[I.id]||0)+L}},addItemToInventory(F,I,L))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=F=>{let{daysToFerment:I=0,tier:L=1}=F;return Math.ceil((I??0)*saltRequirementMultiplier)*L},getMaxYieldOfFermentationRecipe=(F,I,L,R)=>{let{[F.id]:z=0,[itemsMap.salt.id]:De=0}=getInventoryQuantityMap(I),Oe=Math.floor(De/getSaltRequirementsForFermentationRecipe(F));return Math.min(R-L.length,z,Oe)},addKegToCellarInventory=(F,I)=>{let{cellarInventory:L}=F;return{...F,cellarInventory:[...L,I]}},makeFermentationRecipe=(F,I,L=1)=>{let{inventory:R,cellarInventory:z,purchasedCellar:De}=F,{space:Oe}=PURCHASEABLE_CELLARS.get(De)??{space:0};if(getMaxYieldOfFermentationRecipe(I,R,z,Oe)<L)return F;for(let R=0;R<L;R++){let L=cellarService.generateKeg(I);F=addKegToCellarInventory(F,L)}let ke=getSaltRequirementsForFermentationRecipe(I);return F=decrementItemFromInventory(F,I.id,L),F=decrementItemFromInventory(F,itemsMap.salt.id,L*ke),F},makeWine=(F,I,L=1)=>{let{inventory:R,cellarInventory:z,purchasedCellar:De}=F,{space:Oe}=PURCHASEABLE_CELLARS.get(De)??{space:0},ke=wineService.getMaxWineYield({grape:I,inventory:R,cellarInventory:z,cellarSize:Oe}),Ae=itemsMap[I.wineId],je=Math.min(L,ke);for(let I=0;I<je;I++){let I=cellarService.generateKeg(Ae);F=addKegToCellarInventory(F,I)}F=decrementItemFromInventory(F,I.id,je*50);let Me=getYeastRequiredForWine(I.variety);return F=decrementItemFromInventory(F,itemsMap.yeast.id,je*Me),F};function randomChoice(F){let I=0,L=[];for(let R of F)I+=R.weight,L.push(R);L.sort((F,I)=>F.weight-I.weight);let R=random$1()*I,z,De=0;for(let F in L){if(z=L[F],R<z.weight+De)return z;De+=z.weight}return L[L.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let F of SPAWNABLE_ORES)this.oreOptions.push({ore:F,weight:F.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let F=[],I=chooseRandom([1,1,1,2,3]);for(let L=0;L<I;L++)F.push(this.spawnCoal());return F.push(this.spawnStone()),F}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let F=[];for(let{resource:I,spawnChance:L}of spawnableResources)randomNumberService.isRandomNumberLessThan(L)&&F.push(I);return F}},factoryInstances={},instance=null,ResourceFactory=class F{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new F,instance}static generateFactoryInstance(F){switch(F){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=I=>(factoryInstances[I]||(factoryInstances[I]=F.generateFactoryInstance(I)),factoryInstances[I]);generateResources(I){let L=[],R=RESOURCE_SPAWN_CHANCE;switch(I){case toolLevel.BRONZE:R+=.1;break;case toolLevel.IRON:R+=.2;break;case toolLevel.SILVER:R+=.3;break;case toolLevel.GOLD:R+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(R)){let I=randomChoice(this.resourceOptions),R=F.getFactoryForItemType(I.itemType);if(R){let F=R.generate();F&&(L=Array.isArray(F)?F:[F])}}return L}},daysUntilClearPeriods=[1,2,2,3],minePlot=(F,I,L)=>{let{field:R}=F;if(R[L][I])return F;if(!doesInventorySpaceRemain(F))return showNotification(F,INVENTORY_FULL_NOTIFICATION);let z=F.toolLevels[toolType.SHOVEL],De=ResourceFactory.instance().generateResources(z),[Oe]=De,ke=chooseRandom(daysUntilClearPeriods);if(Oe){let F=De.map(({spawnChance:F})=>F).filter(F=>F!=null),I=Math.min(...F);ke+=Math.round(random$1()*(1-I)*10)}for(let I of De)F=addItemToInventory(F,I);return F=modifyFieldPlotAt(F,I,L,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:ke,oreId:Oe?.id??null})),{...F}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(F,I,L)=>{let{forest:R,selectedItemId:z}=F,De=R[L]?.[I];if(!De||!isPlantedTree(De)||itemsMap[z]?.type!==itemType.MULCH)return F;let Oe=z,ke=F.inventory.find(F=>F.id===Oe);if(!ke||(De.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return F;let{quantity:Ae}=ke;F=decrementItemFromInventory(F,Oe);let je=Ae>1;return F={...F,mulchApplied:{...F.mulchApplied,[Oe]:(F.mulchApplied[Oe]||0)+1}},F=modifyForestPlotAt(F,I,L,F=>!F||!isPlantedTree(F)?F:{...F,fertilizerType:mulchItemIdToTypeMap[Oe]}),{...F,fieldMode:je?FERTILIZE$2:OBSERVE$4,selectedItemId:je?Oe:``}},offerCow=(F,I)=>(F={...F,cowIdOfferedForTrade:I},F),placeFarmhandShuffleWager=(F,I)=>{let{farmhandShuffle:L,money:R}=F;return L.isMatchInProgress||!Number.isFinite(I)||I<0||I>R?F:{...F,money:moneyTotal(R,-I),farmhandShuffle:{...L,wager:I,isMatchInProgress:!0,serializedMatch:null}}},getTreeDeathChance=F=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+F*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let F=0;for(;F<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(F);)F++;return F},getRandomizedLifespan=F=>{let I=F*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(I+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(F,I,L,R)=>{if(!R||!F.inventory.some(({id:F})=>F===R))return F;let z=F.forest[L];if(!z||z[I])return F;let De=getFinalCropItemIdFromSeedItemId(R);if(!De)return F;let Oe=itemsMap[De]?.lifespan,ke=Oe===void 0?void 0:getRandomizedLifespan(Oe);return F=modifyForestPlotAt(F,I,L,()=>({itemId:De,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...ke!==void 0&&{lifespan:ke}})),F=decrementItemFromInventory(F,R),{...F,selectedForestItemId:F.inventory.find(({id:F})=>F===R)?R:``}},prependPendingPeerMessage=(F,I,L=`info`)=>({...F,pendingPeerMessages:[{playerId:F.playerId,message:I,severity:L},...F.pendingPeerMessages].slice(0,5)}),purchaseCombine=(F,I)=>{let{money:L,purchasedCombine:R}=F;if(R>=I)return F;let z=PURCHASEABLE_COMBINES.get(I)?.price||0;return{...F,purchasedCombine:I,money:moneyTotal(L,-z)}},updateLearnedRecipes=F=>({...F,learnedRecipes:Object.keys(recipesMap).reduce((I,L)=>(recipesMap[L].condition(F)&&(I[L]=!0),I),{})}),purchaseComposter=(F,I)=>{let{money:L,purchasedComposter:R}=F;return R>=I?F:(F={...F,purchasedComposter:I,money:moneyTotal(L,-(PURCHASEABLE_COMPOSTERS.get(I)?.price??0))},F=showNotification(F,RECYCLING_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(F))},getCowWeight=({baseWeight:F,weightMultiplier:I})=>Math.round(F*I),getCowValue=(F,I=!1)=>I?getCowWeight(F)*clampNumber(scaleNumber(F.daysOld,1,100,0,1),0,1):getCowWeight(F)*1.5,purchaseCow=(F,I)=>{let{cowInventory:L,cowColorsPurchased:R,playerId:z,money:De,purchasedCowPen:Oe}=F,{color:ke}=I,Ae=getCowValue(I,!1);return De<Ae||Oe===0||L.length>=(PURCHASEABLE_COW_PENS.get(Oe)?.cows??0)?F:(F=addCowToInventory(F,{...I,ownerId:z,originalOwnerId:z}),{...F,cowColorsPurchased:{...R,[ke]:(R[ke]||0)+1},money:moneyTotal(De,-Ae),cowForSale:generateCow()})},purchaseCowPen=(F,I)=>{let{money:L,purchasedCowPen:R}=F;if(R>=I)return F;let z=PURCHASEABLE_COW_PENS.get(I);if(!z)return F;let{cows:De,price:Oe}=z;F=showNotification(F,COW_PEN_PURCHASED(``,De),`success`);let ke=I>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return F=addExperience(F,ke),{...F,purchasedCowPen:I,money:moneyTotal(L,-Oe)}},purchaseCellar=(F,I)=>{let{money:L,purchasedCellar:R}=F;if(R>=I)return F;let z=PURCHASEABLE_CELLARS.get(I);if(!z)return F;let{price:De,space:Oe}=z;F=showNotification(F,CELLAR_PURCHASED(``,Oe),`success`);let ke=I>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return F=addExperience(F,ke),{...F,purchasedCellar:I,money:moneyTotal(L,-De)}},nullArray=memoize(F=>Object.freeze(Array(F).fill(null)),{cacheSize:30}),purchaseField=(F,I)=>{let{field:L,money:R,purchasedField:z}=F;if(z>=I)return F;F=addExperience(F,EXPERIENCE_VALUES.FIELD_EXPANDED);let De=PURCHASEABLE_FIELD_SIZES.get(I);if(!De)return F;let{columns:Oe,price:ke,rows:Ae}=De;return{...F,purchasedField:I,field:nullArray(Ae).map((F,I)=>nullArray(Oe).map((F,R)=>L[I]&&L[I][R]||null)),money:moneyTotal(R,-ke)}},purchaseForest=(F,I)=>{let{forest:L,money:R,purchasedForest:z}=F;if(z>=I)return F;F=addExperience(F,EXPERIENCE_VALUES.FOREST_EXPANDED);let De=PURCHASABLE_FOREST_SIZES.get(I);if(!De)return F;let{columns:Oe,price:ke,rows:Ae}=De,je=I===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${Ae*Oe}`;return F=showNotification(F,je,`success`),{...F,purchasedForest:I,forest:nullArray(Ae).map((F,I)=>nullArray(Oe).map((F,R)=>L[I]&&L[I][R]||null)),money:moneyTotal(R,-ke)}},getAdjustedItemValue=(F,I)=>Number(((F[I]||1)*itemsMap[I].value).toFixed(2)),purchaseItem=(F,I,L=1)=>{let{money:R,todaysPurchases:z,valueAdjustments:De}=F,Oe=I.getMaxPurchaseQuantity?.(F)??1/0,ke=Math.max(0,Math.min(L,inventorySpaceRemaining(F),Oe));if(ke===0)return F;let Ae=getAdjustedItemValue(De,I.id)*ke;return Ae>R?F:(F=prependPendingPeerMessage(F,PURCHASED_ITEM_PEER_NOTIFICATION(``,ke,I)),addItemToInventory({...F,money:moneyTotal(R,-Ae),todaysPurchases:{...z,[I.id]:(z[I.id]||0)+ke}},I,ke))},purchaseSmelter=(F,I)=>{let{money:L,purchasedSmelter:R}=F;return R>=I?F:(F={...F,purchasedSmelter:I,money:moneyTotal(L,-(PURCHASEABLE_SMELTERS.get(I)?.price??0))},F=showNotification(F,FORGE_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(F))},getCostOfNextStorageExpansion=F=>500+(F-100)/100*50,purchaseStorageExpansion=F=>{let{money:I,inventoryLimit:L}=F,R=getCostOfNextStorageExpansion(L);return I<R||L===-1?F:{...F,inventoryLimit:L+100,money:moneyTotal(I,-R)}},purchaseWoodChipper=(F,I)=>{let{money:L,purchasedWoodChipper:R}=F;return R>=I?F:(F={...F,purchasedWoodChipper:I,money:moneyTotal(L,-(PURCHASEABLE_WOOD_CHIPPERS.get(I)?.price??0))},F=showNotification(F,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(F))},removePeer=(F,I)=>{let L={...F.peers};return delete L[I],{...F,peers:L,activePlayers:(F.activePlayers??1)-1}},refundUnresumableFarmhandShuffleMatch=F=>{let{farmhandShuffle:I,money:L}=F,{wager:R}=I;return F={...F,money:moneyTotal(L,R),farmhandShuffle:{...I,isMatchInProgress:!1,serializedMatch:null,wager:0}},showNotification(F,`Your Farmhand Shuffle match couldn't be resumed after an update - your wager was refunded.`,`warning`)},saveFarmhandShuffleMatch=(F,I)=>({...F,farmhandShuffle:{...F.farmhandShuffle,serializedMatch:I}}),selectCow=(F,{id:I})=>({...F,selectedCowId:I}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:F})=>`${cowColorToIdMap[F]}-cow`,sellCow=(F,I)=>{let{cowsSold:L}=F,R=getCowColorId(I),z=getCowValue(I,!0);F=removeCowFromInventory(F,I),F=addRevenue(F,z);let De={...L,[R]:(L[R]||0)+1};return F={...F,cowsSold:De},F},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=F=>SEASON_ORDER[Math.floor((F-1)/15)%SEASON_ORDER.length],getResaleValue=({id:F})=>itemsMap[F].value/2,getSalePriceMultiplier=(F={})=>{let I=1;return F[`i-am-rich-3`]?I+=I_AM_RICH_BONUSES[2]:F[`i-am-rich-2`]?I+=I_AM_RICH_BONUSES[1]:F[`i-am-rich-1`]&&(I+=I_AM_RICH_BONUSES[0]),I},getSeasonalDemandStatus=(F,I)=>F.highDemandSeasons?.includes(I)?`HIGH`:F.lowDemandSeasons?.includes(I)?`LOW`:null,getSeasonalDemandMultiplier=(F,I)=>{let L=getSeasonalDemandStatus(F,I);return L===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:L===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,blueberrySeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(F=>F.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((F,I)=>(F[I.id]=I,F),{}),isItemSoldInShop=({id:F})=>!!purchasableItemMap[F],sellItem=(F,{id:I},L=1)=>{if(L===0)return F;let R=itemsMap[I],{completedAchievements:z,dayCount:De,itemsSold:Oe,money:ke,valueAdjustments:Ae}=F,{loanBalance:je}=F,Me=isItemSoldInShop(R),Ne=Me?getResaleValue(R):getAdjustedItemValue(Ae,I),Pe=Me?1:getSeasonalDemandMultiplier(R,getCurrentSeason(De)),Fe=isItemAFarmProduct(R),Ie=Ne*(Fe?getSalePriceMultiplier(z):1)*Pe,Le=0,Re=0;for(let F=0;F<L;F++){let F=Fe?Math.min(je,castToMoney(Ie*LOAN_GARNISHMENT_RATE)):0;Fe&&(Re+=EXPERIENCE_VALUES.ITEM_SOLD);let I=Ie-F;je=moneyTotal(je,-F),Le=moneyTotal(Le,I)}Fe&&(F=adjustLoan(F,moneyTotal(je,-F.loanBalance)));let ze={...Oe,[I]:(Oe[I]||0)+L};return F=R.isPlantableCrop?{...F,money:moneyTotal(ke,Le)}:addRevenue({...F,money:ke},Le),F=addExperience(F,Re),F={...F,itemsSold:ze},F=decrementItemFromInventory(F,I,L),F=prependPendingPeerMessage(F,SOLD_ITEM_PEER_NOTIFICATION(``,L,R),`warning`),updateLearnedRecipes(F)},getItemBaseValue=F=>itemsMap[F].value,getKegValue=F=>{let{itemId:I,daysUntilMature:L}=F,R=itemsMap[I];if(L>0)return 0;let z=0,De=0,Oe=0;return wineService.isWineRecipe(R)?(z=R.value,De=WINE_INTEREST_RATE,Oe=Math.min(Math.max(-L,1),100)):(z=(R.tier??1)*getItemBaseValue(I),De=KEG_INTEREST_RATE,Oe=Math.abs(F.daysUntilMature)),z*(1+De)**Oe},sellKeg=(F,I)=>{let{itemId:L}=I,R=itemsMap[L],{cellarItemsSold:z,completedAchievements:De,itemsSold:Oe,money:ke}=F,{loanBalance:Ae}=F,je=0,Me=getKegValue(I),Ne=Math.min(Ae,castToMoney(Me*LOAN_GARNISHMENT_RATE)),Pe=Me*getSalePriceMultiplier(De)-Ne;Ae=moneyTotal(Ae,-Ne),je=moneyTotal(je,Pe),F=adjustLoan(F,moneyTotal(Ae,-F.loanBalance));let Fe={...Oe,[L]:(Oe[L]??0)+1},Ie={...z,[L]:(z[L]??0)+1};return F={...F,itemsSold:Fe,cellarItemsSold:Ie},F=addRevenue({...F,money:ke},je),F=addExperience(F,EXPERIENCE_VALUES.KEG_SOLD),F=removeKegFromCellar(F,I.id),F=prependPendingPeerMessage(F,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${R}`,`warning`),F=updateLearnedRecipes(F),F},settleFarmhandShuffleMatch=(F,I,L)=>{let{farmhandShuffle:R,money:z}=F,{wager:De}=R;if(!R.isMatchInProgress)return F;let Oe=I===null,ke=!Oe&&I===L,Ae=z,je=R.totalWins,Me=R.totalLosses,Ne=R.currentWinStreak,Pe=R.longestWinStreak;return Oe?Ae=moneyTotal(z,De):ke?(Ae=moneyTotal(z,De*2),je+=1,Ne+=1,Pe=Math.max(Pe,Ne)):(Me+=1,Ne=0),{...F,money:Ae,farmhandShuffle:{...R,isMatchInProgress:!1,serializedMatch:null,wager:0,totalMatchesPlayed:R.totalMatchesPlayed+1,totalWins:je,totalLosses:Me,currentWinStreak:Ne,longestWinStreak:Pe}}},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(F,I,L)=>{if(F.field[L][I]!==null)return F;let{selectedItemId:R}=F;F=decrementItemFromInventory(F,R);let z=F.inventory.some(F=>F.id===R);return F=modifyFieldPlotAt(F,I,L,()=>({itemId:R,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...F,fieldMode:z?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:z?R:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(F,I,L)=>{if(F.field[L][I]!==null)return F;F=decrementItemFromInventory(F,SCARECROW_ITEM_ID);let R=F.inventory.some(F=>F.id===SCARECROW_ITEM_ID);return F=modifyFieldPlotAt(F,I,L,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...F,fieldMode:R?SET_SCARECROW$2:OBSERVE$2,selectedItemId:R?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(F,I,L)=>{let{field:R}=F;if(R[L][I]!==null)return F;F=decrementItemFromInventory(F,SPRINKLER_ITEM_ID);let z=F.inventory.some(F=>F.id===SPRINKLER_ITEM_ID);return F=modifyFieldPlotAt(F,I,L,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),F=processSprinklers(F),{...F,fieldMode:z?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:z?SPRINKLER_ITEM_ID:``}},dollarString=F=>toDecimal(dinero({amount:Math.round(F),currency:USD,scale:0}),({value:F})=>Number(F).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(F,I,L)=>Math.max(F,getProfit(I,L)),isOctober=()=>new Date().getMonth()===9,percentageString=F=>`${Math.round(F*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(F,I)=>({...F,money:moneyTotal(F.money,I)}),sumOfCropsHarvested=memoize(F=>Object.values(F).reduce((F,I)=>F+I,0),{}),sumOfPartialRecordValues=memoize(F=>Object.values(F).reduce((F,I)=>F+(I||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(F=>F.isPie).map(F=>F.id),sumOfPiesMade=memoize(F=>PIE_RECIPE_IDS.reduce((I,L)=>I+(F[L]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(F,I)=>({condition:L=>I(L)>=F,getProgress:L=>({currentValue:I(L),goal:F})}),achievements=[((F=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(F),condition:F=>!!findInField(F.field,F=>F!==null&&doesPlotContainCrop(F)&&getCropLifeStage(F)===SEED$3),reward:I=>addMoney(I,F)}))(),((F=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(F),condition:F=>!!findInField(F.field,F=>doesPlotContainCrop(F)&&!!F.wasWateredToday),reward:I=>addMoney(I,F)}))(),((F=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(F),condition:F=>sumOfCropsHarvested(F.cropsHarvested)>=1,reward:I=>addMoney(I,F)}))(),((F=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${F} experience points`,condition:F=>F.loanBalance===0,reward:I=>addExperience(I,F)}))(),((F=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(F)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${F} units of ${cowFeed.name}`,condition:F=>F.purchasedCowPen>0,reward:I=>addItemToInventory(I,cowFeed,F,!0)}))(),((F=100,I=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${F} units of ${cowFeed.name}`,...progressAchievement(I,F=>Object.values(standardCowColors).filter(I=>(F.cowColorsPurchased[I]||0)>0).length),reward:I=>addItemToInventory(I,cowFeed,F,!0)}))(),((F=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${F} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:I=>addItemToInventory(I,itemsMap.jackolantern,F,!0)}))(),((F=100,I=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(I)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${F} units of ${itemsMap.scarecrow.name}`,...progressAchievement(I,F=>F.itemsSold.jackolantern||0),reward:I=>addItemToInventory(I,itemsMap.scarecrow,F,!0)}))(),((F=5e3,I=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap.fertilizer.name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap.fertilizer,I,!0)}))(),((F=15e3,I=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap[`onion-seed`],I,!0)}))(),((F=5e4,I=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap[`tomato-seed`],I,!0)}))(),((F=2500,I=35,L=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e4,I=100,L=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=25e3,I=250,L=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=5e4,I=300,L=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=15e4,I=500,L=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e6,I=1e3,L=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e4,I=itemsMap[`milk-3`],L=5e3,R=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(F)} units of ${I.name}.`,rewardDescription:`${integerString(L)} ${R.name} units`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>addItemToInventory(F,R,L,!0)}))(),((F=1e3,I=itemsMap[`rainbow-milk-2`],L=500,R=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(F)} units of ${I.name}.`,rewardDescription:`${integerString(L)} ${R.name} units`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>addItemToInventory(F,R,L,!0)}))(),((F=1e4,I=itemsMap.burger,L=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(F)} ${I.name} units.`,rewardDescription:`${integerString(L)} additional inventory spaces`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>({...F,inventoryLimit:F.inventoryLimit+L})}))(),((F=1e3,I=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=1e4,I=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=1e5,I=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=Math.floor(Math.PI*1e6),I=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(F)} on hand.`,rewardDescription:`${integerString(I)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:I=>Math.floor(I.money)===F,reward:F=>addItemToInventory(F,itemsMap[`pumpkin-pie`],I,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:F=>!!F.inventory.find(F=>F.id===`gold-ore`),reward:F=>addItemToInventory(F,itemsMap[`gold-ingot`],1,!0)},((F=1e3,I=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(F)} fruits from trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(F,F=>sumOfPartialRecordValues(F.treeFruitsHarvested)),reward:F=>addItemToInventory(F,itemsMap[`apple-sapling`],I,!0)}))(),((F=100,I=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(F)} pies.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>sumOfPiesMade(F.recipesMade)),reward:F=>addMoney(F,I)}))(),((F=250,I=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(F)} trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap.wood.name}`,...progressAchievement(F,F=>F.treesChopped),reward:F=>addItemToInventory(F,itemsMap.wood,I,!0)}))(),((F=100)=>({id:`farmhand-shuffle-first-match`,name:`Shuffle Up and Deal`,description:`Play your first match of Farmhand Shuffle.`,rewardDescription:dollarString(F),condition:F=>F.farmhandShuffle.totalMatchesPlayed>0,reward:I=>addMoney(I,F)}))(),((F=3,I=150)=>({id:`farmhand-shuffle-win-streak-1`,name:`Hot Streak`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=5,I=300)=>({id:`farmhand-shuffle-win-streak-2`,name:`On a Roll`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=10,I=750)=>({id:`farmhand-shuffle-win-streak-3`,name:`Unstoppable`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=100,I=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(F)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(F,F=>sumOfPartialRecordValues(F.mulchApplied)),reward:F=>addItemToInventory(F,itemsMap[`rainbow-mulch`],I,!0)}))()],achievementsMap=achievements.reduce((F,I)=>(F[I.id]=I,F),{}),updateAchievements=(F,I)=>achievements.reduce((F,L)=>(!F.completedAchievements[L.id]&&L.condition(F,I)&&(F={...L.reward(F),completedAchievements:{...F.completedAchievements,[L.id]:!0}},F=showNotification(F,ACHIEVEMENT_COMPLETED(``,{name:L.name,rewardDescription:L.rewardDescription}),`success`)),F),F),updatePeer=(F,I,L,R)=>{let z={...F.peers},De=z[R]?.cowOfferedForTrade?.id,Oe=L.cowOfferedForTrade?.id,ke=Oe&&De!==Oe;z[R]=L;let{pendingPeerMessages:Ae=[]}=L;return ke&&(F=showNotification(F,NEW_COW_OFFERED_FOR_TRADE`${L}`,`info`,()=>{I.openDialogView(dialogView.ONLINE_PEERS)})),{...F,peers:z,latestPeerMessages:[...Ae,...F.latestPeerMessages].slice(0,30)}},upgradeTool=(F,I)=>{if(!I.toolType||!I.level)return F;let L=F;if(F=consumeIngredients(F,{...I,ingredients:I.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),F===L)return F;F=addItemToInventory(F,I,1);let R=upgrades[I.toolType],z=F.toolLevels[I.toolType],De=R?.[z]?.name||``;return F.toolLevels[I.toolType]=I.level,F=showNotification(F,TOOL_UPGRADED_NOTIFICATION(``,De,I.name)),{...F}},waterAllPlots=F=>waterField(F),waterPlot=(F,I,L)=>{let R=F.field[L][I];return R&&getPlotContentType(R)===itemType.CROP?modifyFieldPlotAt(F,I,L,F=>F&&{...F,wasWateredToday:!0}):F},withdrawCow=(F,I)=>{let{cowIdOfferedForTrade:L}=F;return I===L&&(F={...F,cowIdOfferedForTrade:``}),F},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,placeFarmhandShuffleWager:()=>placeFarmhandShuffleWager,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,refundUnresumableFarmhandShuffleMatch:()=>refundUnresumableFarmhandShuffleMatch,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,saveFarmhandShuffleMatch:()=>saveFarmhandShuffleMatch,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,settleFarmhandShuffleMatch:()=>settleFarmhandShuffleMatch,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(F,I=1){this.purchaseItem(F,I)},handleMakeRecipeClick(F,I=1){this.makeRecipe(F,I)},handleMakeFermentationRecipeClick(F,I=1){this.makeFermentationRecipe(F,I)},handleMakeWineClick(F,I=1){this.makeWine(F,I)},handleSellKegClick(F){this.sellKeg(F)},handleThrowAwayKegClick(F){this.removeKegFromCellar(F.id)},handleUpgradeTool(F){this.upgradeTool(F)},handleCowPurchaseClick(F){this.purchaseCow(F)},handleCowSellClick(F){this.sellCow(F)},handleCowTradeClick(F){this.tradeForPeerCow(F)},handleCowAutomaticHugChange({target:{checked:F}},I){this.changeCowAutomaticHugState(I,F)},handleCowBreedChange({target:F},I){let{checked:L}=F;this.changeCowBreedingPenResident(I,L)},handleCowHugClick(F){this.hugCow(F.id)},handleCowOfferClick(F){this.offerCow(F.id)},handleCowWithdrawClick(F){this.withdrawCow(F.id)},handleCowNameInputChange(F,I){this.changeCowName(I.id,F)},handleItemSellClick(F,I=1){this.sellItem(F,I)},handleViewChange({target:F}){let{value:I}=F;this.setState({stageFocus:I})},handleViewChangeButtonClick(F){this.setState({stageFocus:F})},handleFieldModeSelect(F){this.setState(({selectedItemId:I})=>({selectedItemId:F!==PLANT$2||TOOLBELT_FIELD_MODES.has(F)?``:I,selectedForestItemId:``,fieldMode:F}))},handleItemSelectClick({id:F,enablesFieldMode:I}){this.setState({fieldMode:I,selectedItemId:F})},handleForestItemSelectClick({id:F}){this.setState({fieldMode:PLANT$2,selectedForestItemId:F})},handlePlotClick(F,I){let{fieldMode:L,hoveredPlotRangeSize:R,selectedItemId:z}=this.state;L===PLANT$2?this.forRange(plantInPlot,R,F,I,z):L===HARVEST$3?this.forRange(harvestPlot,R,F,I):L===MINE$3?this.forRange(minePlot,R,F,I):L===CLEANUP$4?this.forRange(clearPlot,R,F,I):L===WATER$3?this.forRange(waterPlot,R,F,I):L===FERTILIZE$1?this.forRange(fertilizePlot,R,F,I):L===SET_SPRINKLER$1?this.setSprinkler(F,I):L===SET_SCARECROW$1?this.setScarecrow(F,I):L===SET_LIGHTNING_ROD$1&&this.setLightningRod(F,I)},handleFieldActionRangeChange(F){this.setState(()=>({hoveredPlotRangeSize:F}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(F){this.setState(({money:I})=>({money:moneyTotal(I,F)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(F){this.purchaseField(F)},handleForestPurchase(F){this.purchaseForest(F)},handleForestPlotClick(F,I){let L=this.state.forest[I]?.[F];if(this.state.fieldMode===CHOP$2){isPlantedTree(L)&&this.chopForestPlot(F,I);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(L)&&this.mulchForestPlot(F,I);return}if(!L){let{selectedForestItemId:L,inventory:R}=this.state;L&&R.some(({id:F})=>F===L)&&this.plantTreeInPlot(F,I,L);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(L)&&getTreeLifeStage(L)===GROWN$4&&this.harvestForestPlot(F,I)},handleCombinePurchase(F){this.purchaseCombine(F)},handleComposterPurchase(F){this.purchaseComposter(F)},handleSmelterPurchase(F){this.purchaseSmelter(F)},handleWoodChipperPurchase(F){this.purchaseWoodChipper(F)},handleCowPenPurchase(F){this.purchaseCowPen(F)},handleCellarPurchase(F){this.purchaseCellar(F)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(F=void 0){this.setState(({isMenuOpen:I})=>({isMenuOpen:F??!I}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(F){this.selectCow(F)},handleCowClick(F){this.selectCow(F),this.hugCow(F.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(F){this.openDialogView(F)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(F){this.adjustLoan(-F)},handleClickTakeOutLoanButton(F){this.adjustLoan(F)},handleExportDataClick(){let F=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[I]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(F,`farmhand-${I}.json`)},handleImportDataClick([F]){let[,I]=F,L=new FileReader;L.addEventListener(`loadend`,F=>{try{let I=F.target,L=String(I?.result),R=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(L)));if(Object.keys(R).some(F=>typeof this.state[F]!=typeof R[F]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...R}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(F){console.error(F),this.showNotification(F.message,`error`)}}),L.readAsText(I.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(F){this.setState({farmName:F})},handleCombineEnabledChange(F,I){this.setState({isCombineEnabled:I})},handleUseAlternateEndDayButtonPositionChange(F,I){this.setState({useAlternateEndDayButtonPosition:I})},handleAllowCustomPeerCowNamesChange(F,I){this.setState({allowCustomPeerCowNames:I})},handleShowHomeScreenChange(F,I){this.state.stageFocus===stageFocusType.HOME&&!I&&this.focusNextView(),this.setState({showHomeScreen:I})},handleShowNotificationsChange({target:{checked:F}}){this.setState({showNotifications:F})},handleNotificationDurationChange(F,I){typeof I==`number`&&this.setState({notificationDuration:I*1e3})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(F){F||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:I,cowIdOfferedForTrade:L})=>F?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(I)}`),cowIdOfferedForTrade:L,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(F){this.setState(()=>({room:F,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(F.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(F){let{origin:I,pathname:L,search:R,hash:z}=import_window.default.location,De=new URLSearchParams(R),Oe=F.trim();Oe===``?(randomNumberService.unseedRandomNumber(),De.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(Oe),De.set(`seed`,Oe),this.showNotification(`Random seed set to "${Oe}"`,`success`));let ke=De.toString(),Ae=`${I}${L}${ke.length>0?`?${ke}`:``}${z}`;import_window.default.history.replaceState({},``,Ae)},handleChatRoomOpenStateChange(F){this.setState({isChatOpen:F})},handleGameUpdateAvailable(F){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{F(!0)},`Reload`)},async handlePlaceFarmhandShuffleWager(F){this.placeFarmhandShuffleWager(F),await this.persistState()},async handleSettleFarmhandShuffleMatch(F,I){this.settleFarmhandShuffleMatch(F,I),await this.persistState()},async handleSaveFarmhandShuffleMatch(F){this.saveFarmhandShuffleMatch(F),await this.persistState()},handleRefundUnresumableFarmhandShuffleMatch(){this.refundUnresumableFarmhandShuffleMatch()}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,BLUEBERRY:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,farmhandShuffle:{isMatchInProgress:!1,wager:0,serializedMatch:null,totalMatchesPlayed:0,totalWins:0,totalLosses:0,currentWinStreak:0,longestWinStreak:0},field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],notificationDuration:NOTIFICATION_DURATION_DEFAULT,peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$10.createContext)(createContextData()),getDayOfSeason=F=>(F-1)%15+1,usePrefersReducedMotion=()=>{let[F,I]=(0,import_react$10.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$10.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let F=window.matchMedia(`(prefers-reduced-motion: reduce)`),L=F=>{I(F.matches)};return F.addEventListener?F.addEventListener(`change`,L):`addListener`in F&&F.addListener(L),()=>{F.removeEventListener?F.removeEventListener(`change`,L):`removeListener`in F&&F.removeListener(L)}},[]),F},MoneyDisplay=({money:F})=>{let I=`rgb(255, 255, 255)`,L=usePrefersReducedMotion(),[R,z]=(0,import_react$10.useState)(F),[De,Oe]=(0,import_react$10.useState)(I),ke=(0,import_react$10.useRef)(F),Ae=(0,import_react$10.useRef)(null);return(0,import_react$10.useEffect)(()=>{if(Ae.current?.cancel(),Ae.current=null,L||ke.current===F){ke.current=F,z(F),Oe(I);return}let R=F>ke.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return Ae.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:F,money:I})=>{Oe(String(F)),z(Number(I))},from:{color:R,money:ke.current},to:{color:I,money:F}}),ke.current=F,()=>{Ae.current?.cancel(),Ae.current=null}},[F,L]),(0,import_jsx_runtime$2.jsx)(`span`,{style:{color:De},children:moneyString(R)})},AppBar=({dayCount:F,handleClickNotificationIndicator:I,money:L,showNotifications:R,todaysNotifications:z,viewTitle:De,areAnyNotificationsErrors:Oe=z.some(({severity:F})=>F===`error`)})=>(0,import_jsx_runtime$2.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:fonts.display,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{alignItems:`center`,cursor:`pointer`,display:`flex`,"& .notification-count":{...pixelFrameSx({outline:colors.neutralOutline}),backgroundColor:`rgba(0, 0, 0, 0.38)`,boxShadow:pixelBevel(),color:`#fff`,fontFamily:fonts.display,lineHeight:1,minWidth:`1.5em`,padding:`0.2em 0.35em`,textAlign:`center`},"& .error-indicator":{display:`flex`,marginLeft:`1em`}}}},children:(0,import_jsx_runtime$2.jsxs)(Toolbar,{className:`toolbar`,children:[!R&&(0,import_jsx_runtime$2.jsxs)(`div`,{className:`notification-indicator-container`,onClick:I,children:[(0,import_jsx_runtime$2.jsx)(Typography,{className:`notification-count`,children:z.length}),Oe&&(0,import_jsx_runtime$2.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime$2.jsx)(WarningIcon,{color:`error`})})]}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:De}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(F)} of ${seasonNameMap[getCurrentSeason(F)]}`}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime$2.jsx)(MoneyDisplay,{money:L})})]})});function Consumer$30(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AppBar,{...I,...L,...F})})}var require_lib$4=__commonJSMin(((F,I)=>{function L(F){return F&&typeof F==`object`&&`default`in F?F.default:F}var R=require_react(),z=L(R);function De(F,I,L){return I in F?Object.defineProperty(F,I,{value:L,enumerable:!0,configurable:!0,writable:!0}):F[I]=L,F}function Oe(F,I){F.prototype=Object.create(I.prototype),F.prototype.constructor=F,F.__proto__=I}var ke=!!(typeof window<`u`&&window.document&&window.document.createElement);function Ae(F,I,L){if(typeof F!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof I!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(L!==void 0&&typeof L!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function Ae(F){return F.displayName||F.name||`Component`}return function(je){if(typeof je!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var Me=[],Ne;function Pe(){Ne=F(Me.map(function(F){return F.props})),Fe.canUseDOM?I(Ne):L&&(Ne=L(Ne))}var Fe=function(F){Oe(I,F);function I(){return F.apply(this,arguments)||this}I.peek=function(){return Ne},I.rewind=function(){if(I.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var F=Ne;return Ne=void 0,Me=[],F};var L=I.prototype;return L.UNSAFE_componentWillMount=function(){Me.push(this),Pe()},L.componentDidUpdate=function(){Pe()},L.componentWillUnmount=function(){var F=Me.indexOf(this);Me.splice(F,1),Pe()},L.render=function(){return z.createElement(je,this.props)},I}(R.PureComponent);return De(Fe,`displayName`,`SideEffect(`+Ae(je)+`)`),De(Fe,`canUseDOM`,ke),Fe}}I.exports=Ae})),require_react_fast_compare=__commonJSMin(((F,I)=>{var L=typeof Element<`u`,R=typeof Map==`function`,z=typeof Set==`function`,De=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function Oe(F,I){if(F===I)return!0;if(F&&I&&typeof F==`object`&&typeof I==`object`){if(F.constructor!==I.constructor)return!1;var ke,Ae,je;if(Array.isArray(F)){if(ke=F.length,ke!=I.length)return!1;for(Ae=ke;Ae--!==0;)if(!Oe(F[Ae],I[Ae]))return!1;return!0}var Me;if(R&&F instanceof Map&&I instanceof Map){if(F.size!==I.size)return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!I.has(Ae.value[0]))return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!Oe(Ae.value[1],I.get(Ae.value[0])))return!1;return!0}if(z&&F instanceof Set&&I instanceof Set){if(F.size!==I.size)return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!I.has(Ae.value[0]))return!1;return!0}if(De&&ArrayBuffer.isView(F)&&ArrayBuffer.isView(I)){if(ke=F.length,ke!=I.length)return!1;for(Ae=ke;Ae--!==0;)if(F[Ae]!==I[Ae])return!1;return!0}if(F.constructor===RegExp)return F.source===I.source&&F.flags===I.flags;if(F.valueOf!==Object.prototype.valueOf&&typeof F.valueOf==`function`&&typeof I.valueOf==`function`)return F.valueOf()===I.valueOf();if(F.toString!==Object.prototype.toString&&typeof F.toString==`function`&&typeof I.toString==`function`)return F.toString()===I.toString();if(je=Object.keys(F),ke=je.length,ke!==Object.keys(I).length)return!1;for(Ae=ke;Ae--!==0;)if(!Object.prototype.hasOwnProperty.call(I,je[Ae]))return!1;if(L&&F instanceof Element)return!1;for(Ae=ke;Ae--!==0;)if(!((je[Ae]===`_owner`||je[Ae]===`__v`||je[Ae]===`__o`)&&F.$$typeof)&&!Oe(F[je[Ae]],I[je[Ae]]))return!1;return!0}return F!==F&&I!==I}I.exports=function(F,I){try{return Oe(F,I)}catch(F){if((F.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw F}}})),require_object_assign=__commonJSMin(((F,I)=>{var L=Object.getOwnPropertySymbols,R=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;function De(F){if(F==null)throw TypeError(`Object.assign cannot be called with null or undefined`);return Object(F)}function Oe(){try{if(!Object.assign)return!1;var F=new String(`abc`);if(F[5]=`de`,Object.getOwnPropertyNames(F)[0]===`5`)return!1;for(var I={},L=0;L<10;L++)I[`_`+String.fromCharCode(L)]=L;if(Object.getOwnPropertyNames(I).map(function(F){return I[F]}).join(``)!==`0123456789`)return!1;var R={};return`abcdefghijklmnopqrst`.split(``).forEach(function(F){R[F]=F}),Object.keys(Object.assign({},R)).join(``)===`abcdefghijklmnopqrst`}catch{return!1}}I.exports=Oe()?Object.assign:function(F,I){for(var Oe,ke=De(F),Ae,je=1;je<arguments.length;je++){for(var Me in Oe=Object(arguments[je]),Oe)R.call(Oe,Me)&&(ke[Me]=Oe[Me]);if(L){Ae=L(Oe);for(var Ne=0;Ne<Ae.length;Ne++)z.call(Oe,Ae[Ne])&&(ke[Ae[Ne]]=Oe[Ae[Ne]])}}return ke}})),import_lib=__toESM(require_lib$4()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(F){return TAG_NAMES[F]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(F,I){return F[REACT_TAG_MAP[I]]=I,F},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$1=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(F){return typeof F}:function(F){return F&&typeof Symbol==`function`&&F.constructor===Symbol&&F!==Symbol.prototype?`symbol`:typeof F},classCallCheck=function(F,I){if(!(F instanceof I))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function F(F,I){for(var L=0;L<I.length;L++){var R=I[L];R.enumerable=R.enumerable||!1,R.configurable=!0,`value`in R&&(R.writable=!0),Object.defineProperty(F,R.key,R)}}return function(I,L,R){return L&&F(I.prototype,L),R&&F(I,R),I}}(),_extends=Object.assign||function(F){for(var I=1;I<arguments.length;I++){var L=arguments[I];for(var R in L)Object.prototype.hasOwnProperty.call(L,R)&&(F[R]=L[R])}return F},inherits=function(F,I){if(typeof I!=`function`&&I!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof I);F.prototype=Object.create(I&&I.prototype,{constructor:{value:F,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(F,I):F.__proto__=I)},objectWithoutProperties$1=function(F,I){var L={};for(var R in F)I.indexOf(R)>=0||Object.prototype.hasOwnProperty.call(F,R)&&(L[R]=F[R]);return L},possibleConstructorReturn=function(F,I){if(!F)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return I&&(typeof I==`object`||typeof I==`function`)?I:F},encodeSpecialCharacters=function(F){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(F):String(F).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)},getTitleFromPropsList=function(F){var I=getInnermostProperty(F,TAG_NAMES.TITLE),L=getInnermostProperty(F,HELMET_PROPS.TITLE_TEMPLATE);if(L&&I)return L.replace(/%s/g,function(){return Array.isArray(I)?I.join(``):I});var R=getInnermostProperty(F,HELMET_PROPS.DEFAULT_TITLE);return I||R||void 0},getOnChangeClientState=function(F){return getInnermostProperty(F,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(F,I){return I.filter(function(I){return I[F]!==void 0}).map(function(I){return I[F]}).reduce(function(F,I){return _extends({},F,I)},{})},getBaseTagFromPropsList=function(F,I){return I.filter(function(F){return F[TAG_NAMES.BASE]!==void 0}).map(function(F){return F[TAG_NAMES.BASE]}).reverse().reduce(function(I,L){if(!I.length)for(var R=Object.keys(L),z=0;z<R.length;z++){var De=R[z].toLowerCase();if(F.indexOf(De)!==-1&&L[De])return I.concat(L)}return I},[])},getTagsFromPropsList=function(F,I,L){var R={};return L.filter(function(I){return Array.isArray(I[F])?!0:(I[F]!==void 0&&warn$1(`Helmet: `+F+` should be of type "Array". Instead found type "`+_typeof$1(I[F])+`"`),!1)}).map(function(I){return I[F]}).reverse().reduce(function(F,L){var z={};L.filter(function(F){for(var L=void 0,De=Object.keys(F),Oe=0;Oe<De.length;Oe++){var ke=De[Oe],Ae=ke.toLowerCase();I.indexOf(Ae)!==-1&&!(L===TAG_PROPERTIES.REL&&F[L].toLowerCase()===`canonical`)&&!(Ae===TAG_PROPERTIES.REL&&F[Ae].toLowerCase()===`stylesheet`)&&(L=Ae),I.indexOf(ke)!==-1&&(ke===TAG_PROPERTIES.INNER_HTML||ke===TAG_PROPERTIES.CSS_TEXT||ke===TAG_PROPERTIES.ITEM_PROP)&&(L=ke)}if(!L||!F[L])return!1;var je=F[L].toLowerCase();return R[L]||(R[L]={}),z[L]||(z[L]={}),R[L][je]?!1:(z[L][je]=!0,!0)}).reverse().forEach(function(I){return F.push(I)});for(var De=Object.keys(z),Oe=0;Oe<De.length;Oe++){var ke=De[Oe];R[ke]=(0,import_object_assign.default)({},R[ke],z[ke])}return F},[]).reverse()},getInnermostProperty=function(F,I){for(var L=F.length-1;L>=0;L--){var R=F[L];if(R.hasOwnProperty(I))return R[I]}return null},reducePropsToState=function(F){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],F),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,F),defer:getInnermostProperty(F,HELMET_PROPS.DEFER),encode:getInnermostProperty(F,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,F),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],F),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],F),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],F),onChangeClientState:getOnChangeClientState(F),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],F),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],F),title:getTitleFromPropsList(F),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,F)}},rafPolyfill=function(){var F=Date.now();return function(I){var L=Date.now();L-F>16?(F=L,I(L)):setTimeout(function(){rafPolyfill(I)},0)}}(),cafPolyfill=function(F){return clearTimeout(F)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(F){return console&&typeof console.warn==`function`&&console.warn(F)},_helmetCallback=null,handleClientStateChange=function(F){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),F.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(F,function(){_helmetCallback=null})}):(commitTagChanges(F),_helmetCallback=null)},commitTagChanges=function(F,I){var L=F.baseTag,R=F.bodyAttributes,z=F.htmlAttributes,De=F.linkTags,Oe=F.metaTags,ke=F.noscriptTags,Ae=F.onChangeClientState,je=F.scriptTags,Me=F.styleTags,Ne=F.title,Pe=F.titleAttributes;updateAttributes(TAG_NAMES.BODY,R),updateAttributes(TAG_NAMES.HTML,z),updateTitle(Ne,Pe);var Fe={baseTag:updateTags(TAG_NAMES.BASE,L),linkTags:updateTags(TAG_NAMES.LINK,De),metaTags:updateTags(TAG_NAMES.META,Oe),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,ke),scriptTags:updateTags(TAG_NAMES.SCRIPT,je),styleTags:updateTags(TAG_NAMES.STYLE,Me)},Ie={},Le={};Object.keys(Fe).forEach(function(F){var I=Fe[F],L=I.newTags,R=I.oldTags;L.length&&(Ie[F]=L),R.length&&(Le[F]=Fe[F].oldTags)}),I&&I(),Ae(F,Ie,Le)},flattenArray=function(F){return Array.isArray(F)?F.join(``):F},updateTitle=function(F,I){F!==void 0&&document.title!==F&&(document.title=flattenArray(F)),updateAttributes(TAG_NAMES.TITLE,I)},updateAttributes=function(F,I){var L=document.getElementsByTagName(F)[0];if(L){for(var R=L.getAttribute(HELMET_ATTRIBUTE),z=R?R.split(`,`):[],De=[].concat(z),Oe=Object.keys(I),ke=0;ke<Oe.length;ke++){var Ae=Oe[ke],je=I[Ae]||``;L.getAttribute(Ae)!==je&&L.setAttribute(Ae,je),z.indexOf(Ae)===-1&&z.push(Ae);var Me=De.indexOf(Ae);Me!==-1&&De.splice(Me,1)}for(var Ne=De.length-1;Ne>=0;Ne--)L.removeAttribute(De[Ne]);z.length===De.length?L.removeAttribute(HELMET_ATTRIBUTE):L.getAttribute(HELMET_ATTRIBUTE)!==Oe.join(`,`)&&L.setAttribute(HELMET_ATTRIBUTE,Oe.join(`,`))}},updateTags=function(F,I){var L=document.head||document.querySelector(TAG_NAMES.HEAD),R=L.querySelectorAll(F+`[`+HELMET_ATTRIBUTE+`]`),z=Array.prototype.slice.call(R),De=[],Oe=void 0;return I&&I.length&&I.forEach(function(I){var L=document.createElement(F);for(var R in I)if(I.hasOwnProperty(R))if(R===TAG_PROPERTIES.INNER_HTML)L.innerHTML=I.innerHTML;else if(R===TAG_PROPERTIES.CSS_TEXT)L.styleSheet?L.styleSheet.cssText=I.cssText:L.appendChild(document.createTextNode(I.cssText));else{var ke=I[R]===void 0?``:I[R];L.setAttribute(R,ke)}L.setAttribute(HELMET_ATTRIBUTE,`true`),z.some(function(F,I){return Oe=I,L.isEqualNode(F)})?z.splice(Oe,1):De.push(L)}),z.forEach(function(F){return F.parentNode.removeChild(F)}),De.forEach(function(F){return L.appendChild(F)}),{oldTags:z,newTags:De}},generateElementAttributesAsString=function(F){return Object.keys(F).reduce(function(I,L){var R=F[L]===void 0?``+L:L+`="`+F[L]+`"`;return I?I+` `+R:R},``)},generateTitleAsString=function(F,I,L,R){var z=generateElementAttributesAsString(L),De=flattenArray(I);return z?`<`+F+` `+HELMET_ATTRIBUTE+`="true" `+z+`>`+encodeSpecialCharacters(De,R)+`</`+F+`>`:`<`+F+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(De,R)+`</`+F+`>`},generateTagsAsString=function(F,I,L){return I.reduce(function(I,R){var z=Object.keys(R).filter(function(F){return!(F===TAG_PROPERTIES.INNER_HTML||F===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(F,I){var z=R[I]===void 0?I:I+`="`+encodeSpecialCharacters(R[I],L)+`"`;return F?F+` `+z:z},``),De=R.innerHTML||R.cssText||``,Oe=SELF_CLOSING_TAGS.indexOf(F)===-1;return I+`<`+F+` `+HELMET_ATTRIBUTE+`="true" `+z+(Oe?`/>`:`>`+De+`</`+F+`>`)},``)},convertElementAttributestoReactProps=function(F){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(F).reduce(function(I,L){return I[REACT_TAG_MAP[L]||L]=F[L],I},I)},convertReactPropstoHtmlAttributes=function(F){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(F).reduce(function(I,L){return I[HTML_TAG_MAP[L]||L]=F[L],I},I)},generateTitleAsReactComponent=function(F,I,L){var R,z=convertElementAttributestoReactProps(L,(R={key:I},R[HELMET_ATTRIBUTE]=!0,R));return[import_react$10.createElement(TAG_NAMES.TITLE,z,I)]},generateTagsAsReactComponent=function(F,I){return I.map(function(I,L){var R,z=(R={key:L},R[HELMET_ATTRIBUTE]=!0,R);return Object.keys(I).forEach(function(F){var L=REACT_TAG_MAP[F]||F;L===TAG_PROPERTIES.INNER_HTML||L===TAG_PROPERTIES.CSS_TEXT?z.dangerouslySetInnerHTML={__html:I.innerHTML||I.cssText}:z[L]=I[F]}),import_react$10.createElement(F,z)})},getMethodsForTag=function(F,I,L){switch(F){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(F,I.title,I.titleAttributes,L)},toString:function(){return generateTitleAsString(F,I.title,I.titleAttributes,L)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(I)},toString:function(){return generateElementAttributesAsString(I)}};default:return{toComponent:function(){return generateTagsAsReactComponent(F,I)},toString:function(){return generateTagsAsString(F,I,L)}}}},mapStateOnServer=function(F){var I=F.baseTag,L=F.bodyAttributes,R=F.encode,z=F.htmlAttributes,De=F.linkTags,Oe=F.metaTags,ke=F.noscriptTags,Ae=F.scriptTags,je=F.styleTags,Me=F.title,Ne=Me===void 0?``:Me,Pe=F.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,I,R),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,L,R),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,z,R),link:getMethodsForTag(TAG_NAMES.LINK,De,R),meta:getMethodsForTag(TAG_NAMES.META,Oe,R),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,ke,R),script:getMethodsForTag(TAG_NAMES.SCRIPT,Ae,R),style:getMethodsForTag(TAG_NAMES.STYLE,je,R),title:getMethodsForTag(TAG_NAMES.TITLE,{title:Ne,titleAttributes:Pe},R)}},HelmetExport=function(F){var I,L;return L=I=function(I){inherits(L,I);function L(){return classCallCheck(this,L),possibleConstructorReturn(this,I.apply(this,arguments))}return L.prototype.shouldComponentUpdate=function(F){return!(0,import_react_fast_compare.default)(this.props,F)},L.prototype.mapNestedChildrenToProps=function(F,I){if(!I)return null;switch(F.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:I};case TAG_NAMES.STYLE:return{cssText:I}}throw Error(`<`+F.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},L.prototype.flattenArrayTypeChildren=function(F){var I,L=F.child,R=F.arrayTypeChildren,z=F.newChildProps,De=F.nestedChildren;return _extends({},R,(I={},I[L.type]=[].concat(R[L.type]||[],[_extends({},z,this.mapNestedChildrenToProps(L,De))]),I))},L.prototype.mapObjectTypeChildren=function(F){var I,L,R=F.child,z=F.newProps,De=F.newChildProps,Oe=F.nestedChildren;switch(R.type){case TAG_NAMES.TITLE:return _extends({},z,(I={},I[R.type]=Oe,I.titleAttributes=_extends({},De),I));case TAG_NAMES.BODY:return _extends({},z,{bodyAttributes:_extends({},De)});case TAG_NAMES.HTML:return _extends({},z,{htmlAttributes:_extends({},De)})}return _extends({},z,(L={},L[R.type]=_extends({},De),L))},L.prototype.mapArrayTypeChildrenToProps=function(F,I){var L=_extends({},I);return Object.keys(F).forEach(function(I){var R;L=_extends({},L,(R={},R[I]=F[I],R))}),L},L.prototype.warnOnInvalidChildren=function(F,I){return!0},L.prototype.mapChildrenToProps=function(F,I){var L=this,R={};return import_react$10.Children.forEach(F,function(F){if(!(!F||!F.props)){var z=F.props,De=z.children,Oe=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(z,[`children`]));switch(L.warnOnInvalidChildren(F,De),F.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:R=L.flattenArrayTypeChildren({child:F,arrayTypeChildren:R,newChildProps:Oe,nestedChildren:De});break;default:I=L.mapObjectTypeChildren({child:F,newProps:I,newChildProps:Oe,nestedChildren:De});break}}}),I=this.mapArrayTypeChildrenToProps(R,I),I},L.prototype.render=function(){var I=this.props,L=I.children,R=_extends({},objectWithoutProperties$1(I,[`children`]));return L&&(R=this.mapChildrenToProps(L,R)),import_react$10.createElement(F,R)},createClass(L,null,[{key:`canUseDOM`,set:function(I){F.canUseDOM=I}}]),L}(import_react$10.Component),I.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},I.defaultProps={defer:!0,encodeSpecialCharacters:!0},I.peek=F.peek,I.rewind=function(){var I=F.rewind();return I||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),I},L}((0,import_lib.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind;function getButtonUtilityClass(F){return generateUtilityClass(`MuiButton`,F)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$10.createContext({}),ButtonGroupButtonContext=import_react$10.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$55=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$50=F=>{let{color:I,disableElevation:L,fullWidth:R,size:z,variant:De,classes:Oe}=F;return _extends$3({},Oe,composeClasses({root:[`root`,De,`${De}${capitalize_default(I)}`,`size${capitalize_default(z)}`,`${De}Size${capitalize_default(z)}`,`color${capitalize_default(I)}`,L&&`disableElevation`,R&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(z)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(z)}`]},getButtonUtilityClass,Oe))},commonIconStyles=F=>_extends$3({},F.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},F.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},F.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled(ButtonBase,{shouldForwardProp:F=>rootShouldForwardProp(F)||F===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[L.variant],I[`${L.variant}${capitalize_default(L.color)}`],I[`size${capitalize_default(L.size)}`],I[`${L.variant}Size${capitalize_default(L.size)}`],L.color===`inherit`&&I.colorInherit,L.disableElevation&&I.disableElevation,L.fullWidth&&I.fullWidth]}})(({theme:F,ownerState:I})=>{var L,R;let z=F.palette.mode===`light`?F.palette.grey[300]:F.palette.grey[800],De=F.palette.mode===`light`?F.palette.grey.A100:F.palette.grey[700];return _extends$3({},F.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(F.vars||F).shape.borderRadius,transition:F.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:F.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette.text.primary,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`text`&&I.color!==`inherit`&&{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`outlined`&&I.color!==`inherit`&&{border:`1px solid ${(F.vars||F).palette[I.color].main}`,backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`contained`&&{backgroundColor:F.vars?F.vars.palette.Button.inheritContainedHoverBg:De,boxShadow:(F.vars||F).shadows[4],"@media (hover: none)":{boxShadow:(F.vars||F).shadows[2],backgroundColor:(F.vars||F).palette.grey[300]}},I.variant===`contained`&&I.color!==`inherit`&&{backgroundColor:(F.vars||F).palette[I.color].dark,"@media (hover: none)":{backgroundColor:(F.vars||F).palette[I.color].main}}),"&:active":_extends$3({},I.variant===`contained`&&{boxShadow:(F.vars||F).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},I.variant===`contained`&&{boxShadow:(F.vars||F).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(F.vars||F).palette.action.disabled},I.variant===`outlined`&&{border:`1px solid ${(F.vars||F).palette.action.disabledBackground}`},I.variant===`contained`&&{color:(F.vars||F).palette.action.disabled,boxShadow:(F.vars||F).shadows[0],backgroundColor:(F.vars||F).palette.action.disabledBackground})},I.variant===`text`&&{padding:`6px 8px`},I.variant===`text`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].main},I.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},I.variant===`outlined`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].main,border:F.vars?`1px solid rgba(${F.vars.palette[I.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(F.palette[I.color].main,.5)}`},I.variant===`contained`&&{color:F.vars?F.vars.palette.text.primary:(R=F.palette).getContrastText?.call(R,F.palette.grey[300]),backgroundColor:F.vars?F.vars.palette.Button.inheritContainedBg:z,boxShadow:(F.vars||F).shadows[2]},I.variant===`contained`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].contrastText,backgroundColor:(F.vars||F).palette[I.color].main},I.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},I.size===`small`&&I.variant===`text`&&{padding:`4px 5px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`text`&&{padding:`8px 11px`,fontSize:F.typography.pxToRem(15)},I.size===`small`&&I.variant===`outlined`&&{padding:`3px 9px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`outlined`&&{padding:`7px 21px`,fontSize:F.typography.pxToRem(15)},I.size===`small`&&I.variant===`contained`&&{padding:`4px 10px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`contained`&&{padding:`8px 22px`,fontSize:F.typography.pxToRem(15)},I.fullWidth&&{width:`100%`})},({ownerState:F})=>F.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.startIcon,I[`iconSize${capitalize_default(L.size)}`]]}})(({ownerState:F})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},F.size===`small`&&{marginLeft:-2},commonIconStyles(F))),ButtonEndIcon=styled(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.endIcon,I[`iconSize${capitalize_default(L.size)}`]]}})(({ownerState:F})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},F.size===`small`&&{marginRight:-2},commonIconStyles(F))),Button=import_react$10.forwardRef(function(F,I){let L=import_react$10.useContext(ButtonGroupContext),R=import_react$10.useContext(ButtonGroupButtonContext),z=useDefaultProps({props:resolveProps(L,F),name:`MuiButton`}),{children:De,color:Oe=`primary`,component:ke=`button`,className:Ae,disabled:je=!1,disableElevation:Me=!1,disableFocusRipple:Ne=!1,endIcon:Pe,focusVisibleClassName:Fe,fullWidth:Ie=!1,size:Le=`medium`,startIcon:Re,type:ze,variant:Be=`text`}=z,Ge=_objectWithoutPropertiesLoose$2(z,_excluded$55),rt=_extends$3({},z,{color:Oe,component:ke,disabled:je,disableElevation:Me,disableFocusRipple:Ne,fullWidth:Ie,size:Le,type:ze,variant:Be}),it=useUtilityClasses$50(rt),at=Re&&(0,import_jsx_runtime$2.jsx)(ButtonStartIcon,{className:it.startIcon,ownerState:rt,children:Re}),ot=Pe&&(0,import_jsx_runtime$2.jsx)(ButtonEndIcon,{className:it.endIcon,ownerState:rt,children:Pe}),st=R||``;return(0,import_jsx_runtime$2.jsxs)(ButtonRoot,_extends$3({ownerState:rt,className:clsx$1(L.className,it.root,Ae,st),component:ke,disabled:je,focusRipple:!Ne,focusVisibleClassName:clsx$1(it.focusVisible,Fe),ref:I,type:ze},Ge,{classes:it,children:[at,De,ot]}))});function getDialogUtilityClass(F){return generateUtilityClass(`MuiDialog`,F)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$10.createContext({});init_objectWithoutPropertiesLoose(),init_extends();var _excluded$54=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(F,I)=>I.backdrop})({zIndex:-1}),useUtilityClasses$49=F=>{let{classes:I,scroll:L,maxWidth:R,fullWidth:z,fullScreen:De}=F;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(L)}`],paper:[`paper`,`paperScroll${capitalize_default(L)}`,`paperWidth${capitalize_default(String(R))}`,z&&`paperFullWidth`,De&&`paperFullScreen`]},getDialogUtilityClass,I)},DialogRoot=styled(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(F,I)=>I.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.container,I[`scroll${capitalize_default(L.scroll)}`]]}})(({ownerState:F})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},F.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},F.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.paper,I[`scrollPaper${capitalize_default(L.scroll)}`],I[`paperWidth${capitalize_default(String(L.maxWidth))}`],L.fullWidth&&I.paperFullWidth,L.fullScreen&&I.paperFullScreen]}})(({theme:F,ownerState:I})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},I.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},I.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!I.maxWidth&&{maxWidth:`calc(100% - 64px)`},I.maxWidth===`xs`&&{maxWidth:F.breakpoints.unit===`px`?Math.max(F.breakpoints.values.xs,444):`max(${F.breakpoints.values.xs}${F.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[F.breakpoints.down(Math.max(F.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},I.maxWidth&&I.maxWidth!==`xs`&&{maxWidth:`${F.breakpoints.values[I.maxWidth]}${F.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[F.breakpoints.down(F.breakpoints.values[I.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},I.fullWidth&&{width:`calc(100% - 64px)`},I.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialog`}),R=useTheme$1(),z={enter:R.transitions.duration.enteringScreen,exit:R.transitions.duration.leavingScreen},{"aria-describedby":De,"aria-labelledby":Oe,BackdropComponent:ke,BackdropProps:Ae,children:je,className:Me,disableEscapeKeyDown:Ne=!1,fullScreen:Pe=!1,fullWidth:Fe=!1,maxWidth:Ie=`sm`,onBackdropClick:Le,onClick:Re,onClose:ze,open:Be,PaperComponent:Ge=Paper,PaperProps:rt={},scroll:it=`paper`,TransitionComponent:at=Fade,transitionDuration:ot=z,TransitionProps:st}=L,ct=_objectWithoutPropertiesLoose$2(L,_excluded$54),lt=_extends$3({},L,{disableEscapeKeyDown:Ne,fullScreen:Pe,fullWidth:Fe,maxWidth:Ie,scroll:it}),ut=useUtilityClasses$49(lt),dt=import_react$10.useRef(),ft=F=>{dt.current=F.target===F.currentTarget},pt=F=>{Re&&Re(F),dt.current&&(dt.current=null,Le&&Le(F),ze&&ze(F,`backdropClick`))},mt=useId(Oe),ht=import_react$10.useMemo(()=>({titleId:mt}),[mt]);return(0,import_jsx_runtime$2.jsx)(DialogRoot,_extends$3({className:clsx$1(ut.root,Me),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:ot,as:ke},Ae)},disableEscapeKeyDown:Ne,onClose:ze,open:Be,ref:I,onClick:pt,ownerState:lt},ct,{children:(0,import_jsx_runtime$2.jsx)(at,_extends$3({appear:!0,in:Be,timeout:ot,role:`presentation`},st,{children:(0,import_jsx_runtime$2.jsx)(DialogContainer,{className:clsx$1(ut.container),onMouseDown:ft,ownerState:lt,children:(0,import_jsx_runtime$2.jsx)(DialogPaper,_extends$3({as:Ge,elevation:24,role:`dialog`,"aria-describedby":De,"aria-labelledby":mt},rt,{className:clsx$1(ut.paper,rt.className),ownerState:lt,children:(0,import_jsx_runtime$2.jsx)(DialogContext.Provider,{value:ht,children:je})}))})}))}))});function getDialogTitleUtilityClass(F){return generateUtilityClass(`MuiDialogTitle`,F)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$53=[`className`,`id`],useUtilityClasses$48=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,I)},DialogTitleRoot=styled(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(F,I)=>I.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogTitle`}),{className:R,id:z}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$53),Oe=L,ke=useUtilityClasses$48(Oe),{titleId:Ae=z}=import_react$10.useContext(DialogContext);return(0,import_jsx_runtime$2.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(ke.root,R),ownerState:Oe,ref:I,variant:`h6`,id:z??Ae},De))});function getDialogContentUtilityClass(F){return generateUtilityClass(`MuiDialogContent`,F)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$52=[`className`,`dividers`],useUtilityClasses$47=F=>{let{classes:I,dividers:L}=F;return composeClasses({root:[`root`,L&&`dividers`]},getDialogContentUtilityClass,I)},DialogContentRoot=styled(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.dividers&&I.dividers]}})(({theme:F,ownerState:I})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},I.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(F.vars||F).palette.divider}`,borderBottom:`1px solid ${(F.vars||F).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogContent`}),{className:R,dividers:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$52),Oe=_extends$3({},L,{dividers:z}),ke=useUtilityClasses$47(Oe);return(0,import_jsx_runtime$2.jsx)(DialogContentRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getDialogActionsUtilityClass(F){return generateUtilityClass(`MuiDialogActions`,F)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$51=[`className`,`disableSpacing`],useUtilityClasses$46=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getDialogActionsUtilityClass,I)},DialogActionsRoot=styled(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})(({ownerState:F})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!F.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogActions`}),{className:R,disableSpacing:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$51),Oe=_extends$3({},L,{disableSpacing:z}),ke=useUtilityClasses$46(Oe);return(0,import_jsx_runtime$2.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let F=`chat-title`,I=`chat-content`,{handlers:{handleChatRoomOpenStateChange:L},gameState:{playerId:R,isChatOpen:z,room:De}}=(0,import_react$10.useContext)(FarmhandContext),Oe=()=>{L(!1)},ke=(0,import_jsx_runtime$2.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${De}`,"user-id":R,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(HelmetExport,{children:(0,import_jsx_runtime$2.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:z,onClose:Oe,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":F,"aria-labelledby":I,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{id:F,children:`Chat room`}),(0,import_jsx_runtime$2.jsx)(DialogContent,{id:I,children:ke}),(0,import_jsx_runtime$2.jsx)(DialogActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{onClick:Oe,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$10.createContext({});init_extends(),init_objectWithoutPropertiesLoose();var _excluded$50=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$4=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(F,I){let{className:L,elementType:R,ownerState:z,externalForwardedProps:De,getSlotOwnerState:Oe,internalForwardedProps:ke}=I,Ae=_objectWithoutPropertiesLoose$2(I,_excluded$50),{component:je,slots:Me={[F]:void 0},slotProps:Ne={[F]:void 0}}=De,Pe=_objectWithoutPropertiesLoose$2(De,_excluded2$4),Fe=Me[F]||R,Ie=resolveComponentProps(Ne[F],z),Le=mergeSlotProps(_extends$3({className:L},Ae,{externalForwardedProps:F===`root`?Pe:void 0,externalSlotProps:Ie})),{props:{component:Re},internalRef:ze}=Le,Be=_objectWithoutPropertiesLoose$2(Le.props,_excluded3$1),Ge=useForkRef(ze,Ie?.ref,I.ref),rt=Oe?Oe(Be):{},it=_extends$3({},z,rt),at=F===`root`?Re||je:Re,ot=appendOwnerState(Fe,_extends$3({},F===`root`&&!je&&!Me[F]&&ke,F!==`root`&&!Me[F]&&ke,Be,at&&{as:at},{ref:Ge}),it);return Object.keys(rt).forEach(F=>{delete ot[F]}),[Fe,ot]}function getAccordionUtilityClass(F){return generateUtilityClass(`MuiAccordion`,F)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$49=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$45=F=>{let{classes:I,square:L,expanded:R,disabled:z,disableGutters:De}=F;return composeClasses({root:[`root`,!L&&`rounded`,R&&`expanded`,z&&`disabled`,!De&&`gutters`],region:[`region`]},getAccordionUtilityClass,I)},AccordionRoot=styled(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[{[`& .${accordionClasses.region}`]:I.region},I.root,!L.square&&I.rounded,!L.disableGutters&&I.gutters]}})(({theme:F})=>{let I={duration:F.transitions.duration.shortest};return{position:`relative`,transition:F.transitions.create([`margin`],I),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(F.vars||F).palette.divider,transition:F.transitions.create([`opacity`,`background-color`],I)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(F.vars||F).palette.action.disabledBackground}}},({theme:F})=>({variants:[{props:F=>!F.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(F.vars||F).shape.borderRadius,borderTopRightRadius:(F.vars||F).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(F.vars||F).shape.borderRadius,borderBottomRightRadius:(F.vars||F).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:F=>!F.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordion`}),{children:R,className:z,defaultExpanded:De=!1,disabled:Oe=!1,disableGutters:ke=!1,expanded:Ae,onChange:je,square:Me=!1,slots:Ne={},slotProps:Pe={},TransitionComponent:Fe,TransitionProps:Ie}=L,Le=_objectWithoutPropertiesLoose$2(L,_excluded$49),[Re,ze]=useControlled_default({controlled:Ae,default:De,name:`Accordion`,state:`expanded`}),Be=import_react$10.useCallback(F=>{ze(!Re),je&&je(F,!Re)},[Re,je,ze]),[Ge,...rt]=import_react$10.Children.toArray(R),it=import_react$10.useMemo(()=>({expanded:Re,disabled:Oe,disableGutters:ke,toggle:Be}),[Re,Oe,ke,Be]),at=_extends$3({},L,{square:Me,disabled:Oe,disableGutters:ke,expanded:Re}),ot=useUtilityClasses$45(at),[st,ct]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:Fe},Ne),slotProps:_extends$3({transition:Ie},Pe)},ownerState:at});return(0,import_jsx_runtime$2.jsxs)(AccordionRoot,_extends$3({className:clsx$1(ot.root,z),ref:I,ownerState:at,square:Me},Le,{children:[(0,import_jsx_runtime$2.jsx)(AccordionContext.Provider,{value:it,children:Ge}),(0,import_jsx_runtime$2.jsx)(st,_extends$3({in:Re,timeout:`auto`},ct,{children:(0,import_jsx_runtime$2.jsx)(`div`,{"aria-labelledby":Ge.props.id,id:Ge.props[`aria-controls`],role:`region`,className:ot.region,children:rt})}))]}))});function getAccordionSummaryUtilityClass(F){return generateUtilityClass(`MuiAccordionSummary`,F)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$48=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$44=F=>{let{classes:I,expanded:L,disabled:R,disableGutters:z}=F;return composeClasses({root:[`root`,L&&`expanded`,R&&`disabled`,!z&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,L&&`expanded`,!z&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,L&&`expanded`]},getAccordionSummaryUtilityClass,I)},AccordionSummaryRoot=styled(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>{let I={duration:F.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:F.spacing(0,2),transition:F.transitions.create([`min-height`,`background-color`],I),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(F.vars||F).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:F=>!F.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(F,I)=>I.content})(({theme:F})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:F=>!F.disableGutters,style:{transition:F.transitions.create([`margin`],{duration:F.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(F,I)=>I.expandIconWrapper})(({theme:F})=>({display:`flex`,color:(F.vars||F).palette.action.active,transform:`rotate(0deg)`,transition:F.transitions.create(`transform`,{duration:F.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionSummary`}),{children:R,className:z,expandIcon:De,focusVisibleClassName:Oe,onClick:ke}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$48),{disabled:je=!1,disableGutters:Me,expanded:Ne,toggle:Pe}=import_react$10.useContext(AccordionContext),Fe=F=>{Pe&&Pe(F),ke&&ke(F)},Ie=_extends$3({},L,{expanded:Ne,disabled:je,disableGutters:Me}),Le=useUtilityClasses$44(Ie);return(0,import_jsx_runtime$2.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:je,component:`div`,"aria-expanded":Ne,className:clsx$1(Le.root,z),focusVisibleClassName:clsx$1(Le.focusVisible,Oe),onClick:Fe,ref:I,ownerState:Ie},Ae,{children:[(0,import_jsx_runtime$2.jsx)(AccordionSummaryContent,{className:Le.content,ownerState:Ie,children:R}),De&&(0,import_jsx_runtime$2.jsx)(AccordionSummaryExpandIconWrapper,{className:Le.expandIconWrapper,ownerState:Ie,children:De})]}))});function getAccordionDetailsUtilityClass(F){return generateUtilityClass(`MuiAccordionDetails`,F)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$47=[`className`],useUtilityClasses$43=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,I)},AccordionDetailsRoot=styled(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>({padding:F.spacing(1,2,2)})),AccordionDetails=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionDetails`}),{className:R}=L,z=_objectWithoutPropertiesLoose$2(L,_excluded$47),De=L,Oe=useUtilityClasses$43(De);return(0,import_jsx_runtime$2.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(Oe.root,R),ref:I,ownerState:De},z))}),FormControlContext=import_react$10.createContext(void 0);function useFormControl(){return import_react$10.useContext(FormControlContext)}function getSwitchBaseUtilityClass(F){return generateUtilityClass(`PrivateSwitchBase`,F)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$46=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$42=F=>{let{classes:I,checked:L,disabled:R,edge:z}=F;return composeClasses({root:[`root`,L&&`checked`,R&&`disabled`,z&&`edge${capitalize_default(z)}`],input:[`input`]},getSwitchBaseUtilityClass,I)},SwitchBaseRoot=styled(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:F})=>_extends$3({padding:9,borderRadius:`50%`},F.edge===`start`&&{marginLeft:F.size===`small`?-3:-12},F.edge===`end`&&{marginRight:F.size===`small`?-3:-12})),SwitchBaseInput=styled(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$10.forwardRef(function(F,I){let{autoFocus:L,checked:R,checkedIcon:z,className:De,defaultChecked:Oe,disabled:ke,disableFocusRipple:Ae=!1,edge:je=!1,icon:Me,id:Ne,inputProps:Pe,inputRef:Fe,name:Ie,onBlur:Le,onChange:Re,onFocus:ze,readOnly:Be,required:Ge=!1,tabIndex:rt,type:it,value:at}=F,ot=_objectWithoutPropertiesLoose$2(F,_excluded$46),[st,ct]=useControlled_default({controlled:R,default:!!Oe,name:`SwitchBase`,state:`checked`}),lt=useFormControl(),ut=F=>{ze&&ze(F),lt&&lt.onFocus&&lt.onFocus(F)},dt=F=>{Le&&Le(F),lt&&lt.onBlur&&lt.onBlur(F)},ft=F=>{if(F.nativeEvent.defaultPrevented)return;let I=F.target.checked;ct(I),Re&&Re(F,I)},pt=ke;lt&&pt===void 0&&(pt=lt.disabled);let mt=it===`checkbox`||it===`radio`,ht=_extends$3({},F,{checked:st,disabled:pt,disableFocusRipple:Ae,edge:je}),gt=useUtilityClasses$42(ht);return(0,import_jsx_runtime$2.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(gt.root,De),centerRipple:!0,focusRipple:!Ae,disabled:pt,tabIndex:null,role:void 0,onFocus:ut,onBlur:dt,ownerState:ht,ref:I},ot,{children:[(0,import_jsx_runtime$2.jsx)(SwitchBaseInput,_extends$3({autoFocus:L,checked:R,defaultChecked:Oe,className:gt.input,disabled:pt,id:mt?Ne:void 0,name:Ie,onChange:ft,readOnly:Be,ref:Fe,required:Ge,ownerState:ht,tabIndex:rt,type:it},it===`checkbox`&&at===void 0?{}:{value:at},Pe)),st?z:Me]}))}),CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`),CheckBox_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`),IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);function getCheckboxUtilityClass(F){return generateUtilityClass(`MuiCheckbox`,F)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$45=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$41=F=>{let{classes:I,indeterminate:L,color:R,size:z}=F;return _extends$3({},I,composeClasses({root:[`root`,L&&`indeterminate`,`color${capitalize_default(R)}`,`size${capitalize_default(z)}`]},getCheckboxUtilityClass,I))},CheckboxRoot=styled(SwitchBase,{shouldForwardProp:F=>rootShouldForwardProp(F)||F===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.indeterminate&&I.indeterminate,I[`size${capitalize_default(L.size)}`],L.color!=="default"&&I[`color${capitalize_default(L.color)}`]]}})(({theme:F,ownerState:I})=>_extends$3({color:(F.vars||F).palette.text.secondary},!I.disableRipple&&{"&:hover":{backgroundColor:F.vars?`rgba(${I.color==="default"?F.vars.palette.action.activeChannel:F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(I.color==="default"?F.palette.action.active:F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},I.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(F.vars||F).palette[I.color].main},[`&.${checkboxClasses.disabled}`]:{color:(F.vars||F).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime$2.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime$2.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime$2.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$10.forwardRef(function(F,I){var L,R;let z=useDefaultProps({props:F,name:`MuiCheckbox`}),{checkedIcon:De=defaultCheckedIcon,color:Oe=`primary`,icon:ke=defaultIcon,indeterminate:Ae=!1,indeterminateIcon:je=defaultIndeterminateIcon,inputProps:Me,size:Ne=`medium`,className:Pe}=z,Fe=_objectWithoutPropertiesLoose$2(z,_excluded$45),Ie=Ae?je:ke,Le=Ae?je:De,Re=_extends$3({},z,{color:Oe,indeterminate:Ae,size:Ne}),ze=useUtilityClasses$41(Re);return(0,import_jsx_runtime$2.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":Ae},Me),icon:import_react$10.cloneElement(Ie,{fontSize:Ie.props.fontSize??Ne}),checkedIcon:import_react$10.cloneElement(Le,{fontSize:Le.props.fontSize??Ne}),ownerState:Re,ref:I,className:clsx$1(ze.root,Pe)},Fe,{classes:ze}))});function hasValue(F){return F!=null&&!(Array.isArray(F)&&F.length===0)}function isFilled(F,I=!1){return F&&(hasValue(F.value)&&F.value!==``||I&&hasValue(F.defaultValue)&&F.defaultValue!==``)}function isAdornedStart(F){return F.startAdornment}function getFormControlUtilityClasses(F){return generateUtilityClass(`MuiFormControl`,F)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$44=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$40=F=>{let{classes:I,margin:L,fullWidth:R}=F;return composeClasses({root:[`root`,L!==`none`&&`margin${capitalize_default(L)}`,R&&`fullWidth`]},getFormControlUtilityClasses,I)},FormControlRoot=styled(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:F},I)=>_extends$3({},I.root,I[`margin${capitalize_default(F.margin)}`],F.fullWidth&&I.fullWidth)})(({ownerState:F})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},F.margin===`normal`&&{marginTop:16,marginBottom:8},F.margin===`dense`&&{marginTop:8,marginBottom:4},F.fullWidth&&{width:`100%`})),FormControl=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiFormControl`}),{children:R,className:z,color:De=`primary`,component:Oe=`div`,disabled:ke=!1,error:Ae=!1,focused:je,fullWidth:Me=!1,hiddenLabel:Ne=!1,margin:Pe=`none`,required:Fe=!1,size:Ie=`medium`,variant:Le=`outlined`}=L,Re=_objectWithoutPropertiesLoose$2(L,_excluded$44),ze=_extends$3({},L,{color:De,component:Oe,disabled:ke,error:Ae,fullWidth:Me,hiddenLabel:Ne,margin:Pe,required:Fe,size:Ie,variant:Le}),Be=useUtilityClasses$40(ze),[Ge,rt]=import_react$10.useState(()=>{let F=!1;return R&&import_react$10.Children.forEach(R,I=>{if(!isMuiElement_default(I,[`Input`,`Select`]))return;let L=isMuiElement_default(I,[`Select`])?I.props.input:I;L&&isAdornedStart(L.props)&&(F=!0)}),F}),[it,at]=import_react$10.useState(()=>{let F=!1;return R&&import_react$10.Children.forEach(R,I=>{isMuiElement_default(I,[`Input`,`Select`])&&(isFilled(I.props,!0)||isFilled(I.props.inputProps,!0))&&(F=!0)}),F}),[ot,st]=import_react$10.useState(!1);ke&&ot&&st(!1);let ct=je!==void 0&&!ke?je:ot,lt,ut=import_react$10.useMemo(()=>({adornedStart:Ge,setAdornedStart:rt,color:De,disabled:ke,error:Ae,filled:it,focused:ct,fullWidth:Me,hiddenLabel:Ne,size:Ie,onBlur:()=>{st(!1)},onEmpty:()=>{at(!1)},onFilled:()=>{at(!0)},onFocus:()=>{st(!0)},registerEffect:void 0,required:Fe,variant:Le}),[Ge,De,ke,Ae,it,ct,Me,Ne,void 0,Fe,Ie,Le]);return(0,import_jsx_runtime$2.jsx)(FormControlContext.Provider,{value:ut,children:(0,import_jsx_runtime$2.jsx)(FormControlRoot,_extends$3({as:Oe,ownerState:ze,className:clsx$1(Be.root,z),ref:I},Re,{children:R}))})}),Stack=createStack({createStyledComponent:styled(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(F,I)=>I.root}),useThemeProps:F=>useDefaultProps({props:F,name:`MuiStack`})});function getFormControlLabelUtilityClasses(F){return generateUtilityClass(`MuiFormControlLabel`,F)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:F,states:I,muiFormControl:L}){return I.reduce((I,R)=>(I[R]=F[R],L&&F[R]===void 0&&(I[R]=L[R]),I),{})}init_objectWithoutPropertiesLoose(),init_extends();var _excluded$43=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$39=F=>{let{classes:I,disabled:L,labelPlacement:R,error:z,required:De}=F;return composeClasses({root:[`root`,L&&`disabled`,`labelPlacement${capitalize_default(R)}`,z&&`error`,De&&`required`],label:[`label`,L&&`disabled`],asterisk:[`asterisk`,z&&`error`]},getFormControlLabelUtilityClasses,I)},FormControlLabelRoot=styled(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[{[`& .${formControlLabelClasses.label}`]:I.label},I.root,I[`labelPlacement${capitalize_default(L.labelPlacement)}`]]}})(({theme:F,ownerState:I})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},I.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},I.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},I.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(F.vars||F).palette.text.disabled}}})),AsteriskComponent$1=styled(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(F,I)=>I.asterisk})(({theme:F})=>({[`&.${formControlLabelClasses.error}`]:{color:(F.vars||F).palette.error.main}})),FormControlLabel=import_react$10.forwardRef(function(F,I){var L,R;let z=useDefaultProps({props:F,name:`MuiFormControlLabel`}),{className:De,componentsProps:Oe={},control:ke,disabled:Ae,disableTypography:je,label:Me,labelPlacement:Ne=`end`,required:Pe,slotProps:Fe={}}=z,Ie=_objectWithoutPropertiesLoose$2(z,_excluded$43),Le=useFormControl(),Re=Ae??ke.props.disabled??Le?.disabled,ze=Pe??ke.props.required,Be={disabled:Re,required:ze};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(F=>{ke.props[F]===void 0&&z[F]!==void 0&&(Be[F]=z[F])});let Ge=_extends$3({},z,{disabled:Re,labelPlacement:Ne,required:ze,error:formControlState({props:z,muiFormControl:Le,states:[`error`]}).error}),rt=useUtilityClasses$39(Ge),it=Fe.typography??Oe.typography,at=Me;return at!=null&&at.type!==Typography&&!je&&(at=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({component:`span`},it,{className:clsx$1(rt.label,it?.className),children:at}))),(0,import_jsx_runtime$2.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(rt.root,De),ownerState:Ge,ref:I},Ie,{children:[import_react$10.cloneElement(ke,Be),ze?(0,import_jsx_runtime$2.jsxs)(Stack,{display:`block`,children:[at,(0,import_jsx_runtime$2.jsxs)(AsteriskComponent$1,{ownerState:Ge,"aria-hidden":!0,className:rt.asterisk,children:[` `,`*`]})]}):at]}))}),boxClasses=generateUtilityClasses(`MuiBox`,[`root`]),Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});function getCardUtilityClass(F){return generateUtilityClass(`MuiCard`,F)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$42=[`className`,`raised`],useUtilityClasses$38=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getCardUtilityClass,I)},CardRoot=styled(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(F,I)=>I.root})(()=>({overflow:`hidden`})),Card=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCard`}),{className:R,raised:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$42),Oe=_extends$3({},L,{raised:z}),ke=useUtilityClasses$38(Oe);return(0,import_jsx_runtime$2.jsx)(CardRoot,_extends$3({className:clsx$1(ke.root,R),elevation:z?8:void 0,ref:I,ownerState:Oe},De))});function getCardHeaderUtilityClass(F){return generateUtilityClass(`MuiCardHeader`,F)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$41=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$37=F=>{let{classes:I}=F;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,I)},CardHeaderRoot=styled(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(F,I)=>_extends$3({[`& .${cardHeaderClasses.title}`]:I.title,[`& .${cardHeaderClasses.subheader}`]:I.subheader},I.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(F,I)=>I.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(F,I)=>I.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(F,I)=>I.content})({flex:`1 1 auto`}),CardHeader=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardHeader`}),{action:R,avatar:z,className:De,component:Oe=`div`,disableTypography:ke=!1,subheader:Ae,subheaderTypographyProps:je,title:Me,titleTypographyProps:Ne}=L,Pe=_objectWithoutPropertiesLoose$2(L,_excluded$41),Fe=_extends$3({},L,{component:Oe,disableTypography:ke}),Ie=useUtilityClasses$37(Fe),Le=Me;Le!=null&&Le.type!==Typography&&!ke&&(Le=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({variant:z?`body2`:`h5`,className:Ie.title,component:`span`,display:`block`},Ne,{children:Le})));let Re=Ae;return Re!=null&&Re.type!==Typography&&!ke&&(Re=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({variant:z?`body2`:`body1`,className:Ie.subheader,color:`text.secondary`,component:`span`,display:`block`},je,{children:Re}))),(0,import_jsx_runtime$2.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(Ie.root,De),as:Oe,ref:I,ownerState:Fe},Pe,{children:[z&&(0,import_jsx_runtime$2.jsx)(CardHeaderAvatar,{className:Ie.avatar,ownerState:Fe,children:z}),(0,import_jsx_runtime$2.jsxs)(CardHeaderContent,{className:Ie.content,ownerState:Fe,children:[Le,Re]}),R&&(0,import_jsx_runtime$2.jsx)(CardHeaderAction,{className:Ie.action,ownerState:Fe,children:R})]}))});function getCardContentUtilityClass(F){return generateUtilityClass(`MuiCardContent`,F)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$40=[`className`,`component`],useUtilityClasses$36=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getCardContentUtilityClass,I)},CardContentRoot=styled(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(F,I)=>I.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardContent`}),{className:R,component:z=`div`}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$40),Oe=_extends$3({},L,{component:z}),ke=useUtilityClasses$36(Oe);return(0,import_jsx_runtime$2.jsx)(CardContentRoot,_extends$3({as:z,className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getCardActionsUtilityClass(F){return generateUtilityClass(`MuiCardActions`,F)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$39=[`disableSpacing`,`className`],useUtilityClasses$35=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getCardActionsUtilityClass,I)},CardActionsRoot=styled(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})(({ownerState:F})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!F.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardActions`}),{disableSpacing:R=!1,className:z}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$39),Oe=_extends$3({},L,{disableSpacing:R}),ke=useUtilityClasses$35(Oe);return(0,import_jsx_runtime$2.jsx)(CardActionsRoot,_extends$3({className:clsx$1(ke.root,z),ownerState:Oe,ref:I},De))}),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,blueberry_default=``+new URL(`blueberry-BBXqspnA.png`,import.meta.url).href,blueberry_growing1_default=``+new URL(`blueberry-growing1-Cj7olcs4.png`,import.meta.url).href,blueberry_seed_default=``+new URL(`blueberry-seed-fuVW1LxC.png`,import.meta.url).href,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,blueberry:blueberry_default,"blueberry-growing-1":blueberry_growing1_default,"blueberry-seed":blueberry_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default]}},noop$2=()=>{},getFinalCropItemFromSeedItem=({id:F},I=0)=>{let L=getFinalCropItemIdFromSeedItemId(F,I);if(L)return itemsMap[L]},getItemCurrentValue=({id:F},I)=>{let L=Math.round((I[F]?getItemBaseValue(F)*(itemsMap[F].doesPriceFluctuate?I[F]:1):getItemBaseValue(F))*100);return Number(toDecimal(dinero({amount:L,currency:USD})))};function noop$1(){}function returnTrue(){return!0}function charIsNumber(F){return!!(F||``).match(/\d/)}function isNil(F){return F==null}function escapeRegExp(F){return F.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(F){switch(F){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(F,I,L){var R=getThousandsGroupRegex(L),z=F.search(/[1-9]/);return z=z===-1?F.length:z,F.substring(0,z)+F.substring(z,F.length).replace(R,`$1`+I)}function splitDecimal(F,I){I===void 0&&(I=!0);var L=F[0]===`-`,R=L&&I;F=F.replace(`-`,``);var z=F.split(`.`);return{beforeDecimal:z[0],afterDecimal:z[1]||``,hasNagation:L,addNegation:R}}function fixLeadingZero(F){if(!F)return F;var I=F[0]===`-`;I&&(F=F.substring(1,F.length));var L=F.split(`.`),R=L[0].replace(/^0+/,``)||`0`,z=L[1]||``;return(I?`-`:``)+R+(z?`.`+z:``)}function limitToScale(F,I,L){for(var R=``,z=L?`0`:``,De=0;De<=I-1;De++)R+=F[De]||z;return R}function repeat(F,I){return Array(I+1).join(F)}function toNumericString(F){F+=``;var I=F[0]===`-`?`-`:``;I&&(F=F.substring(1));var L=F.split(/[eE]/g),R=L[0],z=L[1];if(z=Number(z),!z)return I+R;R=R.replace(`.`,``);var De=1+z,Oe=R.length;return De<0?R=`0.`+repeat(`0`,Math.abs(De))+R:De>=Oe?R+=repeat(`0`,De-Oe):R=(R.substring(0,De)||`0`)+`.`+R.substring(De),I+R}function roundToPrecision(F,I,L){if([``,`-`].indexOf(F)!==-1)return F;var R=F.indexOf(`.`)!==-1&&I,z=splitDecimal(F),De=z.beforeDecimal,Oe=z.afterDecimal,ke=z.hasNagation,Ae=parseFloat(`0.`+(Oe||`0`)),je=(Oe.length<=I?`0.`+Oe:Ae.toFixed(I)).split(`.`),Me=De.split(``).reverse().reduce(function(F,I,L){return F.length>L?(Number(F[0])+Number(I)).toString()+F.substring(1,F.length):I+F},je[0]),Ne=limitToScale(je[1]||``,Math.min(I,Oe.length),L),Pe=ke?`-`:``,Fe=R?`.`:``;return``+Pe+Me+Fe+Ne}function setCaretPosition(F,I){if(F.value=F.value,F!==null){if(F.createTextRange){var L=F.createTextRange();return L.move(`character`,I),L.select(),!0}return F.selectionStart||F.selectionStart===0?(F.focus(),F.setSelectionRange(I,I),!0):(F.focus(),!1)}}function findChangedIndex(F,I){for(var L=0,R=0,z=F.length,De=I.length;F[L]===I[L]&&L<z;)L++;for(;F[z-1-R]===I[De-1-R]&&De-R>L&&z-R>L;)R++;return{start:L,end:z-R}}function clamp(F,I,L){return Math.min(Math.max(F,I),L)}function getCurrentCaretPosition(F){return Math.max(F.selectionStart,F.selectionEnd)}function addInputMode(F){return F||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(F,I){var L={};for(var R in F)Object.prototype.hasOwnProperty.call(F,R)&&I.indexOf(R)===-1&&(L[R]=F[R]);return L}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$1,onChange:noop$1,onKeyDown:noop$1,onMouseUp:noop$1,onFocus:noop$1,onBlur:noop$1,isAllowed:returnTrue},NumberFormat=function(F){function I(I){F.call(this,I);var L=I.defaultValue;this.validateProps();var R=this.formatValueProp(L);this.state={value:R,numAsString:this.removeFormatting(R),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return F&&(I.__proto__=F),I.prototype=Object.create(F&&F.prototype),I.prototype.constructor=I,I.prototype.componentDidMount=function(){this.setState({mounted:!0})},I.prototype.componentDidUpdate=function(F){this.updateValueIfRequired(F)},I.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},I.prototype.updateValueIfRequired=function(F){var I=this,L=I.props,R=I.state,z=I.focusedElm,De=R.value,Oe=R.numAsString;if(Oe===void 0&&(Oe=``),F!==L){this.validateProps();var ke=this.formatNumString(Oe),Ae=isNil(L.value)?ke:this.formatValueProp(),je=this.removeFormatting(Ae),Me=parseFloat(je),Ne=parseFloat(Oe);((!isNaN(Me)||!isNaN(Ne))&&Me!==Ne||ke!==De||z===null&&Ae!==De)&&this.updateValue({formattedValue:Ae,numAsString:je,input:z,source:`prop`,event:null})}},I.prototype.getFloatString=function(F){F===void 0&&(F=``);var I=this.props.decimalScale,L=this.getSeparators().decimalSeparator,R=this.getNumberRegex(!0),z=F[0]===`-`;z&&(F=F.replace(`-`,``)),L&&I===0&&(F=F.split(L)[0]),F=(F.match(R)||[]).join(``).replace(L,`.`);var De=F.indexOf(`.`);return De!==-1&&(F=F.substring(0,De)+`.`+F.substring(De+1,F.length).replace(new RegExp(escapeRegExp(L),`g`),``)),z&&(F=`-`+F),F},I.prototype.getNumberRegex=function(F,I){var L=this.props,R=L.format,z=L.decimalScale,De=L.customNumerals,Oe=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(De?De.join(``):``)+`]`+(Oe&&z!==0&&!I&&!R?`|`+escapeRegExp(Oe):``),F?`g`:void 0)},I.prototype.getSeparators=function(){var F=this.props.decimalSeparator,I=this.props,L=I.thousandSeparator,R=I.allowedDecimalSeparators;return L===!0&&(L=`,`),R||=[F,`.`],{decimalSeparator:F,thousandSeparator:L,allowedDecimalSeparators:R}},I.prototype.getMaskAtIndex=function(F){var I=this.props.mask;return I===void 0&&(I=` `),typeof I==`string`?I:I[F]||` `},I.prototype.getValueObject=function(F,I){var L=parseFloat(I);return{formattedValue:F,value:I,floatValue:isNaN(L)?void 0:L}},I.prototype.validateProps=function(){var F=this.props.mask,I=this.getSeparators(),L=I.decimalSeparator,R=I.thousandSeparator;if(L===R)throw Error(`
153
+ `),severity:`error`}),{...F,newDayNotifications:R}},processNerfs=F=>applyChanceEvent([[()=>!0,applyCrows]],F),getRangeCoords=(F,I,L)=>{let R=2*F+1,z=I-F,De=L-F;return Array(R).fill(null).map((F,I)=>Array(R).fill(null).map((F,L)=>({x:z+L,y:De+I})))},processSprinklers=F=>{let{field:I,experience:L}=F,R=new Map,z=[...I],{sprinklerRange:De}=getLevelEntitlements(levelAchieved(L));return I.forEach((L,Oe)=>{L.forEach((L,ke)=>{!L||getPlotContentType(L)!==itemType.SPRINKLER||getRangeCoords(De,ke,Oe).flat().forEach(({x:L,y:De})=>{let Oe=I[De];if(!Oe)return;let ke=Oe[L];ke&&getPlotContentType(ke)===itemType.CROP&&(R.has(ke)||(z=modifyFieldPlotAt({...F,field:z},L,De,setWasWatered).field),R.set(ke,{x:L,y:De}))})})}),{...F,field:z}},shouldPrecipitateToday=()=>random$1(randomStream.PRECIPITATION)<PRECIPITATION_CHANCE,processWeather=F=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],F),rotateNotificationLogs=F=>{let I=[...F.notificationLog],{dayCount:L,newDayNotifications:R}=F,z={error:[],info:[],success:[],warning:[]};return R.forEach(({message:F,severity:I})=>z[I].push(F)),R.length&&I.unshift({day:L,notifications:z}),I.length=Math.min(I.length,14),{...F,notificationLog:I}},get7DayAverage=F=>F.reduce((F,I)=>moneyTotal(F,I),0)/7,getProfit=(F,I)=>moneyTotal(F,I),updateFinancialRecords=F=>{let{profitabilityStreak:I,todaysLosses:L,todaysRevenue:R,record7dayProfitAverage:z,recordProfitabilityStreak:De}=F,{historicalDailyLosses:Oe,historicalDailyRevenue:ke,recordSingleDayProfit:Ae}=F;Oe=[L,...Oe].slice(0,7),ke=[R,...ke].slice(0,7);let je=get7DayAverage(Oe.map((F,I)=>moneyTotal(ke[I],F))),Me=R+L>0?I+1:0;return{...F,historicalDailyLosses:Oe,historicalDailyRevenue:ke,profitabilityStreak:Me,record7dayProfitAverage:Math.max(z,je),recordProfitabilityStreak:Math.max(De,Me),recordSingleDayProfit:Math.max(Ae,getProfit(R,L)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=F=>({...F,todaysPurchases:{},todaysStartingInventory:F.inventory.reduce((F,{id:I,quantity:L})=>(F[I]=L,F),{})}),decrementPriceEventDays=F=>Object.keys(F).reduce((I,L)=>{let R=F[L];if(!R)return I;let{itemId:z,daysRemaining:De}=R;return De>1&&(I[L]={itemId:z,daysRemaining:De-1}),I},{}),updatePriceEvents=F=>{let{priceCrashes:I,priceSurges:L}=F;return{...F,priceCrashes:decrementPriceEventDays(I),priceSurges:decrementPriceEventDays(L)}},adjustItemValues=F=>({...F,historicalValueAdjustments:[F.valueAdjustments],valueAdjustments:generateValueAdjustments(F.priceCrashes,F.priceSurges)}),computeStateForNextDay=(F,I=!1)=>(F=(I?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((F,I)=>I({...F}),{...F,cowForSale:generateCow(),dayCount:F.dayCount+1,todaysNotifications:[]}),F.dayCount%60==0&&(F=addExperience(F,EXPERIENCE_VALUES.NEW_YEAR)),F),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(F,I,L)=>{let{field:R,selectedItemId:z}=F,De=R[L][I];if(!De||itemsMap[z]?.type!==itemType.FERTILIZER)return F;let{id:Oe}=itemsMap[z],ke=F.inventory.find(F=>F.id===Oe),Ae=getPlotContentType(De);if(!De||!ke||De.fertilizerType!==fertilizerType.NONE||z===`fertilizer`&&Ae!==itemType.CROP||z===`rainbow-fertilizer`&&Ae!==itemType.CROP&&Ae!==itemType.SCARECROW)return F;let{quantity:je}=ke;F=decrementItemFromInventory(F,Oe);let Me=je>1;return F=modifyFieldPlotAt(F,I,L,F=>F&&{...F,fertilizerType:fertilizerItemIdToTypeMap[Oe]}),{...F,fieldMode:Me?FERTILIZE$3:OBSERVE$5,selectedItemId:Me?Oe:``}},forRange=(F,I,L,R,z,...De)=>{let Oe=Math.max(R-L,0),ke=Math.min(R+L,F.field[0].length-1),Ae=Math.max(z-L,0),je=Math.min(z+L,F.field.length-1);for(let L=Ae;L<=je;L++)for(let R=Oe;R<=ke;R++)F=I(F,R,L,...De);return F},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(F,I,L)=>{let R=F.forest[L]?.[I];if(!R||!(`itemId`in R)||F.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(F)||getFruitLifeStage(R)!==GROWN$6)return F;let z=itemsMap[R.itemId];if(!z)return F;let De=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[F.toolLevels[toolType.PICKER_POLE]]??1,Oe=Math.min(De,inventorySpaceRemaining(F));return F=addItemToInventory(F,z,De),F={...F,treeFruitsHarvested:{...F.treeFruitsHarvested,[z.id]:(F.treeFruitsHarvested[z.id]||0)+Oe}},modifyForestPlotAt(F,I,L,F=>F&&`itemId`in F?{...F,daysSinceLastHarvest:0}:F)},getCropFromItemId=F=>({...getPlotContentFromItemId(F),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(F,I,L,R)=>{if(!R||!F.inventory.some(({id:F})=>F===R))return F;let{field:z}=F;if(z[L][I])return F;let{growsInto:De}=itemsMap[R],Oe=getFinalCropItemIdFromSeedItemId(R,Array.isArray(De)?chooseRandomIndex(De):0);return Oe?(F=modifyFieldPlotAt(F,I,L,()=>getCropFromItemId(Oe)),F=decrementItemFromInventory(F,R),F=processSprinklers(F),{...F,selectedItemId:F.inventory.find(({id:F})=>F===R)?R:``}):F},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(F){let I=1;switch(F.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:I+=1;break;case toolLevel.IRON:I+=2;break;case toolLevel.SILVER:I+=3;break;case toolLevel.GOLD:I+=4;break;default:I=1}return Math.min(I,inventorySpaceRemaining(F))}function harvestCrops(F,I,L){let R=F.field[L][I];if(!R)return F;let z=itemsMap[R.itemId];if(!z)return F;let De=getSeedItemIdFromFinalStageCropItemId(z.id),Oe=R.fertilizerType===fertilizerType.RAINBOW,ke=getHarvestedQuantity(F);F=removeFieldPlotAt(F,I,L),F=addItemToInventory(F,z,ke);let{cropType:Ae}=z;if(!Ae)return F;Oe&&getInventoryQuantityMap(F.inventory)[De]>0&&(F=plantInPlot(F,I,L,De),F=modifyFieldPlotAt(F,I,L,F=>F&&{...F,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:je}=F;return{...F,cropsHarvested:{...je,[Ae]:(je[Ae]||0)+ke}}}function harvestWeed(F,I,L){let R=F.field[L][I];if(!R)return F;let z=itemsMap[R.itemId],De=getHarvestedQuantity(F);return F=removeFieldPlotAt(F,I,L),F=addItemToInventory(F,z,De),F}var harvestPlot=(F,I,L)=>{let R=F.field[L][I];return!R||!doesInventorySpaceRemain(F)?F:getPlotContentType(R)===itemType.CROP&&getCropLifeStage(R)===GROWN$5?harvestCrops(F,I,L):getPlotContentType(R)===itemType.WEED?harvestWeed(F,I,L):F},hugCow=(F,I)=>modifyCow(F,I,F=>F.happinessBoostsToday>=3?F:{happiness:Math.min(1,F.happiness+COW_HUG_BENEFIT),happinessBoostsToday:F.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:F},I)=>{let L=getInventoryQuantityMap(I);return Math.min(...Object.keys(F).map(I=>Math.floor(L[I]/F[I])))||0},{}),canMakeRecipe=(F,I,L)=>maxYieldOfRecipe(F,I)>=L,consumeIngredients=(F,I,L=1,R=0)=>I.ingredients&&!canMakeRecipe(I,F.inventory,L)?F:(F=addExperience(F,R),Object.keys(I.ingredients||{}).reduce((F,R)=>decrementItemFromInventory(F,R,I.ingredients[R]*L),F)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(F,I,L=1)=>{let R=F;return F=consumeIngredients(F,I,L,EXPERIENCE_FOR_RECIPE[I.recipeType]||0),F===R?F:(F={...F,recipesMade:{...F.recipesMade,[I.id]:(F.recipesMade[I.id]||0)+L}},addItemToInventory(F,I,L))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=F=>{let{daysToFerment:I=0,tier:L=1}=F;return Math.ceil((I??0)*saltRequirementMultiplier)*L},getMaxYieldOfFermentationRecipe=(F,I,L,R)=>{let{[F.id]:z=0,[itemsMap.salt.id]:De=0}=getInventoryQuantityMap(I),Oe=Math.floor(De/getSaltRequirementsForFermentationRecipe(F));return Math.min(R-L.length,z,Oe)},addKegToCellarInventory=(F,I)=>{let{cellarInventory:L}=F;return{...F,cellarInventory:[...L,I]}},makeFermentationRecipe=(F,I,L=1)=>{let{inventory:R,cellarInventory:z,purchasedCellar:De}=F,{space:Oe}=PURCHASEABLE_CELLARS.get(De)??{space:0};if(getMaxYieldOfFermentationRecipe(I,R,z,Oe)<L)return F;for(let R=0;R<L;R++){let L=cellarService.generateKeg(I);F=addKegToCellarInventory(F,L)}let ke=getSaltRequirementsForFermentationRecipe(I);return F=decrementItemFromInventory(F,I.id,L),F=decrementItemFromInventory(F,itemsMap.salt.id,L*ke),F},makeWine=(F,I,L=1)=>{let{inventory:R,cellarInventory:z,purchasedCellar:De}=F,{space:Oe}=PURCHASEABLE_CELLARS.get(De)??{space:0},ke=wineService.getMaxWineYield({grape:I,inventory:R,cellarInventory:z,cellarSize:Oe}),Ae=itemsMap[I.wineId],je=Math.min(L,ke);for(let I=0;I<je;I++){let I=cellarService.generateKeg(Ae);F=addKegToCellarInventory(F,I)}F=decrementItemFromInventory(F,I.id,je*50);let Me=getYeastRequiredForWine(I.variety);return F=decrementItemFromInventory(F,itemsMap.yeast.id,je*Me),F};function randomChoice(F){let I=0,L=[];for(let R of F)I+=R.weight,L.push(R);L.sort((F,I)=>F.weight-I.weight);let R=random$1()*I,z,De=0;for(let F in L){if(z=L[F],R<z.weight+De)return z;De+=z.weight}return L[L.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let F of SPAWNABLE_ORES)this.oreOptions.push({ore:F,weight:F.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let F=[],I=chooseRandom([1,1,1,2,3]);for(let L=0;L<I;L++)F.push(this.spawnCoal());return F.push(this.spawnStone()),F}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let F=[];for(let{resource:I,spawnChance:L}of spawnableResources)randomNumberService.isRandomNumberLessThan(L)&&F.push(I);return F}},factoryInstances={},instance=null,ResourceFactory=class F{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new F,instance}static generateFactoryInstance(F){switch(F){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=I=>(factoryInstances[I]||(factoryInstances[I]=F.generateFactoryInstance(I)),factoryInstances[I]);generateResources(I){let L=[],R=RESOURCE_SPAWN_CHANCE;switch(I){case toolLevel.BRONZE:R+=.1;break;case toolLevel.IRON:R+=.2;break;case toolLevel.SILVER:R+=.3;break;case toolLevel.GOLD:R+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(R)){let I=randomChoice(this.resourceOptions),R=F.getFactoryForItemType(I.itemType);if(R){let F=R.generate();F&&(L=Array.isArray(F)?F:[F])}}return L}},daysUntilClearPeriods=[1,2,2,3],minePlot=(F,I,L)=>{let{field:R}=F;if(R[L][I])return F;if(!doesInventorySpaceRemain(F))return showNotification(F,INVENTORY_FULL_NOTIFICATION);let z=F.toolLevels[toolType.SHOVEL],De=ResourceFactory.instance().generateResources(z),[Oe]=De,ke=chooseRandom(daysUntilClearPeriods);if(Oe){let F=De.map(({spawnChance:F})=>F).filter(F=>F!=null),I=Math.min(...F);ke+=Math.round(random$1()*(1-I)*10)}for(let I of De)F=addItemToInventory(F,I);return F=modifyFieldPlotAt(F,I,L,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:ke,oreId:Oe?.id??null})),{...F}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(F,I,L)=>{let{forest:R,selectedItemId:z}=F,De=R[L]?.[I];if(!De||!isPlantedTree(De)||itemsMap[z]?.type!==itemType.MULCH)return F;let Oe=z,ke=F.inventory.find(F=>F.id===Oe);if(!ke||(De.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return F;let{quantity:Ae}=ke;F=decrementItemFromInventory(F,Oe);let je=Ae>1;return F={...F,mulchApplied:{...F.mulchApplied,[Oe]:(F.mulchApplied[Oe]||0)+1}},F=modifyForestPlotAt(F,I,L,F=>!F||!isPlantedTree(F)?F:{...F,fertilizerType:mulchItemIdToTypeMap[Oe]}),{...F,fieldMode:je?FERTILIZE$2:OBSERVE$4,selectedItemId:je?Oe:``}},offerCow=(F,I)=>(F={...F,cowIdOfferedForTrade:I},F),placeFarmhandShuffleWager=(F,I)=>{let{farmhandShuffle:L,money:R}=F;return L.isMatchInProgress||!Number.isFinite(I)||I<0||I>R?F:{...F,money:moneyTotal(R,-I),farmhandShuffle:{...L,wager:I,isMatchInProgress:!0,serializedMatch:null}}},getTreeDeathChance=F=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+F*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let F=0;for(;F<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(F);)F++;return F},getRandomizedLifespan=F=>{let I=F*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(I+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(F,I,L,R)=>{if(!R||!F.inventory.some(({id:F})=>F===R))return F;let z=F.forest[L];if(!z||z[I])return F;let De=getFinalCropItemIdFromSeedItemId(R);if(!De)return F;let Oe=itemsMap[De]?.lifespan,ke=Oe===void 0?void 0:getRandomizedLifespan(Oe);return F=modifyForestPlotAt(F,I,L,()=>({itemId:De,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...ke!==void 0&&{lifespan:ke}})),F=decrementItemFromInventory(F,R),{...F,selectedForestItemId:F.inventory.find(({id:F})=>F===R)?R:``}},prependPendingPeerMessage=(F,I,L=`info`)=>({...F,pendingPeerMessages:[{playerId:F.playerId,message:I,severity:L},...F.pendingPeerMessages].slice(0,5)}),purchaseCombine=(F,I)=>{let{money:L,purchasedCombine:R}=F;if(R>=I)return F;let z=PURCHASEABLE_COMBINES.get(I)?.price||0;return{...F,purchasedCombine:I,money:moneyTotal(L,-z)}},updateLearnedRecipes=F=>({...F,learnedRecipes:Object.keys(recipesMap).reduce((I,L)=>(recipesMap[L].condition(F)&&(I[L]=!0),I),{})}),purchaseComposter=(F,I)=>{let{money:L,purchasedComposter:R}=F;return R>=I?F:(F={...F,purchasedComposter:I,money:moneyTotal(L,-(PURCHASEABLE_COMPOSTERS.get(I)?.price??0))},F=showNotification(F,RECYCLING_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(F))},getCowWeight=({baseWeight:F,weightMultiplier:I})=>Math.round(F*I),getCowValue=(F,I=!1)=>I?getCowWeight(F)*clampNumber(scaleNumber(F.daysOld,1,100,0,1),0,1):getCowWeight(F)*1.5,purchaseCow=(F,I)=>{let{cowInventory:L,cowColorsPurchased:R,playerId:z,money:De,purchasedCowPen:Oe}=F,{color:ke}=I,Ae=getCowValue(I,!1);return De<Ae||Oe===0||L.length>=(PURCHASEABLE_COW_PENS.get(Oe)?.cows??0)?F:(F=addCowToInventory(F,{...I,ownerId:z,originalOwnerId:z}),{...F,cowColorsPurchased:{...R,[ke]:(R[ke]||0)+1},money:moneyTotal(De,-Ae),cowForSale:generateCow()})},purchaseCowPen=(F,I)=>{let{money:L,purchasedCowPen:R}=F;if(R>=I)return F;let z=PURCHASEABLE_COW_PENS.get(I);if(!z)return F;let{cows:De,price:Oe}=z;F=showNotification(F,COW_PEN_PURCHASED(``,De),`success`);let ke=I>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return F=addExperience(F,ke),{...F,purchasedCowPen:I,money:moneyTotal(L,-Oe)}},purchaseCellar=(F,I)=>{let{money:L,purchasedCellar:R}=F;if(R>=I)return F;let z=PURCHASEABLE_CELLARS.get(I);if(!z)return F;let{price:De,space:Oe}=z;F=showNotification(F,CELLAR_PURCHASED(``,Oe),`success`);let ke=I>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return F=addExperience(F,ke),{...F,purchasedCellar:I,money:moneyTotal(L,-De)}},nullArray=memoize(F=>Object.freeze(Array(F).fill(null)),{cacheSize:30}),purchaseField=(F,I)=>{let{field:L,money:R,purchasedField:z}=F;if(z>=I)return F;F=addExperience(F,EXPERIENCE_VALUES.FIELD_EXPANDED);let De=PURCHASEABLE_FIELD_SIZES.get(I);if(!De)return F;let{columns:Oe,price:ke,rows:Ae}=De;return{...F,purchasedField:I,field:nullArray(Ae).map((F,I)=>nullArray(Oe).map((F,R)=>L[I]&&L[I][R]||null)),money:moneyTotal(R,-ke)}},purchaseForest=(F,I)=>{let{forest:L,money:R,purchasedForest:z}=F;if(z>=I)return F;F=addExperience(F,EXPERIENCE_VALUES.FOREST_EXPANDED);let De=PURCHASABLE_FOREST_SIZES.get(I);if(!De)return F;let{columns:Oe,price:ke,rows:Ae}=De,je=I===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${Ae*Oe}`;return F=showNotification(F,je,`success`),{...F,purchasedForest:I,forest:nullArray(Ae).map((F,I)=>nullArray(Oe).map((F,R)=>L[I]&&L[I][R]||null)),money:moneyTotal(R,-ke)}},getAdjustedItemValue=(F,I)=>Number(((F[I]||1)*itemsMap[I].value).toFixed(2)),purchaseItem=(F,I,L=1)=>{let{money:R,todaysPurchases:z,valueAdjustments:De}=F,Oe=I.getMaxPurchaseQuantity?.(F)??1/0,ke=Math.max(0,Math.min(L,inventorySpaceRemaining(F),Oe));if(ke===0)return F;let Ae=getAdjustedItemValue(De,I.id)*ke;return Ae>R?F:(F=prependPendingPeerMessage(F,PURCHASED_ITEM_PEER_NOTIFICATION(``,ke,I)),addItemToInventory({...F,money:moneyTotal(R,-Ae),todaysPurchases:{...z,[I.id]:(z[I.id]||0)+ke}},I,ke))},purchaseSmelter=(F,I)=>{let{money:L,purchasedSmelter:R}=F;return R>=I?F:(F={...F,purchasedSmelter:I,money:moneyTotal(L,-(PURCHASEABLE_SMELTERS.get(I)?.price??0))},F=showNotification(F,FORGE_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(F))},getCostOfNextStorageExpansion=F=>500+(F-100)/100*50,purchaseStorageExpansion=F=>{let{money:I,inventoryLimit:L}=F,R=getCostOfNextStorageExpansion(L);return I<R||L===-1?F:{...F,inventoryLimit:L+100,money:moneyTotal(I,-R)}},purchaseWoodChipper=(F,I)=>{let{money:L,purchasedWoodChipper:R}=F;return R>=I?F:(F={...F,purchasedWoodChipper:I,money:moneyTotal(L,-(PURCHASEABLE_WOOD_CHIPPERS.get(I)?.price??0))},F=showNotification(F,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),F=addExperience(F,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(F))},removePeer=(F,I)=>{let L={...F.peers};return delete L[I],{...F,peers:L,activePlayers:(F.activePlayers??1)-1}},refundUnresumableFarmhandShuffleMatch=F=>{let{farmhandShuffle:I,money:L}=F,{wager:R}=I;return F={...F,money:moneyTotal(L,R),farmhandShuffle:{...I,isMatchInProgress:!1,serializedMatch:null,wager:0}},showNotification(F,`Your Farmhand Shuffle match couldn't be resumed after an update - your wager was refunded.`,`warning`)},saveFarmhandShuffleMatch=(F,I)=>({...F,farmhandShuffle:{...F.farmhandShuffle,serializedMatch:I}}),selectCow=(F,{id:I})=>({...F,selectedCowId:I}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:F})=>`${cowColorToIdMap[F]}-cow`,sellCow=(F,I)=>{let{cowsSold:L}=F,R=getCowColorId(I),z=getCowValue(I,!0);F=removeCowFromInventory(F,I),F=addRevenue(F,z);let De={...L,[R]:(L[R]||0)+1};return F={...F,cowsSold:De},F},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=F=>SEASON_ORDER[Math.floor((F-1)/15)%SEASON_ORDER.length],getResaleValue=({id:F})=>itemsMap[F].value/2,getSalePriceMultiplier=(F={})=>{let I=1;return F[`i-am-rich-3`]?I+=I_AM_RICH_BONUSES[2]:F[`i-am-rich-2`]?I+=I_AM_RICH_BONUSES[1]:F[`i-am-rich-1`]&&(I+=I_AM_RICH_BONUSES[0]),I},getSeasonalDemandStatus=(F,I)=>F.highDemandSeasons?.includes(I)?`HIGH`:F.lowDemandSeasons?.includes(I)?`LOW`:null,getSeasonalDemandMultiplier=(F,I)=>{let L=getSeasonalDemandStatus(F,I);return L===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:L===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,blueberrySeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(F=>F.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((F,I)=>(F[I.id]=I,F),{}),isItemSoldInShop=({id:F})=>!!purchasableItemMap[F],sellItem=(F,{id:I},L=1)=>{if(L===0)return F;let R=itemsMap[I],{completedAchievements:z,dayCount:De,itemsSold:Oe,money:ke,valueAdjustments:Ae}=F,{loanBalance:je}=F,Me=isItemSoldInShop(R),Ne=Me?getResaleValue(R):getAdjustedItemValue(Ae,I),Pe=Me?1:getSeasonalDemandMultiplier(R,getCurrentSeason(De)),Fe=isItemAFarmProduct(R),Ie=Ne*(Fe?getSalePriceMultiplier(z):1)*Pe,Le=0,Re=0;for(let F=0;F<L;F++){let F=Fe?Math.min(je,castToMoney(Ie*LOAN_GARNISHMENT_RATE)):0;Fe&&(Re+=EXPERIENCE_VALUES.ITEM_SOLD);let I=Ie-F;je=moneyTotal(je,-F),Le=moneyTotal(Le,I)}Fe&&(F=adjustLoan(F,moneyTotal(je,-F.loanBalance)));let ze={...Oe,[I]:(Oe[I]||0)+L};return F=R.isPlantableCrop?{...F,money:moneyTotal(ke,Le)}:addRevenue({...F,money:ke},Le),F=addExperience(F,Re),F={...F,itemsSold:ze},F=decrementItemFromInventory(F,I,L),F=prependPendingPeerMessage(F,SOLD_ITEM_PEER_NOTIFICATION(``,L,R),`warning`),updateLearnedRecipes(F)},getItemBaseValue=F=>itemsMap[F].value,getKegValue=F=>{let{itemId:I,daysUntilMature:L}=F,R=itemsMap[I];if(L>0)return 0;let z=0,De=0,Oe=0;return wineService.isWineRecipe(R)?(z=R.value,De=WINE_INTEREST_RATE,Oe=Math.min(Math.max(-L,1),100)):(z=(R.tier??1)*getItemBaseValue(I),De=KEG_INTEREST_RATE,Oe=Math.abs(F.daysUntilMature)),z*(1+De)**Oe},sellKeg=(F,I)=>{let{itemId:L}=I,R=itemsMap[L],{cellarItemsSold:z,completedAchievements:De,itemsSold:Oe,money:ke}=F,{loanBalance:Ae}=F,je=0,Me=getKegValue(I),Ne=Math.min(Ae,castToMoney(Me*LOAN_GARNISHMENT_RATE)),Pe=Me*getSalePriceMultiplier(De)-Ne;Ae=moneyTotal(Ae,-Ne),je=moneyTotal(je,Pe),F=adjustLoan(F,moneyTotal(Ae,-F.loanBalance));let Fe={...Oe,[L]:(Oe[L]??0)+1},Ie={...z,[L]:(z[L]??0)+1};return F={...F,itemsSold:Fe,cellarItemsSold:Ie},F=addRevenue({...F,money:ke},je),F=addExperience(F,EXPERIENCE_VALUES.KEG_SOLD),F=removeKegFromCellar(F,I.id),F=prependPendingPeerMessage(F,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${R}`,`warning`),F=updateLearnedRecipes(F),F},settleFarmhandShuffleMatch=(F,I,L)=>{let{farmhandShuffle:R,money:z}=F,{wager:De}=R;if(!R.isMatchInProgress)return F;let Oe=I===null,ke=!Oe&&I===L,Ae=z,je=R.totalWins,Me=R.totalLosses,Ne=R.currentWinStreak,Pe=R.longestWinStreak;return Oe?Ae=moneyTotal(z,De):ke?(Ae=moneyTotal(z,De*2),je+=1,Ne+=1,Pe=Math.max(Pe,Ne)):(Me+=1,Ne=0),{...F,money:Ae,farmhandShuffle:{...R,isMatchInProgress:!1,serializedMatch:null,wager:0,totalMatchesPlayed:R.totalMatchesPlayed+1,totalWins:je,totalLosses:Me,currentWinStreak:Ne,longestWinStreak:Pe}}},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(F,I,L)=>{if(F.field[L][I]!==null)return F;let{selectedItemId:R}=F;F=decrementItemFromInventory(F,R);let z=F.inventory.some(F=>F.id===R);return F=modifyFieldPlotAt(F,I,L,()=>({itemId:R,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...F,fieldMode:z?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:z?R:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(F,I,L)=>{if(F.field[L][I]!==null)return F;F=decrementItemFromInventory(F,SCARECROW_ITEM_ID);let R=F.inventory.some(F=>F.id===SCARECROW_ITEM_ID);return F=modifyFieldPlotAt(F,I,L,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...F,fieldMode:R?SET_SCARECROW$2:OBSERVE$2,selectedItemId:R?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(F,I,L)=>{let{field:R}=F;if(R[L][I]!==null)return F;F=decrementItemFromInventory(F,SPRINKLER_ITEM_ID);let z=F.inventory.some(F=>F.id===SPRINKLER_ITEM_ID);return F=modifyFieldPlotAt(F,I,L,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),F=processSprinklers(F),{...F,fieldMode:z?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:z?SPRINKLER_ITEM_ID:``}},dollarString=F=>toDecimal(dinero({amount:Math.round(F),currency:USD,scale:0}),({value:F})=>Number(F).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(F,I,L)=>Math.max(F,getProfit(I,L)),isOctober=()=>new Date().getMonth()===9,percentageString=F=>`${Math.round(F*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(F,I)=>({...F,money:moneyTotal(F.money,I)}),sumOfCropsHarvested=memoize(F=>Object.values(F).reduce((F,I)=>F+I,0),{}),sumOfPartialRecordValues=memoize(F=>Object.values(F).reduce((F,I)=>F+(I||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(F=>F.isPie).map(F=>F.id),sumOfPiesMade=memoize(F=>PIE_RECIPE_IDS.reduce((I,L)=>I+(F[L]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(F,I)=>({condition:L=>I(L)>=F,getProgress:L=>({currentValue:I(L),goal:F})}),achievements=[((F=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(F),condition:F=>!!findInField(F.field,F=>F!==null&&doesPlotContainCrop(F)&&getCropLifeStage(F)===SEED$3),reward:I=>addMoney(I,F)}))(),((F=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(F),condition:F=>!!findInField(F.field,F=>doesPlotContainCrop(F)&&!!F.wasWateredToday),reward:I=>addMoney(I,F)}))(),((F=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(F),condition:F=>sumOfCropsHarvested(F.cropsHarvested)>=1,reward:I=>addMoney(I,F)}))(),((F=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${F} experience points`,condition:F=>F.loanBalance===0,reward:I=>addExperience(I,F)}))(),((F=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(F)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${F} units of ${cowFeed.name}`,condition:F=>F.purchasedCowPen>0,reward:I=>addItemToInventory(I,cowFeed,F,!0)}))(),((F=100,I=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${F} units of ${cowFeed.name}`,...progressAchievement(I,F=>Object.values(standardCowColors).filter(I=>(F.cowColorsPurchased[I]||0)>0).length),reward:I=>addItemToInventory(I,cowFeed,F,!0)}))(),((F=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${F} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:I=>addItemToInventory(I,itemsMap.jackolantern,F,!0)}))(),((F=100,I=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(I)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${F} units of ${itemsMap.scarecrow.name}`,...progressAchievement(I,F=>F.itemsSold.jackolantern||0),reward:I=>addItemToInventory(I,itemsMap.scarecrow,F,!0)}))(),((F=5e3,I=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap.fertilizer.name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap.fertilizer,I,!0)}))(),((F=15e3,I=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap[`onion-seed`],I,!0)}))(),((F=5e4,I=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(F)}`,description:`Earn ${dollarString(F)} of profit in a single day.`,rewardDescription:`${I} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(F,F=>getProfitRecord(F.recordSingleDayProfit,F.todaysRevenue,F.todaysLosses)),reward:F=>addItemToInventory(F,itemsMap[`tomato-seed`],I,!0)}))(),((F=2500,I=35,L=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e4,I=100,L=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=25e3,I=250,L=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=5e4,I=300,L=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=15e4,I=500,L=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e6,I=1e3,L=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(F)}`,description:`Reach a 7-day profit average of ${dollarString(F)}.`,rewardDescription:`${I} units of ${L.name}`,...progressAchievement(F,F=>F.record7dayProfitAverage),reward:F=>addItemToInventory(F,L,I,!0)}))(),((F=1e4,I=itemsMap[`milk-3`],L=5e3,R=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(F)} units of ${I.name}.`,rewardDescription:`${integerString(L)} ${R.name} units`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>addItemToInventory(F,R,L,!0)}))(),((F=1e3,I=itemsMap[`rainbow-milk-2`],L=500,R=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(F)} units of ${I.name}.`,rewardDescription:`${integerString(L)} ${R.name} units`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>addItemToInventory(F,R,L,!0)}))(),((F=1e4,I=itemsMap.burger,L=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(F)} ${I.name} units.`,rewardDescription:`${integerString(L)} additional inventory spaces`,...progressAchievement(F,F=>F.itemsSold[I.id]||0),reward:F=>({...F,inventoryLimit:F.inventoryLimit+L})}))(),((F=1e3,I=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=1e4,I=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=1e5,I=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(F)} units.`,rewardDescription:`${integerString(I)} additional inventory spaces`,...progressAchievement(F,F=>F.inventoryLimit),reward:F=>({...F,inventoryLimit:F.inventoryLimit+I})}))(),((F=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(F)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(F,F=>F.revenue),reward:F=>F}))(),((F=Math.floor(Math.PI*1e6),I=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(F)} on hand.`,rewardDescription:`${integerString(I)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:I=>Math.floor(I.money)===F,reward:F=>addItemToInventory(F,itemsMap[`pumpkin-pie`],I,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:F=>!!F.inventory.find(F=>F.id===`gold-ore`),reward:F=>addItemToInventory(F,itemsMap[`gold-ingot`],1,!0)},((F=1e3,I=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(F)} fruits from trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(F,F=>sumOfPartialRecordValues(F.treeFruitsHarvested)),reward:F=>addItemToInventory(F,itemsMap[`apple-sapling`],I,!0)}))(),((F=100,I=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(F)} pies.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>sumOfPiesMade(F.recipesMade)),reward:F=>addMoney(F,I)}))(),((F=250,I=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(F)} trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap.wood.name}`,...progressAchievement(F,F=>F.treesChopped),reward:F=>addItemToInventory(F,itemsMap.wood,I,!0)}))(),((F=100)=>({id:`farmhand-shuffle-first-match`,name:`Shuffle Up and Deal`,description:`Play your first match of Farmhand Shuffle.`,rewardDescription:dollarString(F),condition:F=>F.farmhandShuffle.totalMatchesPlayed>0,reward:I=>addMoney(I,F)}))(),((F=3,I=150)=>({id:`farmhand-shuffle-win-streak-1`,name:`Hot Streak`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=5,I=300)=>({id:`farmhand-shuffle-win-streak-2`,name:`On a Roll`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=10,I=750)=>({id:`farmhand-shuffle-win-streak-3`,name:`Unstoppable`,description:`Win ${integerString(F)} Farmhand Shuffle matches in a row.`,rewardDescription:dollarString(I),...progressAchievement(F,F=>F.farmhandShuffle.currentWinStreak),reward:F=>addMoney(F,I)}))(),((F=100,I=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(F)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${I} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(F,F=>sumOfPartialRecordValues(F.mulchApplied)),reward:F=>addItemToInventory(F,itemsMap[`rainbow-mulch`],I,!0)}))()],achievementsMap=achievements.reduce((F,I)=>(F[I.id]=I,F),{}),updateAchievements=(F,I)=>achievements.reduce((F,L)=>(!F.completedAchievements[L.id]&&L.condition(F,I)&&(F={...L.reward(F),completedAchievements:{...F.completedAchievements,[L.id]:!0}},F=showNotification(F,ACHIEVEMENT_COMPLETED(``,{name:L.name,rewardDescription:L.rewardDescription}),`success`)),F),F),updatePeer=(F,I,L,R)=>{let z={...F.peers},De=z[R]?.cowOfferedForTrade?.id,Oe=L.cowOfferedForTrade?.id,ke=Oe&&De!==Oe;z[R]=L;let{pendingPeerMessages:Ae=[]}=L;return ke&&(F=showNotification(F,NEW_COW_OFFERED_FOR_TRADE`${L}`,`info`,()=>{I.openDialogView(dialogView.ONLINE_PEERS)})),{...F,peers:z,latestPeerMessages:[...Ae,...F.latestPeerMessages].slice(0,30)}},upgradeTool=(F,I)=>{if(!I.toolType||!I.level)return F;let L=F;if(F=consumeIngredients(F,{...I,ingredients:I.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),F===L)return F;F=addItemToInventory(F,I,1);let R=upgrades[I.toolType],z=F.toolLevels[I.toolType],De=R?.[z]?.name||``;return F.toolLevels[I.toolType]=I.level,F=showNotification(F,TOOL_UPGRADED_NOTIFICATION(``,De,I.name)),{...F}},waterAllPlots=F=>waterField(F),waterPlot=(F,I,L)=>{let R=F.field[L][I];return R&&getPlotContentType(R)===itemType.CROP?modifyFieldPlotAt(F,I,L,F=>F&&{...F,wasWateredToday:!0}):F},withdrawCow=(F,I)=>{let{cowIdOfferedForTrade:L}=F;return I===L&&(F={...F,cowIdOfferedForTrade:``}),F},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,placeFarmhandShuffleWager:()=>placeFarmhandShuffleWager,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,refundUnresumableFarmhandShuffleMatch:()=>refundUnresumableFarmhandShuffleMatch,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,saveFarmhandShuffleMatch:()=>saveFarmhandShuffleMatch,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,settleFarmhandShuffleMatch:()=>settleFarmhandShuffleMatch,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(F,I=1){this.purchaseItem(F,I)},handleMakeRecipeClick(F,I=1){this.makeRecipe(F,I)},handleMakeFermentationRecipeClick(F,I=1){this.makeFermentationRecipe(F,I)},handleMakeWineClick(F,I=1){this.makeWine(F,I)},handleSellKegClick(F){this.sellKeg(F)},handleThrowAwayKegClick(F){this.removeKegFromCellar(F.id)},handleUpgradeTool(F){this.upgradeTool(F)},handleCowPurchaseClick(F){this.purchaseCow(F)},handleCowSellClick(F){this.sellCow(F)},handleCowTradeClick(F){this.tradeForPeerCow(F)},handleCowAutomaticHugChange({target:{checked:F}},I){this.changeCowAutomaticHugState(I,F)},handleCowBreedChange({target:F},I){let{checked:L}=F;this.changeCowBreedingPenResident(I,L)},handleCowHugClick(F){this.hugCow(F.id)},handleCowOfferClick(F){this.offerCow(F.id)},handleCowWithdrawClick(F){this.withdrawCow(F.id)},handleCowNameInputChange(F,I){this.changeCowName(I.id,F)},handleItemSellClick(F,I=1){this.sellItem(F,I)},handleViewChange({target:F}){let{value:I}=F;this.setState({stageFocus:I})},handleViewChangeButtonClick(F){this.setState({stageFocus:F})},handleFieldModeSelect(F){this.setState(({selectedItemId:I})=>({selectedItemId:F!==PLANT$2||TOOLBELT_FIELD_MODES.has(F)?``:I,selectedForestItemId:``,fieldMode:F}))},handleItemSelectClick({id:F,enablesFieldMode:I}){this.setState({fieldMode:I,selectedItemId:F})},handleForestItemSelectClick({id:F}){this.setState({fieldMode:PLANT$2,selectedForestItemId:F})},handlePlotClick(F,I){let{fieldMode:L,hoveredPlotRangeSize:R,selectedItemId:z}=this.state;L===PLANT$2?this.forRange(plantInPlot,R,F,I,z):L===HARVEST$3?this.forRange(harvestPlot,R,F,I):L===MINE$3?this.forRange(minePlot,R,F,I):L===CLEANUP$4?this.forRange(clearPlot,R,F,I):L===WATER$3?this.forRange(waterPlot,R,F,I):L===FERTILIZE$1?this.forRange(fertilizePlot,R,F,I):L===SET_SPRINKLER$1?this.setSprinkler(F,I):L===SET_SCARECROW$1?this.setScarecrow(F,I):L===SET_LIGHTNING_ROD$1&&this.setLightningRod(F,I)},handleFieldActionRangeChange(F){this.setState(()=>({hoveredPlotRangeSize:F}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(F){this.setState(({money:I})=>({money:moneyTotal(I,F)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(F){this.purchaseField(F)},handleForestPurchase(F){this.purchaseForest(F)},handleForestPlotClick(F,I){let L=this.state.forest[I]?.[F];if(this.state.fieldMode===CHOP$2){isPlantedTree(L)&&this.chopForestPlot(F,I);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(L)&&this.mulchForestPlot(F,I);return}if(!L){let{selectedForestItemId:L,inventory:R}=this.state;L&&R.some(({id:F})=>F===L)&&this.plantTreeInPlot(F,I,L);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(L)&&getTreeLifeStage(L)===GROWN$4&&this.harvestForestPlot(F,I)},handleCombinePurchase(F){this.purchaseCombine(F)},handleComposterPurchase(F){this.purchaseComposter(F)},handleSmelterPurchase(F){this.purchaseSmelter(F)},handleWoodChipperPurchase(F){this.purchaseWoodChipper(F)},handleCowPenPurchase(F){this.purchaseCowPen(F)},handleCellarPurchase(F){this.purchaseCellar(F)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(F=void 0){this.setState(({isMenuOpen:I})=>({isMenuOpen:F??!I}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(F){this.selectCow(F)},handleCowClick(F){this.selectCow(F),this.hugCow(F.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(F){this.openDialogView(F)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(F){this.adjustLoan(-F)},handleClickTakeOutLoanButton(F){this.adjustLoan(F)},handleExportDataClick(){let F=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[I]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(F,`farmhand-${I}.json`)},handleImportDataClick([F]){let[,I]=F,L=new FileReader;L.addEventListener(`loadend`,F=>{try{let I=F.target,L=String(I?.result),R=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(L)));if(Object.keys(R).some(F=>typeof this.state[F]!=typeof R[F]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...R}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(F){console.error(F),this.showNotification(F.message,`error`)}}),L.readAsText(I.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(F){this.setState({farmName:F})},handleCombineEnabledChange(F,I){this.setState({isCombineEnabled:I})},handleUseAlternateEndDayButtonPositionChange(F,I){this.setState({useAlternateEndDayButtonPosition:I})},handleAllowCustomPeerCowNamesChange(F,I){this.setState({allowCustomPeerCowNames:I})},handleShowHomeScreenChange(F,I){this.state.stageFocus===stageFocusType.HOME&&!I&&this.focusNextView(),this.setState({showHomeScreen:I})},handleShowNotificationsChange({target:{checked:F}}){this.setState({showNotifications:F})},handleNotificationDurationChange(F,I){typeof I==`number`&&this.setState({notificationDuration:I*1e3})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(F){F||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:I,cowIdOfferedForTrade:L})=>F?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(I)}`),cowIdOfferedForTrade:L,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(F){this.setState(()=>({room:F,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(F.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(F){let{origin:I,pathname:L,search:R,hash:z}=import_window.default.location,De=new URLSearchParams(R),Oe=F.trim();Oe===``?(randomNumberService.unseedRandomNumber(),De.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(Oe),De.set(`seed`,Oe),this.showNotification(`Random seed set to "${Oe}"`,`success`));let ke=De.toString(),Ae=`${I}${L}${ke.length>0?`?${ke}`:``}${z}`;import_window.default.history.replaceState({},``,Ae)},handleChatRoomOpenStateChange(F){this.setState({isChatOpen:F})},handleGameUpdateAvailable(F){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{F(!0)},`Reload`)},async handlePlaceFarmhandShuffleWager(F){this.placeFarmhandShuffleWager(F),await this.persistState()},async handleSettleFarmhandShuffleMatch(F,I){this.settleFarmhandShuffleMatch(F,I),await this.persistState()},async handleSaveFarmhandShuffleMatch(F){this.saveFarmhandShuffleMatch(F),await this.persistState()},handleRefundUnresumableFarmhandShuffleMatch(){this.refundUnresumableFarmhandShuffleMatch()}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,BLUEBERRY:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,farmhandShuffle:{isMatchInProgress:!1,wager:0,serializedMatch:null,totalMatchesPlayed:0,totalWins:0,totalLosses:0,currentWinStreak:0,longestWinStreak:0},field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],notificationDuration:NOTIFICATION_DURATION_DEFAULT,peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$10.createContext)(createContextData()),getDayOfSeason=F=>(F-1)%15+1,usePrefersReducedMotion=()=>{let[F,I]=(0,import_react$10.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$10.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let F=window.matchMedia(`(prefers-reduced-motion: reduce)`),L=F=>{I(F.matches)};return F.addEventListener?F.addEventListener(`change`,L):`addListener`in F&&F.addListener(L),()=>{F.removeEventListener?F.removeEventListener(`change`,L):`removeListener`in F&&F.removeListener(L)}},[]),F},MoneyDisplay=({money:F})=>{let I=`rgb(255, 255, 255)`,L=usePrefersReducedMotion(),[R,z]=(0,import_react$10.useState)(F),[De,Oe]=(0,import_react$10.useState)(I),ke=(0,import_react$10.useRef)(F),Ae=(0,import_react$10.useRef)(null);return(0,import_react$10.useEffect)(()=>{if(Ae.current?.cancel(),Ae.current=null,L||ke.current===F){ke.current=F,z(F),Oe(I);return}let R=F>ke.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return Ae.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:F,money:I})=>{Oe(String(F)),z(Number(I))},from:{color:R,money:ke.current},to:{color:I,money:F}}),ke.current=F,()=>{Ae.current?.cancel(),Ae.current=null}},[F,L]),(0,import_jsx_runtime$2.jsx)(`span`,{style:{color:De},children:moneyString(R)})},AppBar=({dayCount:F,handleClickNotificationIndicator:I,money:L,showNotifications:R,todaysNotifications:z,viewTitle:De,areAnyNotificationsErrors:Oe=z.some(({severity:F})=>F===`error`)})=>(0,import_jsx_runtime$2.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:fonts.display,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{alignItems:`center`,cursor:`pointer`,display:`flex`,"& .notification-count":{...pixelFrameSx({outline:colors.neutralOutline}),backgroundColor:`rgba(0, 0, 0, 0.38)`,boxShadow:pixelBevel(),color:`#fff`,fontFamily:fonts.display,lineHeight:1,minWidth:`1.5em`,padding:`0.2em 0.35em`,textAlign:`center`},"& .error-indicator":{display:`flex`,marginLeft:`1em`}}}},children:(0,import_jsx_runtime$2.jsxs)(Toolbar,{className:`toolbar`,children:[!R&&(0,import_jsx_runtime$2.jsxs)(`div`,{className:`notification-indicator-container`,onClick:I,children:[(0,import_jsx_runtime$2.jsx)(Typography,{className:`notification-count`,children:z.length}),Oe&&(0,import_jsx_runtime$2.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime$2.jsx)(WarningIcon,{color:`error`})})]}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:De}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(F)} of ${seasonNameMap[getCurrentSeason(F)]}`}),(0,import_jsx_runtime$2.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime$2.jsx)(MoneyDisplay,{money:L})})]})});function Consumer$30(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AppBar,{...I,...L,...F})})}var require_lib$4=__commonJSMin(((F,I)=>{function L(F){return F&&typeof F==`object`&&`default`in F?F.default:F}var R=require_react(),z=L(R);function De(F,I,L){return I in F?Object.defineProperty(F,I,{value:L,enumerable:!0,configurable:!0,writable:!0}):F[I]=L,F}function Oe(F,I){F.prototype=Object.create(I.prototype),F.prototype.constructor=F,F.__proto__=I}var ke=!!(typeof window<`u`&&window.document&&window.document.createElement);function Ae(F,I,L){if(typeof F!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof I!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(L!==void 0&&typeof L!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function Ae(F){return F.displayName||F.name||`Component`}return function(je){if(typeof je!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var Me=[],Ne;function Pe(){Ne=F(Me.map(function(F){return F.props})),Fe.canUseDOM?I(Ne):L&&(Ne=L(Ne))}var Fe=function(F){Oe(I,F);function I(){return F.apply(this,arguments)||this}I.peek=function(){return Ne},I.rewind=function(){if(I.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var F=Ne;return Ne=void 0,Me=[],F};var L=I.prototype;return L.UNSAFE_componentWillMount=function(){Me.push(this),Pe()},L.componentDidUpdate=function(){Pe()},L.componentWillUnmount=function(){var F=Me.indexOf(this);Me.splice(F,1),Pe()},L.render=function(){return z.createElement(je,this.props)},I}(R.PureComponent);return De(Fe,`displayName`,`SideEffect(`+Ae(je)+`)`),De(Fe,`canUseDOM`,ke),Fe}}I.exports=Ae})),require_react_fast_compare=__commonJSMin(((F,I)=>{var L=typeof Element<`u`,R=typeof Map==`function`,z=typeof Set==`function`,De=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function Oe(F,I){if(F===I)return!0;if(F&&I&&typeof F==`object`&&typeof I==`object`){if(F.constructor!==I.constructor)return!1;var ke,Ae,je;if(Array.isArray(F)){if(ke=F.length,ke!=I.length)return!1;for(Ae=ke;Ae--!==0;)if(!Oe(F[Ae],I[Ae]))return!1;return!0}var Me;if(R&&F instanceof Map&&I instanceof Map){if(F.size!==I.size)return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!I.has(Ae.value[0]))return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!Oe(Ae.value[1],I.get(Ae.value[0])))return!1;return!0}if(z&&F instanceof Set&&I instanceof Set){if(F.size!==I.size)return!1;for(Me=F.entries();!(Ae=Me.next()).done;)if(!I.has(Ae.value[0]))return!1;return!0}if(De&&ArrayBuffer.isView(F)&&ArrayBuffer.isView(I)){if(ke=F.length,ke!=I.length)return!1;for(Ae=ke;Ae--!==0;)if(F[Ae]!==I[Ae])return!1;return!0}if(F.constructor===RegExp)return F.source===I.source&&F.flags===I.flags;if(F.valueOf!==Object.prototype.valueOf&&typeof F.valueOf==`function`&&typeof I.valueOf==`function`)return F.valueOf()===I.valueOf();if(F.toString!==Object.prototype.toString&&typeof F.toString==`function`&&typeof I.toString==`function`)return F.toString()===I.toString();if(je=Object.keys(F),ke=je.length,ke!==Object.keys(I).length)return!1;for(Ae=ke;Ae--!==0;)if(!Object.prototype.hasOwnProperty.call(I,je[Ae]))return!1;if(L&&F instanceof Element)return!1;for(Ae=ke;Ae--!==0;)if(!((je[Ae]===`_owner`||je[Ae]===`__v`||je[Ae]===`__o`)&&F.$$typeof)&&!Oe(F[je[Ae]],I[je[Ae]]))return!1;return!0}return F!==F&&I!==I}I.exports=function(F,I){try{return Oe(F,I)}catch(F){if((F.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw F}}})),require_object_assign=__commonJSMin(((F,I)=>{var L=Object.getOwnPropertySymbols,R=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;function De(F){if(F==null)throw TypeError(`Object.assign cannot be called with null or undefined`);return Object(F)}function Oe(){try{if(!Object.assign)return!1;var F=new String(`abc`);if(F[5]=`de`,Object.getOwnPropertyNames(F)[0]===`5`)return!1;for(var I={},L=0;L<10;L++)I[`_`+String.fromCharCode(L)]=L;if(Object.getOwnPropertyNames(I).map(function(F){return I[F]}).join(``)!==`0123456789`)return!1;var R={};return`abcdefghijklmnopqrst`.split(``).forEach(function(F){R[F]=F}),Object.keys(Object.assign({},R)).join(``)===`abcdefghijklmnopqrst`}catch{return!1}}I.exports=Oe()?Object.assign:function(F,I){for(var Oe,ke=De(F),Ae,je=1;je<arguments.length;je++){for(var Me in Oe=Object(arguments[je]),Oe)R.call(Oe,Me)&&(ke[Me]=Oe[Me]);if(L){Ae=L(Oe);for(var Ne=0;Ne<Ae.length;Ne++)z.call(Oe,Ae[Ne])&&(ke[Ae[Ne]]=Oe[Ae[Ne]])}}return ke}})),import_lib=__toESM(require_lib$4()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(F){return TAG_NAMES[F]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(F,I){return F[REACT_TAG_MAP[I]]=I,F},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$1=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(F){return typeof F}:function(F){return F&&typeof Symbol==`function`&&F.constructor===Symbol&&F!==Symbol.prototype?`symbol`:typeof F},classCallCheck=function(F,I){if(!(F instanceof I))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function F(F,I){for(var L=0;L<I.length;L++){var R=I[L];R.enumerable=R.enumerable||!1,R.configurable=!0,`value`in R&&(R.writable=!0),Object.defineProperty(F,R.key,R)}}return function(I,L,R){return L&&F(I.prototype,L),R&&F(I,R),I}}(),_extends=Object.assign||function(F){for(var I=1;I<arguments.length;I++){var L=arguments[I];for(var R in L)Object.prototype.hasOwnProperty.call(L,R)&&(F[R]=L[R])}return F},inherits=function(F,I){if(typeof I!=`function`&&I!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof I);F.prototype=Object.create(I&&I.prototype,{constructor:{value:F,enumerable:!1,writable:!0,configurable:!0}}),I&&(Object.setPrototypeOf?Object.setPrototypeOf(F,I):F.__proto__=I)},objectWithoutProperties$1=function(F,I){var L={};for(var R in F)I.indexOf(R)>=0||Object.prototype.hasOwnProperty.call(F,R)&&(L[R]=F[R]);return L},possibleConstructorReturn=function(F,I){if(!F)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return I&&(typeof I==`object`||typeof I==`function`)?I:F},encodeSpecialCharacters=function(F){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(F):String(F).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)},getTitleFromPropsList=function(F){var I=getInnermostProperty(F,TAG_NAMES.TITLE),L=getInnermostProperty(F,HELMET_PROPS.TITLE_TEMPLATE);if(L&&I)return L.replace(/%s/g,function(){return Array.isArray(I)?I.join(``):I});var R=getInnermostProperty(F,HELMET_PROPS.DEFAULT_TITLE);return I||R||void 0},getOnChangeClientState=function(F){return getInnermostProperty(F,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(F,I){return I.filter(function(I){return I[F]!==void 0}).map(function(I){return I[F]}).reduce(function(F,I){return _extends({},F,I)},{})},getBaseTagFromPropsList=function(F,I){return I.filter(function(F){return F[TAG_NAMES.BASE]!==void 0}).map(function(F){return F[TAG_NAMES.BASE]}).reverse().reduce(function(I,L){if(!I.length)for(var R=Object.keys(L),z=0;z<R.length;z++){var De=R[z].toLowerCase();if(F.indexOf(De)!==-1&&L[De])return I.concat(L)}return I},[])},getTagsFromPropsList=function(F,I,L){var R={};return L.filter(function(I){return Array.isArray(I[F])?!0:(I[F]!==void 0&&warn$1(`Helmet: `+F+` should be of type "Array". Instead found type "`+_typeof$1(I[F])+`"`),!1)}).map(function(I){return I[F]}).reverse().reduce(function(F,L){var z={};L.filter(function(F){for(var L=void 0,De=Object.keys(F),Oe=0;Oe<De.length;Oe++){var ke=De[Oe],Ae=ke.toLowerCase();I.indexOf(Ae)!==-1&&!(L===TAG_PROPERTIES.REL&&F[L].toLowerCase()===`canonical`)&&!(Ae===TAG_PROPERTIES.REL&&F[Ae].toLowerCase()===`stylesheet`)&&(L=Ae),I.indexOf(ke)!==-1&&(ke===TAG_PROPERTIES.INNER_HTML||ke===TAG_PROPERTIES.CSS_TEXT||ke===TAG_PROPERTIES.ITEM_PROP)&&(L=ke)}if(!L||!F[L])return!1;var je=F[L].toLowerCase();return R[L]||(R[L]={}),z[L]||(z[L]={}),R[L][je]?!1:(z[L][je]=!0,!0)}).reverse().forEach(function(I){return F.push(I)});for(var De=Object.keys(z),Oe=0;Oe<De.length;Oe++){var ke=De[Oe];R[ke]=(0,import_object_assign.default)({},R[ke],z[ke])}return F},[]).reverse()},getInnermostProperty=function(F,I){for(var L=F.length-1;L>=0;L--){var R=F[L];if(R.hasOwnProperty(I))return R[I]}return null},reducePropsToState=function(F){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],F),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,F),defer:getInnermostProperty(F,HELMET_PROPS.DEFER),encode:getInnermostProperty(F,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,F),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],F),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],F),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],F),onChangeClientState:getOnChangeClientState(F),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],F),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],F),title:getTitleFromPropsList(F),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,F)}},rafPolyfill=function(){var F=Date.now();return function(I){var L=Date.now();L-F>16?(F=L,I(L)):setTimeout(function(){rafPolyfill(I)},0)}}(),cafPolyfill=function(F){return clearTimeout(F)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(F){return console&&typeof console.warn==`function`&&console.warn(F)},_helmetCallback=null,handleClientStateChange=function(F){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),F.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(F,function(){_helmetCallback=null})}):(commitTagChanges(F),_helmetCallback=null)},commitTagChanges=function(F,I){var L=F.baseTag,R=F.bodyAttributes,z=F.htmlAttributes,De=F.linkTags,Oe=F.metaTags,ke=F.noscriptTags,Ae=F.onChangeClientState,je=F.scriptTags,Me=F.styleTags,Ne=F.title,Pe=F.titleAttributes;updateAttributes(TAG_NAMES.BODY,R),updateAttributes(TAG_NAMES.HTML,z),updateTitle(Ne,Pe);var Fe={baseTag:updateTags(TAG_NAMES.BASE,L),linkTags:updateTags(TAG_NAMES.LINK,De),metaTags:updateTags(TAG_NAMES.META,Oe),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,ke),scriptTags:updateTags(TAG_NAMES.SCRIPT,je),styleTags:updateTags(TAG_NAMES.STYLE,Me)},Ie={},Le={};Object.keys(Fe).forEach(function(F){var I=Fe[F],L=I.newTags,R=I.oldTags;L.length&&(Ie[F]=L),R.length&&(Le[F]=Fe[F].oldTags)}),I&&I(),Ae(F,Ie,Le)},flattenArray=function(F){return Array.isArray(F)?F.join(``):F},updateTitle=function(F,I){F!==void 0&&document.title!==F&&(document.title=flattenArray(F)),updateAttributes(TAG_NAMES.TITLE,I)},updateAttributes=function(F,I){var L=document.getElementsByTagName(F)[0];if(L){for(var R=L.getAttribute(HELMET_ATTRIBUTE),z=R?R.split(`,`):[],De=[].concat(z),Oe=Object.keys(I),ke=0;ke<Oe.length;ke++){var Ae=Oe[ke],je=I[Ae]||``;L.getAttribute(Ae)!==je&&L.setAttribute(Ae,je),z.indexOf(Ae)===-1&&z.push(Ae);var Me=De.indexOf(Ae);Me!==-1&&De.splice(Me,1)}for(var Ne=De.length-1;Ne>=0;Ne--)L.removeAttribute(De[Ne]);z.length===De.length?L.removeAttribute(HELMET_ATTRIBUTE):L.getAttribute(HELMET_ATTRIBUTE)!==Oe.join(`,`)&&L.setAttribute(HELMET_ATTRIBUTE,Oe.join(`,`))}},updateTags=function(F,I){var L=document.head||document.querySelector(TAG_NAMES.HEAD),R=L.querySelectorAll(F+`[`+HELMET_ATTRIBUTE+`]`),z=Array.prototype.slice.call(R),De=[],Oe=void 0;return I&&I.length&&I.forEach(function(I){var L=document.createElement(F);for(var R in I)if(I.hasOwnProperty(R))if(R===TAG_PROPERTIES.INNER_HTML)L.innerHTML=I.innerHTML;else if(R===TAG_PROPERTIES.CSS_TEXT)L.styleSheet?L.styleSheet.cssText=I.cssText:L.appendChild(document.createTextNode(I.cssText));else{var ke=I[R]===void 0?``:I[R];L.setAttribute(R,ke)}L.setAttribute(HELMET_ATTRIBUTE,`true`),z.some(function(F,I){return Oe=I,L.isEqualNode(F)})?z.splice(Oe,1):De.push(L)}),z.forEach(function(F){return F.parentNode.removeChild(F)}),De.forEach(function(F){return L.appendChild(F)}),{oldTags:z,newTags:De}},generateElementAttributesAsString=function(F){return Object.keys(F).reduce(function(I,L){var R=F[L]===void 0?``+L:L+`="`+F[L]+`"`;return I?I+` `+R:R},``)},generateTitleAsString=function(F,I,L,R){var z=generateElementAttributesAsString(L),De=flattenArray(I);return z?`<`+F+` `+HELMET_ATTRIBUTE+`="true" `+z+`>`+encodeSpecialCharacters(De,R)+`</`+F+`>`:`<`+F+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(De,R)+`</`+F+`>`},generateTagsAsString=function(F,I,L){return I.reduce(function(I,R){var z=Object.keys(R).filter(function(F){return!(F===TAG_PROPERTIES.INNER_HTML||F===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(F,I){var z=R[I]===void 0?I:I+`="`+encodeSpecialCharacters(R[I],L)+`"`;return F?F+` `+z:z},``),De=R.innerHTML||R.cssText||``,Oe=SELF_CLOSING_TAGS.indexOf(F)===-1;return I+`<`+F+` `+HELMET_ATTRIBUTE+`="true" `+z+(Oe?`/>`:`>`+De+`</`+F+`>`)},``)},convertElementAttributestoReactProps=function(F){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(F).reduce(function(I,L){return I[REACT_TAG_MAP[L]||L]=F[L],I},I)},convertReactPropstoHtmlAttributes=function(F){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(F).reduce(function(I,L){return I[HTML_TAG_MAP[L]||L]=F[L],I},I)},generateTitleAsReactComponent=function(F,I,L){var R,z=convertElementAttributestoReactProps(L,(R={key:I},R[HELMET_ATTRIBUTE]=!0,R));return[import_react$10.createElement(TAG_NAMES.TITLE,z,I)]},generateTagsAsReactComponent=function(F,I){return I.map(function(I,L){var R,z=(R={key:L},R[HELMET_ATTRIBUTE]=!0,R);return Object.keys(I).forEach(function(F){var L=REACT_TAG_MAP[F]||F;L===TAG_PROPERTIES.INNER_HTML||L===TAG_PROPERTIES.CSS_TEXT?z.dangerouslySetInnerHTML={__html:I.innerHTML||I.cssText}:z[L]=I[F]}),import_react$10.createElement(F,z)})},getMethodsForTag=function(F,I,L){switch(F){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(F,I.title,I.titleAttributes,L)},toString:function(){return generateTitleAsString(F,I.title,I.titleAttributes,L)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(I)},toString:function(){return generateElementAttributesAsString(I)}};default:return{toComponent:function(){return generateTagsAsReactComponent(F,I)},toString:function(){return generateTagsAsString(F,I,L)}}}},mapStateOnServer=function(F){var I=F.baseTag,L=F.bodyAttributes,R=F.encode,z=F.htmlAttributes,De=F.linkTags,Oe=F.metaTags,ke=F.noscriptTags,Ae=F.scriptTags,je=F.styleTags,Me=F.title,Ne=Me===void 0?``:Me,Pe=F.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,I,R),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,L,R),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,z,R),link:getMethodsForTag(TAG_NAMES.LINK,De,R),meta:getMethodsForTag(TAG_NAMES.META,Oe,R),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,ke,R),script:getMethodsForTag(TAG_NAMES.SCRIPT,Ae,R),style:getMethodsForTag(TAG_NAMES.STYLE,je,R),title:getMethodsForTag(TAG_NAMES.TITLE,{title:Ne,titleAttributes:Pe},R)}},HelmetExport=function(F){var I,L;return L=I=function(I){inherits(L,I);function L(){return classCallCheck(this,L),possibleConstructorReturn(this,I.apply(this,arguments))}return L.prototype.shouldComponentUpdate=function(F){return!(0,import_react_fast_compare.default)(this.props,F)},L.prototype.mapNestedChildrenToProps=function(F,I){if(!I)return null;switch(F.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:I};case TAG_NAMES.STYLE:return{cssText:I}}throw Error(`<`+F.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},L.prototype.flattenArrayTypeChildren=function(F){var I,L=F.child,R=F.arrayTypeChildren,z=F.newChildProps,De=F.nestedChildren;return _extends({},R,(I={},I[L.type]=[].concat(R[L.type]||[],[_extends({},z,this.mapNestedChildrenToProps(L,De))]),I))},L.prototype.mapObjectTypeChildren=function(F){var I,L,R=F.child,z=F.newProps,De=F.newChildProps,Oe=F.nestedChildren;switch(R.type){case TAG_NAMES.TITLE:return _extends({},z,(I={},I[R.type]=Oe,I.titleAttributes=_extends({},De),I));case TAG_NAMES.BODY:return _extends({},z,{bodyAttributes:_extends({},De)});case TAG_NAMES.HTML:return _extends({},z,{htmlAttributes:_extends({},De)})}return _extends({},z,(L={},L[R.type]=_extends({},De),L))},L.prototype.mapArrayTypeChildrenToProps=function(F,I){var L=_extends({},I);return Object.keys(F).forEach(function(I){var R;L=_extends({},L,(R={},R[I]=F[I],R))}),L},L.prototype.warnOnInvalidChildren=function(F,I){return!0},L.prototype.mapChildrenToProps=function(F,I){var L=this,R={};return import_react$10.Children.forEach(F,function(F){if(!(!F||!F.props)){var z=F.props,De=z.children,Oe=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(z,[`children`]));switch(L.warnOnInvalidChildren(F,De),F.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:R=L.flattenArrayTypeChildren({child:F,arrayTypeChildren:R,newChildProps:Oe,nestedChildren:De});break;default:I=L.mapObjectTypeChildren({child:F,newProps:I,newChildProps:Oe,nestedChildren:De});break}}}),I=this.mapArrayTypeChildrenToProps(R,I),I},L.prototype.render=function(){var I=this.props,L=I.children,R=_extends({},objectWithoutProperties$1(I,[`children`]));return L&&(R=this.mapChildrenToProps(L,R)),import_react$10.createElement(F,R)},createClass(L,null,[{key:`canUseDOM`,set:function(I){F.canUseDOM=I}}]),L}(import_react$10.Component),I.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},I.defaultProps={defer:!0,encodeSpecialCharacters:!0},I.peek=F.peek,I.rewind=function(){var I=F.rewind();return I||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),I},L}((0,import_lib.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind;function getButtonUtilityClass(F){return generateUtilityClass(`MuiButton`,F)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$10.createContext({}),ButtonGroupButtonContext=import_react$10.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$55=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$50=F=>{let{color:I,disableElevation:L,fullWidth:R,size:z,variant:De,classes:Oe}=F;return _extends$3({},Oe,composeClasses({root:[`root`,De,`${De}${capitalize_default(I)}`,`size${capitalize_default(z)}`,`${De}Size${capitalize_default(z)}`,`color${capitalize_default(I)}`,L&&`disableElevation`,R&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(z)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(z)}`]},getButtonUtilityClass,Oe))},commonIconStyles=F=>_extends$3({},F.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},F.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},F.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled(ButtonBase,{shouldForwardProp:F=>rootShouldForwardProp(F)||F===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[L.variant],I[`${L.variant}${capitalize_default(L.color)}`],I[`size${capitalize_default(L.size)}`],I[`${L.variant}Size${capitalize_default(L.size)}`],L.color===`inherit`&&I.colorInherit,L.disableElevation&&I.disableElevation,L.fullWidth&&I.fullWidth]}})(({theme:F,ownerState:I})=>{var L,R;let z=F.palette.mode===`light`?F.palette.grey[300]:F.palette.grey[800],De=F.palette.mode===`light`?F.palette.grey.A100:F.palette.grey[700];return _extends$3({},F.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(F.vars||F).shape.borderRadius,transition:F.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:F.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette.text.primary,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`text`&&I.color!==`inherit`&&{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`outlined`&&I.color!==`inherit`&&{border:`1px solid ${(F.vars||F).palette[I.color].main}`,backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},I.variant===`contained`&&{backgroundColor:F.vars?F.vars.palette.Button.inheritContainedHoverBg:De,boxShadow:(F.vars||F).shadows[4],"@media (hover: none)":{boxShadow:(F.vars||F).shadows[2],backgroundColor:(F.vars||F).palette.grey[300]}},I.variant===`contained`&&I.color!==`inherit`&&{backgroundColor:(F.vars||F).palette[I.color].dark,"@media (hover: none)":{backgroundColor:(F.vars||F).palette[I.color].main}}),"&:active":_extends$3({},I.variant===`contained`&&{boxShadow:(F.vars||F).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},I.variant===`contained`&&{boxShadow:(F.vars||F).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(F.vars||F).palette.action.disabled},I.variant===`outlined`&&{border:`1px solid ${(F.vars||F).palette.action.disabledBackground}`},I.variant===`contained`&&{color:(F.vars||F).palette.action.disabled,boxShadow:(F.vars||F).shadows[0],backgroundColor:(F.vars||F).palette.action.disabledBackground})},I.variant===`text`&&{padding:`6px 8px`},I.variant===`text`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].main},I.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},I.variant===`outlined`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].main,border:F.vars?`1px solid rgba(${F.vars.palette[I.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(F.palette[I.color].main,.5)}`},I.variant===`contained`&&{color:F.vars?F.vars.palette.text.primary:(R=F.palette).getContrastText?.call(R,F.palette.grey[300]),backgroundColor:F.vars?F.vars.palette.Button.inheritContainedBg:z,boxShadow:(F.vars||F).shadows[2]},I.variant===`contained`&&I.color!==`inherit`&&{color:(F.vars||F).palette[I.color].contrastText,backgroundColor:(F.vars||F).palette[I.color].main},I.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},I.size===`small`&&I.variant===`text`&&{padding:`4px 5px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`text`&&{padding:`8px 11px`,fontSize:F.typography.pxToRem(15)},I.size===`small`&&I.variant===`outlined`&&{padding:`3px 9px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`outlined`&&{padding:`7px 21px`,fontSize:F.typography.pxToRem(15)},I.size===`small`&&I.variant===`contained`&&{padding:`4px 10px`,fontSize:F.typography.pxToRem(13)},I.size===`large`&&I.variant===`contained`&&{padding:`8px 22px`,fontSize:F.typography.pxToRem(15)},I.fullWidth&&{width:`100%`})},({ownerState:F})=>F.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.startIcon,I[`iconSize${capitalize_default(L.size)}`]]}})(({ownerState:F})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},F.size===`small`&&{marginLeft:-2},commonIconStyles(F))),ButtonEndIcon=styled(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.endIcon,I[`iconSize${capitalize_default(L.size)}`]]}})(({ownerState:F})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},F.size===`small`&&{marginRight:-2},commonIconStyles(F))),Button=import_react$10.forwardRef(function(F,I){let L=import_react$10.useContext(ButtonGroupContext),R=import_react$10.useContext(ButtonGroupButtonContext),z=useDefaultProps({props:resolveProps(L,F),name:`MuiButton`}),{children:De,color:Oe=`primary`,component:ke=`button`,className:Ae,disabled:je=!1,disableElevation:Me=!1,disableFocusRipple:Ne=!1,endIcon:Pe,focusVisibleClassName:Fe,fullWidth:Ie=!1,size:Le=`medium`,startIcon:Re,type:ze,variant:Be=`text`}=z,Ge=_objectWithoutPropertiesLoose$2(z,_excluded$55),rt=_extends$3({},z,{color:Oe,component:ke,disabled:je,disableElevation:Me,disableFocusRipple:Ne,fullWidth:Ie,size:Le,type:ze,variant:Be}),it=useUtilityClasses$50(rt),at=Re&&(0,import_jsx_runtime$2.jsx)(ButtonStartIcon,{className:it.startIcon,ownerState:rt,children:Re}),ot=Pe&&(0,import_jsx_runtime$2.jsx)(ButtonEndIcon,{className:it.endIcon,ownerState:rt,children:Pe}),st=R||``;return(0,import_jsx_runtime$2.jsxs)(ButtonRoot,_extends$3({ownerState:rt,className:clsx$1(L.className,it.root,Ae,st),component:ke,disabled:je,focusRipple:!Ne,focusVisibleClassName:clsx$1(it.focusVisible,Fe),ref:I,type:ze},Ge,{classes:it,children:[at,De,ot]}))});function getDialogUtilityClass(F){return generateUtilityClass(`MuiDialog`,F)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$10.createContext({});init_objectWithoutPropertiesLoose(),init_extends();var _excluded$54=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(F,I)=>I.backdrop})({zIndex:-1}),useUtilityClasses$49=F=>{let{classes:I,scroll:L,maxWidth:R,fullWidth:z,fullScreen:De}=F;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(L)}`],paper:[`paper`,`paperScroll${capitalize_default(L)}`,`paperWidth${capitalize_default(String(R))}`,z&&`paperFullWidth`,De&&`paperFullScreen`]},getDialogUtilityClass,I)},DialogRoot=styled(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(F,I)=>I.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.container,I[`scroll${capitalize_default(L.scroll)}`]]}})(({ownerState:F})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},F.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},F.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.paper,I[`scrollPaper${capitalize_default(L.scroll)}`],I[`paperWidth${capitalize_default(String(L.maxWidth))}`],L.fullWidth&&I.paperFullWidth,L.fullScreen&&I.paperFullScreen]}})(({theme:F,ownerState:I})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},I.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},I.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!I.maxWidth&&{maxWidth:`calc(100% - 64px)`},I.maxWidth===`xs`&&{maxWidth:F.breakpoints.unit===`px`?Math.max(F.breakpoints.values.xs,444):`max(${F.breakpoints.values.xs}${F.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[F.breakpoints.down(Math.max(F.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},I.maxWidth&&I.maxWidth!==`xs`&&{maxWidth:`${F.breakpoints.values[I.maxWidth]}${F.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[F.breakpoints.down(F.breakpoints.values[I.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},I.fullWidth&&{width:`calc(100% - 64px)`},I.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialog`}),R=useTheme$1(),z={enter:R.transitions.duration.enteringScreen,exit:R.transitions.duration.leavingScreen},{"aria-describedby":De,"aria-labelledby":Oe,BackdropComponent:ke,BackdropProps:Ae,children:je,className:Me,disableEscapeKeyDown:Ne=!1,fullScreen:Pe=!1,fullWidth:Fe=!1,maxWidth:Ie=`sm`,onBackdropClick:Le,onClick:Re,onClose:ze,open:Be,PaperComponent:Ge=Paper,PaperProps:rt={},scroll:it=`paper`,TransitionComponent:at=Fade,transitionDuration:ot=z,TransitionProps:st}=L,ct=_objectWithoutPropertiesLoose$2(L,_excluded$54),lt=_extends$3({},L,{disableEscapeKeyDown:Ne,fullScreen:Pe,fullWidth:Fe,maxWidth:Ie,scroll:it}),ut=useUtilityClasses$49(lt),dt=import_react$10.useRef(),ft=F=>{dt.current=F.target===F.currentTarget},pt=F=>{Re&&Re(F),dt.current&&(dt.current=null,Le&&Le(F),ze&&ze(F,`backdropClick`))},mt=useId(Oe),ht=import_react$10.useMemo(()=>({titleId:mt}),[mt]);return(0,import_jsx_runtime$2.jsx)(DialogRoot,_extends$3({className:clsx$1(ut.root,Me),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:ot,as:ke},Ae)},disableEscapeKeyDown:Ne,onClose:ze,open:Be,ref:I,onClick:pt,ownerState:lt},ct,{children:(0,import_jsx_runtime$2.jsx)(at,_extends$3({appear:!0,in:Be,timeout:ot,role:`presentation`},st,{children:(0,import_jsx_runtime$2.jsx)(DialogContainer,{className:clsx$1(ut.container),onMouseDown:ft,ownerState:lt,children:(0,import_jsx_runtime$2.jsx)(DialogPaper,_extends$3({as:Ge,elevation:24,role:`dialog`,"aria-describedby":De,"aria-labelledby":mt},rt,{className:clsx$1(ut.paper,rt.className),ownerState:lt,children:(0,import_jsx_runtime$2.jsx)(DialogContext.Provider,{value:ht,children:je})}))})}))}))});function getDialogTitleUtilityClass(F){return generateUtilityClass(`MuiDialogTitle`,F)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$53=[`className`,`id`],useUtilityClasses$48=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,I)},DialogTitleRoot=styled(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(F,I)=>I.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogTitle`}),{className:R,id:z}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$53),Oe=L,ke=useUtilityClasses$48(Oe),{titleId:Ae=z}=import_react$10.useContext(DialogContext);return(0,import_jsx_runtime$2.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(ke.root,R),ownerState:Oe,ref:I,variant:`h6`,id:z??Ae},De))});function getDialogContentUtilityClass(F){return generateUtilityClass(`MuiDialogContent`,F)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$52=[`className`,`dividers`],useUtilityClasses$47=F=>{let{classes:I,dividers:L}=F;return composeClasses({root:[`root`,L&&`dividers`]},getDialogContentUtilityClass,I)},DialogContentRoot=styled(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.dividers&&I.dividers]}})(({theme:F,ownerState:I})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},I.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(F.vars||F).palette.divider}`,borderBottom:`1px solid ${(F.vars||F).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogContent`}),{className:R,dividers:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$52),Oe=_extends$3({},L,{dividers:z}),ke=useUtilityClasses$47(Oe);return(0,import_jsx_runtime$2.jsx)(DialogContentRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getDialogActionsUtilityClass(F){return generateUtilityClass(`MuiDialogActions`,F)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$51=[`className`,`disableSpacing`],useUtilityClasses$46=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getDialogActionsUtilityClass,I)},DialogActionsRoot=styled(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})(({ownerState:F})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!F.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiDialogActions`}),{className:R,disableSpacing:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$51),Oe=_extends$3({},L,{disableSpacing:z}),ke=useUtilityClasses$46(Oe);return(0,import_jsx_runtime$2.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let F=`chat-title`,I=`chat-content`,{handlers:{handleChatRoomOpenStateChange:L},gameState:{playerId:R,isChatOpen:z,room:De}}=(0,import_react$10.useContext)(FarmhandContext),Oe=()=>{L(!1)},ke=(0,import_jsx_runtime$2.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${De}`,"user-id":R,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(HelmetExport,{children:(0,import_jsx_runtime$2.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:z,onClose:Oe,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":F,"aria-labelledby":I,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{id:F,children:`Chat room`}),(0,import_jsx_runtime$2.jsx)(DialogContent,{id:I,children:ke}),(0,import_jsx_runtime$2.jsx)(DialogActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{onClick:Oe,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$10.createContext({});init_extends(),init_objectWithoutPropertiesLoose();var _excluded$50=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$4=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(F,I){let{className:L,elementType:R,ownerState:z,externalForwardedProps:De,getSlotOwnerState:Oe,internalForwardedProps:ke}=I,Ae=_objectWithoutPropertiesLoose$2(I,_excluded$50),{component:je,slots:Me={[F]:void 0},slotProps:Ne={[F]:void 0}}=De,Pe=_objectWithoutPropertiesLoose$2(De,_excluded2$4),Fe=Me[F]||R,Ie=resolveComponentProps(Ne[F],z),Le=mergeSlotProps(_extends$3({className:L},Ae,{externalForwardedProps:F===`root`?Pe:void 0,externalSlotProps:Ie})),{props:{component:Re},internalRef:ze}=Le,Be=_objectWithoutPropertiesLoose$2(Le.props,_excluded3$1),Ge=useForkRef(ze,Ie?.ref,I.ref),rt=Oe?Oe(Be):{},it=_extends$3({},z,rt),at=F===`root`?Re||je:Re,ot=appendOwnerState(Fe,_extends$3({},F===`root`&&!je&&!Me[F]&&ke,F!==`root`&&!Me[F]&&ke,Be,at&&{as:at},{ref:Ge}),it);return Object.keys(rt).forEach(F=>{delete ot[F]}),[Fe,ot]}function getAccordionUtilityClass(F){return generateUtilityClass(`MuiAccordion`,F)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$49=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$45=F=>{let{classes:I,square:L,expanded:R,disabled:z,disableGutters:De}=F;return composeClasses({root:[`root`,!L&&`rounded`,R&&`expanded`,z&&`disabled`,!De&&`gutters`],region:[`region`]},getAccordionUtilityClass,I)},AccordionRoot=styled(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[{[`& .${accordionClasses.region}`]:I.region},I.root,!L.square&&I.rounded,!L.disableGutters&&I.gutters]}})(({theme:F})=>{let I={duration:F.transitions.duration.shortest};return{position:`relative`,transition:F.transitions.create([`margin`],I),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(F.vars||F).palette.divider,transition:F.transitions.create([`opacity`,`background-color`],I)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(F.vars||F).palette.action.disabledBackground}}},({theme:F})=>({variants:[{props:F=>!F.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(F.vars||F).shape.borderRadius,borderTopRightRadius:(F.vars||F).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(F.vars||F).shape.borderRadius,borderBottomRightRadius:(F.vars||F).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:F=>!F.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordion`}),{children:R,className:z,defaultExpanded:De=!1,disabled:Oe=!1,disableGutters:ke=!1,expanded:Ae,onChange:je,square:Me=!1,slots:Ne={},slotProps:Pe={},TransitionComponent:Fe,TransitionProps:Ie}=L,Le=_objectWithoutPropertiesLoose$2(L,_excluded$49),[Re,ze]=useControlled_default({controlled:Ae,default:De,name:`Accordion`,state:`expanded`}),Be=import_react$10.useCallback(F=>{ze(!Re),je&&je(F,!Re)},[Re,je,ze]),[Ge,...rt]=import_react$10.Children.toArray(R),it=import_react$10.useMemo(()=>({expanded:Re,disabled:Oe,disableGutters:ke,toggle:Be}),[Re,Oe,ke,Be]),at=_extends$3({},L,{square:Me,disabled:Oe,disableGutters:ke,expanded:Re}),ot=useUtilityClasses$45(at),[st,ct]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:Fe},Ne),slotProps:_extends$3({transition:Ie},Pe)},ownerState:at});return(0,import_jsx_runtime$2.jsxs)(AccordionRoot,_extends$3({className:clsx$1(ot.root,z),ref:I,ownerState:at,square:Me},Le,{children:[(0,import_jsx_runtime$2.jsx)(AccordionContext.Provider,{value:it,children:Ge}),(0,import_jsx_runtime$2.jsx)(st,_extends$3({in:Re,timeout:`auto`},ct,{children:(0,import_jsx_runtime$2.jsx)(`div`,{"aria-labelledby":Ge.props.id,id:Ge.props[`aria-controls`],role:`region`,className:ot.region,children:rt})}))]}))});function getAccordionSummaryUtilityClass(F){return generateUtilityClass(`MuiAccordionSummary`,F)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$48=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$44=F=>{let{classes:I,expanded:L,disabled:R,disableGutters:z}=F;return composeClasses({root:[`root`,L&&`expanded`,R&&`disabled`,!z&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,L&&`expanded`,!z&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,L&&`expanded`]},getAccordionSummaryUtilityClass,I)},AccordionSummaryRoot=styled(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>{let I={duration:F.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:F.spacing(0,2),transition:F.transitions.create([`min-height`,`background-color`],I),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(F.vars||F).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:F=>!F.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(F,I)=>I.content})(({theme:F})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:F=>!F.disableGutters,style:{transition:F.transitions.create([`margin`],{duration:F.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(F,I)=>I.expandIconWrapper})(({theme:F})=>({display:`flex`,color:(F.vars||F).palette.action.active,transform:`rotate(0deg)`,transition:F.transitions.create(`transform`,{duration:F.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionSummary`}),{children:R,className:z,expandIcon:De,focusVisibleClassName:Oe,onClick:ke}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$48),{disabled:je=!1,disableGutters:Me,expanded:Ne,toggle:Pe}=import_react$10.useContext(AccordionContext),Fe=F=>{Pe&&Pe(F),ke&&ke(F)},Ie=_extends$3({},L,{expanded:Ne,disabled:je,disableGutters:Me}),Le=useUtilityClasses$44(Ie);return(0,import_jsx_runtime$2.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:je,component:`div`,"aria-expanded":Ne,className:clsx$1(Le.root,z),focusVisibleClassName:clsx$1(Le.focusVisible,Oe),onClick:Fe,ref:I,ownerState:Ie},Ae,{children:[(0,import_jsx_runtime$2.jsx)(AccordionSummaryContent,{className:Le.content,ownerState:Ie,children:R}),De&&(0,import_jsx_runtime$2.jsx)(AccordionSummaryExpandIconWrapper,{className:Le.expandIconWrapper,ownerState:Ie,children:De})]}))});function getAccordionDetailsUtilityClass(F){return generateUtilityClass(`MuiAccordionDetails`,F)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$47=[`className`],useUtilityClasses$43=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,I)},AccordionDetailsRoot=styled(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>({padding:F.spacing(1,2,2)})),AccordionDetails=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionDetails`}),{className:R}=L,z=_objectWithoutPropertiesLoose$2(L,_excluded$47),De=L,Oe=useUtilityClasses$43(De);return(0,import_jsx_runtime$2.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(Oe.root,R),ref:I,ownerState:De},z))}),FormControlContext=import_react$10.createContext(void 0);function useFormControl(){return import_react$10.useContext(FormControlContext)}function getSwitchBaseUtilityClass(F){return generateUtilityClass(`PrivateSwitchBase`,F)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$46=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$42=F=>{let{classes:I,checked:L,disabled:R,edge:z}=F;return composeClasses({root:[`root`,L&&`checked`,R&&`disabled`,z&&`edge${capitalize_default(z)}`],input:[`input`]},getSwitchBaseUtilityClass,I)},SwitchBaseRoot=styled(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:F})=>_extends$3({padding:9,borderRadius:`50%`},F.edge===`start`&&{marginLeft:F.size===`small`?-3:-12},F.edge===`end`&&{marginRight:F.size===`small`?-3:-12})),SwitchBaseInput=styled(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$10.forwardRef(function(F,I){let{autoFocus:L,checked:R,checkedIcon:z,className:De,defaultChecked:Oe,disabled:ke,disableFocusRipple:Ae=!1,edge:je=!1,icon:Me,id:Ne,inputProps:Pe,inputRef:Fe,name:Ie,onBlur:Le,onChange:Re,onFocus:ze,readOnly:Be,required:Ge=!1,tabIndex:rt,type:it,value:at}=F,ot=_objectWithoutPropertiesLoose$2(F,_excluded$46),[st,ct]=useControlled_default({controlled:R,default:!!Oe,name:`SwitchBase`,state:`checked`}),lt=useFormControl(),ut=F=>{ze&&ze(F),lt&&lt.onFocus&&lt.onFocus(F)},dt=F=>{Le&&Le(F),lt&&lt.onBlur&&lt.onBlur(F)},ft=F=>{if(F.nativeEvent.defaultPrevented)return;let I=F.target.checked;ct(I),Re&&Re(F,I)},pt=ke;lt&&pt===void 0&&(pt=lt.disabled);let mt=it===`checkbox`||it===`radio`,ht=_extends$3({},F,{checked:st,disabled:pt,disableFocusRipple:Ae,edge:je}),gt=useUtilityClasses$42(ht);return(0,import_jsx_runtime$2.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(gt.root,De),centerRipple:!0,focusRipple:!Ae,disabled:pt,tabIndex:null,role:void 0,onFocus:ut,onBlur:dt,ownerState:ht,ref:I},ot,{children:[(0,import_jsx_runtime$2.jsx)(SwitchBaseInput,_extends$3({autoFocus:L,checked:R,defaultChecked:Oe,className:gt.input,disabled:pt,id:mt?Ne:void 0,name:Ie,onChange:ft,readOnly:Be,ref:Fe,required:Ge,ownerState:ht,tabIndex:rt,type:it},it===`checkbox`&&at===void 0?{}:{value:at},Pe)),st?z:Me]}))}),CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`),CheckBox_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`),IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);function getCheckboxUtilityClass(F){return generateUtilityClass(`MuiCheckbox`,F)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$45=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$41=F=>{let{classes:I,indeterminate:L,color:R,size:z}=F;return _extends$3({},I,composeClasses({root:[`root`,L&&`indeterminate`,`color${capitalize_default(R)}`,`size${capitalize_default(z)}`]},getCheckboxUtilityClass,I))},CheckboxRoot=styled(SwitchBase,{shouldForwardProp:F=>rootShouldForwardProp(F)||F===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.indeterminate&&I.indeterminate,I[`size${capitalize_default(L.size)}`],L.color!=="default"&&I[`color${capitalize_default(L.color)}`]]}})(({theme:F,ownerState:I})=>_extends$3({color:(F.vars||F).palette.text.secondary},!I.disableRipple&&{"&:hover":{backgroundColor:F.vars?`rgba(${I.color==="default"?F.vars.palette.action.activeChannel:F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(I.color==="default"?F.palette.action.active:F.palette[I.color].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},I.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(F.vars||F).palette[I.color].main},[`&.${checkboxClasses.disabled}`]:{color:(F.vars||F).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime$2.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime$2.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime$2.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$10.forwardRef(function(F,I){var L,R;let z=useDefaultProps({props:F,name:`MuiCheckbox`}),{checkedIcon:De=defaultCheckedIcon,color:Oe=`primary`,icon:ke=defaultIcon,indeterminate:Ae=!1,indeterminateIcon:je=defaultIndeterminateIcon,inputProps:Me,size:Ne=`medium`,className:Pe}=z,Fe=_objectWithoutPropertiesLoose$2(z,_excluded$45),Ie=Ae?je:ke,Le=Ae?je:De,Re=_extends$3({},z,{color:Oe,indeterminate:Ae,size:Ne}),ze=useUtilityClasses$41(Re);return(0,import_jsx_runtime$2.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":Ae},Me),icon:import_react$10.cloneElement(Ie,{fontSize:Ie.props.fontSize??Ne}),checkedIcon:import_react$10.cloneElement(Le,{fontSize:Le.props.fontSize??Ne}),ownerState:Re,ref:I,className:clsx$1(ze.root,Pe)},Fe,{classes:ze}))});function hasValue(F){return F!=null&&!(Array.isArray(F)&&F.length===0)}function isFilled(F,I=!1){return F&&(hasValue(F.value)&&F.value!==``||I&&hasValue(F.defaultValue)&&F.defaultValue!==``)}function isAdornedStart(F){return F.startAdornment}function getFormControlUtilityClasses(F){return generateUtilityClass(`MuiFormControl`,F)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$44=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$40=F=>{let{classes:I,margin:L,fullWidth:R}=F;return composeClasses({root:[`root`,L!==`none`&&`margin${capitalize_default(L)}`,R&&`fullWidth`]},getFormControlUtilityClasses,I)},FormControlRoot=styled(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:F},I)=>_extends$3({},I.root,I[`margin${capitalize_default(F.margin)}`],F.fullWidth&&I.fullWidth)})(({ownerState:F})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},F.margin===`normal`&&{marginTop:16,marginBottom:8},F.margin===`dense`&&{marginTop:8,marginBottom:4},F.fullWidth&&{width:`100%`})),FormControl=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiFormControl`}),{children:R,className:z,color:De=`primary`,component:Oe=`div`,disabled:ke=!1,error:Ae=!1,focused:je,fullWidth:Me=!1,hiddenLabel:Ne=!1,margin:Pe=`none`,required:Fe=!1,size:Ie=`medium`,variant:Le=`outlined`}=L,Re=_objectWithoutPropertiesLoose$2(L,_excluded$44),ze=_extends$3({},L,{color:De,component:Oe,disabled:ke,error:Ae,fullWidth:Me,hiddenLabel:Ne,margin:Pe,required:Fe,size:Ie,variant:Le}),Be=useUtilityClasses$40(ze),[Ge,rt]=import_react$10.useState(()=>{let F=!1;return R&&import_react$10.Children.forEach(R,I=>{if(!isMuiElement_default(I,[`Input`,`Select`]))return;let L=isMuiElement_default(I,[`Select`])?I.props.input:I;L&&isAdornedStart(L.props)&&(F=!0)}),F}),[it,at]=import_react$10.useState(()=>{let F=!1;return R&&import_react$10.Children.forEach(R,I=>{isMuiElement_default(I,[`Input`,`Select`])&&(isFilled(I.props,!0)||isFilled(I.props.inputProps,!0))&&(F=!0)}),F}),[ot,st]=import_react$10.useState(!1);ke&&ot&&st(!1);let ct=je!==void 0&&!ke?je:ot,lt,ut=import_react$10.useMemo(()=>({adornedStart:Ge,setAdornedStart:rt,color:De,disabled:ke,error:Ae,filled:it,focused:ct,fullWidth:Me,hiddenLabel:Ne,size:Ie,onBlur:()=>{st(!1)},onEmpty:()=>{at(!1)},onFilled:()=>{at(!0)},onFocus:()=>{st(!0)},registerEffect:void 0,required:Fe,variant:Le}),[Ge,De,ke,Ae,it,ct,Me,Ne,void 0,Fe,Ie,Le]);return(0,import_jsx_runtime$2.jsx)(FormControlContext.Provider,{value:ut,children:(0,import_jsx_runtime$2.jsx)(FormControlRoot,_extends$3({as:Oe,ownerState:ze,className:clsx$1(Be.root,z),ref:I},Re,{children:R}))})}),Stack=createStack({createStyledComponent:styled(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(F,I)=>I.root}),useThemeProps:F=>useDefaultProps({props:F,name:`MuiStack`})});function getFormControlLabelUtilityClasses(F){return generateUtilityClass(`MuiFormControlLabel`,F)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:F,states:I,muiFormControl:L}){return I.reduce((I,R)=>(I[R]=F[R],L&&F[R]===void 0&&(I[R]=L[R]),I),{})}init_objectWithoutPropertiesLoose(),init_extends();var _excluded$43=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$39=F=>{let{classes:I,disabled:L,labelPlacement:R,error:z,required:De}=F;return composeClasses({root:[`root`,L&&`disabled`,`labelPlacement${capitalize_default(R)}`,z&&`error`,De&&`required`],label:[`label`,L&&`disabled`],asterisk:[`asterisk`,z&&`error`]},getFormControlLabelUtilityClasses,I)},FormControlLabelRoot=styled(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[{[`& .${formControlLabelClasses.label}`]:I.label},I.root,I[`labelPlacement${capitalize_default(L.labelPlacement)}`]]}})(({theme:F,ownerState:I})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},I.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},I.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},I.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(F.vars||F).palette.text.disabled}}})),AsteriskComponent$1=styled(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(F,I)=>I.asterisk})(({theme:F})=>({[`&.${formControlLabelClasses.error}`]:{color:(F.vars||F).palette.error.main}})),FormControlLabel=import_react$10.forwardRef(function(F,I){var L,R;let z=useDefaultProps({props:F,name:`MuiFormControlLabel`}),{className:De,componentsProps:Oe={},control:ke,disabled:Ae,disableTypography:je,label:Me,labelPlacement:Ne=`end`,required:Pe,slotProps:Fe={}}=z,Ie=_objectWithoutPropertiesLoose$2(z,_excluded$43),Le=useFormControl(),Re=Ae??ke.props.disabled??Le?.disabled,ze=Pe??ke.props.required,Be={disabled:Re,required:ze};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(F=>{ke.props[F]===void 0&&z[F]!==void 0&&(Be[F]=z[F])});let Ge=_extends$3({},z,{disabled:Re,labelPlacement:Ne,required:ze,error:formControlState({props:z,muiFormControl:Le,states:[`error`]}).error}),rt=useUtilityClasses$39(Ge),it=Fe.typography??Oe.typography,at=Me;return at!=null&&at.type!==Typography&&!je&&(at=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({component:`span`},it,{className:clsx$1(rt.label,it?.className),children:at}))),(0,import_jsx_runtime$2.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(rt.root,De),ownerState:Ge,ref:I},Ie,{children:[import_react$10.cloneElement(ke,Be),ze?(0,import_jsx_runtime$2.jsxs)(Stack,{display:`block`,children:[at,(0,import_jsx_runtime$2.jsxs)(AsteriskComponent$1,{ownerState:Ge,"aria-hidden":!0,className:rt.asterisk,children:[` `,`*`]})]}):at]}))}),boxClasses=generateUtilityClasses(`MuiBox`,[`root`]),Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});function getCardUtilityClass(F){return generateUtilityClass(`MuiCard`,F)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$42=[`className`,`raised`],useUtilityClasses$38=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getCardUtilityClass,I)},CardRoot=styled(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(F,I)=>I.root})(()=>({overflow:`hidden`})),Card=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCard`}),{className:R,raised:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$42),Oe=_extends$3({},L,{raised:z}),ke=useUtilityClasses$38(Oe);return(0,import_jsx_runtime$2.jsx)(CardRoot,_extends$3({className:clsx$1(ke.root,R),elevation:z?8:void 0,ref:I,ownerState:Oe},De))});function getCardHeaderUtilityClass(F){return generateUtilityClass(`MuiCardHeader`,F)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$41=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$37=F=>{let{classes:I}=F;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,I)},CardHeaderRoot=styled(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(F,I)=>_extends$3({[`& .${cardHeaderClasses.title}`]:I.title,[`& .${cardHeaderClasses.subheader}`]:I.subheader},I.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(F,I)=>I.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(F,I)=>I.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(F,I)=>I.content})({flex:`1 1 auto`}),CardHeader=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardHeader`}),{action:R,avatar:z,className:De,component:Oe=`div`,disableTypography:ke=!1,subheader:Ae,subheaderTypographyProps:je,title:Me,titleTypographyProps:Ne}=L,Pe=_objectWithoutPropertiesLoose$2(L,_excluded$41),Fe=_extends$3({},L,{component:Oe,disableTypography:ke}),Ie=useUtilityClasses$37(Fe),Le=Me;Le!=null&&Le.type!==Typography&&!ke&&(Le=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({variant:z?`body2`:`h5`,className:Ie.title,component:`span`,display:`block`},Ne,{children:Le})));let Re=Ae;return Re!=null&&Re.type!==Typography&&!ke&&(Re=(0,import_jsx_runtime$2.jsx)(Typography,_extends$3({variant:z?`body2`:`body1`,className:Ie.subheader,color:`text.secondary`,component:`span`,display:`block`},je,{children:Re}))),(0,import_jsx_runtime$2.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(Ie.root,De),as:Oe,ref:I,ownerState:Fe},Pe,{children:[z&&(0,import_jsx_runtime$2.jsx)(CardHeaderAvatar,{className:Ie.avatar,ownerState:Fe,children:z}),(0,import_jsx_runtime$2.jsxs)(CardHeaderContent,{className:Ie.content,ownerState:Fe,children:[Le,Re]}),R&&(0,import_jsx_runtime$2.jsx)(CardHeaderAction,{className:Ie.action,ownerState:Fe,children:R})]}))});function getCardContentUtilityClass(F){return generateUtilityClass(`MuiCardContent`,F)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$40=[`className`,`component`],useUtilityClasses$36=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getCardContentUtilityClass,I)},CardContentRoot=styled(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(F,I)=>I.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardContent`}),{className:R,component:z=`div`}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$40),Oe=_extends$3({},L,{component:z}),ke=useUtilityClasses$36(Oe);return(0,import_jsx_runtime$2.jsx)(CardContentRoot,_extends$3({as:z,className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getCardActionsUtilityClass(F){return generateUtilityClass(`MuiCardActions`,F)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$39=[`disableSpacing`,`className`],useUtilityClasses$35=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getCardActionsUtilityClass,I)},CardActionsRoot=styled(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})(({ownerState:F})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!F.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCardActions`}),{disableSpacing:R=!1,className:z}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$39),Oe=_extends$3({},L,{disableSpacing:R}),ke=useUtilityClasses$35(Oe);return(0,import_jsx_runtime$2.jsx)(CardActionsRoot,_extends$3({className:clsx$1(ke.root,z),ownerState:Oe,ref:I},De))}),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,blueberry_default=``+new URL(`blueberry-BBXqspnA.png`,import.meta.url).href,blueberry_growing1_default=``+new URL(`blueberry-growing1-Cj7olcs4.png`,import.meta.url).href,blueberry_seed_default=``+new URL(`blueberry-seed-fuVW1LxC.png`,import.meta.url).href,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,cow_variation_1_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC4klEQVR4AeyXDXLqMAyEnXfJ3gDOBDfoKfP0ZbxUceTYSaCUmXSy6F/W2g5T/qUP/zsJvPsAzxM4T+DgDpxX6OAGHi4/T+DwFh5scJ7AwQ08XM4JjLmLZDY/Q0AgXS6XjxyeLZ4IoLwQbI7HnqV8PfqjBwSG+/2OY+BjI2jWQtmSfPnQ10AecaQHPpAg4AMtnaIH7Opx/UI0Gk09VD+OY/KQ33qQZ6L+9BKg0ajGkvW27Qg9Wlk9OS0Cs8FbC/bGy8Gu1+uj1Os4y1x8GdOVXyPw2PFcsEmwMCiL5MvvXRme2cpRjQUZWjAzVd+Bafgp4+AHiwPaSErXgNgliPn8Mi7bnwDXBX9leELPAwPSTdJfHfkkyatBBIac8CvDsxa7K2B7yI/0/kgXAWIigf7ruN1uu9b0BHY1UNHeAVSP9NcIuwdPI7Bn8Z4BWzmrBLSrSNBqthbnPq+9lHs3YEGAQQUNRHOAHx8SSEcK8st+tVwQiBYsh4IMIFdSOd6WjzyvY3twMhGUQ8z08EumJDDYn+X+PFpYkoh0JMCnwdHxYQPZyPIaMRgYv79TBGKA2hpKAmEegwCCGg6JDaQjgXIVwwbERILBNPTw9ZUA+QAdKI6vhi4CLAzKJgyFD+nj6ALxCAwX+SNfztV/CrOULgKzCjMYzkTyEhL4kEA6EigXvQQDAvnRgew1uUqA9wGsNSDGwAwoiQ/g87LUsQHXBekR+Xxc+ioBktgJSADsCOWgsqNcfPz68gNOa+T3AD/ARy7ANtn1LWR5y0fNIOGxzGx7VC8SebjFtxCdiAHTw+HNX/09QGwCDQAGiyINNLRZhmQfm5BrTaTpdzAK/SNYbMgwET/NK2RlNHksZrZ/iG2Fr5dOj2mNYpMUr8oeAtXivxDoJqCr8sqh96wREtjTaCuxZ60REgiG4Y56BCmHXb4/elfDiADFHl2NZkltw/dHb1dUMiICldS/6T4JvPtczhN49wn8BwAA//82HUsEAAAABklEQVQDAG3UeHBCTVueAAAAAElFTkSuQmCC`,cow_variation_2_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC5ElEQVR4AeyXC3LbMAxEtb1kbmCfyb5BTunysYIGhkFKjOS6nVFGG/xBLEk58a/pP/85CXz6AM8TOE9g5w6cV2jnBu4uP09g9xbubHCewM4N3F1+nsDuLdzZ4G+cwKPM6FHM4cfXoy8N9hKg2RqWxWaF/Fmd0HsgjzjSAx+YRglQtOByuUwt+NUSvfZ4PB5TD6WOvCLaz1YCNHrEYdtt1yP0ul6vE4jZ+AA5MRbtNQJPg8fin9pbBrPenVyR0yOw7DiJo2Bhrkesw4/vfr8jurAcqynJDG0o5tR8B+rwNeOHv263W70ekLABTNIS3QbEjiBGTvRHOzuBxvCxtG9zh8kwie7BgNgm0Q3mM2n+TEYChwzP7meLeR+7a/B+dPMjsXvwBHhh01wGAmkwOLfmhbInc6SHEWB4PXWZjZFmc0m9+6a/WxqBd68z3H/rxjUJ8AIBScuO9poSA61Juc/0i/FeTS9mfYwA14drNLEIIIFFATafJgC/B4uA6PN2S491Wd5ajhGgFhLL/zY4GBxAAttAU4P5RiX1ViNpkl5hcWYougpeHk+AoObkhUgcniROwgNfhB/QYvSy/vgk1cEf399TBulPnNwWIoFWXtcPmSyhR0LSMrS+viZgPdCBkTJ/Jg8hkDVe8zHcWo7F59z6jprP5GEERk7BFjfJgKBlmz+TXQLcV5AVZr4eCa6TIdZyXbb4Yg52lwAJ7AwkAPYR4D9UPzRrYHvgs7XwF10FL09KgJ3ymdYMEh4+Z4suqX7qSOUFLl8nGQxQyxoe+IiBoqsgfVICPpMGAB8fg8gCGtaPXE8IXdIypPSsW12R9eEkUOifocQ0o4j8aRJwp0CT+nfB+awbsRFYXZT0WL7gz8Hqm/WmaBKIFcnwMeUj9mYCkurVeOeU0vgaKQFpvNEoMemYNVICyTAqPo9iHv74/uibFsgIUOyxqdFT0rrh+6OvVzQyMgKN1H/TfRL49LmcJ/DpE/gNAAD//3r5kyQAAAAGSURBVAMAr+1rcNRc4p4AAAAASUVORK5CYII=`,cow_variation_3_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAChUlEQVR4AeyXjXEqMQyEjzSZDiiKDlIl0eewN8LIf/gSyIzf3CJZWsla+2BePrZ//m8JePUFrhtYNzB5AusVmjzA6fJ1A9NHONlg3cDkAU6XrxuYPsLJBn9xA1eb0cOWw4+vx98bzAqgWQv7ZjcH/s3d8GuARx7rQQxsowIo2nE+n7cS/G6Bn3qUahW3Onhmyk+vABpd1Vi23LadoUeL1cNpCbgbvLVhb75nMPWqcE9wagL2E4c4CjYGeV0Uyzn52tUwtJBoJQFp+MSwj8vlsgm2HHrYHFAki38UIgEPw/9sdtynDgMbdSUuRHkfywXcDe+JR/rcBKAng2IFrckDxUvWC+ALW+KleN6QzSIkcscH/YCnsgY+VvMlgOH5cjxwaSY8JN8gIAFDo+jUh4p+iTwsgOFrs3BbUZ54qzaqa8WGBbQa/nX+LQRwMxF0GOTMD7+juYDTjWz845/8NWIvcP362iKQA7VJEKDffn6JatxmjgE9ic2Bj8EhBjT06fNzA+LhA+UVjywCongxxgBRMo8zoHj4QGssw2F7cOOGB5wEWPPw/So1Z9gcJW5PnAGBuPhA65pFgIaX3fkmLP0nbg8MOAgcoCcqr42QAh0fCKjSOIlnhXgRuc+gfmPW7CXkOVs/HLDF+v6kpClkCZEl1gKDA3iqwxJjaEBOe+AL5ICtw+Et3hZAAwCZTbEGGqafXIbpherMpkf96B/BSGkfs8Wn+QpZJU3SH+/m5w+5EeT1WtMj7SFRlkgxs9WnR0C1wauT3QL0mvzmwM/sEQp4ptGosKP2CAUEw/A+egSU6ZDvj9/VMBJAsUdXoztSe+H747crCoxIQIH6nuEl4NX3sm7g1TfwDQAA//9EngZ8AAAABklEQVQDAPmFUXBZV/YBAAAAAElFTkSuQmCC`,cow_variation_4_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADCklEQVR4AeyXi3HjMAxExWsyHdg12R2kSh0ew9VBFEhJw3OczCijDcDFhwtSzsR/pl/+cw3w7gu8buC6gcETuF6hwQMcLr9uYPgIBxtcNzB4gMPl1w0MH+Fgg++4gdk0etjy9OPr8ZcGowPQbA/LZsUhv7gTfg/kEcd6wIHp7AAULZjneWrB7xb4ucftdgvr4YHVkWem/RwdgEZgtaFve7/f/XLXLwKnXp1yes32BkA0WITXzRAA4LEC6xaOCFNtJzeR0xsgC6cBrwnJER6PR0RP1IE6GHF1Tr12NYgWclprgEV8zrJfnKyZ5WEtLGTgMLwEyD6fz1VmSmj6olL658PUuXAe0QAb8RQ8Hl8nfUQ0+QL58l9h6wFC8f97Y26CkxW4Je2BLx5LrmKR9QPsio9Os/UZiDbzHMIEz+OLx7LuQQMgfv3ylaqewF6slL/caIDNRogDm0BFRLdSpbx0uRkA0aDeVUKJCeR4nzWIOF4H3mnie6B+L0fxzQAKRPZM46g+4lo9W3zd4/AAdUNuRKCp4rLE4IE4fA/xKaUppS0ULzeXfK38eoBkP4qFVsJoDkjynF/je/jXiFr2AvPn5xSBWBHv26x8BphpbCx/icz0HzauM2qOtYfPZy9EIU6i08fHBJSHDxQXH1kGiPgNxymDOoBQcYpjgfjIIi7iI67khgecB7ATCd8v3wyhAK4ljngvRm0EBALF8IHWPcsAEi+75HPNYCGKg1BcL9b7xM6A16XOj7g6hzUDYJvgJBgC1EkaxPNwAjyDAXzxfA68wLxH+RzAAzhqAGuzmwM27thXSjVjCA8aCIiT7y08gFOtvbL5+wLCADH28IAjBswPxRu/PwANAMn8p4g10ND0pPDvtwVCXnVm88NN4NA/gsVSgZn42X2FrIwm+Sul+fVD7Azqeq3pkW9FQ1kgc2a7z5EBug3eHTw8gF6LVwrmswHO7BEO8FPFRoOFAwSJvI8eQcow5fvjH2oYDUCxx6FGq6T9he+Pv1/RyIgGaKT+TPoa4N33ct3Au2/gLwAAAP//wOsxRAAAAAZJREFUAwCUT5Bw3sIsRgAAAABJRU5ErkJggg==`,cow_variation_5_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACz0lEQVR4AeyXCXLCMAxFrV6yN4AzwQ16yjTPRCA78kZSoDNh+GiX9W2H0q/wz18HgXcf4HECxwls3IHjCm3cwM3lxwls3sKNDY4TGNzAac4Hs+h+k69YFb3yBBhiNUDD0ayBgCapbPTcJfzsWqs6CITT6bQK7DLmo8mf9Y8EHusMawzWg1LjVm2p7u6HgFyvVxzCRwPJgvPJcXpFTNMUQKHnpPXkWKi/UJe4IZA4CkYcXBurLOTe3efzOeoMFxXzQQ9juqqTs9rkFoE4OAMAd5WGU0nYNGcwG070Vm6NQDxiO/jlckmaP2PYgZarGyxJ1TXGGrYG26JEIA5vE/fQ80Gw7aC6Bj5iatekRyAZXnckhJDsVK1pT4whAbkqrY4P4KshJ5AMXyvsjZWuHTtsof24sp5f47lUAjzdPLB5PLFLwyRJLzaUAMtCArkbXkHYEtht8NFGOdHcrvVrEsibYStqjYnZLwDudc9DSd0ImgRKzexwpRz1j+RqTa8sEvB2mUEULEAO0iL3kW/jni4iQSSFPa1FF682JxB/2OVDeIWao9LLyX35NWIwMP38BA/EQN7H2jkBG4u67qDK6Mw+IKHIQitTSTCYDi3f3wFoMjrQuPo9WSVQGpphvWYjPobrzV9y3b9TVQJ2AYZWWL+nax7Si+c+BgTqRwdq12SVAMcMag32jHFtwEjPKgEasRMiEr8lsEfBKVhQz3OQD2ptq5O/2IKeo0mAAkggRSQSEblJfCMQkcCJAiWxDBe/hbTXfb3Hwy0ay2WTAAsACvmliJxBQ5lfCaGWrXWzjG9IoNAfoAN0MOtxnVkW300CcyVNSv+cExvB3O721mt1swI94hrZJi3hsughUK7+gEg3Ab0efznzM2u4BJ5pNEpsrzVcAs4w3FELJ2Wzy/ZH72roEaDYoqtRktQ2bH/0dkUhwyNQSP1M90Hg3edynMC7T+AXAAD//zgj3voAAAAGSURBVAMA67xIcBP9HhIAAAAASUVORK5CYII=`,cow_variation_6_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACjUlEQVR4AeyXC1LDMAxEUy7JDXqo3oBTFj/TzWw88id1S2AmTBbL0molxW4ZPpZ//nMOcPQBnidwnsDkGziv0OQLnE4/T2D6FU4KnCcw+QKn088TmH6FkwK/cQL31KMjbXc/no+9CswOgFgPa7GHAf9hLtgtwCPO6sAHlr0DkORw0dW+Xq+rXTGyBrwWUi68tNSf0QEQAnWlnREa76WMcHoD0DTo1VrjI0VHOBJscC9wWgPsahwxB4WB+15g07SQ5WoD3CkOMmviFxrAJW6321JC8dLPXrFojQbIzYtM8R90P5hKGV6ly6okbEG+1loOsGm+TES49Pm+F3cuNm8XYDvwAffVbB9g+s7XirzTrwFong9Ht5a/ZWyhm/gmggbYJf/KptEqi0e+kqP9UwMo2VfubAt7mkIXPsBuoTqAN9MSEK/FiWI0B6KY+3ocDcD953Owfj+TKNCki8qu+RWvreh6DJ0Izkk2PaZl+2gAvBDAQgEXZA9hFqWOaty/vpYIirfq+gAbHsWETeDJDc2QiiY2UNOXz88FEAfYQHF8NVQHqCW8yk9zo1oPbr7iZc5hA3gjNAjkwwbat9bmABwzqAlwHWqx0t/icl1KfuQrOeybA0DgTTAEYF+CxgSPyae1jHmD1GDvwKcc/MnOXzBp3TzdAWBLjCEcxBxqltX9sj0XDo0B4tRw4CMGkh02n/z9/4kRAJApypqA4MUbGrGVl9b8SA/9CImU66S1+oycACL5b0OgQmwPAonsQiPX0FDJm31pbT4jAzQFjg4OD6Ar8s6Gn6kRDvCM0N7BXlUjHCBohvvoCCjTLtfHHhKMBiDZMSS0IfU3ro/dz6gwogEq1L/pPgc4+lzOEzj6BL4BAAD//9HdgZsAAAAGSURBVAMAlBRicJihbigAAAAASUVORK5CYII=`,cow_variation_7_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACsklEQVR4AeyXAXLrIAxE4V+yN0jOlNygp/TXY7wehYANJk3aGTreSohl0YKbtv/CH/+aBj59gfMG5g0MnsB8hQYPcHj5vIHhIxwUmDcweIDDy+cNDB/hoMA7bmCxHj1s2P349eSbwKgBxI6wbbYm8Nc0kO8BHvNED2og9BpgkYcX3fLL5bLllSRpwAPLsgQPasDWwrNQf1oNILQgKtQl22bQEfN6vSp9iJ7zMOEGRwZS4/BzMcaAuVcBI8Dr7ewR4e0ZoHk4Cff7PcWWb3DZGOR8aiCv5437ecenaSFRagYemk/Mzm+YAGwOWK5InbHgxz5nPh9T8ygZqDQfQi6Wj72w8haOuGdibqDa/Bnx2hpuAmMCY7i32y2Qq05kzFwN3sBh80ditU1KdbQE5mmeCFQnMt6DDNA8PxxVbi7G6VTJnRO+eZ+3yMjAxqVRsBUsycdW+jXPkwF1RtOCaiMRrVfemnqpGhChFmmoNtdb53cA6F0H/7QBFmMCkJfAHCjN+Ro3A2KMIcaYPq4Zi7PmUWMfcwNxJXvOYV5qslbz+uRg+f4OJTAH9hrAQPojzUh8Elk49/iGfZ6rMUdTQE3Hr68AxCUHmle9FDFQqp+q0RxoWUxzLTw4K7d4wMmAnUbx/WLxO0CDQHuRA433IgbUvOLGN2PpB2orvDHhFWrZDgO7PE7i1UZ4zfIGGXuwrxqjbvnTAVut7V9KicmIIgI90DqiTKzNPX0KocscsLzYvNWPDSAAILMp0YBg+silmVZoncX0SA/9EoyU9rFYfQ5fIVuJSPoz1/L8Ya4H+XqN0Uh7yJRNpJrF3afFwK7ApyebDeg1+cmGz+xRNHBGqNfYq/YoGig0w/voUaAMl7w+eZNgyQCLPZqEHkjHA69PfryiwigZqFB/Z3ka+PS9zBv49A38BwAA//+PREyqAAAABklEQVQDAJH+TnAyO6DCAAAAAElFTkSuQmCC`,rainbow_cow_blinking_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC50lEQVR4AeyYPZLUMBCF2yQUBfcg4BZcYrkBMRkJEQkZMTdgT0DGLQi4B1UUkdEnqz1tqzWSV96Z2SpP+Y1aLXXrPf15d57JE/8cAq69gMcKHCvQOQPHFuqcwO7wYwW6p7AzwbECnRPYHX6sQPcUdia4xAqMgaNFqG5+bDz2nKBXAMlqmAdLBv2TKdjnQD/aKS3wAdkqgKAZH8f3soaM/yTCDpfbMcf4560AmyPGnnLQL482nlYBJAImtM+EeDXDp/qQNQFkANlYTQSyqMkxfn0zGS3fZRED4ecEuMQJasJpGyy6W/LDq5+LtkVleH6qnkRAWhHbSwLOkt80+whJBCx5RiePKwLyxNGpAk9AgfyUiUEnq+8b4oAsX4ZvFBMgj0X5mcmmUsZawEXIQ4eJUHAL4Ytg5hVp5aK/8GUF7EOembMoDLyXWwVA3l0v9i1oGXCxFTQAMQ1bQbtvLVVAFgdpkDUUHC75Qt893ZkASIM9B9Fcw4dfau5WZgJ2y3yhRDchgO2nEM6MQidhOkPuGV0LGB5jmZUHpc3PewCM9/fiQSAOCCwAASP3cWjnJgrFIz/hbkeEJT7c3QnQkbGBilK/VyJAhpc/vLZNvsXLyIsMxAWkNsgls1qkvu4ERwFh37n7q5p51SGK4C268lvi6ybqEATYABtg14AAJa/lHBOX+iFXHyIs5oy+wXZZt3i+dR/qCKAsgpmIQs796VuMLjSErWQJxjHSOcAP8Gk09WBnExx8bf9SajIOngUJNoEbJeGF/I4HN5HLbiHy0gaC7ZIP/roAEgA6mzc0CQe9u20ZzpNkSKRFJMZJ+iACk/weQtuif6hnT3ULhQiSiCEfXPND2xbMgSuDHPI9/EgBUlv0JbtYtAgoBt9CQ7OAeJAfciNtUPku7DCwIcQ/A5cg+1deC9hC1uvbugLsRwsvV6/P5sduyucJINiiKdGiU71i82PXIwo9PAGFrrfpPgRce12OFbj2CvwHAAD//7rOgnEAAAAGSURBVAMAF6QgcGBcpGoAAAAASUVORK5CYIIA`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,blueberry:blueberry_default,"blueberry-growing-1":blueberry_growing1_default,"blueberry-seed":blueberry_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,rainbowBlinking:rainbow_cow_blinking_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default],blinkingVariations:[cow_variation_1_blinking_default,cow_variation_2_blinking_default,cow_variation_3_blinking_default,cow_variation_4_blinking_default,cow_variation_5_blinking_default,cow_variation_6_blinking_default,cow_variation_7_blinking_default]}},noop$2=()=>{},getFinalCropItemFromSeedItem=({id:F},I=0)=>{let L=getFinalCropItemIdFromSeedItemId(F,I);if(L)return itemsMap[L]},getItemCurrentValue=({id:F},I)=>{let L=Math.round((I[F]?getItemBaseValue(F)*(itemsMap[F].doesPriceFluctuate?I[F]:1):getItemBaseValue(F))*100);return Number(toDecimal(dinero({amount:L,currency:USD})))};function noop$1(){}function returnTrue(){return!0}function charIsNumber(F){return!!(F||``).match(/\d/)}function isNil(F){return F==null}function escapeRegExp(F){return F.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(F){switch(F){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(F,I,L){var R=getThousandsGroupRegex(L),z=F.search(/[1-9]/);return z=z===-1?F.length:z,F.substring(0,z)+F.substring(z,F.length).replace(R,`$1`+I)}function splitDecimal(F,I){I===void 0&&(I=!0);var L=F[0]===`-`,R=L&&I;F=F.replace(`-`,``);var z=F.split(`.`);return{beforeDecimal:z[0],afterDecimal:z[1]||``,hasNagation:L,addNegation:R}}function fixLeadingZero(F){if(!F)return F;var I=F[0]===`-`;I&&(F=F.substring(1,F.length));var L=F.split(`.`),R=L[0].replace(/^0+/,``)||`0`,z=L[1]||``;return(I?`-`:``)+R+(z?`.`+z:``)}function limitToScale(F,I,L){for(var R=``,z=L?`0`:``,De=0;De<=I-1;De++)R+=F[De]||z;return R}function repeat(F,I){return Array(I+1).join(F)}function toNumericString(F){F+=``;var I=F[0]===`-`?`-`:``;I&&(F=F.substring(1));var L=F.split(/[eE]/g),R=L[0],z=L[1];if(z=Number(z),!z)return I+R;R=R.replace(`.`,``);var De=1+z,Oe=R.length;return De<0?R=`0.`+repeat(`0`,Math.abs(De))+R:De>=Oe?R+=repeat(`0`,De-Oe):R=(R.substring(0,De)||`0`)+`.`+R.substring(De),I+R}function roundToPrecision(F,I,L){if([``,`-`].indexOf(F)!==-1)return F;var R=F.indexOf(`.`)!==-1&&I,z=splitDecimal(F),De=z.beforeDecimal,Oe=z.afterDecimal,ke=z.hasNagation,Ae=parseFloat(`0.`+(Oe||`0`)),je=(Oe.length<=I?`0.`+Oe:Ae.toFixed(I)).split(`.`),Me=De.split(``).reverse().reduce(function(F,I,L){return F.length>L?(Number(F[0])+Number(I)).toString()+F.substring(1,F.length):I+F},je[0]),Ne=limitToScale(je[1]||``,Math.min(I,Oe.length),L),Pe=ke?`-`:``,Fe=R?`.`:``;return``+Pe+Me+Fe+Ne}function setCaretPosition(F,I){if(F.value=F.value,F!==null){if(F.createTextRange){var L=F.createTextRange();return L.move(`character`,I),L.select(),!0}return F.selectionStart||F.selectionStart===0?(F.focus(),F.setSelectionRange(I,I),!0):(F.focus(),!1)}}function findChangedIndex(F,I){for(var L=0,R=0,z=F.length,De=I.length;F[L]===I[L]&&L<z;)L++;for(;F[z-1-R]===I[De-1-R]&&De-R>L&&z-R>L;)R++;return{start:L,end:z-R}}function clamp(F,I,L){return Math.min(Math.max(F,I),L)}function getCurrentCaretPosition(F){return Math.max(F.selectionStart,F.selectionEnd)}function addInputMode(F){return F||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(F,I){var L={};for(var R in F)Object.prototype.hasOwnProperty.call(F,R)&&I.indexOf(R)===-1&&(L[R]=F[R]);return L}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$1,onChange:noop$1,onKeyDown:noop$1,onMouseUp:noop$1,onFocus:noop$1,onBlur:noop$1,isAllowed:returnTrue},NumberFormat=function(F){function I(I){F.call(this,I);var L=I.defaultValue;this.validateProps();var R=this.formatValueProp(L);this.state={value:R,numAsString:this.removeFormatting(R),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return F&&(I.__proto__=F),I.prototype=Object.create(F&&F.prototype),I.prototype.constructor=I,I.prototype.componentDidMount=function(){this.setState({mounted:!0})},I.prototype.componentDidUpdate=function(F){this.updateValueIfRequired(F)},I.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},I.prototype.updateValueIfRequired=function(F){var I=this,L=I.props,R=I.state,z=I.focusedElm,De=R.value,Oe=R.numAsString;if(Oe===void 0&&(Oe=``),F!==L){this.validateProps();var ke=this.formatNumString(Oe),Ae=isNil(L.value)?ke:this.formatValueProp(),je=this.removeFormatting(Ae),Me=parseFloat(je),Ne=parseFloat(Oe);((!isNaN(Me)||!isNaN(Ne))&&Me!==Ne||ke!==De||z===null&&Ae!==De)&&this.updateValue({formattedValue:Ae,numAsString:je,input:z,source:`prop`,event:null})}},I.prototype.getFloatString=function(F){F===void 0&&(F=``);var I=this.props.decimalScale,L=this.getSeparators().decimalSeparator,R=this.getNumberRegex(!0),z=F[0]===`-`;z&&(F=F.replace(`-`,``)),L&&I===0&&(F=F.split(L)[0]),F=(F.match(R)||[]).join(``).replace(L,`.`);var De=F.indexOf(`.`);return De!==-1&&(F=F.substring(0,De)+`.`+F.substring(De+1,F.length).replace(new RegExp(escapeRegExp(L),`g`),``)),z&&(F=`-`+F),F},I.prototype.getNumberRegex=function(F,I){var L=this.props,R=L.format,z=L.decimalScale,De=L.customNumerals,Oe=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(De?De.join(``):``)+`]`+(Oe&&z!==0&&!I&&!R?`|`+escapeRegExp(Oe):``),F?`g`:void 0)},I.prototype.getSeparators=function(){var F=this.props.decimalSeparator,I=this.props,L=I.thousandSeparator,R=I.allowedDecimalSeparators;return L===!0&&(L=`,`),R||=[F,`.`],{decimalSeparator:F,thousandSeparator:L,allowedDecimalSeparators:R}},I.prototype.getMaskAtIndex=function(F){var I=this.props.mask;return I===void 0&&(I=` `),typeof I==`string`?I:I[F]||` `},I.prototype.getValueObject=function(F,I){var L=parseFloat(I);return{formattedValue:F,value:I,floatValue:isNaN(L)?void 0:L}},I.prototype.validateProps=function(){var F=this.props.mask,I=this.getSeparators(),L=I.decimalSeparator,R=I.thousandSeparator;if(L===R)throw Error(`
154
154
  Decimal separator can't be same as thousand separator.
155
155
  thousandSeparator: `+R+` (thousandSeparator = {true} is same as thousandSeparator = ",")
156
156
  decimalSeparator: `+L+` (default value for decimalSeparator is .)
@@ -219,7 +219,7 @@ Actual message: "${I&&I.message}"`,stackStartFn:F})}throw I}}it.throws=function
219
219
  `),Ae=0;Ae<Oe.length;Ae++){var je=ke.indexOf(Oe[Ae]);if(je!==-1){ke=ke.slice(0,je);break}}z.stack=`${ke.join(`
220
220
  `)}
221
221
  ${Oe.join(`
222
- `)}`}throw z}};function yr(){var F=[...arguments];ct.apply(void 0,[yr,F.length].concat(F))}it.strict=Le(yr,it,{equal:it.strictEqual,deepEqual:it.deepStrictEqual,notEqual:it.notStrictEqual,notDeepEqual:it.notDeepStrictEqual}),it.strict.strict=it.strict})),require_zstream=__commonJSMin(((F,I)=>{function L(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}I.exports=L})),require_common=__commonJSMin((F=>{var I=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;function L(F,I){return Object.prototype.hasOwnProperty.call(F,I)}F.assign=function(F){for(var I=Array.prototype.slice.call(arguments,1);I.length;){var R=I.shift();if(R){if(typeof R!=`object`)throw TypeError(R+`must be non-object`);for(var z in R)L(R,z)&&(F[z]=R[z])}}return F},F.shrinkBuf=function(F,I){return F.length===I?F:F.subarray?F.subarray(0,I):(F.length=I,F)};var R={arraySet:function(F,I,L,R,z){if(I.subarray&&F.subarray){F.set(I.subarray(L,L+R),z);return}for(var De=0;De<R;De++)F[z+De]=I[L+De]},flattenChunks:function(F){var I,L,R=0,z,De,Oe;for(I=0,L=F.length;I<L;I++)R+=F[I].length;for(Oe=new Uint8Array(R),z=0,I=0,L=F.length;I<L;I++)De=F[I],Oe.set(De,z),z+=De.length;return Oe}},z={arraySet:function(F,I,L,R,z){for(var De=0;De<R;De++)F[z+De]=I[L+De]},flattenChunks:function(F){return[].concat.apply([],F)}};F.setTyped=function(I){I?(F.Buf8=Uint8Array,F.Buf16=Uint16Array,F.Buf32=Int32Array,F.assign(F,R)):(F.Buf8=Array,F.Buf16=Array,F.Buf32=Array,F.assign(F,z))},F.setTyped(I)})),require_trees=__commonJSMin((F=>{var I=require_common(),L=4,R=0,z=1,De=2;function Oe(F){for(var I=F.length;--I>=0;)F[I]=0}var ke=0,Ae=1,je=2,Me=3,Ne=258,Pe=29,Fe=256,Ie=Fe+1+Pe,Le=30,Re=19,ze=2*Ie+1,Be=15,Ge=16,rt=7,it=256,at=16,ot=17,st=18,ct=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],lt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ut=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],dt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ft=512,pt=Array((Ie+2)*2);Oe(pt);var mt=Array(Le*2);Oe(mt);var ht=Array(ft);Oe(ht);var gt=Array(Ne-Me+1);Oe(gt);var vt=Array(Pe);Oe(vt);var yt=Array(Le);Oe(yt);function yr(F,I,L,R,z){this.static_tree=F,this.extra_bits=I,this.extra_base=L,this.elems=R,this.max_length=z,this.has_stree=F&&F.length}var br,hw,gw;function _w(F,I){this.dyn_tree=F,this.max_code=0,this.stat_desc=I}function vw(F){return F<256?ht[F]:ht[256+(F>>>7)]}function yw(F,I){F.pending_buf[F.pending++]=I&255,F.pending_buf[F.pending++]=I>>>8&255}function bw(F,I,L){F.bi_valid>Ge-L?(F.bi_buf|=I<<F.bi_valid&65535,yw(F,F.bi_buf),F.bi_buf=I>>Ge-F.bi_valid,F.bi_valid+=L-Ge):(F.bi_buf|=I<<F.bi_valid&65535,F.bi_valid+=L)}function xw(F,I,L){bw(F,L[I*2],L[I*2+1])}function Sw(F,I){var L=0;do L|=F&1,F>>>=1,L<<=1;while(--I>0);return L>>>1}function Cw(F){F.bi_valid===16?(yw(F,F.bi_buf),F.bi_buf=0,F.bi_valid=0):F.bi_valid>=8&&(F.pending_buf[F.pending++]=F.bi_buf&255,F.bi_buf>>=8,F.bi_valid-=8)}function ww(F,I){var L=I.dyn_tree,R=I.max_code,z=I.stat_desc.static_tree,De=I.stat_desc.has_stree,Oe=I.stat_desc.extra_bits,ke=I.stat_desc.extra_base,Ae=I.stat_desc.max_length,je,Me,Ne,Pe,Fe,Ie,Le=0;for(Pe=0;Pe<=Be;Pe++)F.bl_count[Pe]=0;for(L[F.heap[F.heap_max]*2+1]=0,je=F.heap_max+1;je<ze;je++)Me=F.heap[je],Pe=L[L[Me*2+1]*2+1]+1,Pe>Ae&&(Pe=Ae,Le++),L[Me*2+1]=Pe,!(Me>R)&&(F.bl_count[Pe]++,Fe=0,Me>=ke&&(Fe=Oe[Me-ke]),Ie=L[Me*2],F.opt_len+=Ie*(Pe+Fe),De&&(F.static_len+=Ie*(z[Me*2+1]+Fe)));if(Le!==0){do{for(Pe=Ae-1;F.bl_count[Pe]===0;)Pe--;F.bl_count[Pe]--,F.bl_count[Pe+1]+=2,F.bl_count[Ae]--,Le-=2}while(Le>0);for(Pe=Ae;Pe!==0;Pe--)for(Me=F.bl_count[Pe];Me!==0;)Ne=F.heap[--je],!(Ne>R)&&(L[Ne*2+1]!==Pe&&(F.opt_len+=(Pe-L[Ne*2+1])*L[Ne*2],L[Ne*2+1]=Pe),Me--)}}function Tw(F,I,L){var R=Array(Be+1),z=0,De,Oe;for(De=1;De<=Be;De++)R[De]=z=z+L[De-1]<<1;for(Oe=0;Oe<=I;Oe++){var ke=F[Oe*2+1];ke!==0&&(F[Oe*2]=Sw(R[ke]++,ke))}}function Ew(){var F,I,L,R,z,De=Array(Be+1);for(L=0,R=0;R<Pe-1;R++)for(vt[R]=L,F=0;F<1<<ct[R];F++)gt[L++]=R;for(gt[L-1]=R,z=0,R=0;R<16;R++)for(yt[R]=z,F=0;F<1<<lt[R];F++)ht[z++]=R;for(z>>=7;R<Le;R++)for(yt[R]=z<<7,F=0;F<1<<lt[R]-7;F++)ht[256+z++]=R;for(I=0;I<=Be;I++)De[I]=0;for(F=0;F<=143;)pt[F*2+1]=8,F++,De[8]++;for(;F<=255;)pt[F*2+1]=9,F++,De[9]++;for(;F<=279;)pt[F*2+1]=7,F++,De[7]++;for(;F<=287;)pt[F*2+1]=8,F++,De[8]++;for(Tw(pt,Ie+1,De),F=0;F<Le;F++)mt[F*2+1]=5,mt[F*2]=Sw(F,5);br=new yr(pt,ct,Fe+1,Ie,Be),hw=new yr(mt,lt,0,Le,Be),gw=new yr([],ut,0,Re,rt)}function Dw(F){var I;for(I=0;I<Ie;I++)F.dyn_ltree[I*2]=0;for(I=0;I<Le;I++)F.dyn_dtree[I*2]=0;for(I=0;I<Re;I++)F.bl_tree[I*2]=0;F.dyn_ltree[it*2]=1,F.opt_len=F.static_len=0,F.last_lit=F.matches=0}function Ow(F){F.bi_valid>8?yw(F,F.bi_buf):F.bi_valid>0&&(F.pending_buf[F.pending++]=F.bi_buf),F.bi_buf=0,F.bi_valid=0}function kw(F,L,R,z){Ow(F),z&&(yw(F,R),yw(F,~R)),I.arraySet(F.pending_buf,F.window,L,R,F.pending),F.pending+=R}function Aw(F,I,L,R){var z=I*2,De=L*2;return F[z]<F[De]||F[z]===F[De]&&R[I]<=R[L]}function jw(F,I,L){for(var R=F.heap[L],z=L<<1;z<=F.heap_len&&(z<F.heap_len&&Aw(I,F.heap[z+1],F.heap[z],F.depth)&&z++,!Aw(I,R,F.heap[z],F.depth));)F.heap[L]=F.heap[z],L=z,z<<=1;F.heap[L]=R}function Mw(F,I,L){var R,z,De=0,Oe,ke;if(F.last_lit!==0)do R=F.pending_buf[F.d_buf+De*2]<<8|F.pending_buf[F.d_buf+De*2+1],z=F.pending_buf[F.l_buf+De],De++,R===0?xw(F,z,I):(Oe=gt[z],xw(F,Oe+Fe+1,I),ke=ct[Oe],ke!==0&&(z-=vt[Oe],bw(F,z,ke)),R--,Oe=vw(R),xw(F,Oe,L),ke=lt[Oe],ke!==0&&(R-=yt[Oe],bw(F,R,ke)));while(De<F.last_lit);xw(F,it,I)}function Nw(F,I){var L=I.dyn_tree,R=I.stat_desc.static_tree,z=I.stat_desc.has_stree,De=I.stat_desc.elems,Oe,ke,Ae=-1,je;for(F.heap_len=0,F.heap_max=ze,Oe=0;Oe<De;Oe++)L[Oe*2]===0?L[Oe*2+1]=0:(F.heap[++F.heap_len]=Ae=Oe,F.depth[Oe]=0);for(;F.heap_len<2;)je=F.heap[++F.heap_len]=Ae<2?++Ae:0,L[je*2]=1,F.depth[je]=0,F.opt_len--,z&&(F.static_len-=R[je*2+1]);for(I.max_code=Ae,Oe=F.heap_len>>1;Oe>=1;Oe--)jw(F,L,Oe);je=De;do Oe=F.heap[1],F.heap[1]=F.heap[F.heap_len--],jw(F,L,1),ke=F.heap[1],F.heap[--F.heap_max]=Oe,F.heap[--F.heap_max]=ke,L[je*2]=L[Oe*2]+L[ke*2],F.depth[je]=(F.depth[Oe]>=F.depth[ke]?F.depth[Oe]:F.depth[ke])+1,L[Oe*2+1]=L[ke*2+1]=je,F.heap[1]=je++,jw(F,L,1);while(F.heap_len>=2);F.heap[--F.heap_max]=F.heap[1],ww(F,I),Tw(L,Ae,F.bl_count)}function Pw(F,I,L){var R,z=-1,De,Oe=I[1],ke=0,Ae=7,je=4;for(Oe===0&&(Ae=138,je=3),I[(L+1)*2+1]=65535,R=0;R<=L;R++)De=Oe,Oe=I[(R+1)*2+1],!(++ke<Ae&&De===Oe)&&(ke<je?F.bl_tree[De*2]+=ke:De===0?ke<=10?F.bl_tree[ot*2]++:F.bl_tree[st*2]++:(De!==z&&F.bl_tree[De*2]++,F.bl_tree[at*2]++),ke=0,z=De,Oe===0?(Ae=138,je=3):De===Oe?(Ae=6,je=3):(Ae=7,je=4))}function Fw(F,I,L){var R,z=-1,De,Oe=I[1],ke=0,Ae=7,je=4;for(Oe===0&&(Ae=138,je=3),R=0;R<=L;R++)if(De=Oe,Oe=I[(R+1)*2+1],!(++ke<Ae&&De===Oe)){if(ke<je)do xw(F,De,F.bl_tree);while(--ke!==0);else De===0?ke<=10?(xw(F,ot,F.bl_tree),bw(F,ke-3,3)):(xw(F,st,F.bl_tree),bw(F,ke-11,7)):(De!==z&&(xw(F,De,F.bl_tree),ke--),xw(F,at,F.bl_tree),bw(F,ke-3,2));ke=0,z=De,Oe===0?(Ae=138,je=3):De===Oe?(Ae=6,je=3):(Ae=7,je=4)}}function Iw(F){var I;for(Pw(F,F.dyn_ltree,F.l_desc.max_code),Pw(F,F.dyn_dtree,F.d_desc.max_code),Nw(F,F.bl_desc),I=Re-1;I>=3&&F.bl_tree[dt[I]*2+1]===0;I--);return F.opt_len+=3*(I+1)+5+5+4,I}function Lw(F,I,L,R){var z;for(bw(F,I-257,5),bw(F,L-1,5),bw(F,R-4,4),z=0;z<R;z++)bw(F,F.bl_tree[dt[z]*2+1],3);Fw(F,F.dyn_ltree,I-1),Fw(F,F.dyn_dtree,L-1)}function Rw(F){var I=4093624447,L;for(L=0;L<=31;L++,I>>>=1)if(I&1&&F.dyn_ltree[L*2]!==0)return R;if(F.dyn_ltree[18]!==0||F.dyn_ltree[20]!==0||F.dyn_ltree[26]!==0)return z;for(L=32;L<Fe;L++)if(F.dyn_ltree[L*2]!==0)return z;return R}var zw=!1;function Bw(F){zw||=(Ew(),!0),F.l_desc=new _w(F.dyn_ltree,br),F.d_desc=new _w(F.dyn_dtree,hw),F.bl_desc=new _w(F.bl_tree,gw),F.bi_buf=0,F.bi_valid=0,Dw(F)}function Vw(F,I,L,R){bw(F,(ke<<1)+ +!!R,3),kw(F,I,L,!0)}function Hw(F){bw(F,Ae<<1,3),xw(F,it,pt),Cw(F)}function Uw(F,I,R,z){var Oe,ke,Me=0;F.level>0?(F.strm.data_type===De&&(F.strm.data_type=Rw(F)),Nw(F,F.l_desc),Nw(F,F.d_desc),Me=Iw(F),Oe=F.opt_len+3+7>>>3,ke=F.static_len+3+7>>>3,ke<=Oe&&(Oe=ke)):Oe=ke=R+5,R+4<=Oe&&I!==-1?Vw(F,I,R,z):F.strategy===L||ke===Oe?(bw(F,(Ae<<1)+ +!!z,3),Mw(F,pt,mt)):(bw(F,(je<<1)+ +!!z,3),Lw(F,F.l_desc.max_code+1,F.d_desc.max_code+1,Me+1),Mw(F,F.dyn_ltree,F.dyn_dtree)),Dw(F),z&&Ow(F)}function Ww(F,I,L){return F.pending_buf[F.d_buf+F.last_lit*2]=I>>>8&255,F.pending_buf[F.d_buf+F.last_lit*2+1]=I&255,F.pending_buf[F.l_buf+F.last_lit]=L&255,F.last_lit++,I===0?F.dyn_ltree[L*2]++:(F.matches++,I--,F.dyn_ltree[(gt[L]+Fe+1)*2]++,F.dyn_dtree[vw(I)*2]++),F.last_lit===F.lit_bufsize-1}F._tr_init=Bw,F._tr_stored_block=Vw,F._tr_flush_block=Uw,F._tr_tally=Ww,F._tr_align=Hw})),require_adler32=__commonJSMin(((F,I)=>{function L(F,I,L,R){for(var z=F&65535|0,De=F>>>16&65535|0,Oe=0;L!==0;){Oe=L>2e3?2e3:L,L-=Oe;do z=z+I[R++]|0,De=De+z|0;while(--Oe);z%=65521,De%=65521}return z|De<<16|0}I.exports=L})),require_crc32=__commonJSMin(((F,I)=>{function L(){for(var F,I=[],L=0;L<256;L++){F=L;for(var R=0;R<8;R++)F=F&1?3988292384^F>>>1:F>>>1;I[L]=F}return I}var R=L();function z(F,I,L,z){var De=R,Oe=z+L;F^=-1;for(var ke=z;ke<Oe;ke++)F=F>>>8^De[(F^I[ke])&255];return F^-1}I.exports=z})),require_messages=__commonJSMin(((F,I)=>{I.exports={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}})),require_deflate=__commonJSMin((F=>{var I=require_common(),L=require_trees(),R=require_adler32(),z=require_crc32(),De=require_messages(),Oe=0,ke=1,Ae=3,je=4,Me=5,Ne=0,Pe=1,Fe=-2,Ie=-3,Le=-5,Re=-1,ze=1,Be=2,Ge=3,rt=4,it=0,at=2,ot=8,st=9,ct=15,lt=8,ut=286,dt=30,ft=19,pt=2*ut+1,mt=15,ht=3,gt=258,vt=gt+ht+1,yt=32,yr=42,br=69,hw=73,gw=91,_w=103,vw=113,yw=666,bw=1,xw=2,Sw=3,Cw=4,ww=3;function Tw(F,I){return F.msg=De[I],I}function Ew(F){return(F<<1)-(F>4?9:0)}function Dw(F){for(var I=F.length;--I>=0;)F[I]=0}function Ow(F){var L=F.state,R=L.pending;R>F.avail_out&&(R=F.avail_out),R!==0&&(I.arraySet(F.output,L.pending_buf,L.pending_out,R,F.next_out),F.next_out+=R,L.pending_out+=R,F.total_out+=R,F.avail_out-=R,L.pending-=R,L.pending===0&&(L.pending_out=0))}function kw(F,I){L._tr_flush_block(F,F.block_start>=0?F.block_start:-1,F.strstart-F.block_start,I),F.block_start=F.strstart,Ow(F.strm)}function Aw(F,I){F.pending_buf[F.pending++]=I}function jw(F,I){F.pending_buf[F.pending++]=I>>>8&255,F.pending_buf[F.pending++]=I&255}function Mw(F,L,De,Oe){var ke=F.avail_in;return ke>Oe&&(ke=Oe),ke===0?0:(F.avail_in-=ke,I.arraySet(L,F.input,F.next_in,ke,De),F.state.wrap===1?F.adler=R(F.adler,L,ke,De):F.state.wrap===2&&(F.adler=z(F.adler,L,ke,De)),F.next_in+=ke,F.total_in+=ke,ke)}function Nw(F,I){var L=F.max_chain_length,R=F.strstart,z,De,Oe=F.prev_length,ke=F.nice_match,Ae=F.strstart>F.w_size-vt?F.strstart-(F.w_size-vt):0,je=F.window,Me=F.w_mask,Ne=F.prev,Pe=F.strstart+gt,Fe=je[R+Oe-1],Ie=je[R+Oe];F.prev_length>=F.good_match&&(L>>=2),ke>F.lookahead&&(ke=F.lookahead);do{if(z=I,je[z+Oe]!==Ie||je[z+Oe-1]!==Fe||je[z]!==je[R]||je[++z]!==je[R+1])continue;R+=2,z++;do;while(je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&R<Pe);if(De=gt-(Pe-R),R=Pe-gt,De>Oe){if(F.match_start=I,Oe=De,De>=ke)break;Fe=je[R+Oe-1],Ie=je[R+Oe]}}while((I=Ne[I&Me])>Ae&&--L!==0);return Oe<=F.lookahead?Oe:F.lookahead}function Pw(F){var L=F.w_size,R,z,De,Oe,ke;do{if(Oe=F.window_size-F.lookahead-F.strstart,F.strstart>=L+(L-vt)){I.arraySet(F.window,F.window,L,L,0),F.match_start-=L,F.strstart-=L,F.block_start-=L,z=F.hash_size,R=z;do De=F.head[--R],F.head[R]=De>=L?De-L:0;while(--z);z=L,R=z;do De=F.prev[--R],F.prev[R]=De>=L?De-L:0;while(--z);Oe+=L}if(F.strm.avail_in===0)break;if(z=Mw(F.strm,F.window,F.strstart+F.lookahead,Oe),F.lookahead+=z,F.lookahead+F.insert>=ht)for(ke=F.strstart-F.insert,F.ins_h=F.window[ke],F.ins_h=(F.ins_h<<F.hash_shift^F.window[ke+1])&F.hash_mask;F.insert&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[ke+ht-1])&F.hash_mask,F.prev[ke&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=ke,ke++,F.insert--,!(F.lookahead+F.insert<ht)););}while(F.lookahead<vt&&F.strm.avail_in!==0)}function Fw(F,I){var L=65535;for(L>F.pending_buf_size-5&&(L=F.pending_buf_size-5);;){if(F.lookahead<=1){if(Pw(F),F.lookahead===0&&I===Oe)return bw;if(F.lookahead===0)break}F.strstart+=F.lookahead,F.lookahead=0;var R=F.block_start+L;if((F.strstart===0||F.strstart>=R)&&(F.lookahead=F.strstart-R,F.strstart=R,kw(F,!1),F.strm.avail_out===0)||F.strstart-F.block_start>=F.w_size-vt&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):(F.strstart>F.block_start&&(kw(F,!1),F.strm.avail_out),bw)}function Iw(F,I){for(var R,z;;){if(F.lookahead<vt){if(Pw(F),F.lookahead<vt&&I===Oe)return bw;if(F.lookahead===0)break}if(R=0,F.lookahead>=ht&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart),R!==0&&F.strstart-R<=F.w_size-vt&&(F.match_length=Nw(F,R)),F.match_length>=ht)if(z=L._tr_tally(F,F.strstart-F.match_start,F.match_length-ht),F.lookahead-=F.match_length,F.match_length<=F.max_lazy_match&&F.lookahead>=ht){F.match_length--;do F.strstart++,F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart;while(--F.match_length!==0);F.strstart++}else F.strstart+=F.match_length,F.match_length=0,F.ins_h=F.window[F.strstart],F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+1])&F.hash_mask;else z=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++;if(z&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=F.strstart<ht-1?F.strstart:ht-1,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Lw(F,I){for(var R,z,De;;){if(F.lookahead<vt){if(Pw(F),F.lookahead<vt&&I===Oe)return bw;if(F.lookahead===0)break}if(R=0,F.lookahead>=ht&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart),F.prev_length=F.match_length,F.prev_match=F.match_start,F.match_length=ht-1,R!==0&&F.prev_length<F.max_lazy_match&&F.strstart-R<=F.w_size-vt&&(F.match_length=Nw(F,R),F.match_length<=5&&(F.strategy===ze||F.match_length===ht&&F.strstart-F.match_start>4096)&&(F.match_length=ht-1)),F.prev_length>=ht&&F.match_length<=F.prev_length){De=F.strstart+F.lookahead-ht,z=L._tr_tally(F,F.strstart-1-F.prev_match,F.prev_length-ht),F.lookahead-=F.prev_length-1,F.prev_length-=2;do++F.strstart<=De&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart);while(--F.prev_length!==0);if(F.match_available=0,F.match_length=ht-1,F.strstart++,z&&(kw(F,!1),F.strm.avail_out===0))return bw}else if(F.match_available){if(z=L._tr_tally(F,0,F.window[F.strstart-1]),z&&kw(F,!1),F.strstart++,F.lookahead--,F.strm.avail_out===0)return bw}else F.match_available=1,F.strstart++,F.lookahead--}return F.match_available&&=(z=L._tr_tally(F,0,F.window[F.strstart-1]),0),F.insert=F.strstart<ht-1?F.strstart:ht-1,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Rw(F,I){for(var R,z,De,ke,Ae=F.window;;){if(F.lookahead<=gt){if(Pw(F),F.lookahead<=gt&&I===Oe)return bw;if(F.lookahead===0)break}if(F.match_length=0,F.lookahead>=ht&&F.strstart>0&&(De=F.strstart-1,z=Ae[De],z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De])){ke=F.strstart+gt;do;while(z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&De<ke);F.match_length=gt-(ke-De),F.match_length>F.lookahead&&(F.match_length=F.lookahead)}if(F.match_length>=ht?(R=L._tr_tally(F,1,F.match_length-ht),F.lookahead-=F.match_length,F.strstart+=F.match_length,F.match_length=0):(R=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++),R&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function zw(F,I){for(var R;;){if(F.lookahead===0&&(Pw(F),F.lookahead===0)){if(I===Oe)return bw;break}if(F.match_length=0,R=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++,R&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Bw(F,I,L,R,z){this.good_length=F,this.max_lazy=I,this.nice_length=L,this.max_chain=R,this.func=z}var Vw=[new Bw(0,0,0,0,Fw),new Bw(4,4,8,4,Iw),new Bw(4,5,16,8,Iw),new Bw(4,6,32,32,Iw),new Bw(4,4,16,16,Lw),new Bw(8,16,32,32,Lw),new Bw(8,16,128,128,Lw),new Bw(8,32,128,256,Lw),new Bw(32,128,258,1024,Lw),new Bw(32,258,258,4096,Lw)];function Hw(F){F.window_size=2*F.w_size,Dw(F.head),F.max_lazy_match=Vw[F.level].max_lazy,F.good_match=Vw[F.level].good_length,F.nice_match=Vw[F.level].nice_length,F.max_chain_length=Vw[F.level].max_chain,F.strstart=0,F.block_start=0,F.lookahead=0,F.insert=0,F.match_length=F.prev_length=ht-1,F.match_available=0,F.ins_h=0}function Uw(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new I.Buf16(pt*2),this.dyn_dtree=new I.Buf16((2*dt+1)*2),this.bl_tree=new I.Buf16((2*ft+1)*2),Dw(this.dyn_ltree),Dw(this.dyn_dtree),Dw(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new I.Buf16(mt+1),this.heap=new I.Buf16(2*ut+1),Dw(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new I.Buf16(2*ut+1),Dw(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ww(F){var I;return!F||!F.state?Tw(F,Fe):(F.total_in=F.total_out=0,F.data_type=at,I=F.state,I.pending=0,I.pending_out=0,I.wrap<0&&(I.wrap=-I.wrap),I.status=I.wrap?yr:vw,F.adler=I.wrap===2?0:1,I.last_flush=Oe,L._tr_init(I),Ne)}function Gw(F){var I=Ww(F);return I===Ne&&Hw(F.state),I}function Kw(F,I){return!F||!F.state||F.state.wrap!==2?Fe:(F.state.gzhead=I,Ne)}function qw(F,L,R,z,De,Oe){if(!F)return Fe;var ke=1;if(L===Re&&(L=6),z<0?(ke=0,z=-z):z>15&&(ke=2,z-=16),De<1||De>st||R!==ot||z<8||z>15||L<0||L>9||Oe<0||Oe>rt)return Tw(F,Fe);z===8&&(z=9);var Ae=new Uw;return F.state=Ae,Ae.strm=F,Ae.wrap=ke,Ae.gzhead=null,Ae.w_bits=z,Ae.w_size=1<<Ae.w_bits,Ae.w_mask=Ae.w_size-1,Ae.hash_bits=De+7,Ae.hash_size=1<<Ae.hash_bits,Ae.hash_mask=Ae.hash_size-1,Ae.hash_shift=~~((Ae.hash_bits+ht-1)/ht),Ae.window=new I.Buf8(Ae.w_size*2),Ae.head=new I.Buf16(Ae.hash_size),Ae.prev=new I.Buf16(Ae.w_size),Ae.lit_bufsize=1<<De+6,Ae.pending_buf_size=Ae.lit_bufsize*4,Ae.pending_buf=new I.Buf8(Ae.pending_buf_size),Ae.d_buf=1*Ae.lit_bufsize,Ae.l_buf=3*Ae.lit_bufsize,Ae.level=L,Ae.strategy=Oe,Ae.method=R,Gw(F)}function Jw(F,I){return qw(F,I,ot,ct,lt,it)}function Yw(F,I){var R,De,Ie,Re;if(!F||!F.state||I>Me||I<0)return F?Tw(F,Fe):Fe;if(De=F.state,!F.output||!F.input&&F.avail_in!==0||De.status===yw&&I!==je)return Tw(F,F.avail_out===0?Le:Fe);if(De.strm=F,R=De.last_flush,De.last_flush=I,De.status===yr)if(De.wrap===2)F.adler=0,Aw(De,31),Aw(De,139),Aw(De,8),De.gzhead?(Aw(De,+!!De.gzhead.text+(De.gzhead.hcrc?2:0)+(De.gzhead.extra?4:0)+(De.gzhead.name?8:0)+(De.gzhead.comment?16:0)),Aw(De,De.gzhead.time&255),Aw(De,De.gzhead.time>>8&255),Aw(De,De.gzhead.time>>16&255),Aw(De,De.gzhead.time>>24&255),Aw(De,De.level===9?2:De.strategy>=Be||De.level<2?4:0),Aw(De,De.gzhead.os&255),De.gzhead.extra&&De.gzhead.extra.length&&(Aw(De,De.gzhead.extra.length&255),Aw(De,De.gzhead.extra.length>>8&255)),De.gzhead.hcrc&&(F.adler=z(F.adler,De.pending_buf,De.pending,0)),De.gzindex=0,De.status=br):(Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,De.level===9?2:De.strategy>=Be||De.level<2?4:0),Aw(De,ww),De.status=vw);else{var ze=ot+(De.w_bits-8<<4)<<8,rt=-1;rt=De.strategy>=Be||De.level<2?0:De.level<6?1:De.level===6?2:3,ze|=rt<<6,De.strstart!==0&&(ze|=yt),ze+=31-ze%31,De.status=vw,jw(De,ze),De.strstart!==0&&(jw(De,F.adler>>>16),jw(De,F.adler&65535)),F.adler=1}if(De.status===br)if(De.gzhead.extra){for(Ie=De.pending;De.gzindex<(De.gzhead.extra.length&65535)&&!(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size));)Aw(De,De.gzhead.extra[De.gzindex]&255),De.gzindex++;De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),De.gzindex===De.gzhead.extra.length&&(De.gzindex=0,De.status=hw)}else De.status=hw;if(De.status===hw)if(De.gzhead.name){Ie=De.pending;do{if(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size)){Re=1;break}Re=De.gzindex<De.gzhead.name.length?De.gzhead.name.charCodeAt(De.gzindex++)&255:0,Aw(De,Re)}while(Re!==0);De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Re===0&&(De.gzindex=0,De.status=gw)}else De.status=gw;if(De.status===gw)if(De.gzhead.comment){Ie=De.pending;do{if(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size)){Re=1;break}Re=De.gzindex<De.gzhead.comment.length?De.gzhead.comment.charCodeAt(De.gzindex++)&255:0,Aw(De,Re)}while(Re!==0);De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Re===0&&(De.status=_w)}else De.status=_w;if(De.status===_w&&(De.gzhead.hcrc?(De.pending+2>De.pending_buf_size&&Ow(F),De.pending+2<=De.pending_buf_size&&(Aw(De,F.adler&255),Aw(De,F.adler>>8&255),F.adler=0,De.status=vw)):De.status=vw),De.pending!==0){if(Ow(F),F.avail_out===0)return De.last_flush=-1,Ne}else if(F.avail_in===0&&Ew(I)<=Ew(R)&&I!==je)return Tw(F,Le);if(De.status===yw&&F.avail_in!==0)return Tw(F,Le);if(F.avail_in!==0||De.lookahead!==0||I!==Oe&&De.status!==yw){var it=De.strategy===Be?zw(De,I):De.strategy===Ge?Rw(De,I):Vw[De.level].func(De,I);if((it===Sw||it===Cw)&&(De.status=yw),it===bw||it===Sw)return F.avail_out===0&&(De.last_flush=-1),Ne;if(it===xw&&(I===ke?L._tr_align(De):I!==Me&&(L._tr_stored_block(De,0,0,!1),I===Ae&&(Dw(De.head),De.lookahead===0&&(De.strstart=0,De.block_start=0,De.insert=0))),Ow(F),F.avail_out===0))return De.last_flush=-1,Ne}return I===je?De.wrap<=0?Pe:(De.wrap===2?(Aw(De,F.adler&255),Aw(De,F.adler>>8&255),Aw(De,F.adler>>16&255),Aw(De,F.adler>>24&255),Aw(De,F.total_in&255),Aw(De,F.total_in>>8&255),Aw(De,F.total_in>>16&255),Aw(De,F.total_in>>24&255)):(jw(De,F.adler>>>16),jw(De,F.adler&65535)),Ow(F),De.wrap>0&&(De.wrap=-De.wrap),De.pending===0?Pe:Ne):Ne}function Xw(F){var I;return!F||!F.state?Fe:(I=F.state.status,I!==yr&&I!==br&&I!==hw&&I!==gw&&I!==_w&&I!==vw&&I!==yw?Tw(F,Fe):(F.state=null,I===vw?Tw(F,Ie):Ne))}function Zw(F,L){var z=L.length,De,Oe,ke,Ae,je,Me,Pe,Ie;if(!F||!F.state||(De=F.state,Ae=De.wrap,Ae===2||Ae===1&&De.status!==yr||De.lookahead))return Fe;for(Ae===1&&(F.adler=R(F.adler,L,z,0)),De.wrap=0,z>=De.w_size&&(Ae===0&&(Dw(De.head),De.strstart=0,De.block_start=0,De.insert=0),Ie=new I.Buf8(De.w_size),I.arraySet(Ie,L,z-De.w_size,De.w_size,0),L=Ie,z=De.w_size),je=F.avail_in,Me=F.next_in,Pe=F.input,F.avail_in=z,F.next_in=0,F.input=L,Pw(De);De.lookahead>=ht;){Oe=De.strstart,ke=De.lookahead-(ht-1);do De.ins_h=(De.ins_h<<De.hash_shift^De.window[Oe+ht-1])&De.hash_mask,De.prev[Oe&De.w_mask]=De.head[De.ins_h],De.head[De.ins_h]=Oe,Oe++;while(--ke);De.strstart=Oe,De.lookahead=ht-1,Pw(De)}return De.strstart+=De.lookahead,De.block_start=De.strstart,De.insert=De.lookahead,De.lookahead=0,De.match_length=De.prev_length=ht-1,De.match_available=0,F.next_in=Me,F.input=Pe,F.avail_in=je,De.wrap=Ae,Ne}F.deflateInit=Jw,F.deflateInit2=qw,F.deflateReset=Gw,F.deflateResetKeep=Ww,F.deflateSetHeader=Kw,F.deflate=Yw,F.deflateEnd=Xw,F.deflateSetDictionary=Zw,F.deflateInfo=`pako deflate (from Nodeca project)`})),require_inffast=__commonJSMin(((F,I)=>{var L=30,R=12;I.exports=function(F,I){var L=F.state,R=F.next_in,z,De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ge,rt,it,at,ot,st,ct=F.input,lt;z=R+(F.avail_in-5),De=F.next_out,lt=F.output,Oe=De-(I-F.avail_out),ke=De+(F.avail_out-257),Ae=L.dmax,je=L.wsize,Me=L.whave,Ne=L.wnext,Pe=L.window,Fe=L.hold,Ie=L.bits,Le=L.lencode,Re=L.distcode,ze=(1<<L.lenbits)-1,Be=(1<<L.distbits)-1;top:do{Ie<15&&(Fe+=ct[R++]<<Ie,Ie+=8,Fe+=ct[R++]<<Ie,Ie+=8),Ge=Le[Fe&ze];dolen:for(;;){if(rt=Ge>>>24,Fe>>>=rt,Ie-=rt,rt=Ge>>>16&255,rt===0)lt[De++]=Ge&65535;else if(rt&16){it=Ge&65535,rt&=15,rt&&(Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8),it+=Fe&(1<<rt)-1,Fe>>>=rt,Ie-=rt),Ie<15&&(Fe+=ct[R++]<<Ie,Ie+=8,Fe+=ct[R++]<<Ie,Ie+=8),Ge=Re[Fe&Be];dodist:for(;;){if(rt=Ge>>>24,Fe>>>=rt,Ie-=rt,rt=Ge>>>16&255,rt&16){if(at=Ge&65535,rt&=15,Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8,Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8)),at+=Fe&(1<<rt)-1,at>Ae){F.msg=`invalid distance too far back`,L.mode=30;break top}if(Fe>>>=rt,Ie-=rt,rt=De-Oe,at>rt){if(rt=at-rt,rt>Me&&L.sane){F.msg=`invalid distance too far back`,L.mode=30;break top}if(ot=0,st=Pe,Ne===0){if(ot+=je-rt,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}}else if(Ne<rt){if(ot+=je+Ne-rt,rt-=Ne,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);if(ot=0,Ne<it){rt=Ne,it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}}}else if(ot+=Ne-rt,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}for(;it>2;)lt[De++]=st[ot++],lt[De++]=st[ot++],lt[De++]=st[ot++],it-=3;it&&(lt[De++]=st[ot++],it>1&&(lt[De++]=st[ot++]))}else{ot=De-at;do lt[De++]=lt[ot++],lt[De++]=lt[ot++],lt[De++]=lt[ot++],it-=3;while(it>2);it&&(lt[De++]=lt[ot++],it>1&&(lt[De++]=lt[ot++]))}}else if(rt&64){F.msg=`invalid distance code`,L.mode=30;break top}else{Ge=Re[(Ge&65535)+(Fe&(1<<rt)-1)];continue dodist}break}}else if(!(rt&64)){Ge=Le[(Ge&65535)+(Fe&(1<<rt)-1)];continue dolen}else if(rt&32){L.mode=12;break top}else{F.msg=`invalid literal/length code`,L.mode=30;break top}break}}while(R<z&&De<ke);it=Ie>>3,R-=it,Ie-=it<<3,Fe&=(1<<Ie)-1,F.next_in=R,F.next_out=De,F.avail_in=R<z?5+(z-R):5-(R-z),F.avail_out=De<ke?257+(ke-De):257-(De-ke),L.hold=Fe,L.bits=Ie}})),require_inftrees=__commonJSMin(((F,I)=>{var L=require_common(),R=15,z=852,De=592,Oe=0,ke=1,Ae=2,je=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Me=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Ne=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Pe=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];I.exports=function(F,I,Fe,Ie,Le,Re,ze,Be){var Ge=Be.bits,rt=0,it=0,at=0,ot=0,st=0,ct=0,lt=0,ut=0,dt=0,ft=0,pt,mt,ht,gt,vt,yt=null,yr=0,br,hw=new L.Buf16(R+1),gw=new L.Buf16(R+1),_w=null,vw=0,yw,bw,xw;for(rt=0;rt<=R;rt++)hw[rt]=0;for(it=0;it<Ie;it++)hw[I[Fe+it]]++;for(st=Ge,ot=R;ot>=1&&hw[ot]===0;ot--);if(st>ot&&(st=ot),ot===0)return Le[Re++]=20971520,Le[Re++]=20971520,Be.bits=1,0;for(at=1;at<ot&&hw[at]===0;at++);for(st<at&&(st=at),ut=1,rt=1;rt<=R;rt++)if(ut<<=1,ut-=hw[rt],ut<0)return-1;if(ut>0&&(F===Oe||ot!==1))return-1;for(gw[1]=0,rt=1;rt<R;rt++)gw[rt+1]=gw[rt]+hw[rt];for(it=0;it<Ie;it++)I[Fe+it]!==0&&(ze[gw[I[Fe+it]]++]=it);if(F===Oe?(yt=_w=ze,br=19):F===ke?(yt=je,yr-=257,_w=Me,vw-=257,br=256):(yt=Ne,_w=Pe,br=-1),ft=0,it=0,rt=at,vt=Re,ct=st,lt=0,ht=-1,dt=1<<st,gt=dt-1,F===ke&&dt>z||F===Ae&&dt>De)return 1;for(;;){yw=rt-lt,ze[it]<br?(bw=0,xw=ze[it]):ze[it]>br?(bw=_w[vw+ze[it]],xw=yt[yr+ze[it]]):(bw=96,xw=0),pt=1<<rt-lt,mt=1<<ct,at=mt;do mt-=pt,Le[vt+(ft>>lt)+mt]=yw<<24|bw<<16|xw|0;while(mt!==0);for(pt=1<<rt-1;ft&pt;)pt>>=1;if(pt===0?ft=0:(ft&=pt-1,ft+=pt),it++,--hw[rt]===0){if(rt===ot)break;rt=I[Fe+ze[it]]}if(rt>st&&(ft&gt)!==ht){for(lt===0&&(lt=st),vt+=at,ct=rt-lt,ut=1<<ct;ct+lt<ot&&(ut-=hw[ct+lt],!(ut<=0));)ct++,ut<<=1;if(dt+=1<<ct,F===ke&&dt>z||F===Ae&&dt>De)return 1;ht=ft&gt,Le[ht]=st<<24|ct<<16|vt-Re|0}}return ft!==0&&(Le[vt+ft]=rt-lt<<24|4194304),Be.bits=st,0}})),require_inflate=__commonJSMin((F=>{var I=require_common(),L=require_adler32(),R=require_crc32(),z=require_inffast(),De=require_inftrees(),Oe=0,ke=1,Ae=2,je=4,Me=5,Ne=6,Pe=0,Fe=1,Ie=2,Le=-2,Re=-3,ze=-4,Be=-5,Ge=8,rt=1,it=2,at=3,ot=4,st=5,ct=6,lt=7,ut=8,dt=9,ft=10,pt=11,mt=12,ht=13,gt=14,vt=15,yt=16,yr=17,br=18,hw=19,gw=20,_w=21,vw=22,yw=23,bw=24,xw=25,Sw=26,Cw=27,ww=28,Tw=29,Ew=30,Dw=31,Ow=32,kw=852,Aw=592,jw=15;function Mw(F){return(F>>>24&255)+(F>>>8&65280)+((F&65280)<<8)+((F&255)<<24)}function Nw(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Pw(F){var L;return!F||!F.state?Le:(L=F.state,F.total_in=F.total_out=L.total=0,F.msg=``,L.wrap&&(F.adler=L.wrap&1),L.mode=rt,L.last=0,L.havedict=0,L.dmax=32768,L.head=null,L.hold=0,L.bits=0,L.lencode=L.lendyn=new I.Buf32(kw),L.distcode=L.distdyn=new I.Buf32(Aw),L.sane=1,L.back=-1,Pe)}function Fw(F){var I;return!F||!F.state?Le:(I=F.state,I.wsize=0,I.whave=0,I.wnext=0,Pw(F))}function Iw(F,I){var L,R;return!F||!F.state||(R=F.state,I<0?(L=0,I=-I):(L=(I>>4)+1,I<48&&(I&=15)),I&&(I<8||I>15))?Le:(R.window!==null&&R.wbits!==I&&(R.window=null),R.wrap=L,R.wbits=I,Fw(F))}function Lw(F,I){var L,R;return F?(R=new Nw,F.state=R,R.window=null,L=Iw(F,I),L!==Pe&&(F.state=null),L):Le}function Rw(F){return Lw(F,jw)}var zw=!0,Bw,Vw;function Hw(F){if(zw){var L;for(Bw=new I.Buf32(512),Vw=new I.Buf32(32),L=0;L<144;)F.lens[L++]=8;for(;L<256;)F.lens[L++]=9;for(;L<280;)F.lens[L++]=7;for(;L<288;)F.lens[L++]=8;for(De(ke,F.lens,0,288,Bw,0,F.work,{bits:9}),L=0;L<32;)F.lens[L++]=5;De(Ae,F.lens,0,32,Vw,0,F.work,{bits:5}),zw=!1}F.lencode=Bw,F.lenbits=9,F.distcode=Vw,F.distbits=5}function Uw(F,L,R,z){var De,Oe=F.state;return Oe.window===null&&(Oe.wsize=1<<Oe.wbits,Oe.wnext=0,Oe.whave=0,Oe.window=new I.Buf8(Oe.wsize)),z>=Oe.wsize?(I.arraySet(Oe.window,L,R-Oe.wsize,Oe.wsize,0),Oe.wnext=0,Oe.whave=Oe.wsize):(De=Oe.wsize-Oe.wnext,De>z&&(De=z),I.arraySet(Oe.window,L,R-z,De,Oe.wnext),z-=De,z?(I.arraySet(Oe.window,L,R-z,z,0),Oe.wnext=z,Oe.whave=Oe.wsize):(Oe.wnext+=De,Oe.wnext===Oe.wsize&&(Oe.wnext=0),Oe.whave<Oe.wsize&&(Oe.whave+=De))),0}function Ww(F,kw){var Aw,jw,Nw,Pw,Fw,Iw,Lw,Rw,zw,Bw,Vw,Ww,Gw,Kw,qw=0,Jw,Yw,Xw,Zw,Qw,$w,eT,tT,nT=new I.Buf8(4),rT,iT,aT=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!F||!F.state||!F.output||!F.input&&F.avail_in!==0)return Le;Aw=F.state,Aw.mode===mt&&(Aw.mode=ht),Fw=F.next_out,Nw=F.output,Lw=F.avail_out,Pw=F.next_in,jw=F.input,Iw=F.avail_in,Rw=Aw.hold,zw=Aw.bits,Bw=Iw,Vw=Lw,tT=Pe;inf_leave:for(;;)switch(Aw.mode){case rt:if(Aw.wrap===0){Aw.mode=ht;break}for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.wrap&2&&Rw===35615){Aw.check=0,nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0),Rw=0,zw=0,Aw.mode=it;break}if(Aw.flags=0,Aw.head&&(Aw.head.done=!1),!(Aw.wrap&1)||(((Rw&255)<<8)+(Rw>>8))%31){F.msg=`incorrect header check`,Aw.mode=Ew;break}if((Rw&15)!==Ge){F.msg=`unknown compression method`,Aw.mode=Ew;break}if(Rw>>>=4,zw-=4,eT=(Rw&15)+8,Aw.wbits===0)Aw.wbits=eT;else if(eT>Aw.wbits){F.msg=`invalid window size`,Aw.mode=Ew;break}Aw.dmax=1<<eT,F.adler=Aw.check=1,Aw.mode=Rw&512?ft:mt,Rw=0,zw=0;break;case it:for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.flags=Rw,(Aw.flags&255)!==Ge){F.msg=`unknown compression method`,Aw.mode=Ew;break}if(Aw.flags&57344){F.msg=`unknown header flags set`,Aw.mode=Ew;break}Aw.head&&(Aw.head.text=Rw>>8&1),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0,Aw.mode=at;case at:for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.head&&(Aw.head.time=Rw),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,nT[2]=Rw>>>16&255,nT[3]=Rw>>>24&255,Aw.check=R(Aw.check,nT,4,0)),Rw=0,zw=0,Aw.mode=ot;case ot:for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.head&&(Aw.head.xflags=Rw&255,Aw.head.os=Rw>>8),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0,Aw.mode=st;case st:if(Aw.flags&1024){for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.length=Rw,Aw.head&&(Aw.head.extra_len=Rw),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0}else Aw.head&&(Aw.head.extra=null);Aw.mode=ct;case ct:if(Aw.flags&1024&&(Ww=Aw.length,Ww>Iw&&(Ww=Iw),Ww&&(Aw.head&&(eT=Aw.head.extra_len-Aw.length,Aw.head.extra||(Aw.head.extra=Array(Aw.head.extra_len)),I.arraySet(Aw.head.extra,jw,Pw,Ww,eT)),Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,Aw.length-=Ww),Aw.length))break inf_leave;Aw.length=0,Aw.mode=lt;case lt:if(Aw.flags&2048){if(Iw===0)break inf_leave;Ww=0;do eT=jw[Pw+Ww++],Aw.head&&eT&&Aw.length<65536&&(Aw.head.name+=String.fromCharCode(eT));while(eT&&Ww<Iw);if(Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,eT)break inf_leave}else Aw.head&&(Aw.head.name=null);Aw.length=0,Aw.mode=ut;case ut:if(Aw.flags&4096){if(Iw===0)break inf_leave;Ww=0;do eT=jw[Pw+Ww++],Aw.head&&eT&&Aw.length<65536&&(Aw.head.comment+=String.fromCharCode(eT));while(eT&&Ww<Iw);if(Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,eT)break inf_leave}else Aw.head&&(Aw.head.comment=null);Aw.mode=dt;case dt:if(Aw.flags&512){for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw!==(Aw.check&65535)){F.msg=`header crc mismatch`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.head&&(Aw.head.hcrc=Aw.flags>>9&1,Aw.head.done=!0),F.adler=Aw.check=0,Aw.mode=mt;break;case ft:for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}F.adler=Aw.check=Mw(Rw),Rw=0,zw=0,Aw.mode=pt;case pt:if(Aw.havedict===0)return F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,Ie;F.adler=Aw.check=1,Aw.mode=mt;case mt:if(kw===Me||kw===Ne)break inf_leave;case ht:if(Aw.last){Rw>>>=zw&7,zw-=zw&7,Aw.mode=Cw;break}for(;zw<3;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}switch(Aw.last=Rw&1,Rw>>>=1,--zw,Rw&3){case 0:Aw.mode=gt;break;case 1:if(Hw(Aw),Aw.mode=gw,kw===Ne){Rw>>>=2,zw-=2;break inf_leave}break;case 2:Aw.mode=yr;break;case 3:F.msg=`invalid block type`,Aw.mode=Ew}Rw>>>=2,zw-=2;break;case gt:for(Rw>>>=zw&7,zw-=zw&7;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if((Rw&65535)!=(Rw>>>16^65535)){F.msg=`invalid stored block lengths`,Aw.mode=Ew;break}if(Aw.length=Rw&65535,Rw=0,zw=0,Aw.mode=vt,kw===Ne)break inf_leave;case vt:Aw.mode=yt;case yt:if(Ww=Aw.length,Ww){if(Ww>Iw&&(Ww=Iw),Ww>Lw&&(Ww=Lw),Ww===0)break inf_leave;I.arraySet(Nw,jw,Pw,Ww,Fw),Iw-=Ww,Pw+=Ww,Lw-=Ww,Fw+=Ww,Aw.length-=Ww;break}Aw.mode=mt;break;case yr:for(;zw<14;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.nlen=(Rw&31)+257,Rw>>>=5,zw-=5,Aw.ndist=(Rw&31)+1,Rw>>>=5,zw-=5,Aw.ncode=(Rw&15)+4,Rw>>>=4,zw-=4,Aw.nlen>286||Aw.ndist>30){F.msg=`too many length or distance symbols`,Aw.mode=Ew;break}Aw.have=0,Aw.mode=br;case br:for(;Aw.have<Aw.ncode;){for(;zw<3;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.lens[aT[Aw.have++]]=Rw&7,Rw>>>=3,zw-=3}for(;Aw.have<19;)Aw.lens[aT[Aw.have++]]=0;if(Aw.lencode=Aw.lendyn,Aw.lenbits=7,rT={bits:Aw.lenbits},tT=De(Oe,Aw.lens,0,19,Aw.lencode,0,Aw.work,rT),Aw.lenbits=rT.bits,tT){F.msg=`invalid code lengths set`,Aw.mode=Ew;break}Aw.have=0,Aw.mode=hw;case hw:for(;Aw.have<Aw.nlen+Aw.ndist;){for(;qw=Aw.lencode[Rw&(1<<Aw.lenbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Xw<16)Rw>>>=Jw,zw-=Jw,Aw.lens[Aw.have++]=Xw;else{if(Xw===16){for(iT=Jw+2;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw>>>=Jw,zw-=Jw,Aw.have===0){F.msg=`invalid bit length repeat`,Aw.mode=Ew;break}eT=Aw.lens[Aw.have-1],Ww=3+(Rw&3),Rw>>>=2,zw-=2}else if(Xw===17){for(iT=Jw+3;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Jw,zw-=Jw,eT=0,Ww=3+(Rw&7),Rw>>>=3,zw-=3}else{for(iT=Jw+7;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Jw,zw-=Jw,eT=0,Ww=11+(Rw&127),Rw>>>=7,zw-=7}if(Aw.have+Ww>Aw.nlen+Aw.ndist){F.msg=`invalid bit length repeat`,Aw.mode=Ew;break}for(;Ww--;)Aw.lens[Aw.have++]=eT}}if(Aw.mode===Ew)break;if(Aw.lens[256]===0){F.msg=`invalid code -- missing end-of-block`,Aw.mode=Ew;break}if(Aw.lenbits=9,rT={bits:Aw.lenbits},tT=De(ke,Aw.lens,0,Aw.nlen,Aw.lencode,0,Aw.work,rT),Aw.lenbits=rT.bits,tT){F.msg=`invalid literal/lengths set`,Aw.mode=Ew;break}if(Aw.distbits=6,Aw.distcode=Aw.distdyn,rT={bits:Aw.distbits},tT=De(Ae,Aw.lens,Aw.nlen,Aw.ndist,Aw.distcode,0,Aw.work,rT),Aw.distbits=rT.bits,tT){F.msg=`invalid distances set`,Aw.mode=Ew;break}if(Aw.mode=gw,kw===Ne)break inf_leave;case gw:Aw.mode=_w;case _w:if(Iw>=6&&Lw>=258){F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,z(F,Vw),Fw=F.next_out,Nw=F.output,Lw=F.avail_out,Pw=F.next_in,jw=F.input,Iw=F.avail_in,Rw=Aw.hold,zw=Aw.bits,Aw.mode===mt&&(Aw.back=-1);break}for(Aw.back=0;qw=Aw.lencode[Rw&(1<<Aw.lenbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Yw&&!(Yw&240)){for(Zw=Jw,Qw=Yw,$w=Xw;qw=Aw.lencode[$w+((Rw&(1<<Zw+Qw)-1)>>Zw)],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Zw+Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Zw,zw-=Zw,Aw.back+=Zw}if(Rw>>>=Jw,zw-=Jw,Aw.back+=Jw,Aw.length=Xw,Yw===0){Aw.mode=Sw;break}if(Yw&32){Aw.back=-1,Aw.mode=mt;break}if(Yw&64){F.msg=`invalid literal/length code`,Aw.mode=Ew;break}Aw.extra=Yw&15,Aw.mode=vw;case vw:if(Aw.extra){for(iT=Aw.extra;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.length+=Rw&(1<<Aw.extra)-1,Rw>>>=Aw.extra,zw-=Aw.extra,Aw.back+=Aw.extra}Aw.was=Aw.length,Aw.mode=yw;case yw:for(;qw=Aw.distcode[Rw&(1<<Aw.distbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(!(Yw&240)){for(Zw=Jw,Qw=Yw,$w=Xw;qw=Aw.distcode[$w+((Rw&(1<<Zw+Qw)-1)>>Zw)],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Zw+Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Zw,zw-=Zw,Aw.back+=Zw}if(Rw>>>=Jw,zw-=Jw,Aw.back+=Jw,Yw&64){F.msg=`invalid distance code`,Aw.mode=Ew;break}Aw.offset=Xw,Aw.extra=Yw&15,Aw.mode=bw;case bw:if(Aw.extra){for(iT=Aw.extra;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.offset+=Rw&(1<<Aw.extra)-1,Rw>>>=Aw.extra,zw-=Aw.extra,Aw.back+=Aw.extra}if(Aw.offset>Aw.dmax){F.msg=`invalid distance too far back`,Aw.mode=Ew;break}Aw.mode=xw;case xw:if(Lw===0)break inf_leave;if(Ww=Vw-Lw,Aw.offset>Ww){if(Ww=Aw.offset-Ww,Ww>Aw.whave&&Aw.sane){F.msg=`invalid distance too far back`,Aw.mode=Ew;break}Ww>Aw.wnext?(Ww-=Aw.wnext,Gw=Aw.wsize-Ww):Gw=Aw.wnext-Ww,Ww>Aw.length&&(Ww=Aw.length),Kw=Aw.window}else Kw=Nw,Gw=Fw-Aw.offset,Ww=Aw.length;Ww>Lw&&(Ww=Lw),Lw-=Ww,Aw.length-=Ww;do Nw[Fw++]=Kw[Gw++];while(--Ww);Aw.length===0&&(Aw.mode=_w);break;case Sw:if(Lw===0)break inf_leave;Nw[Fw++]=Aw.length,Lw--,Aw.mode=_w;break;case Cw:if(Aw.wrap){for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw|=jw[Pw++]<<zw,zw+=8}if(Vw-=Lw,F.total_out+=Vw,Aw.total+=Vw,Vw&&(F.adler=Aw.check=Aw.flags?R(Aw.check,Nw,Vw,Fw-Vw):L(Aw.check,Nw,Vw,Fw-Vw)),Vw=Lw,(Aw.flags?Rw:Mw(Rw))!==Aw.check){F.msg=`incorrect data check`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.mode=ww;case ww:if(Aw.wrap&&Aw.flags){for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw!==(Aw.total&4294967295)){F.msg=`incorrect length check`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.mode=Tw;case Tw:tT=Fe;break inf_leave;case Ew:tT=Re;break inf_leave;case Dw:return ze;case Ow:default:return Le}return F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,(Aw.wsize||Vw!==F.avail_out&&Aw.mode<Ew&&(Aw.mode<Cw||kw!==je))&&Uw(F,F.output,F.next_out,Vw-F.avail_out)?(Aw.mode=Dw,ze):(Bw-=F.avail_in,Vw-=F.avail_out,F.total_in+=Bw,F.total_out+=Vw,Aw.total+=Vw,Aw.wrap&&Vw&&(F.adler=Aw.check=Aw.flags?R(Aw.check,Nw,Vw,F.next_out-Vw):L(Aw.check,Nw,Vw,F.next_out-Vw)),F.data_type=Aw.bits+(Aw.last?64:0)+(Aw.mode===mt?128:0)+(Aw.mode===gw||Aw.mode===vt?256:0),(Bw===0&&Vw===0||kw===je)&&tT===Pe&&(tT=Be),tT)}function Gw(F){if(!F||!F.state)return Le;var I=F.state;return I.window&&=null,F.state=null,Pe}function Kw(F,I){var L;return!F||!F.state||(L=F.state,!(L.wrap&2))?Le:(L.head=I,I.done=!1,Pe)}function qw(F,I){var R=I.length,z,De,Oe;return!F||!F.state||(z=F.state,z.wrap!==0&&z.mode!==pt)?Le:z.mode===pt&&(De=1,De=L(De,I,R,0),De!==z.check)?Re:(Oe=Uw(F,I,R,R),Oe?(z.mode=Dw,ze):(z.havedict=1,Pe))}F.inflateReset=Fw,F.inflateReset2=Iw,F.inflateResetKeep=Pw,F.inflateInit=Rw,F.inflateInit2=Lw,F.inflate=Ww,F.inflateEnd=Gw,F.inflateGetHeader=Kw,F.inflateSetDictionary=qw,F.inflateInfo=`pako inflate (from Nodeca project)`})),require_constants$1=__commonJSMin(((F,I)=>{I.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}})),require_binding=__commonJSMin((F=>{var I=require_assert(),L=require_zstream(),R=require_deflate(),z=require_inflate(),De=require_constants$1();for(var Oe in De)F[Oe]=De[Oe];F.NONE=0,F.DEFLATE=1,F.INFLATE=2,F.GZIP=3,F.GUNZIP=4,F.DEFLATERAW=5,F.INFLATERAW=6,F.UNZIP=7;var ke=31,Ae=139;function je(I){if(typeof I!=`number`||I<F.DEFLATE||I>F.UNZIP)throw TypeError(`Bad argument`);this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=I,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}je.prototype.close=function(){if(this.write_in_progress){this.pending_close=!0;return}this.pending_close=!1,I(this.init_done,`close before init`),I(this.mode<=F.UNZIP),this.mode===F.DEFLATE||this.mode===F.GZIP||this.mode===F.DEFLATERAW?R.deflateEnd(this.strm):(this.mode===F.INFLATE||this.mode===F.GUNZIP||this.mode===F.INFLATERAW||this.mode===F.UNZIP)&&z.inflateEnd(this.strm),this.mode=F.NONE,this.dictionary=null},je.prototype.write=function(F,I,L,R,z,De,Oe){return this._write(!0,F,I,L,R,z,De,Oe)},je.prototype.writeSync=function(F,I,L,R,z,De,Oe){return this._write(!1,F,I,L,R,z,De,Oe)},je.prototype._write=function(L,R,z,De,Oe,ke,Ae,je){if(I.equal(arguments.length,8),I(this.init_done,`write before init`),I(this.mode!==F.NONE,`already finalized`),I.equal(!1,this.write_in_progress,`write already in progress`),I.equal(!1,this.pending_close,`close is pending`),this.write_in_progress=!0,I.equal(!1,R===void 0,`must provide flush value`),this.write_in_progress=!0,R!==F.Z_NO_FLUSH&&R!==F.Z_PARTIAL_FLUSH&&R!==F.Z_SYNC_FLUSH&&R!==F.Z_FULL_FLUSH&&R!==F.Z_FINISH&&R!==F.Z_BLOCK)throw Error(`Invalid flush value`);if(z??(z=Buffer.alloc(0),Oe=0,De=0),this.strm.avail_in=Oe,this.strm.input=z,this.strm.next_in=De,this.strm.avail_out=je,this.strm.output=ke,this.strm.next_out=Ae,this.flush=R,!L)return this._process(),this._checkError()?this._afterSync():void 0;var Me=this;return process.nextTick(function(){Me._process(),Me._after()}),this},je.prototype._afterSync=function(){var F=this.strm.avail_out,I=this.strm.avail_in;return this.write_in_progress=!1,[I,F]},je.prototype._process=function(){var I=null;switch(this.mode){case F.DEFLATE:case F.GZIP:case F.DEFLATERAW:this.err=R.deflate(this.strm,this.flush);break;case F.UNZIP:switch(this.strm.avail_in>0&&(I=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(I===null)break;if(this.strm.input[I]===ke){if(this.gzip_id_bytes_read=1,I++,this.strm.avail_in===1)break}else{this.mode=F.INFLATE;break}case 1:if(I===null)break;this.strm.input[I]===Ae?(this.gzip_id_bytes_read=2,this.mode=F.GUNZIP):this.mode=F.INFLATE;break;default:throw Error(`invalid number of gzip magic number bytes read`)}case F.INFLATE:case F.GUNZIP:case F.INFLATERAW:for(this.err=z.inflate(this.strm,this.flush),this.err===F.Z_NEED_DICT&&this.dictionary&&(this.err=z.inflateSetDictionary(this.strm,this.dictionary),this.err===F.Z_OK?this.err=z.inflate(this.strm,this.flush):this.err===F.Z_DATA_ERROR&&(this.err=F.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===F.GUNZIP&&this.err===F.Z_STREAM_END&&this.strm.next_in[0]!==0;)this.reset(),this.err=z.inflate(this.strm,this.flush);break;default:throw Error(`Unknown mode `+this.mode)}},je.prototype._checkError=function(){switch(this.err){case F.Z_OK:case F.Z_BUF_ERROR:if(this.strm.avail_out!==0&&this.flush===F.Z_FINISH)return this._error(`unexpected end of file`),!1;break;case F.Z_STREAM_END:break;case F.Z_NEED_DICT:return this.dictionary==null?this._error(`Missing dictionary`):this._error(`Bad dictionary`),!1;default:return this._error(`Zlib error`),!1}return!0},je.prototype._after=function(){if(this._checkError()){var F=this.strm.avail_out,I=this.strm.avail_in;this.write_in_progress=!1,this.callback(I,F),this.pending_close&&this.close()}},je.prototype._error=function(F){this.strm.msg&&(F=this.strm.msg),this.onerror(F,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},je.prototype.init=function(L,R,z,De,Oe){I(arguments.length===4||arguments.length===5,`init(windowBits, level, memLevel, strategy, [dictionary])`),I(L>=8&&L<=15,`invalid windowBits`),I(R>=-1&&R<=9,`invalid compression level`),I(z>=1&&z<=9,`invalid memlevel`),I(De===F.Z_FILTERED||De===F.Z_HUFFMAN_ONLY||De===F.Z_RLE||De===F.Z_FIXED||De===F.Z_DEFAULT_STRATEGY,`invalid strategy`),this._init(R,L,z,De,Oe),this._setDictionary()},je.prototype.params=function(){throw Error(`deflateParams Not supported`)},je.prototype.reset=function(){this._reset(),this._setDictionary()},je.prototype._init=function(I,De,Oe,ke,Ae){switch(this.level=I,this.windowBits=De,this.memLevel=Oe,this.strategy=ke,this.flush=F.Z_NO_FLUSH,this.err=F.Z_OK,(this.mode===F.GZIP||this.mode===F.GUNZIP)&&(this.windowBits+=16),this.mode===F.UNZIP&&(this.windowBits+=32),(this.mode===F.DEFLATERAW||this.mode===F.INFLATERAW)&&(this.windowBits=-1*this.windowBits),this.strm=new L,this.mode){case F.DEFLATE:case F.GZIP:case F.DEFLATERAW:this.err=R.deflateInit2(this.strm,this.level,F.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case F.INFLATE:case F.GUNZIP:case F.INFLATERAW:case F.UNZIP:this.err=z.inflateInit2(this.strm,this.windowBits);break;default:throw Error(`Unknown mode `+this.mode)}this.err!==F.Z_OK&&this._error(`Init error`),this.dictionary=Ae,this.write_in_progress=!1,this.init_done=!0},je.prototype._setDictionary=function(){if(this.dictionary!=null){switch(this.err=F.Z_OK,this.mode){case F.DEFLATE:case F.DEFLATERAW:this.err=R.deflateSetDictionary(this.strm,this.dictionary);break;default:break}this.err!==F.Z_OK&&this._error(`Failed to set dictionary`)}},je.prototype._reset=function(){switch(this.err=F.Z_OK,this.mode){case F.DEFLATE:case F.DEFLATERAW:case F.GZIP:this.err=R.deflateReset(this.strm);break;case F.INFLATE:case F.INFLATERAW:case F.GUNZIP:this.err=z.inflateReset(this.strm);break;default:break}this.err!==F.Z_OK&&this._error(`Failed to reset stream`)},F.Zlib=je})),require_lib=__commonJSMin((F=>{var I=require_buffer().Buffer,L=require_stream().Transform,R=require_binding(),z=require_util$4(),De=require_assert().ok,Oe=require_buffer().kMaxLength,ke=`Cannot create final Buffer. It would be larger than 0x`+Oe.toString(16)+` bytes`;R.Z_MIN_WINDOWBITS=8,R.Z_MAX_WINDOWBITS=15,R.Z_DEFAULT_WINDOWBITS=15,R.Z_MIN_CHUNK=64,R.Z_MAX_CHUNK=1/0,R.Z_DEFAULT_CHUNK=16*1024,R.Z_MIN_MEMLEVEL=1,R.Z_MAX_MEMLEVEL=9,R.Z_DEFAULT_MEMLEVEL=8,R.Z_MIN_LEVEL=-1,R.Z_MAX_LEVEL=9,R.Z_DEFAULT_LEVEL=R.Z_DEFAULT_COMPRESSION;for(var Ae=Object.keys(R),je=0;je<Ae.length;je++){var Me=Ae[je];Me.match(/^Z/)&&Object.defineProperty(F,Me,{enumerable:!0,value:R[Me],writable:!1})}for(var Ne={Z_OK:R.Z_OK,Z_STREAM_END:R.Z_STREAM_END,Z_NEED_DICT:R.Z_NEED_DICT,Z_ERRNO:R.Z_ERRNO,Z_STREAM_ERROR:R.Z_STREAM_ERROR,Z_DATA_ERROR:R.Z_DATA_ERROR,Z_MEM_ERROR:R.Z_MEM_ERROR,Z_BUF_ERROR:R.Z_BUF_ERROR,Z_VERSION_ERROR:R.Z_VERSION_ERROR},Pe=Object.keys(Ne),Fe=0;Fe<Pe.length;Fe++){var Ie=Pe[Fe];Ne[Ne[Ie]]=Ie}Object.defineProperty(F,"codes",{enumerable:!0,value:Object.freeze(Ne),writable:!1}),F.Deflate=ze,F.Inflate=Be,F.Gzip=Ge,F.Gunzip=rt,F.DeflateRaw=it,F.InflateRaw=at,F.Unzip=ot,F.createDeflate=function(F){return new ze(F)},F.createInflate=function(F){return new Be(F)},F.createDeflateRaw=function(F){return new it(F)},F.createInflateRaw=function(F){return new at(F)},F.createGzip=function(F){return new Ge(F)},F.createGunzip=function(F){return new rt(F)},F.createUnzip=function(F){return new ot(F)},F.deflate=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new ze(I),F,L)},F.deflateSync=function(F,I){return Re(new ze(I),F)},F.gzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new Ge(I),F,L)},F.gzipSync=function(F,I){return Re(new Ge(I),F)},F.deflateRaw=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new it(I),F,L)},F.deflateRawSync=function(F,I){return Re(new it(I),F)},F.unzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new ot(I),F,L)},F.unzipSync=function(F,I){return Re(new ot(I),F)},F.inflate=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new Be(I),F,L)},F.inflateSync=function(F,I){return Re(new Be(I),F)},F.gunzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new rt(I),F,L)},F.gunzipSync=function(F,I){return Re(new rt(I),F)},F.inflateRaw=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new at(I),F,L)},F.inflateRawSync=function(F,I){return Re(new at(I),F)};function Le(F,L,R){var z=[],De=0;F.on(`error`,je),F.on(`end`,Me),F.end(L),Ae();function Ae(){for(var I;(I=F.read())!==null;)z.push(I),De+=I.length;F.once(`readable`,Ae)}function je(I){F.removeListener(`end`,Me),F.removeListener(`readable`,Ae),R(I)}function Me(){var L,Ae=null;De>=Oe?Ae=RangeError(ke):L=I.concat(z,De),z=[],F.close(),R(Ae,L)}}function Re(F,L){if(typeof L==`string`&&(L=I.from(L)),!I.isBuffer(L))throw TypeError(`Not a string or buffer`);var R=F._finishFlushFlag;return F._processChunk(L,R)}function ze(F){if(!(this instanceof ze))return new ze(F);ct.call(this,F,R.DEFLATE)}function Be(F){if(!(this instanceof Be))return new Be(F);ct.call(this,F,R.INFLATE)}function Ge(F){if(!(this instanceof Ge))return new Ge(F);ct.call(this,F,R.GZIP)}function rt(F){if(!(this instanceof rt))return new rt(F);ct.call(this,F,R.GUNZIP)}function it(F){if(!(this instanceof it))return new it(F);ct.call(this,F,R.DEFLATERAW)}function at(F){if(!(this instanceof at))return new at(F);ct.call(this,F,R.INFLATERAW)}function ot(F){if(!(this instanceof ot))return new ot(F);ct.call(this,F,R.UNZIP)}function st(F){return F===R.Z_NO_FLUSH||F===R.Z_PARTIAL_FLUSH||F===R.Z_SYNC_FLUSH||F===R.Z_FULL_FLUSH||F===R.Z_FINISH||F===R.Z_BLOCK}function ct(z,De){var Oe=this;if(this._opts=z||={},this._chunkSize=z.chunkSize||F.Z_DEFAULT_CHUNK,L.call(this,z),z.flush&&!st(z.flush))throw Error(`Invalid flush flag: `+z.flush);if(z.finishFlush&&!st(z.finishFlush))throw Error(`Invalid flush flag: `+z.finishFlush);if(this._flushFlag=z.flush||R.Z_NO_FLUSH,this._finishFlushFlag=z.finishFlush===void 0?R.Z_FINISH:z.finishFlush,z.chunkSize&&(z.chunkSize<F.Z_MIN_CHUNK||z.chunkSize>F.Z_MAX_CHUNK))throw Error(`Invalid chunk size: `+z.chunkSize);if(z.windowBits&&(z.windowBits<F.Z_MIN_WINDOWBITS||z.windowBits>F.Z_MAX_WINDOWBITS))throw Error(`Invalid windowBits: `+z.windowBits);if(z.level&&(z.level<F.Z_MIN_LEVEL||z.level>F.Z_MAX_LEVEL))throw Error(`Invalid compression level: `+z.level);if(z.memLevel&&(z.memLevel<F.Z_MIN_MEMLEVEL||z.memLevel>F.Z_MAX_MEMLEVEL))throw Error(`Invalid memLevel: `+z.memLevel);if(z.strategy&&z.strategy!=F.Z_FILTERED&&z.strategy!=F.Z_HUFFMAN_ONLY&&z.strategy!=F.Z_RLE&&z.strategy!=F.Z_FIXED&&z.strategy!=F.Z_DEFAULT_STRATEGY)throw Error(`Invalid strategy: `+z.strategy);if(z.dictionary&&!I.isBuffer(z.dictionary))throw Error(`Invalid dictionary: it should be a Buffer instance`);this._handle=new R.Zlib(De);var ke=this;this._hadError=!1,this._handle.onerror=function(I,L){lt(ke),ke._hadError=!0;var R=Error(I);R.errno=L,R.code=F.codes[L],ke.emit(`error`,R)};var Ae=F.Z_DEFAULT_COMPRESSION;typeof z.level==`number`&&(Ae=z.level);var je=F.Z_DEFAULT_STRATEGY;typeof z.strategy==`number`&&(je=z.strategy),this._handle.init(z.windowBits||F.Z_DEFAULT_WINDOWBITS,Ae,z.memLevel||F.Z_DEFAULT_MEMLEVEL,je,z.dictionary),this._buffer=I.allocUnsafe(this._chunkSize),this._offset=0,this._level=Ae,this._strategy=je,this.once(`end`,this.close),Object.defineProperty(this,"_closed",{get:function(){return!Oe._handle},configurable:!0,enumerable:!0})}z.inherits(ct,L),ct.prototype.params=function(I,L,z){if(I<F.Z_MIN_LEVEL||I>F.Z_MAX_LEVEL)throw RangeError(`Invalid compression level: `+I);if(L!=F.Z_FILTERED&&L!=F.Z_HUFFMAN_ONLY&&L!=F.Z_RLE&&L!=F.Z_FIXED&&L!=F.Z_DEFAULT_STRATEGY)throw TypeError(`Invalid strategy: `+L);if(this._level!==I||this._strategy!==L){var Oe=this;this.flush(R.Z_SYNC_FLUSH,function(){De(Oe._handle,`zlib binding closed`),Oe._handle.params(I,L),Oe._hadError||(Oe._level=I,Oe._strategy=L,z&&z())})}else process.nextTick(z)},ct.prototype.reset=function(){return De(this._handle,`zlib binding closed`),this._handle.reset()},ct.prototype._flush=function(F){this._transform(I.alloc(0),``,F)},ct.prototype.flush=function(F,L){var z=this,De=this._writableState;(typeof F==`function`||F===void 0&&!L)&&(L=F,F=R.Z_FULL_FLUSH),De.ended?L&&process.nextTick(L):De.ending?L&&this.once(`end`,L):De.needDrain?L&&this.once(`drain`,function(){return z.flush(F,L)}):(this._flushFlag=F,this.write(I.alloc(0),``,L))},ct.prototype.close=function(F){lt(this,F),process.nextTick(ut,this)};function lt(F,I){I&&process.nextTick(I),F._handle&&=(F._handle.close(),null)}function ut(F){F.emit(`close`)}ct.prototype._transform=function(F,L,z){var De,Oe=this._writableState,ke=(Oe.ending||Oe.ended)&&(!F||Oe.length===F.length);if(F!==null&&!I.isBuffer(F))return z(Error(`invalid input`));if(!this._handle)return z(Error(`zlib binding closed`));ke?De=this._finishFlushFlag:(De=this._flushFlag,F.length>=Oe.length&&(this._flushFlag=this._opts.flush||R.Z_NO_FLUSH)),this._processChunk(F,De,z)},ct.prototype._processChunk=function(F,L,R){var z=F&&F.length,Ae=this._chunkSize-this._offset,je=0,Me=this,Ne=typeof R==`function`;if(!Ne){var Pe=[],Fe=0,Ie;this.on(`error`,function(F){Ie=F}),De(this._handle,`zlib binding closed`);do var Le=this._handle.writeSync(L,F,je,z,this._buffer,this._offset,Ae);while(!this._hadError&&Be(Le[0],Le[1]));if(this._hadError)throw Ie;if(Fe>=Oe)throw lt(this),RangeError(ke);var Re=I.concat(Pe,Fe);return lt(this),Re}De(this._handle,`zlib binding closed`);var ze=this._handle.write(L,F,je,z,this._buffer,this._offset,Ae);ze.buffer=F,ze.callback=Be;function Be(Oe,ke){if(this&&(this.buffer=null,this.callback=null),!Me._hadError){var Ie=Ae-ke;if(De(Ie>=0,`have should not go down`),Ie>0){var Le=Me._buffer.slice(Me._offset,Me._offset+Ie);Me._offset+=Ie,Ne?Me.push(Le):(Pe.push(Le),Fe+=Le.length)}if((ke===0||Me._offset>=Me._chunkSize)&&(Ae=Me._chunkSize,Me._offset=0,Me._buffer=I.allocUnsafe(Me._chunkSize)),ke===0){if(je+=z-Oe,z=Oe,!Ne)return!0;var Re=Me._handle.write(L,F,je,z,Me._buffer,Me._offset,Me._chunkSize);Re.callback=Be,Re.buffer=F;return}if(!Ne)return!1;R()}}},z.inherits(ze,ct),z.inherits(Be,ct),z.inherits(Ge,ct),z.inherits(rt,ct),z.inherits(it,ct),z.inherits(at,ct),z.inherits(ot,ct)})),require_chunkstream=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_stream(),z=I.exports=function(){R.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};L.inherits(z,R),z.prototype.read=function(F,I){this._reads.push({length:Math.abs(F),allowLess:F<0,func:I}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},z.prototype.write=function(F,I){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let L;return L=Buffer.isBuffer(F)?F:Buffer.from(F,I||this._encoding),this._buffers.push(L),this._buffered+=L.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},z.prototype.end=function(F,I){F&&this.write(F,I),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},z.prototype.destroySoon=z.prototype.end,z.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},z.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},z.prototype._processReadAllowingLess=function(F){this._reads.shift();let I=this._buffers[0];I.length>F.length?(this._buffered-=F.length,this._buffers[0]=I.slice(F.length),F.func.call(this,I.slice(0,F.length))):(this._buffered-=I.length,this._buffers.shift(),F.func.call(this,I))},z.prototype._processRead=function(F){this._reads.shift();let I=0,L=0,R=Buffer.alloc(F.length);for(;I<F.length;){let z=this._buffers[L++],De=Math.min(z.length,F.length-I);z.copy(R,I,0,De),I+=De,De!==z.length&&(this._buffers[--L]=z.slice(De))}L>0&&this._buffers.splice(0,L),this._buffered-=F.length,F.func.call(this,R)},z.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let F=this._reads[0];if(F.allowLess)this._processReadAllowingLess(F);else if(this._buffered>=F.length)this._processRead(F);else break}this._buffers&&!this.writable&&this._end()}catch(F){this.emit(`error`,F)}}})),require_interlace=__commonJSMin((F=>{var I=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];F.getImagePasses=function(F,L){let R=[],z=F%8,De=L%8,Oe=(F-z)/8,ke=(L-De)/8;for(let F=0;F<I.length;F++){let L=I[F],Ae=Oe*L.x.length,je=ke*L.y.length;for(let F=0;F<L.x.length&&L.x[F]<z;F++)Ae++;for(let F=0;F<L.y.length&&L.y[F]<De;F++)je++;Ae>0&&je>0&&R.push({width:Ae,height:je,index:F})}return R},F.getInterlaceIterator=function(F){return function(L,R,z){let De=L%I[z].x.length,Oe=(L-De)/I[z].x.length*8+I[z].x[De],ke=R%I[z].y.length,Ae=(R-ke)/I[z].y.length*8+I[z].y[ke];return Oe*4+Ae*F*4}}})),require_paeth_predictor=__commonJSMin(((F,I)=>{I.exports=function(F,I,L){let R=F+I-L,z=Math.abs(R-F),De=Math.abs(R-I),Oe=Math.abs(R-L);return z<=De&&z<=Oe?F:De<=Oe?I:L}})),require_filter_parse=__commonJSMin(((F,I)=>{var L=require_interlace(),R=require_paeth_predictor();function z(F,I,L){let R=F*I;return L!==8&&(R=Math.ceil(R/(8/L))),R}var De=I.exports=function(F,I){let R=F.width,De=F.height,Oe=F.interlace,ke=F.bpp,Ae=F.depth;if(this.read=I.read,this.write=I.write,this.complete=I.complete,this._imageIndex=0,this._images=[],Oe){let F=L.getImagePasses(R,De);for(let I=0;I<F.length;I++)this._images.push({byteWidth:z(F[I].width,ke,Ae),height:F[I].height,lineIndex:0})}else this._images.push({byteWidth:z(R,ke,Ae),height:De,lineIndex:0});Ae===8?this._xComparison=ke:Ae===16?this._xComparison=ke*2:this._xComparison=1};De.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},De.prototype._unFilterType1=function(F,I,L){let R=this._xComparison,z=R-1;for(let De=0;De<L;De++)I[De]=F[1+De]+(De>z?I[De-R]:0)},De.prototype._unFilterType2=function(F,I,L){let R=this._lastLine;for(let z=0;z<L;z++)I[z]=F[1+z]+(R?R[z]:0)},De.prototype._unFilterType3=function(F,I,L){let R=this._xComparison,z=R-1,De=this._lastLine;for(let Oe=0;Oe<L;Oe++){let L=F[1+Oe],ke=De?De[Oe]:0,Ae=Oe>z?I[Oe-R]:0;I[Oe]=L+Math.floor((Ae+ke)/2)}},De.prototype._unFilterType4=function(F,I,L){let z=this._xComparison,De=z-1,Oe=this._lastLine;for(let ke=0;ke<L;ke++){let L=F[1+ke],Ae=Oe?Oe[ke]:0;I[ke]=L+R(ke>De?I[ke-z]:0,Ae,ke>De&&Oe?Oe[ke-z]:0)}},De.prototype._reverseFilterLine=function(F){let I=F[0],L,R=this._images[this._imageIndex],z=R.byteWidth;if(I===0)L=F.slice(1,z+1);else switch(L=Buffer.alloc(z),I){case 1:this._unFilterType1(F,L,z);break;case 2:this._unFilterType2(F,L,z);break;case 3:this._unFilterType3(F,L,z);break;case 4:this._unFilterType4(F,L,z);break;default:throw Error(`Unrecognised filter type - `+I)}this.write(L),R.lineIndex++,R.lineIndex>=R.height?(this._lastLine=null,this._imageIndex++,R=this._images[this._imageIndex]):this._lastLine=L,R?this.read(R.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),require_filter_parse_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_chunkstream(),z=require_filter_parse(),De=I.exports=function(F){R.call(this);let I=[],L=this;this._filter=new z(F,{read:this.read.bind(this),write:function(F){I.push(F)},complete:function(){L.emit(`complete`,Buffer.concat(I))}}),this._filter.start()};L.inherits(De,R)})),require_constants=__commonJSMin(((F,I)=>{I.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),require_crc=__commonJSMin(((F,I)=>{var L=[];(function(){for(let F=0;F<256;F++){let I=F;for(let F=0;F<8;F++)I&1?I=3988292384^I>>>1:I>>>=1;L[F]=I}})();var R=I.exports=function(){this._crc=-1};R.prototype.write=function(F){for(let I=0;I<F.length;I++)this._crc=L[(this._crc^F[I])&255]^this._crc>>>8;return!0},R.prototype.crc32=function(){return this._crc^-1},R.crc32=function(F){let I=-1;for(let R=0;R<F.length;R++)I=L[(I^F[R])&255]^I>>>8;return I^-1}})),require_parser=__commonJSMin(((F,I)=>{var L=require_constants(),R=require_crc(),z=I.exports=function(F,I){this._options=F,F.checkCRC=F.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[L.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[L.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[L.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[L.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[L.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[L.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=I.read,this.error=I.error,this.metadata=I.metadata,this.gamma=I.gamma,this.transColor=I.transColor,this.palette=I.palette,this.parsed=I.parsed,this.inflateData=I.inflateData,this.finished=I.finished,this.simpleTransparency=I.simpleTransparency,this.headersFinished=I.headersFinished||function(){}};z.prototype.start=function(){this.read(L.PNG_SIGNATURE.length,this._parseSignature.bind(this))},z.prototype._parseSignature=function(F){let I=L.PNG_SIGNATURE;for(let L=0;L<I.length;L++)if(F[L]!==I[L]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},z.prototype._parseChunkBegin=function(F){let I=F.readUInt32BE(0),z=F.readUInt32BE(4),De=``;for(let I=4;I<8;I++)De+=String.fromCharCode(F[I]);let Oe=!!(F[4]&32);if(!this._hasIHDR&&z!==L.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new R,this._crc.write(Buffer.from(De)),this._chunks[z])return this._chunks[z](I);if(!Oe){this.error(Error(`Unsupported critical chunk type `+De));return}this.read(I+4,this._skipChunk.bind(this))},z.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},z.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},z.prototype._parseChunkEnd=function(F){let I=F.readInt32BE(0),L=this._crc.crc32();if(this._options.checkCRC&&L!==I){this.error(Error(`Crc error - `+I+` - `+L));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},z.prototype._handleIHDR=function(F){this.read(F,this._parseIHDR.bind(this))},z.prototype._parseIHDR=function(F){this._crc.write(F);let I=F.readUInt32BE(0),R=F.readUInt32BE(4),z=F[8],De=F[9],Oe=F[10],ke=F[11],Ae=F[12];if(z!==8&&z!==4&&z!==2&&z!==1&&z!==16){this.error(Error(`Unsupported bit depth `+z));return}if(!(De in L.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(Oe!==0){this.error(Error(`Unsupported compression method`));return}if(ke!==0){this.error(Error(`Unsupported filter method`));return}if(Ae!==0&&Ae!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=De;let je=L.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:I,height:R,depth:z,interlace:!!Ae,palette:!!(De&L.COLORTYPE_PALETTE),color:!!(De&L.COLORTYPE_COLOR),alpha:!!(De&L.COLORTYPE_ALPHA),bpp:je,colorType:De}),this._handleChunkEnd()},z.prototype._handlePLTE=function(F){this.read(F,this._parsePLTE.bind(this))},z.prototype._parsePLTE=function(F){this._crc.write(F);let I=Math.floor(F.length/3);for(let L=0;L<I;L++)this._palette.push([F[L*3],F[L*3+1],F[L*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},z.prototype._handleTRNS=function(F){this.simpleTransparency(),this.read(F,this._parseTRNS.bind(this))},z.prototype._parseTRNS=function(F){if(this._crc.write(F),this._colorType===L.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(F.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let I=0;I<F.length;I++)this._palette[I][3]=F[I];this.palette(this._palette)}this._colorType===L.COLORTYPE_GRAYSCALE&&this.transColor([F.readUInt16BE(0)]),this._colorType===L.COLORTYPE_COLOR&&this.transColor([F.readUInt16BE(0),F.readUInt16BE(2),F.readUInt16BE(4)]),this._handleChunkEnd()},z.prototype._handleGAMA=function(F){this.read(F,this._parseGAMA.bind(this))},z.prototype._parseGAMA=function(F){this._crc.write(F),this.gamma(F.readUInt32BE(0)/L.GAMMA_DIVISION),this._handleChunkEnd()},z.prototype._handleIDAT=function(F){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-F,this._parseIDAT.bind(this,F))},z.prototype._parseIDAT=function(F,I){if(this._crc.write(I),this._colorType===L.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(I);let R=F-I.length;R>0?this._handleIDAT(R):this._handleChunkEnd()},z.prototype._handleIEND=function(F){this.read(F,this._parseIEND.bind(this))},z.prototype._parseIEND=function(F){this._crc.write(F),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),require_bitmapper=__commonJSMin((F=>{var I=require_interlace(),L=[function(){},function(F,I,L,R){if(R===I.length)throw Error(`Ran out of data`);let z=I[R];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=255},function(F,I,L,R){if(R+1>=I.length)throw Error(`Ran out of data`);let z=I[R];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=I[R+1]},function(F,I,L,R){if(R+2>=I.length)throw Error(`Ran out of data`);F[L]=I[R],F[L+1]=I[R+1],F[L+2]=I[R+2],F[L+3]=255},function(F,I,L,R){if(R+3>=I.length)throw Error(`Ran out of data`);F[L]=I[R],F[L+1]=I[R+1],F[L+2]=I[R+2],F[L+3]=I[R+3]}],R=[function(){},function(F,I,L,R){let z=I[0];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=R},function(F,I,L){let R=I[0];F[L]=R,F[L+1]=R,F[L+2]=R,F[L+3]=I[1]},function(F,I,L,R){F[L]=I[0],F[L+1]=I[1],F[L+2]=I[2],F[L+3]=R},function(F,I,L){F[L]=I[0],F[L+1]=I[1],F[L+2]=I[2],F[L+3]=I[3]}];function z(F,I){let L=[],R=0;function z(){if(R===F.length)throw Error(`Ran out of data`);let z=F[R];R++;let De,Oe,ke,Ae,je,Me,Ne,Pe;switch(I){default:throw Error(`unrecognised depth`);case 16:Ne=F[R],R++,L.push((z<<8)+Ne);break;case 4:Ne=z&15,Pe=z>>4,L.push(Pe,Ne);break;case 2:je=z&3,Me=z>>2&3,Ne=z>>4&3,Pe=z>>6&3,L.push(Pe,Ne,Me,je);break;case 1:De=z&1,Oe=z>>1&1,ke=z>>2&1,Ae=z>>3&1,je=z>>4&1,Me=z>>5&1,Ne=z>>6&1,Pe=z>>7&1,L.push(Pe,Ne,Me,je,Ae,ke,Oe,De);break}}return{get:function(F){for(;L.length<F;)z();let I=L.slice(0,F);return L=L.slice(F),I},resetAfterLine:function(){L.length=0},end:function(){if(R!==F.length)throw Error(`extra data found`)}}}function De(F,I,R,z,De,Oe){let ke=F.width,Ae=F.height,je=F.index;for(let F=0;F<Ae;F++)for(let Ae=0;Ae<ke;Ae++){let ke=R(Ae,F,je);L[z](I,De,ke,Oe),Oe+=z}return Oe}function Oe(F,I,L,z,De,Oe){let ke=F.width,Ae=F.height,je=F.index;for(let F=0;F<Ae;F++){for(let Ae=0;Ae<ke;Ae++){let ke=De.get(z),Me=L(Ae,F,je);R[z](I,ke,Me,Oe)}De.resetAfterLine()}}F.dataToBitMap=function(F,L){let R=L.width,ke=L.height,Ae=L.depth,je=L.bpp,Me=L.interlace,Ne;Ae!==8&&(Ne=z(F,Ae));let Pe;Pe=Ae<=8?Buffer.alloc(R*ke*4):new Uint16Array(R*ke*4);let Fe=2**Ae-1,Ie=0,Le,Re;if(Me)Le=I.getImagePasses(R,ke),Re=I.getInterlaceIterator(R,ke);else{let F=0;Re=function(){let I=F;return F+=4,I},Le=[{width:R,height:ke}]}for(let I=0;I<Le.length;I++)Ae===8?Ie=De(Le[I],Pe,Re,je,F,Ie):Oe(Le[I],Pe,Re,je,Ne,Fe);if(Ae===8){if(Ie!==F.length)throw Error(`extra data found`)}else Ne.end();return Pe}})),require_format_normaliser=__commonJSMin(((F,I)=>{function L(F,I,L,R,z){let De=0;for(let Oe=0;Oe<R;Oe++)for(let R=0;R<L;R++){let L=z[F[De]];if(!L)throw Error(`index `+F[De]+` not in palette`);for(let F=0;F<4;F++)I[De+F]=L[F];De+=4}}function R(F,I,L,R,z){let De=0;for(let Oe=0;Oe<R;Oe++)for(let R=0;R<L;R++){let L=!1;if(z.length===1?z[0]===F[De]&&(L=!0):z[0]===F[De]&&z[1]===F[De+1]&&z[2]===F[De+2]&&(L=!0),L)for(let F=0;F<4;F++)I[De+F]=0;De+=4}}function z(F,I,L,R,z){let De=255,Oe=2**z-1,ke=0;for(let z=0;z<R;z++)for(let R=0;R<L;R++){for(let L=0;L<4;L++)I[ke+L]=Math.floor(F[ke+L]*255/Oe+.5);ke+=4}}I.exports=function(F,I,De=!1){let Oe=I.depth,ke=I.width,Ae=I.height,je=I.colorType,Me=I.transColor,Ne=I.palette,Pe=F;return je===3?L(F,Pe,ke,Ae,Ne):(Me&&R(F,Pe,ke,Ae,Me),Oe!==8&&!De&&(Oe===16&&(Pe=Buffer.alloc(ke*Ae*4)),z(F,Pe,ke,Ae,Oe))),Pe}})),require_parser_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_lib(),z=require_chunkstream(),De=require_filter_parse_async(),Oe=require_parser(),ke=require_bitmapper(),Ae=require_format_normaliser(),je=I.exports=function(F){z.call(this),this._parser=new Oe(F,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=F,this.writable=!0,this._parser.start()};L.inherits(je,z),je.prototype._handleError=function(F){this.emit(`error`,F),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},je.prototype._inflateData=function(F){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=R.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let F=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,I=Math.max(F,R.Z_MIN_CHUNK);this._inflate=R.createInflate({chunkSize:I});let L=F,z=this.emit.bind(this,`error`);this._inflate.on(`error`,function(F){L&&z(F)}),this._filter.on(`complete`,this._complete.bind(this));let De=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(F){L&&(F.length>L&&(F=F.slice(0,L)),L-=F.length,De(F))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}this._inflate.write(F)},je.prototype._handleMetaData=function(F){this._metaData=F,this._bitmapInfo=Object.create(F),this._filter=new De(this._bitmapInfo)},je.prototype._handleTransColor=function(F){this._bitmapInfo.transColor=F},je.prototype._handlePalette=function(F){this._bitmapInfo.palette=F},je.prototype._simpleTransparency=function(){this._metaData.alpha=!0},je.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},je.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},je.prototype._complete=function(F){if(this.errord)return;let I;try{let L=ke.dataToBitMap(F,this._bitmapInfo);I=Ae(L,this._bitmapInfo,this._options.skipRescale),L=null}catch(F){this._handleError(F);return}this.emit(`parsed`,I)}})),require_bitpacker=__commonJSMin(((F,I)=>{var L=require_constants();I.exports=function(F,I,R,z){let De=[L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(z.colorType)!==-1;if(z.colorType===z.inputColorType){let I=(function(){let F=new ArrayBuffer(2);return new DataView(F).setInt16(0,256,!0),new Int16Array(F)[0]!==256})();if(z.bitDepth===8||z.bitDepth===16&&I)return F}let Oe=z.bitDepth===16?new Uint16Array(F.buffer):F,ke=255,Ae=L.COLORTYPE_TO_BPP_MAP[z.inputColorType];Ae===4&&!z.inputHasAlpha&&(Ae=3);let je=L.COLORTYPE_TO_BPP_MAP[z.colorType];z.bitDepth===16&&(ke=65535,je*=2);let Me=Buffer.alloc(I*R*je),Ne=0,Pe=0,Fe=z.bgColor||{};Fe.red===void 0&&(Fe.red=ke),Fe.green===void 0&&(Fe.green=ke),Fe.blue===void 0&&(Fe.blue=ke);function Ie(){let F,I,R,Ae=ke;switch(z.inputColorType){case L.COLORTYPE_COLOR_ALPHA:Ae=Oe[Ne+3],F=Oe[Ne],I=Oe[Ne+1],R=Oe[Ne+2];break;case L.COLORTYPE_COLOR:F=Oe[Ne],I=Oe[Ne+1],R=Oe[Ne+2];break;case L.COLORTYPE_ALPHA:Ae=Oe[Ne+1],F=Oe[Ne],I=F,R=F;break;case L.COLORTYPE_GRAYSCALE:F=Oe[Ne],I=F,R=F;break;default:throw Error(`input color type:`+z.inputColorType+` is not supported at present`)}return z.inputHasAlpha&&(De||(Ae/=ke,F=Math.min(Math.max(Math.round((1-Ae)*Fe.red+Ae*F),0),ke),I=Math.min(Math.max(Math.round((1-Ae)*Fe.green+Ae*I),0),ke),R=Math.min(Math.max(Math.round((1-Ae)*Fe.blue+Ae*R),0),ke))),{red:F,green:I,blue:R,alpha:Ae}}for(let F=0;F<R;F++)for(let F=0;F<I;F++){let F=Ie(Oe,Ne);switch(z.colorType){case L.COLORTYPE_COLOR_ALPHA:case L.COLORTYPE_COLOR:z.bitDepth===8?(Me[Pe]=F.red,Me[Pe+1]=F.green,Me[Pe+2]=F.blue,De&&(Me[Pe+3]=F.alpha)):(Me.writeUInt16BE(F.red,Pe),Me.writeUInt16BE(F.green,Pe+2),Me.writeUInt16BE(F.blue,Pe+4),De&&Me.writeUInt16BE(F.alpha,Pe+6));break;case L.COLORTYPE_ALPHA:case L.COLORTYPE_GRAYSCALE:{let I=(F.red+F.green+F.blue)/3;z.bitDepth===8?(Me[Pe]=I,De&&(Me[Pe+1]=F.alpha)):(Me.writeUInt16BE(I,Pe),De&&Me.writeUInt16BE(F.alpha,Pe+2));break}default:throw Error(`unrecognised color Type `+z.colorType)}Ne+=Ae,Pe+=je}return Me}})),require_filter_pack=__commonJSMin(((F,I)=>{var L=require_paeth_predictor();function R(F,I,L,R,z){for(let De=0;De<L;De++)R[z+De]=F[I+De]}function z(F,I,L){let R=0,z=I+L;for(let L=I;L<z;L++)R+=Math.abs(F[L]);return R}function De(F,I,L,R,z,De){for(let Oe=0;Oe<L;Oe++){let L=Oe>=De?F[I+Oe-De]:0,ke=F[I+Oe]-L;R[z+Oe]=ke}}function Oe(F,I,L,R){let z=0;for(let De=0;De<L;De++){let L=De>=R?F[I+De-R]:0,Oe=F[I+De]-L;z+=Math.abs(Oe)}return z}function ke(F,I,L,R,z){for(let De=0;De<L;De++){let Oe=I>0?F[I+De-L]:0,ke=F[I+De]-Oe;R[z+De]=ke}}function Ae(F,I,L){let R=0,z=I+L;for(let De=I;De<z;De++){let z=I>0?F[De-L]:0,Oe=F[De]-z;R+=Math.abs(Oe)}return R}function je(F,I,L,R,z,De){for(let Oe=0;Oe<L;Oe++){let ke=Oe>=De?F[I+Oe-De]:0,Ae=I>0?F[I+Oe-L]:0,je=F[I+Oe]-(ke+Ae>>1);R[z+Oe]=je}}function Me(F,I,L,R){let z=0;for(let De=0;De<L;De++){let Oe=De>=R?F[I+De-R]:0,ke=I>0?F[I+De-L]:0,Ae=F[I+De]-(Oe+ke>>1);z+=Math.abs(Ae)}return z}function Ne(F,I,R,z,De,Oe){for(let ke=0;ke<R;ke++){let Ae=ke>=Oe?F[I+ke-Oe]:0,je=I>0?F[I+ke-R]:0,Me=I>0&&ke>=Oe?F[I+ke-(R+Oe)]:0,Ne=F[I+ke]-L(Ae,je,Me);z[De+ke]=Ne}}function Pe(F,I,R,z){let De=0;for(let Oe=0;Oe<R;Oe++){let ke=Oe>=z?F[I+Oe-z]:0,Ae=I>0?F[I+Oe-R]:0,je=I>0&&Oe>=z?F[I+Oe-(R+z)]:0,Me=F[I+Oe]-L(ke,Ae,je);De+=Math.abs(Me)}return De}var Fe={0:R,1:De,2:ke,3:je,4:Ne},Ie={0:z,1:Oe,2:Ae,3:Me,4:Pe};I.exports=function(F,I,L,R,z){let De;if(!(`filterType`in R)||R.filterType===-1)De=[0,1,2,3,4];else if(typeof R.filterType==`number`)De=[R.filterType];else throw Error(`unrecognised filter types`);R.bitDepth===16&&(z*=2);let Oe=I*z,ke=0,Ae=0,je=Buffer.alloc((Oe+1)*L),Me=De[0];for(let I=0;I<L;I++){if(De.length>1){let I=1/0;for(let L=0;L<De.length;L++){let R=Ie[De[L]](F,Ae,Oe,z);R<I&&(Me=De[L],I=R)}}je[ke]=Me,ke++,Fe[Me](F,Ae,Oe,je,ke,z),ke+=Oe,Ae+=Oe}return je}})),require_packer=__commonJSMin(((F,I)=>{var L=require_constants(),R=require_crc(),z=require_bitpacker(),De=require_filter_pack(),Oe=require_lib(),ke=I.exports=function(F){if(this._options=F,F.deflateChunkSize=F.deflateChunkSize||32*1024,F.deflateLevel=F.deflateLevel==null?9:F.deflateLevel,F.deflateStrategy=F.deflateStrategy==null?3:F.deflateStrategy,F.inputHasAlpha=F.inputHasAlpha==null||F.inputHasAlpha,F.deflateFactory=F.deflateFactory||Oe.createDeflate,F.bitDepth=F.bitDepth||8,F.colorType=typeof F.colorType==`number`?F.colorType:L.COLORTYPE_COLOR_ALPHA,F.inputColorType=typeof F.inputColorType==`number`?F.inputColorType:L.COLORTYPE_COLOR_ALPHA,[L.COLORTYPE_GRAYSCALE,L.COLORTYPE_COLOR,L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(F.colorType)===-1)throw Error(`option color type:`+F.colorType+` is not supported at present`);if([L.COLORTYPE_GRAYSCALE,L.COLORTYPE_COLOR,L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(F.inputColorType)===-1)throw Error(`option input color type:`+F.inputColorType+` is not supported at present`);if(F.bitDepth!==8&&F.bitDepth!==16)throw Error(`option bit depth:`+F.bitDepth+` is not supported at present`)};ke.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},ke.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},ke.prototype.filterData=function(F,I,R){let Oe=z(F,I,R,this._options),ke=L.COLORTYPE_TO_BPP_MAP[this._options.colorType];return De(Oe,I,R,this._options,ke)},ke.prototype._packChunk=function(F,I){let L=I?I.length:0,z=Buffer.alloc(L+12);return z.writeUInt32BE(L,0),z.writeUInt32BE(F,4),I&&I.copy(z,8),z.writeInt32BE(R.crc32(z.slice(4,z.length-4)),z.length-4),z},ke.prototype.packGAMA=function(F){let I=Buffer.alloc(4);return I.writeUInt32BE(Math.floor(F*L.GAMMA_DIVISION),0),this._packChunk(L.TYPE_gAMA,I)},ke.prototype.packIHDR=function(F,I){let R=Buffer.alloc(13);return R.writeUInt32BE(F,0),R.writeUInt32BE(I,4),R[8]=this._options.bitDepth,R[9]=this._options.colorType,R[10]=0,R[11]=0,R[12]=0,this._packChunk(L.TYPE_IHDR,R)},ke.prototype.packIDAT=function(F){return this._packChunk(L.TYPE_IDAT,F)},ke.prototype.packIEND=function(){return this._packChunk(L.TYPE_IEND,null)}})),require_packer_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_stream(),z=require_constants(),De=require_packer(),Oe=I.exports=function(F){R.call(this);let I=F||{};this._packer=new De(I),this._deflate=this._packer.createDeflate(),this.readable=!0};L.inherits(Oe,R),Oe.prototype.pack=function(F,I,L,R){this.emit(`data`,Buffer.from(z.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(I,L)),R&&this.emit(`data`,this._packer.packGAMA(R));let De=this._packer.filterData(F,I,L);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(F){this.emit(`data`,this._packer.packIDAT(F))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(De)}})),require_sync_inflate=__commonJSMin(((F,I)=>{var L=require_assert().ok,R=require_lib(),z=require_util$4(),De=require_buffer().kMaxLength;function Oe(F){if(!(this instanceof Oe))return new Oe(F);F&&F.chunkSize<R.Z_MIN_CHUNK&&(F.chunkSize=R.Z_MIN_CHUNK),R.Inflate.call(this,F),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,F&&F.maxLength!=null&&(this._maxLength=F.maxLength)}function ke(F){return new Oe(F)}function Ae(F,I){I&&process.nextTick(I),F._handle&&=(F._handle.close(),null)}Oe.prototype._processChunk=function(F,I,z){if(typeof z==`function`)return R.Inflate._processChunk.call(this,F,I,z);let Oe=this,ke=F&&F.length,je=this._chunkSize-this._offset,Me=this._maxLength,Ne=0,Pe=[],Fe=0,Ie;this.on(`error`,function(F){Ie=F});function Le(F,I){if(Oe._hadError)return;let R=je-I;if(L(R>=0,`have should not go down`),R>0){let F=Oe._buffer.slice(Oe._offset,Oe._offset+R);if(Oe._offset+=R,F.length>Me&&(F=F.slice(0,Me)),Pe.push(F),Fe+=F.length,Me-=F.length,Me===0)return!1}return(I===0||Oe._offset>=Oe._chunkSize)&&(je=Oe._chunkSize,Oe._offset=0,Oe._buffer=Buffer.allocUnsafe(Oe._chunkSize)),I===0?(Ne+=ke-F,ke=F,!0):!1}L(this._handle,`zlib binding closed`);let Re;do Re=this._handle.writeSync(I,F,Ne,ke,this._buffer,this._offset,je),Re||=this._writeState;while(!this._hadError&&Le(Re[0],Re[1]));if(this._hadError)throw Ie;if(Fe>=De)throw Ae(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+De.toString(16)+` bytes`);let ze=Buffer.concat(Pe,Fe);return Ae(this),ze},z.inherits(Oe,R.Inflate);function je(F,I){if(typeof I==`string`&&(I=Buffer.from(I)),!(I instanceof Buffer))throw TypeError(`Not a string or buffer`);let L=F._finishFlushFlag;return L??=R.Z_FINISH,F._processChunk(I,L)}function Me(F,I){return je(new Oe(I),F)}I.exports=F=Me,F.Inflate=Oe,F.createInflate=ke,F.inflateSync=Me})),require_sync_reader=__commonJSMin(((F,I)=>{var L=I.exports=function(F){this._buffer=F,this._reads=[]};L.prototype.read=function(F,I){this._reads.push({length:Math.abs(F),allowLess:F<0,func:I})},L.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let F=this._reads[0];if(this._buffer.length&&(this._buffer.length>=F.length||F.allowLess)){this._reads.shift();let I=this._buffer;this._buffer=I.slice(F.length),F.func.call(this,I.slice(0,F.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),require_filter_parse_sync=__commonJSMin((F=>{var I=require_sync_reader(),L=require_filter_parse();F.process=function(F,R){let z=[],De=new I(F);return new L(R,{read:De.read.bind(De),write:function(F){z.push(F)},complete:function(){}}).start(),De.process(),Buffer.concat(z)}})),require_parser_sync=__commonJSMin(((F,I)=>{var L=!0,R=require_lib(),z=require_sync_inflate();R.deflateSync||(L=!1);var De=require_sync_reader(),Oe=require_filter_parse_sync(),ke=require_parser(),Ae=require_bitmapper(),je=require_format_normaliser();I.exports=function(F,I){if(!L)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let Me;function Ne(F){Me=F}let Pe;function Fe(F){Pe=F}function Ie(F){Pe.transColor=F}function Le(F){Pe.palette=F}function Re(){Pe.alpha=!0}let ze;function Be(F){ze=F}let Ge=[];function rt(F){Ge.push(F)}let it=new De(F);if(new ke(I,{read:it.read.bind(it),error:Ne,metadata:Fe,gamma:Be,palette:Le,transColor:Ie,inflateData:rt,simpleTransparency:Re}).start(),it.process(),Me)throw Me;let at=Buffer.concat(Ge);Ge.length=0;let ot;if(Pe.interlace)ot=R.inflateSync(at);else{let F=((Pe.width*Pe.bpp*Pe.depth+7>>3)+1)*Pe.height;ot=z(at,{chunkSize:F,maxLength:F})}if(at=null,!ot||!ot.length)throw Error(`bad png - invalid inflate data response`);let st=Oe.process(ot,Pe);at=null;let ct=Ae.dataToBitMap(st,Pe);st=null;let lt=je(ct,Pe,I.skipRescale);return Pe.data=lt,Pe.gamma=ze||0,Pe}})),require_packer_sync=__commonJSMin(((F,I)=>{var L=!0,R=require_lib();R.deflateSync||(L=!1);var z=require_constants(),De=require_packer();I.exports=function(F,I){if(!L)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let Oe=new De(I||{}),ke=[];ke.push(Buffer.from(z.PNG_SIGNATURE)),ke.push(Oe.packIHDR(F.width,F.height)),F.gamma&&ke.push(Oe.packGAMA(F.gamma));let Ae=Oe.filterData(F.data,F.width,F.height),je=R.deflateSync(Ae,Oe.getDeflateOptions());if(Ae=null,!je||!je.length)throw Error(`bad png - invalid compressed data response`);return ke.push(Oe.packIDAT(je)),ke.push(Oe.packIEND()),Buffer.concat(ke)}})),require_png_sync=__commonJSMin((F=>{var I=require_parser_sync(),L=require_packer_sync();F.read=function(F,L){return I(F,L||{})},F.write=function(F,I){return L(F,I)}})),require_png=__commonJSMin((F=>{var I=require_util$4(),L=require_stream(),R=require_parser_async(),z=require_packer_async(),De=require_png_sync(),Oe=F.PNG=function(F){L.call(this),F||={},this.width=F.width|0,this.height=F.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,F.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new R(F),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(F){this.data=F,this.emit(`parsed`,F)}.bind(this)),this._packer=new z(F),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};I.inherits(Oe,L),Oe.sync=De,Oe.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},Oe.prototype.parse=function(F,I){if(I){let F,L;F=function(F){this.removeListener(`error`,L),this.data=F,I(null,this)}.bind(this),L=function(L){this.removeListener(`parsed`,F),I(L,null)}.bind(this),this.once(`parsed`,F),this.once(`error`,L)}return this.end(F),this},Oe.prototype.write=function(F){return this._parser.write(F),!0},Oe.prototype.end=function(F){this._parser.end(F)},Oe.prototype._metadata=function(F){this.width=F.width,this.height=F.height,this.emit(`metadata`,F)},Oe.prototype._gamma=function(F){this.gamma=F},Oe.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},Oe.bitblt=function(F,I,L,R,z,De,Oe,ke){if(L|=0,R|=0,z|=0,De|=0,Oe|=0,ke|=0,L>F.width||R>F.height||L+z>F.width||R+De>F.height)throw Error(`bitblt reading outside image`);if(Oe>I.width||ke>I.height||Oe+z>I.width||ke+De>I.height)throw Error(`bitblt writing outside image`);for(let Ae=0;Ae<De;Ae++)F.data.copy(I.data,(ke+Ae)*I.width+Oe<<2,(R+Ae)*F.width+L<<2,(R+Ae)*F.width+L+z<<2)},Oe.prototype.bitblt=function(F,I,L,R,z,De,ke){return Oe.bitblt(this,F,I,L,R,z,De,ke),this},Oe.adjustGamma=function(F){if(F.gamma){for(let I=0;I<F.height;I++)for(let L=0;L<F.width;L++){let R=F.width*I+L<<2;for(let I=0;I<3;I++){let L=F.data[R+I]/255;L**=1/2.2/F.gamma,F.data[R+I]=Math.round(L*255)}}F.gamma=0}},Oe.prototype.adjustGamma=function(){Oe.adjustGamma(this)}})),import_png=require_png(),MIME_TYPE=`image/png`,PNG_FILTER_AUTO=-1,PNG_FILTER_NONE=0,PNG_FILTER_SUB=1,PNG_FILTER_UP=2,PNG_FILTER_AVERAGE=3,PNG_FILTER_PATH=4,es_default=(()=>({mime:{[MIME_TYPE]:[`png`]},constants:{MIME_PNG:MIME_TYPE,PNG_FILTER_AUTO,PNG_FILTER_NONE,PNG_FILTER_SUB,PNG_FILTER_UP,PNG_FILTER_AVERAGE,PNG_FILTER_PATH},hasAlpha:{[MIME_TYPE]:!0},decoders:{[MIME_TYPE]:import_png.PNG.sync.read},encoders:{[MIME_TYPE](F){let I=new import_png.PNG({width:F.bitmap.width,height:F.bitmap.height});return I.data=F.bitmap.data,import_png.PNG.sync.write(I,{deflateLevel:F._deflateLevel,deflateStrategy:F._deflateStrategy,filterType:F._filterType,colorType:typeof F._colorType==`number`?F._colorType:F._rgba?6:2,inputHasAlpha:F._rgba})}},class:{_deflateLevel:9,_deflateStrategy:3,_filterType:PNG_FILTER_AUTO,_colorType:null,deflateLevel(F,I){return typeof F==`number`?F<0||F>9?throwError.call(this,`l must be a number 0 - 9`,I):(this._deflateLevel=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`l must be a number`,I)},deflateStrategy(F,I){return typeof F==`number`?F<0||F>3?throwError.call(this,`s must be a number 0 - 3`,I):(this._deflateStrategy=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`s must be a number`,I)},filterType(F,I){return typeof F==`number`?F<-1||F>4?throwError.call(this,`n must be -1 (auto) or a number 0 - 4`,I):(this._filterType=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`n must be a number`,I)},colorType(F,I){return typeof F==`number`?F!==0&&F!==2&&F!==4&&F!==6?throwError.call(this,`s must be a number 0, 2, 4, 6.`,I):(this._colorType=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`s must be a number`,I)}}})),Jimp=configure$1({types:[es_default]}),colorizeCowTemplate=(()=>{let F={},I=memoize(F=>{let[,I,L,R]=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(F)??[``,`0`,`0`,`0`];return{r:parseInt(I,16),g:parseInt(L,16),b:parseInt(R,16)}});return async(L,R)=>{if(R===cowColors.RAINBOW)return animals.cow.rainbow;let z=`${R}_${L}`;if(F[z])return F[z];try{let De=import_buffer.Buffer.from(L.split(`,`)[1]??``,`base64`),Oe=await Jimp.read(De);return Oe.scan(0,0,Oe.bitmap.width,Oe.bitmap.height,function(F,L){let{r:z,g:De,b:ke}=Jimp.intToRGBA(Oe.getPixelColor(F,L));if(z===102&&De===102&&ke===102){let z=I(COW_COLORS_HEX_MAP[R]),De=Jimp.rgbaToInt(z.r,z.g,z.b,255);Oe.setPixelColor(De,F,L)}}),F[z]=await Oe.getBase64Async(Jimp.MIME_PNG),F[z]}catch(F){return console.error(F),pixel_default}}})(),getCowImage=async F=>{let I=convertStringToInteger$1(F.id),{variations:L}=animals.cow,R=L[I%L.length];return await colorizeCowTemplate(R,F.color)},isInViewport=F=>{let{top:I,left:L,bottom:R,right:z}=F.getBoundingClientRect();return I>=0&&L>=0&&R<=(window.innerHeight||document.documentElement.clientHeight)&&z<=(window.innerWidth||document.documentElement.clientWidth)},dotSize=`1.25em`,Bloodline=({colorsInBloodline:F})=>(0,import_jsx_runtime$2.jsx)(Ul$1,{className:`Bloodline`,sx:{display:`flex`,gap:`0.5em`,margin:`1em 0`},children:Object.keys(F).sort().map(F=>(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:COW_COLOR_NAMES[F],children:(0,import_jsx_runtime$2.jsx)(Li$1,{className:F.toLowerCase(),sx:{background:colors.cow[F.toLowerCase()],borderRadius:`50%`,border:`solid 1px #000`,height:dotSize,width:dotSize,marginBottom:0,marginTop:0}})},F))}),Bloodline_default=(0,import_react$10.memo)(Bloodline),isHeartFull=(F,I)=>F+.5<I,getCowMapById=memoize(F=>F.reduce((F,I)=>(F[I.id]=I,F),{})),Subheader=({canCowBeTradedFor:F,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,cowValue:De,handleCowAutomaticHugChange:Oe,handleCowBreedChange:ke,huggingMachinesRemain:Ae,playerId:je,isCowPurchased:Me})=>{let Ne=I.happiness*10,Pe=isCowInBreedingPen(I,L),Fe=L.cowId1===null||L.cowId2===null,Ie=R===I.id,Le=L.cowId1??L.cowId2,Re=getCowMapById(z)[Le??``],ze=I.gender!==Re?.gender,Be=Fe&&ze&&!Ie,Ge=!Be&&!Pe,rt=Me&&je!==I.originalOwnerId&&je===I.ownerId;return(0,import_jsx_runtime$2.jsxs)(`div`,{className:`Subheader`,children:[(0,import_jsx_runtime$2.jsx)(Bloodline_default,{colorsInBloodline:I.colorsInBloodline}),(Me||R)&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[I.daysOld,` `,I.daysOld===1?`day`:`days`,` old`]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Color: `,COW_COLOR_NAMES[I.color]]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[I.originalOwnerId===``?`Price`:`Value`,`:`,` `,moneyString(De)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Weight: `,getCowWeight(I),` lbs.`]}),(Me||F)&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Times traded: `,integerString(I.timesTraded)]}),rt&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Original owner: `,(0,import_jsx_runtime$2.jsx)(`strong`,{children:getPlayerName(I.originalOwnerId)})]}),Me&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`ol`,{className:`hearts`,children:nullArray(10).map((F,L)=>(0,import_jsx_runtime$2.jsx)(`li`,{children:isHeartFull(L,Ne)?(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:`heart is-full`,fontSize:`inherit`,htmlColor:colors.heart}):(0,import_jsx_runtime$2.jsx)(HeartOutlineIcon,{className:`heart`,fontSize:`inherit`})},`${I.id}_${L}`))}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Check this box to put `,I.name,` into a `,huggingMachine.name,` `,`and automatically hug them at the start of every day. Requires a Hugging Machine in your inventory.`]}),children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Checkbox,{color:`primary`,checked:I.isUsingHuggingMachine,onChange:F=>Oe&&Oe(F,I)}),disabled:!I.isUsingHuggingMachine&&!Ae,label:`Hug automatically`})}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,disableFocusListener:Ge,disableHoverListener:Ge,disableTouchListener:Ge,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:Pe?`Uncheck this box to return ${I.name} to the regular pen.`:`Check this box to move ${I.name} to the breeding pen to mate with a ${I.gender===genders.MALE?`female`:`male`} cow.`}),children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Checkbox,{color:`primary`,checked:Pe,inputProps:{"aria-label":`move cow to breeding pen`},onChange:F=>ke&&ke(F,I)}),disabled:!Pe&&!Be,label:`Breed`})})]})]})},genderIcons={[genders.FEMALE]:FemaleIcon,[genders.MALE]:MaleIcon},CowCard=({allowCustomPeerCowNames:F,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,debounced:De,handleCowAutomaticHugChange:Oe,handleCowBreedChange:ke,handleCowHugClick:Ae,handleCowOfferClick:je,handleCowPurchaseClick:Me,handleCowWithdrawClick:Ne,handleCowSellClick:Pe,handleCowTradeClick:Fe,playerId:Ie,inventory:Le,isCowOfferedForTradeByPeer:Re,isSelected:ze,isOnline:Be,money:Ge,purchasedCowPen:rt,huggingMachinesRemain:it=areHuggingMachinesInInventory(Le)})=>{let at=getCowDisplayName(I,Ie,F),[ot,st]=(0,import_react$10.useState)(at),[ct,lt]=(0,import_react$10.useState)(pixel_default),ut=(0,import_react$10.useRef)(null),dt=(0,import_react$10.useRef)(null),ft=!!z.find(({id:F})=>F===I.id)&&!Re,pt=getCowValue(I,I.originalOwnerId!==``),mt=Be&&!isCowInBreedingPen(I,L),ht=!!(Re&&R.length>0),gt=useIsMounted();(0,import_react$10.useEffect)(()=>{(async()=>{let F=await getCowImage(I);gt()!==!1&&lt(F)})(),st(getCowDisplayName(I,Ie,F))},[I,Ie,F,gt]),(0,import_react$10.useEffect)(()=>{if(ze){let{current:F}=dt,{current:I}=ut;if(!F||!I)return;F.scrollIntoView&&!isInViewport(I)&&F.scrollIntoView({behavior:`smooth`})}},[ze]);let vt=genderIcons[I.gender];return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(A$1,{className:`CowCard-scroll-anchor`,href:`#cow-${I.id}`,ref:dt,sx:{display:`block`,height:0,position:`relative`,top:`-0.75em`,visibility:`hidden`},children:`\xA0`}),(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`CowCard`,{"is-selected":ze,"is-purchased":ft}),raised:ze,ref:ut,sx:{"& .hearts":{marginTop:`0.5em`,"& li":{display:`inline`,margin:`0 0.25em 0 0`}},...ft?{"& .MuiCardHeader-root":{paddingTop:0},"& .MuiCardHeader-title":{alignItems:`baseline`,display:`flex`},"& .Bloodline":{margin:`0 0 1em`}}:{}},children:[ze&&(0,import_jsx_runtime$2.jsxs)(`span`,{className:`visually_hidden`,children:[ot,` is currently selected`]}),(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:ct,alt:`Cow`}),title:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[ft?(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,disabled:Ie!==I.originalOwnerId,onChange:F=>{st(F.target.value),De?.handleCowNameInputChange?.(F.target.value,I)},placeholder:`Name`,value:ot}):ot,` `,(0,import_jsx_runtime$2.jsx)(vt,{fontSize:`inherit`})]}),subheader:(0,import_jsx_runtime$2.jsx)(Subheader,{canCowBeTradedFor:ht,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,cowValue:pt,handleCowBreedChange:ke,handleCowAutomaticHugChange:Oe,huggingMachinesRemain:it,playerId:Ie,isCowPurchased:ft})}),(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[!ft&&!Re&&(0,import_jsx_runtime$2.jsx)(Button,{className:`purchase`,color:`primary`,disabled:pt>Ge||z.length>=(PURCHASEABLE_COW_PENS.get(rt)?.cows??0),onClick:()=>Me?.(I),variant:`contained`,children:`Buy`}),ht&&(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:`The game will be saved when the trade is completed.`,children:(0,import_jsx_runtime$2.jsx)(Button,{className:`purchase`,color:`primary`,onClick:()=>Fe?.(I),variant:`contained`,children:`Trade`})}),ft&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(Button,{className:`hug`,color:`primary`,onClick:()=>Ae?.(I),variant:`contained`,children:`Hug`}),mt&&(R===I.id?(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:WITHDRAW_COW_FROM_TRADE(``,at),children:(0,import_jsx_runtime$2.jsx)(Button,{className:`offer`,color:`primary`,onClick:()=>{Ne?.(I)},variant:`contained`,children:`Withdraw`})}):(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:OFFER_COW_FOR_TRADE(``,at)}),children:(0,import_jsx_runtime$2.jsx)(Button,{className:`offer`,color:`primary`,onClick:()=>{je?.(I)},variant:`contained`,children:`Offer`})})),(0,import_jsx_runtime$2.jsx)(Button,{className:`sell`,color:`error`,onClick:()=>Pe?.(I),variant:`contained`,children:`Sell`})]})]})]})]})};function Consumer$27(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(CowCard,{...I,...L,...F})})}var TabPanel$3=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`cow-context-tabpanel-${R}`,"aria-labelledby":`cow-context-tab-${R}`,...z,children:L===R?I:null})},a11yProps$3=F=>({id:`cow-context-tab-${F}`,"aria-controls":`cow-context-tabpanel-${F}`}),{AGE,COLOR,GENDER,HAPPINESS,VALUE,WEIGHT}={AGE:`AGE`,COLOR:`COLOR`,GENDER:`GENDER`,HAPPINESS:`HAPPINESS`,VALUE:`VALUE`,WEIGHT:`WEIGHT`},sortCows=(F,I,L)=>{let R=F=>F;I===VALUE?R=getCowSellValue:I===WEIGHT?R=getCowWeight:I===AGE?R=({daysOld:F})=>F:I===COLOR?R=({color:F})=>F:I===GENDER?R=({gender:F})=>F:I===HAPPINESS&&(R=({happiness:F})=>F);let z=(0,import_lodash_sortby.default)(F,R);return L?z.reverse():z},numberOfCowsBreeding=({cowId1:F,cowId2:I})=>F?I?2:1:0,CowPenContextMenu=({cowBreedingPen:F,cowForSale:I,cowInventory:L,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSelect:Ae,handleCowSellClick:je,handleCowWithdrawClick:Me,purchasedCowPen:Ne,selectedCowId:Pe})=>{let[Fe,Ie]=(0,import_react$10.useState)(AGE),[Le,Re]=(0,import_react$10.useState)(!1),[ze,Be]=(0,import_react$10.useState)(0),[Ge,rt]=(0,import_react$10.useState)(``);(0,import_react$10.useEffect)(()=>{rt(``)},[ze]);let it=Ge?L.filter(F=>F.name.toLowerCase().includes(Ge.toLowerCase())):L,at=Ge?inventory$1.filter(F=>F.name.toLowerCase().includes(Ge.toLowerCase())):inventory$1;return(0,import_jsx_runtime$2.jsxs)(Div,{className:`CowPenContextMenu`,sx:{display:`flex`,flexFlow:`column`,"& h3":{textAlign:`center`},"& .MuiTab-root":{minWidth:`unset`},"& .sort-wrapper":{alignItems:`center`,display:`flex`,justifyContent:`flex-end`,"& .MuiFab-root":{margin:`0 1em`},"& .sort-select":{flexGrow:1}}},children:[(0,import_jsx_runtime$2.jsx)(`h3`,{children:`For sale`}),(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:I,isSelected:!1,isCowOfferedForTradeByPeer:!1}),(0,import_jsx_runtime$2.jsxs)(Tabs,{value:ze,onChange:(F,I)=>Be(I),"aria-label":`Cow tabs`,sx:{mt:`1rem`},children:[(0,import_jsx_runtime$2.jsx)(Tab,{label:`Cows`,...a11yProps$3(0)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Breeding Pen`,...a11yProps$3(1)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Supplies`,...a11yProps$3(2)})]}),(0,import_jsx_runtime$2.jsxs)(TabPanel$3,{value:ze,index:0,children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Capacity: `,L.length,` /`,` `,PURCHASEABLE_COW_PENS.get(Ne)?.cows]}),L.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search cows by name...`,onSearch:rt}),it.length>0&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[it.length>1&&(0,import_jsx_runtime$2.jsxs)(`div`,{className:`sort-wrapper`,children:[(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Toggle sorting order`,onClick:()=>Re(!Le),color:`primary`,children:Le?(0,import_jsx_runtime$2.jsx)(ArrowUpwardIcon,{}):(0,import_jsx_runtime$2.jsx)(ArrowDownwardIcon,{})}),(0,import_jsx_runtime$2.jsxs)(Select,{variant:`standard`,className:`sort-select`,displayEmpty:!0,value:Fe,onChange:({target:{value:F}})=>Ie(String(F)),children:[(0,import_jsx_runtime$2.jsx)(MenuItem,{value:VALUE,children:`Sort by Value`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:AGE,children:`Sort by Age`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:HAPPINESS,children:`Sort by Happiness`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:WEIGHT,children:`Sort by Weight`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:GENDER,children:`Sort by Gender`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:COLOR,children:`Sort by Color`})]})]}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list purchased-cows`,children:sortCows(it,Fe,Le).map(I=>isCowInBreedingPen(I,F)?null:(0,import_jsx_runtime$2.jsx)(`li`,{onFocus:()=>Ae(I),onClick:()=>Ae(I),children:(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:I,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSellClick:je,handleCowWithdrawClick:Me,isCowPurchased:!0,isCowOfferedForTradeByPeer:!1,isSelected:I.id===Pe})},I.id))})]})]}),(0,import_jsx_runtime$2.jsx)(TabPanel$3,{value:ze,index:1,children:(()=>{let I=nullArray(numberOfCowsBreeding(F)).map((I,R)=>{let z=F[`cowId${R+1}`],De=typeof z==`string`?findCowById(L,z):null;return!De||!De.name.toLowerCase().includes(Ge.toLowerCase())?null:De}).filter(Boolean);return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Capacity: `,numberOfCowsBreeding(F),` / 2`]}),L.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search cows by name...`,onSearch:rt}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list purchased-cows breeding-cows`,children:I.map(F=>{if(!F)throw TypeError(`cow is undefined`);return(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:F,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSellClick:je,handleCowWithdrawClick:Me,isCowPurchased:!0,isCowOfferedForTradeByPeer:!1,isSelected:F.id===Pe})},F.id)})})]})})()}),(0,import_jsx_runtime$2.jsxs)(TabPanel$3,{value:ze,index:2,children:[inventory$1.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search supplies...`,onSearch:rt}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:at.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$29,{item:F,isPurchaseView:!0,showQuantity:!0})},F.id))})]})]})};function Consumer$26(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(CowPenContextMenu,{...F,...I})})}var FarmhandShuffleContextMenu=({farmhandShuffle:F,playerId:I,handleSettleFarmhandShuffleMatch:L})=>{let[R,z]=(0,import_react$10.useState)(!1),{isMatchInProgress:De,wager:Oe,totalWins:ke,totalLosses:Ae,currentWinStreak:je}=F;return(0,import_jsx_runtime$2.jsxs)(Div,{className:`FarmhandShuffleContextMenu`,children:[(0,import_jsx_runtime$2.jsx)(`h2`,{children:`Farmhand Shuffle`}),(0,import_jsx_runtime$2.jsxs)(Paper,{sx:{padding:`1em`,display:`flex`,flexDirection:`column`,gap:`0.75em`},children:[De&&(0,import_jsx_runtime$2.jsx)(P$1,{sx:{fontWeight:`bold`,textAlign:`center`},children:Oe>0?`Wager: ${moneyString(Oe)} · Prize: ${moneyString(Oe*2)}`:`No wager placed · playing for fun`}),(0,import_jsx_runtime$2.jsxs)(Div,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Wins: `,ke]}),(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Losses: `,Ae]})]}),(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Current win streak: `,je]})]}),De&&(0,import_jsx_runtime$2.jsx)(Button,{color:`error`,variant:`contained`,onClick:()=>z(!0),sx:{marginTop:`1em`,width:`100%`},children:`Forfeit Match`}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:`Farmhand`,open:R,onClose:()=>z(!1),maxWidth:`xs`,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{children:`Forfeit match?`}),(0,import_jsx_runtime$2.jsxs)(DialogContent,{dividers:!0,children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Are you sure that you want to forfeit this match?`,` `,Oe>0?`You'll lose your ${moneyString(Oe)} wager and it will count as a loss.`:`It will count as a loss.`]}),(0,import_jsx_runtime$2.jsxs)(DialogActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{autoFocus:!0,color:`primary`,onClick:()=>z(!1),children:`Cancel`}),(0,import_jsx_runtime$2.jsx)(Button,{color:`error`,onClick:()=>{L(FARMHAND_SHUFFLE_BOT_PLAYER_ID,I),z(!1)},children:`Do it`})]})]})]})]})};function Consumer$25(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(FarmhandShuffleContextMenu,{...F,...I})})}var PlayerInventory=(0,import_react$10.memo)(({playerInventory:F})=>(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:F,isSellView:!0}),(F,I)=>F.playerInventory===I.playerInventory),ContextPane=({playerInventory:F,stageFocus:I,inventory:L,inventoryLimit:R})=>{let z=!doesInventorySpaceRemain({inventory:L,inventoryLimit:R});return(0,import_jsx_runtime$2.jsx)(Div,{className:`ContextPane`,sx:{...centerTabsSx,margin:0,"& h2":{margin:`0.5em 0 1em`,textAlign:`center`},"& .inventory-info":{fontSize:`1em`},"& .inventory-title":{marginBottom:`0.5em`}},children:I===stageFocusType.COW_PEN?(0,import_jsx_runtime$2.jsx)(Consumer$26,{}):I===stageFocusType.FARMHAND_SHUFFLE?(0,import_jsx_runtime$2.jsx)(Consumer$25,{}):(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`h2`,{className:`inventory-title`,children:`Inventory`}),R>-1&&(0,import_jsx_runtime$2.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":z}),sx:{color:z?colors.error:void 0,textAlign:`center`},children:[`Capacity: `,integerString(inventorySpaceConsumed(L)),` /`,` `,integerString(R)]}),(0,import_jsx_runtime$2.jsx)(PlayerInventory,{playerInventory:F})]})})};function Consumer$24(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(ContextPane,{...F,...I})})}function getFormGroupUtilityClass(F){return generateUtilityClass(`MuiFormGroup`,F)}var formGroupClasses=generateUtilityClasses(`MuiFormGroup`,[`root`,`row`,`error`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$15=[`className`,`row`],useUtilityClasses$15=F=>{let{classes:I,row:L,error:R}=F;return composeClasses({root:[`root`,L&&`row`,R&&`error`]},getFormGroupUtilityClass,I)},FormGroupRoot=styled(`div`,{name:`MuiFormGroup`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.row&&I.row]}})(({ownerState:F})=>_extends$3({display:`flex`,flexDirection:`column`,flexWrap:`wrap`},F.row&&{flexDirection:`row`})),FormGroup=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiFormGroup`}),{className:R,row:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$15),Oe=_extends$3({},L,{row:z,error:formControlState({props:L,muiFormControl:useFormControl(),states:[`error`]}).error}),ke=useUtilityClasses$15(Oe);return(0,import_jsx_runtime$2.jsx)(FormGroupRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getSwitchUtilityClass(F){return generateUtilityClass(`MuiSwitch`,F)}var switchClasses=generateUtilityClasses(`MuiSwitch`,[`root`,`edgeStart`,`edgeEnd`,`switchBase`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`,`checked`,`disabled`,`input`,`thumb`,`track`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$14=[`className`,`color`,`edge`,`size`,`sx`],useUtilityClasses$14=F=>{let{classes:I,edge:L,size:R,color:z,checked:De,disabled:Oe}=F;return _extends$3({},I,composeClasses({root:[`root`,L&&`edge${capitalize_default(L)}`,`size${capitalize_default(R)}`],switchBase:[`switchBase`,`color${capitalize_default(z)}`,De&&`checked`,Oe&&`disabled`],thumb:[`thumb`],track:[`track`],input:[`input`]},getSwitchUtilityClass,I))},SwitchRoot=styled(`span`,{name:`MuiSwitch`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.edge&&I[`edge${capitalize_default(L.edge)}`],I[`size${capitalize_default(L.size)}`]]}})({display:`inline-flex`,width:58,height:38,overflow:`hidden`,padding:12,boxSizing:`border-box`,position:`relative`,flexShrink:0,zIndex:0,verticalAlign:`middle`,"@media print":{colorAdjust:`exact`},variants:[{props:{edge:`start`},style:{marginLeft:-8}},{props:{edge:`end`},style:{marginRight:-8}},{props:{size:`small`},style:{width:40,height:24,padding:7,[`& .${switchClasses.thumb}`]:{width:16,height:16},[`& .${switchClasses.switchBase}`]:{padding:4,[`&.${switchClasses.checked}`]:{transform:`translateX(16px)`}}}}]}),SwitchSwitchBase=styled(SwitchBase,{name:`MuiSwitch`,slot:`SwitchBase`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.switchBase,{[`& .${switchClasses.input}`]:I.input},L.color!=="default"&&I[`color${capitalize_default(L.color)}`]]}})(({theme:F})=>({position:`absolute`,top:0,left:0,zIndex:1,color:F.vars?F.vars.palette.Switch.defaultColor:`${F.palette.mode===`light`?F.palette.common.white:F.palette.grey[300]}`,transition:F.transitions.create([`left`,`transform`],{duration:F.transitions.duration.shortest}),[`&.${switchClasses.checked}`]:{transform:`translateX(20px)`},[`&.${switchClasses.disabled}`]:{color:F.vars?F.vars.palette.Switch.defaultDisabledColor:`${F.palette.mode===`light`?F.palette.grey[100]:F.palette.grey[600]}`},[`&.${switchClasses.checked} + .${switchClasses.track}`]:{opacity:.5},[`&.${switchClasses.disabled} + .${switchClasses.track}`]:{opacity:F.vars?F.vars.opacity.switchTrackDisabled:`${F.palette.mode===`light`?.12:.2}`},[`& .${switchClasses.input}`]:{left:`-100%`,width:`300%`}}),({theme:F})=>({"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.action.activeChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette.action.active,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},variants:[...Object.entries(F.palette).filter(([,F])=>F.main&&F.light).map(([I])=>({props:{color:I},style:{[`&.${switchClasses.checked}`]:{color:(F.vars||F).palette[I].main,"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette[I].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},[`&.${switchClasses.disabled}`]:{color:F.vars?F.vars.palette.Switch[`${I}DisabledColor`]:`${F.palette.mode===`light`?(0,import_colorManipulator.lighten)(F.palette[I].main,.62):(0,import_colorManipulator.darken)(F.palette[I].main,.55)}`}},[`&.${switchClasses.checked} + .${switchClasses.track}`]:{backgroundColor:(F.vars||F).palette[I].main}}}))]})),SwitchTrack=styled(`span`,{name:`MuiSwitch`,slot:`Track`,overridesResolver:(F,I)=>I.track})(({theme:F})=>({height:`100%`,width:`100%`,borderRadius:14/2,zIndex:-1,transition:F.transitions.create([`opacity`,`background-color`],{duration:F.transitions.duration.shortest}),backgroundColor:F.vars?F.vars.palette.common.onBackground:`${F.palette.mode===`light`?F.palette.common.black:F.palette.common.white}`,opacity:F.vars?F.vars.opacity.switchTrack:`${F.palette.mode===`light`?.38:.3}`})),SwitchThumb=styled(`span`,{name:`MuiSwitch`,slot:`Thumb`,overridesResolver:(F,I)=>I.thumb})(({theme:F})=>({boxShadow:(F.vars||F).shadows[1],backgroundColor:`currentColor`,width:20,height:20,borderRadius:`50%`})),Switch=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSwitch`}),{className:R,color:z=`primary`,edge:De=!1,size:Oe=`medium`,sx:ke}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$14),je=_extends$3({},L,{color:z,edge:De,size:Oe}),Me=useUtilityClasses$14(je),Ne=(0,import_jsx_runtime$2.jsx)(SwitchThumb,{className:Me.thumb,ownerState:je});return(0,import_jsx_runtime$2.jsxs)(SwitchRoot,{className:clsx$1(Me.root,R),sx:ke,ownerState:je,children:[(0,import_jsx_runtime$2.jsx)(SwitchSwitchBase,_extends$3({type:`checkbox`,icon:Ne,checkedIcon:Ne,ref:I,ownerState:je},Ae,{classes:_extends$3({},Me,{root:Me.switchBase})})),(0,import_jsx_runtime$2.jsx)(SwitchTrack,{className:Me.track,ownerState:je})]})}),MoneyNumberFormat=(0,import_react$10.forwardRef)((F,I)=>{let{max:L,min:R,onChange:z,setLoanInputValue:De,...Oe}=F;return(0,import_jsx_runtime$2.jsx)(NumberFormat,{fixedDecimalScale:!0,thousandSeparator:!0,getInputRef:I,...Oe,allowNegative:!1,decimalScale:2,prefix:`$`,isAllowed:({floatValue:F=0})=>R>=0&&F<=L,onValueChange:({floatValue:F=0})=>z(F)})}),AccountingView=({handleClickLoanPaydownButton:F,handleClickTakeOutLoanButton:I,loanBalance:L,money:R})=>{let[z,De]=(0,import_react$10.useState)(Math.min(L,R));return(0,import_react$10.useEffect)(()=>De(Math.min(L,R)),[L,R]),(0,import_jsx_runtime$2.jsx)(Div,{className:`AccountingView`,children:(0,import_jsx_runtime$2.jsxs)(Card,{sx:{"& .MuiCardContent-root":{paddingTop:0}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(AccountBalanceIcon,{}),title:`Loan Balance`,subheader:(0,import_jsx_runtime$2.jsx)(`p`,{children:moneyString(L)})}),(0,import_jsx_runtime$2.jsxs)(CardContent,{children:[(0,import_jsx_runtime$2.jsxs)(Div,{className:`loan-container`,sx:{"& p":{margin:`1em 0`},"& button":{margin:`1em`}},children:[(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,value:z,inputProps:{max:L,min:0,pattern:`[0-9]*`},onChange:F=>{De(Number(F))},InputProps:{inputComponent:MoneyNumberFormat}}),(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,disabled:L===0,variant:`contained`,onClick:()=>{F(z),De(L-z)},children:`Pay into loan`}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`You may take out a Hardship Assistance Loan if your funds fall below `,dollarString(500),`. So long as you have an outstanding loan balance, all farm product sales are garnished by`,` `,LOAN_GARNISHMENT_RATE*100,`% until the loan is repaid. The loan interest rate is `,LOAN_INTEREST_RATE*100,`% per day, compounded daily.`]})]}),(0,import_jsx_runtime$2.jsxs)(Button,{color:`error`,disabled:R>=500,onClick:()=>{I(500),De(Math.min(moneyTotal(z,500),moneyTotal(R,500)))},variant:`contained`,children:[`Take out a `,dollarString(500),` loan`]})]})]})})};function Consumer$23(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AccountingView,{...I,...L,...F})})}var incompleteColor=`#ff9f00`,completeColor=`#00e500`,ProgressBar=({percent:F})=>{let I=usePrefersReducedMotion(),[L,R]=(0,import_react$10.useState)(I?F:0),[z,De]=(0,import_react$10.useState)(I?(0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},F/100).color:incompleteColor),Oe=(0,import_react$10.useRef)(null),ke=(0,import_react$10.useRef)(I?F:0);return(0,import_react$10.useEffect)(()=>{let L=(0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},F/100).color;if(I){R(F),De(L),ke.current=F,Oe.current&&=(Oe.current.cancel(),null);return}if(!Oe.current){let I=(0,import_shifty.tween)({delay:750,easing:`easeInOutQuad`,duration:1500,from:{currentPercent:ke.current},to:{currentPercent:F},render:({currentPercent:F})=>{let I=Number(F);R(Number(I.toFixed(2))),De((0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},I/100).color)}});Oe.current=I,ke.current=F}return()=>{Oe.current&&=(Oe.current.cancel(),null)}},[F,I]),(0,import_jsx_runtime$2.jsxs)(Div,{className:`ProgressBar`,sx:{margin:`0 auto`,display:`flex`,alignItems:`center`,gap:`0.5em`},children:[(0,import_jsx_runtime$2.jsx)(Div,{className:`progress-wrapper`,sx:{flexGrow:1,...pixelFrameSx({outline:colors.neutralOutline}),height:`calc(1em + ${px$1(2)})`,backgroundColor:`rgba(0, 0, 0, 0.15)`,boxShadow:pixelBevel({highlight:`rgba(0, 0, 0, 0.15)`,lowlight:`rgba(255, 255, 255, 0.2)`}),overflow:`hidden`},children:(0,import_jsx_runtime$2.jsx)(Div,{className:`progress`,style:{background:z,width:`${L}%`},sx:{height:`100%`}})}),(0,import_jsx_runtime$2.jsx)(P$1,{sx:{lineHeight:`1em`,minWidth:`3em`,textAlign:`right`},children:(0,import_jsx_runtime$2.jsxs)(`span`,{children:[L,`%`]})})]})},Achievement=({achievement:F,completedAchievements:I,gameState:L,isComplete:R=!!I[F.id]})=>{let{description:z,name:De,rewardDescription:Oe}=F,ke=F.getProgress?.(L);return(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`Achievement`,{"is-complete":R}),sx:{"& .MuiSvgIcon-root":{color:R?`#13b747`:`#666`}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:R?(0,import_jsx_runtime$2.jsx)(BeenhereIcon,{}):(0,import_jsx_runtime$2.jsx)(AssignmentLateIcon,{}),title:De,subheader:(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Reward: `,Oe]})}),(0,import_jsx_runtime$2.jsxs)(CardContent,{children:[(0,import_jsx_runtime$2.jsx)(`p`,{children:z}),!R&&ke&&(0,import_jsx_runtime$2.jsx)(Div,{sx:{marginTop:`1em`},children:(0,import_jsx_runtime$2.jsx)(ProgressBar,{percent:Math.min(100,ke.currentValue/ke.goal*100)})})]})]})};function Consumer$22(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Achievement,{...I,...L,...F,gameState:I})})}var partitionAchievements=memoize(F=>achievements.reduce((I,L)=>(I[F[L.id]?`complete`:`incomplete`].push(L),I),{complete:[],incomplete:[]})),AchievementsList=({unpartitionedAchievements:F})=>(0,import_jsx_runtime$2.jsx)(AccordionDetails,{children:(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:F.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$22,{achievement:F})},F.id))})}),AchievementsView=({completedAchievements:F,partitionedAchievements:{complete:I,incomplete:L}=partitionAchievements(F)})=>(0,import_jsx_runtime$2.jsxs)(Div,{className:`AchievementsView`,sx:{"& h3":{margin:0},"& .ProgressBar":{maxWidth:500}},children:[(0,import_jsx_runtime$2.jsx)(ProgressBar,{percent:I.length/achievements.length*100}),I.length?(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(Accordion,{defaultExpanded:!0,children:[(0,import_jsx_runtime$2.jsx)(AccordionSummary,{children:(0,import_jsx_runtime$2.jsx)(`h3`,{children:`Completed`})}),(0,import_jsx_runtime$2.jsx)(AchievementsList,{unpartitionedAchievements:I})]}),(0,import_jsx_runtime$2.jsx)(Divider,{})]}):null,(0,import_jsx_runtime$2.jsxs)(Accordion,{defaultExpanded:!0,children:[(0,import_jsx_runtime$2.jsx)(AccordionSummary,{children:(0,import_jsx_runtime$2.jsx)(`h3`,{children:`Not Completed`})}),(0,import_jsx_runtime$2.jsx)(AchievementsList,{unpartitionedAchievements:L})]})]});function Consumer$21(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AchievementsView,{...I,...L,...F})})}var TableContext=import_react$10.createContext();function getTableUtilityClass(F){return generateUtilityClass(`MuiTable`,F)}var tableClasses=generateUtilityClasses(`MuiTable`,[`root`,`stickyHeader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$13=[`className`,`component`,`padding`,`size`,`stickyHeader`],useUtilityClasses$13=F=>{let{classes:I,stickyHeader:L}=F;return composeClasses({root:[`root`,L&&`stickyHeader`]},getTableUtilityClass,I)},TableRoot=styled(`table`,{name:`MuiTable`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.stickyHeader&&I.stickyHeader]}})(({theme:F,ownerState:I})=>_extends$3({display:`table`,width:`100%`,borderCollapse:`collapse`,borderSpacing:0,"& caption":_extends$3({},F.typography.body2,{padding:F.spacing(2),color:(F.vars||F).palette.text.secondary,textAlign:`left`,captionSide:`bottom`})},I.stickyHeader&&{borderCollapse:`separate`})),defaultComponent$2=`table`,Table=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTable`}),{className:R,component:z=defaultComponent$2,padding:De=`normal`,size:Oe=`medium`,stickyHeader:ke=!1}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$13),je=_extends$3({},L,{component:z,padding:De,size:Oe,stickyHeader:ke}),Me=useUtilityClasses$13(je),Ne=import_react$10.useMemo(()=>({padding:De,size:Oe,stickyHeader:ke}),[De,Oe,ke]);return(0,import_jsx_runtime$2.jsx)(TableContext.Provider,{value:Ne,children:(0,import_jsx_runtime$2.jsx)(TableRoot,_extends$3({as:z,role:z===defaultComponent$2?null:`table`,ref:I,className:clsx$1(Me.root,R),ownerState:je},Ae))})}),Tablelvl2Context=import_react$10.createContext();function getTableBodyUtilityClass(F){return generateUtilityClass(`MuiTableBody`,F)}var tableBodyClasses=generateUtilityClasses(`MuiTableBody`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$12=[`className`,`component`],useUtilityClasses$12=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getTableBodyUtilityClass,I)},TableBodyRoot=styled(`tbody`,{name:`MuiTableBody`,slot:`Root`,overridesResolver:(F,I)=>I.root})({display:`table-row-group`}),tablelvl2={variant:`body`},defaultComponent$1=`tbody`,TableBody=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTableBody`}),{className:R,component:z=defaultComponent$1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$12),Oe=_extends$3({},L,{component:z}),ke=useUtilityClasses$12(Oe);return(0,import_jsx_runtime$2.jsx)(Tablelvl2Context.Provider,{value:tablelvl2,children:(0,import_jsx_runtime$2.jsx)(TableBodyRoot,_extends$3({className:clsx$1(ke.root,R),as:z,ref:I,role:z===defaultComponent$1?null:`rowgroup`,ownerState:Oe},De))})});function getTableCellUtilityClass(F){return generateUtilityClass(`MuiTableCell`,F)}var tableCellClasses=generateUtilityClasses(`MuiTableCell`,[`root`,`head`,`body`,`footer`,`sizeSmall`,`sizeMedium`,`paddingCheckbox`,`paddingNone`,`alignLeft`,`alignCenter`,`alignRight`,`alignJustify`,`stickyHeader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$11=[`align`,`className`,`component`,`padding`,`scope`,`size`,`sortDirection`,`variant`],useUtilityClasses$11=F=>{let{classes:I,variant:L,align:R,padding:z,size:De,stickyHeader:Oe}=F;return composeClasses({root:[`root`,L,Oe&&`stickyHeader`,R!==`inherit`&&`align${capitalize_default(R)}`,z!==`normal`&&`padding${capitalize_default(z)}`,`size${capitalize_default(De)}`]},getTableCellUtilityClass,I)},TableCellRoot=styled(`td`,{name:`MuiTableCell`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[L.variant],I[`size${capitalize_default(L.size)}`],L.padding!==`normal`&&I[`padding${capitalize_default(L.padding)}`],L.align!==`inherit`&&I[`align${capitalize_default(L.align)}`],L.stickyHeader&&I.stickyHeader]}})(({theme:F,ownerState:I})=>_extends$3({},F.typography.body2,{display:`table-cell`,verticalAlign:`inherit`,borderBottom:F.vars?`1px solid ${F.vars.palette.TableCell.border}`:`1px solid
222
+ `)}`}throw z}};function yr(){var F=[...arguments];ct.apply(void 0,[yr,F.length].concat(F))}it.strict=Le(yr,it,{equal:it.strictEqual,deepEqual:it.deepStrictEqual,notEqual:it.notStrictEqual,notDeepEqual:it.notDeepStrictEqual}),it.strict.strict=it.strict})),require_zstream=__commonJSMin(((F,I)=>{function L(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}I.exports=L})),require_common=__commonJSMin((F=>{var I=typeof Uint8Array<`u`&&typeof Uint16Array<`u`&&typeof Int32Array<`u`;function L(F,I){return Object.prototype.hasOwnProperty.call(F,I)}F.assign=function(F){for(var I=Array.prototype.slice.call(arguments,1);I.length;){var R=I.shift();if(R){if(typeof R!=`object`)throw TypeError(R+`must be non-object`);for(var z in R)L(R,z)&&(F[z]=R[z])}}return F},F.shrinkBuf=function(F,I){return F.length===I?F:F.subarray?F.subarray(0,I):(F.length=I,F)};var R={arraySet:function(F,I,L,R,z){if(I.subarray&&F.subarray){F.set(I.subarray(L,L+R),z);return}for(var De=0;De<R;De++)F[z+De]=I[L+De]},flattenChunks:function(F){var I,L,R=0,z,De,Oe;for(I=0,L=F.length;I<L;I++)R+=F[I].length;for(Oe=new Uint8Array(R),z=0,I=0,L=F.length;I<L;I++)De=F[I],Oe.set(De,z),z+=De.length;return Oe}},z={arraySet:function(F,I,L,R,z){for(var De=0;De<R;De++)F[z+De]=I[L+De]},flattenChunks:function(F){return[].concat.apply([],F)}};F.setTyped=function(I){I?(F.Buf8=Uint8Array,F.Buf16=Uint16Array,F.Buf32=Int32Array,F.assign(F,R)):(F.Buf8=Array,F.Buf16=Array,F.Buf32=Array,F.assign(F,z))},F.setTyped(I)})),require_trees=__commonJSMin((F=>{var I=require_common(),L=4,R=0,z=1,De=2;function Oe(F){for(var I=F.length;--I>=0;)F[I]=0}var ke=0,Ae=1,je=2,Me=3,Ne=258,Pe=29,Fe=256,Ie=Fe+1+Pe,Le=30,Re=19,ze=2*Ie+1,Be=15,Ge=16,rt=7,it=256,at=16,ot=17,st=18,ct=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],lt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],ut=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],dt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ft=512,pt=Array((Ie+2)*2);Oe(pt);var mt=Array(Le*2);Oe(mt);var ht=Array(ft);Oe(ht);var gt=Array(Ne-Me+1);Oe(gt);var vt=Array(Pe);Oe(vt);var yt=Array(Le);Oe(yt);function yr(F,I,L,R,z){this.static_tree=F,this.extra_bits=I,this.extra_base=L,this.elems=R,this.max_length=z,this.has_stree=F&&F.length}var br,hw,gw;function _w(F,I){this.dyn_tree=F,this.max_code=0,this.stat_desc=I}function vw(F){return F<256?ht[F]:ht[256+(F>>>7)]}function yw(F,I){F.pending_buf[F.pending++]=I&255,F.pending_buf[F.pending++]=I>>>8&255}function bw(F,I,L){F.bi_valid>Ge-L?(F.bi_buf|=I<<F.bi_valid&65535,yw(F,F.bi_buf),F.bi_buf=I>>Ge-F.bi_valid,F.bi_valid+=L-Ge):(F.bi_buf|=I<<F.bi_valid&65535,F.bi_valid+=L)}function xw(F,I,L){bw(F,L[I*2],L[I*2+1])}function Sw(F,I){var L=0;do L|=F&1,F>>>=1,L<<=1;while(--I>0);return L>>>1}function Cw(F){F.bi_valid===16?(yw(F,F.bi_buf),F.bi_buf=0,F.bi_valid=0):F.bi_valid>=8&&(F.pending_buf[F.pending++]=F.bi_buf&255,F.bi_buf>>=8,F.bi_valid-=8)}function ww(F,I){var L=I.dyn_tree,R=I.max_code,z=I.stat_desc.static_tree,De=I.stat_desc.has_stree,Oe=I.stat_desc.extra_bits,ke=I.stat_desc.extra_base,Ae=I.stat_desc.max_length,je,Me,Ne,Pe,Fe,Ie,Le=0;for(Pe=0;Pe<=Be;Pe++)F.bl_count[Pe]=0;for(L[F.heap[F.heap_max]*2+1]=0,je=F.heap_max+1;je<ze;je++)Me=F.heap[je],Pe=L[L[Me*2+1]*2+1]+1,Pe>Ae&&(Pe=Ae,Le++),L[Me*2+1]=Pe,!(Me>R)&&(F.bl_count[Pe]++,Fe=0,Me>=ke&&(Fe=Oe[Me-ke]),Ie=L[Me*2],F.opt_len+=Ie*(Pe+Fe),De&&(F.static_len+=Ie*(z[Me*2+1]+Fe)));if(Le!==0){do{for(Pe=Ae-1;F.bl_count[Pe]===0;)Pe--;F.bl_count[Pe]--,F.bl_count[Pe+1]+=2,F.bl_count[Ae]--,Le-=2}while(Le>0);for(Pe=Ae;Pe!==0;Pe--)for(Me=F.bl_count[Pe];Me!==0;)Ne=F.heap[--je],!(Ne>R)&&(L[Ne*2+1]!==Pe&&(F.opt_len+=(Pe-L[Ne*2+1])*L[Ne*2],L[Ne*2+1]=Pe),Me--)}}function Tw(F,I,L){var R=Array(Be+1),z=0,De,Oe;for(De=1;De<=Be;De++)R[De]=z=z+L[De-1]<<1;for(Oe=0;Oe<=I;Oe++){var ke=F[Oe*2+1];ke!==0&&(F[Oe*2]=Sw(R[ke]++,ke))}}function Ew(){var F,I,L,R,z,De=Array(Be+1);for(L=0,R=0;R<Pe-1;R++)for(vt[R]=L,F=0;F<1<<ct[R];F++)gt[L++]=R;for(gt[L-1]=R,z=0,R=0;R<16;R++)for(yt[R]=z,F=0;F<1<<lt[R];F++)ht[z++]=R;for(z>>=7;R<Le;R++)for(yt[R]=z<<7,F=0;F<1<<lt[R]-7;F++)ht[256+z++]=R;for(I=0;I<=Be;I++)De[I]=0;for(F=0;F<=143;)pt[F*2+1]=8,F++,De[8]++;for(;F<=255;)pt[F*2+1]=9,F++,De[9]++;for(;F<=279;)pt[F*2+1]=7,F++,De[7]++;for(;F<=287;)pt[F*2+1]=8,F++,De[8]++;for(Tw(pt,Ie+1,De),F=0;F<Le;F++)mt[F*2+1]=5,mt[F*2]=Sw(F,5);br=new yr(pt,ct,Fe+1,Ie,Be),hw=new yr(mt,lt,0,Le,Be),gw=new yr([],ut,0,Re,rt)}function Dw(F){var I;for(I=0;I<Ie;I++)F.dyn_ltree[I*2]=0;for(I=0;I<Le;I++)F.dyn_dtree[I*2]=0;for(I=0;I<Re;I++)F.bl_tree[I*2]=0;F.dyn_ltree[it*2]=1,F.opt_len=F.static_len=0,F.last_lit=F.matches=0}function Ow(F){F.bi_valid>8?yw(F,F.bi_buf):F.bi_valid>0&&(F.pending_buf[F.pending++]=F.bi_buf),F.bi_buf=0,F.bi_valid=0}function kw(F,L,R,z){Ow(F),z&&(yw(F,R),yw(F,~R)),I.arraySet(F.pending_buf,F.window,L,R,F.pending),F.pending+=R}function Aw(F,I,L,R){var z=I*2,De=L*2;return F[z]<F[De]||F[z]===F[De]&&R[I]<=R[L]}function jw(F,I,L){for(var R=F.heap[L],z=L<<1;z<=F.heap_len&&(z<F.heap_len&&Aw(I,F.heap[z+1],F.heap[z],F.depth)&&z++,!Aw(I,R,F.heap[z],F.depth));)F.heap[L]=F.heap[z],L=z,z<<=1;F.heap[L]=R}function Mw(F,I,L){var R,z,De=0,Oe,ke;if(F.last_lit!==0)do R=F.pending_buf[F.d_buf+De*2]<<8|F.pending_buf[F.d_buf+De*2+1],z=F.pending_buf[F.l_buf+De],De++,R===0?xw(F,z,I):(Oe=gt[z],xw(F,Oe+Fe+1,I),ke=ct[Oe],ke!==0&&(z-=vt[Oe],bw(F,z,ke)),R--,Oe=vw(R),xw(F,Oe,L),ke=lt[Oe],ke!==0&&(R-=yt[Oe],bw(F,R,ke)));while(De<F.last_lit);xw(F,it,I)}function Nw(F,I){var L=I.dyn_tree,R=I.stat_desc.static_tree,z=I.stat_desc.has_stree,De=I.stat_desc.elems,Oe,ke,Ae=-1,je;for(F.heap_len=0,F.heap_max=ze,Oe=0;Oe<De;Oe++)L[Oe*2]===0?L[Oe*2+1]=0:(F.heap[++F.heap_len]=Ae=Oe,F.depth[Oe]=0);for(;F.heap_len<2;)je=F.heap[++F.heap_len]=Ae<2?++Ae:0,L[je*2]=1,F.depth[je]=0,F.opt_len--,z&&(F.static_len-=R[je*2+1]);for(I.max_code=Ae,Oe=F.heap_len>>1;Oe>=1;Oe--)jw(F,L,Oe);je=De;do Oe=F.heap[1],F.heap[1]=F.heap[F.heap_len--],jw(F,L,1),ke=F.heap[1],F.heap[--F.heap_max]=Oe,F.heap[--F.heap_max]=ke,L[je*2]=L[Oe*2]+L[ke*2],F.depth[je]=(F.depth[Oe]>=F.depth[ke]?F.depth[Oe]:F.depth[ke])+1,L[Oe*2+1]=L[ke*2+1]=je,F.heap[1]=je++,jw(F,L,1);while(F.heap_len>=2);F.heap[--F.heap_max]=F.heap[1],ww(F,I),Tw(L,Ae,F.bl_count)}function Pw(F,I,L){var R,z=-1,De,Oe=I[1],ke=0,Ae=7,je=4;for(Oe===0&&(Ae=138,je=3),I[(L+1)*2+1]=65535,R=0;R<=L;R++)De=Oe,Oe=I[(R+1)*2+1],!(++ke<Ae&&De===Oe)&&(ke<je?F.bl_tree[De*2]+=ke:De===0?ke<=10?F.bl_tree[ot*2]++:F.bl_tree[st*2]++:(De!==z&&F.bl_tree[De*2]++,F.bl_tree[at*2]++),ke=0,z=De,Oe===0?(Ae=138,je=3):De===Oe?(Ae=6,je=3):(Ae=7,je=4))}function Fw(F,I,L){var R,z=-1,De,Oe=I[1],ke=0,Ae=7,je=4;for(Oe===0&&(Ae=138,je=3),R=0;R<=L;R++)if(De=Oe,Oe=I[(R+1)*2+1],!(++ke<Ae&&De===Oe)){if(ke<je)do xw(F,De,F.bl_tree);while(--ke!==0);else De===0?ke<=10?(xw(F,ot,F.bl_tree),bw(F,ke-3,3)):(xw(F,st,F.bl_tree),bw(F,ke-11,7)):(De!==z&&(xw(F,De,F.bl_tree),ke--),xw(F,at,F.bl_tree),bw(F,ke-3,2));ke=0,z=De,Oe===0?(Ae=138,je=3):De===Oe?(Ae=6,je=3):(Ae=7,je=4)}}function Iw(F){var I;for(Pw(F,F.dyn_ltree,F.l_desc.max_code),Pw(F,F.dyn_dtree,F.d_desc.max_code),Nw(F,F.bl_desc),I=Re-1;I>=3&&F.bl_tree[dt[I]*2+1]===0;I--);return F.opt_len+=3*(I+1)+5+5+4,I}function Lw(F,I,L,R){var z;for(bw(F,I-257,5),bw(F,L-1,5),bw(F,R-4,4),z=0;z<R;z++)bw(F,F.bl_tree[dt[z]*2+1],3);Fw(F,F.dyn_ltree,I-1),Fw(F,F.dyn_dtree,L-1)}function Rw(F){var I=4093624447,L;for(L=0;L<=31;L++,I>>>=1)if(I&1&&F.dyn_ltree[L*2]!==0)return R;if(F.dyn_ltree[18]!==0||F.dyn_ltree[20]!==0||F.dyn_ltree[26]!==0)return z;for(L=32;L<Fe;L++)if(F.dyn_ltree[L*2]!==0)return z;return R}var zw=!1;function Bw(F){zw||=(Ew(),!0),F.l_desc=new _w(F.dyn_ltree,br),F.d_desc=new _w(F.dyn_dtree,hw),F.bl_desc=new _w(F.bl_tree,gw),F.bi_buf=0,F.bi_valid=0,Dw(F)}function Vw(F,I,L,R){bw(F,(ke<<1)+ +!!R,3),kw(F,I,L,!0)}function Hw(F){bw(F,Ae<<1,3),xw(F,it,pt),Cw(F)}function Uw(F,I,R,z){var Oe,ke,Me=0;F.level>0?(F.strm.data_type===De&&(F.strm.data_type=Rw(F)),Nw(F,F.l_desc),Nw(F,F.d_desc),Me=Iw(F),Oe=F.opt_len+3+7>>>3,ke=F.static_len+3+7>>>3,ke<=Oe&&(Oe=ke)):Oe=ke=R+5,R+4<=Oe&&I!==-1?Vw(F,I,R,z):F.strategy===L||ke===Oe?(bw(F,(Ae<<1)+ +!!z,3),Mw(F,pt,mt)):(bw(F,(je<<1)+ +!!z,3),Lw(F,F.l_desc.max_code+1,F.d_desc.max_code+1,Me+1),Mw(F,F.dyn_ltree,F.dyn_dtree)),Dw(F),z&&Ow(F)}function Ww(F,I,L){return F.pending_buf[F.d_buf+F.last_lit*2]=I>>>8&255,F.pending_buf[F.d_buf+F.last_lit*2+1]=I&255,F.pending_buf[F.l_buf+F.last_lit]=L&255,F.last_lit++,I===0?F.dyn_ltree[L*2]++:(F.matches++,I--,F.dyn_ltree[(gt[L]+Fe+1)*2]++,F.dyn_dtree[vw(I)*2]++),F.last_lit===F.lit_bufsize-1}F._tr_init=Bw,F._tr_stored_block=Vw,F._tr_flush_block=Uw,F._tr_tally=Ww,F._tr_align=Hw})),require_adler32=__commonJSMin(((F,I)=>{function L(F,I,L,R){for(var z=F&65535|0,De=F>>>16&65535|0,Oe=0;L!==0;){Oe=L>2e3?2e3:L,L-=Oe;do z=z+I[R++]|0,De=De+z|0;while(--Oe);z%=65521,De%=65521}return z|De<<16|0}I.exports=L})),require_crc32=__commonJSMin(((F,I)=>{function L(){for(var F,I=[],L=0;L<256;L++){F=L;for(var R=0;R<8;R++)F=F&1?3988292384^F>>>1:F>>>1;I[L]=F}return I}var R=L();function z(F,I,L,z){var De=R,Oe=z+L;F^=-1;for(var ke=z;ke<Oe;ke++)F=F>>>8^De[(F^I[ke])&255];return F^-1}I.exports=z})),require_messages=__commonJSMin(((F,I)=>{I.exports={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`}})),require_deflate=__commonJSMin((F=>{var I=require_common(),L=require_trees(),R=require_adler32(),z=require_crc32(),De=require_messages(),Oe=0,ke=1,Ae=3,je=4,Me=5,Ne=0,Pe=1,Fe=-2,Ie=-3,Le=-5,Re=-1,ze=1,Be=2,Ge=3,rt=4,it=0,at=2,ot=8,st=9,ct=15,lt=8,ut=286,dt=30,ft=19,pt=2*ut+1,mt=15,ht=3,gt=258,vt=gt+ht+1,yt=32,yr=42,br=69,hw=73,gw=91,_w=103,vw=113,yw=666,bw=1,xw=2,Sw=3,Cw=4,ww=3;function Tw(F,I){return F.msg=De[I],I}function Ew(F){return(F<<1)-(F>4?9:0)}function Dw(F){for(var I=F.length;--I>=0;)F[I]=0}function Ow(F){var L=F.state,R=L.pending;R>F.avail_out&&(R=F.avail_out),R!==0&&(I.arraySet(F.output,L.pending_buf,L.pending_out,R,F.next_out),F.next_out+=R,L.pending_out+=R,F.total_out+=R,F.avail_out-=R,L.pending-=R,L.pending===0&&(L.pending_out=0))}function kw(F,I){L._tr_flush_block(F,F.block_start>=0?F.block_start:-1,F.strstart-F.block_start,I),F.block_start=F.strstart,Ow(F.strm)}function Aw(F,I){F.pending_buf[F.pending++]=I}function jw(F,I){F.pending_buf[F.pending++]=I>>>8&255,F.pending_buf[F.pending++]=I&255}function Mw(F,L,De,Oe){var ke=F.avail_in;return ke>Oe&&(ke=Oe),ke===0?0:(F.avail_in-=ke,I.arraySet(L,F.input,F.next_in,ke,De),F.state.wrap===1?F.adler=R(F.adler,L,ke,De):F.state.wrap===2&&(F.adler=z(F.adler,L,ke,De)),F.next_in+=ke,F.total_in+=ke,ke)}function Nw(F,I){var L=F.max_chain_length,R=F.strstart,z,De,Oe=F.prev_length,ke=F.nice_match,Ae=F.strstart>F.w_size-vt?F.strstart-(F.w_size-vt):0,je=F.window,Me=F.w_mask,Ne=F.prev,Pe=F.strstart+gt,Fe=je[R+Oe-1],Ie=je[R+Oe];F.prev_length>=F.good_match&&(L>>=2),ke>F.lookahead&&(ke=F.lookahead);do{if(z=I,je[z+Oe]!==Ie||je[z+Oe-1]!==Fe||je[z]!==je[R]||je[++z]!==je[R+1])continue;R+=2,z++;do;while(je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&je[++R]===je[++z]&&R<Pe);if(De=gt-(Pe-R),R=Pe-gt,De>Oe){if(F.match_start=I,Oe=De,De>=ke)break;Fe=je[R+Oe-1],Ie=je[R+Oe]}}while((I=Ne[I&Me])>Ae&&--L!==0);return Oe<=F.lookahead?Oe:F.lookahead}function Pw(F){var L=F.w_size,R,z,De,Oe,ke;do{if(Oe=F.window_size-F.lookahead-F.strstart,F.strstart>=L+(L-vt)){I.arraySet(F.window,F.window,L,L,0),F.match_start-=L,F.strstart-=L,F.block_start-=L,z=F.hash_size,R=z;do De=F.head[--R],F.head[R]=De>=L?De-L:0;while(--z);z=L,R=z;do De=F.prev[--R],F.prev[R]=De>=L?De-L:0;while(--z);Oe+=L}if(F.strm.avail_in===0)break;if(z=Mw(F.strm,F.window,F.strstart+F.lookahead,Oe),F.lookahead+=z,F.lookahead+F.insert>=ht)for(ke=F.strstart-F.insert,F.ins_h=F.window[ke],F.ins_h=(F.ins_h<<F.hash_shift^F.window[ke+1])&F.hash_mask;F.insert&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[ke+ht-1])&F.hash_mask,F.prev[ke&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=ke,ke++,F.insert--,!(F.lookahead+F.insert<ht)););}while(F.lookahead<vt&&F.strm.avail_in!==0)}function Fw(F,I){var L=65535;for(L>F.pending_buf_size-5&&(L=F.pending_buf_size-5);;){if(F.lookahead<=1){if(Pw(F),F.lookahead===0&&I===Oe)return bw;if(F.lookahead===0)break}F.strstart+=F.lookahead,F.lookahead=0;var R=F.block_start+L;if((F.strstart===0||F.strstart>=R)&&(F.lookahead=F.strstart-R,F.strstart=R,kw(F,!1),F.strm.avail_out===0)||F.strstart-F.block_start>=F.w_size-vt&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):(F.strstart>F.block_start&&(kw(F,!1),F.strm.avail_out),bw)}function Iw(F,I){for(var R,z;;){if(F.lookahead<vt){if(Pw(F),F.lookahead<vt&&I===Oe)return bw;if(F.lookahead===0)break}if(R=0,F.lookahead>=ht&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart),R!==0&&F.strstart-R<=F.w_size-vt&&(F.match_length=Nw(F,R)),F.match_length>=ht)if(z=L._tr_tally(F,F.strstart-F.match_start,F.match_length-ht),F.lookahead-=F.match_length,F.match_length<=F.max_lazy_match&&F.lookahead>=ht){F.match_length--;do F.strstart++,F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart;while(--F.match_length!==0);F.strstart++}else F.strstart+=F.match_length,F.match_length=0,F.ins_h=F.window[F.strstart],F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+1])&F.hash_mask;else z=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++;if(z&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=F.strstart<ht-1?F.strstart:ht-1,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Lw(F,I){for(var R,z,De;;){if(F.lookahead<vt){if(Pw(F),F.lookahead<vt&&I===Oe)return bw;if(F.lookahead===0)break}if(R=0,F.lookahead>=ht&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart),F.prev_length=F.match_length,F.prev_match=F.match_start,F.match_length=ht-1,R!==0&&F.prev_length<F.max_lazy_match&&F.strstart-R<=F.w_size-vt&&(F.match_length=Nw(F,R),F.match_length<=5&&(F.strategy===ze||F.match_length===ht&&F.strstart-F.match_start>4096)&&(F.match_length=ht-1)),F.prev_length>=ht&&F.match_length<=F.prev_length){De=F.strstart+F.lookahead-ht,z=L._tr_tally(F,F.strstart-1-F.prev_match,F.prev_length-ht),F.lookahead-=F.prev_length-1,F.prev_length-=2;do++F.strstart<=De&&(F.ins_h=(F.ins_h<<F.hash_shift^F.window[F.strstart+ht-1])&F.hash_mask,R=F.prev[F.strstart&F.w_mask]=F.head[F.ins_h],F.head[F.ins_h]=F.strstart);while(--F.prev_length!==0);if(F.match_available=0,F.match_length=ht-1,F.strstart++,z&&(kw(F,!1),F.strm.avail_out===0))return bw}else if(F.match_available){if(z=L._tr_tally(F,0,F.window[F.strstart-1]),z&&kw(F,!1),F.strstart++,F.lookahead--,F.strm.avail_out===0)return bw}else F.match_available=1,F.strstart++,F.lookahead--}return F.match_available&&=(z=L._tr_tally(F,0,F.window[F.strstart-1]),0),F.insert=F.strstart<ht-1?F.strstart:ht-1,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Rw(F,I){for(var R,z,De,ke,Ae=F.window;;){if(F.lookahead<=gt){if(Pw(F),F.lookahead<=gt&&I===Oe)return bw;if(F.lookahead===0)break}if(F.match_length=0,F.lookahead>=ht&&F.strstart>0&&(De=F.strstart-1,z=Ae[De],z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De])){ke=F.strstart+gt;do;while(z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&z===Ae[++De]&&De<ke);F.match_length=gt-(ke-De),F.match_length>F.lookahead&&(F.match_length=F.lookahead)}if(F.match_length>=ht?(R=L._tr_tally(F,1,F.match_length-ht),F.lookahead-=F.match_length,F.strstart+=F.match_length,F.match_length=0):(R=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++),R&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function zw(F,I){for(var R;;){if(F.lookahead===0&&(Pw(F),F.lookahead===0)){if(I===Oe)return bw;break}if(F.match_length=0,R=L._tr_tally(F,0,F.window[F.strstart]),F.lookahead--,F.strstart++,R&&(kw(F,!1),F.strm.avail_out===0))return bw}return F.insert=0,I===je?(kw(F,!0),F.strm.avail_out===0?Sw:Cw):F.last_lit&&(kw(F,!1),F.strm.avail_out===0)?bw:xw}function Bw(F,I,L,R,z){this.good_length=F,this.max_lazy=I,this.nice_length=L,this.max_chain=R,this.func=z}var Vw=[new Bw(0,0,0,0,Fw),new Bw(4,4,8,4,Iw),new Bw(4,5,16,8,Iw),new Bw(4,6,32,32,Iw),new Bw(4,4,16,16,Lw),new Bw(8,16,32,32,Lw),new Bw(8,16,128,128,Lw),new Bw(8,32,128,256,Lw),new Bw(32,128,258,1024,Lw),new Bw(32,258,258,4096,Lw)];function Hw(F){F.window_size=2*F.w_size,Dw(F.head),F.max_lazy_match=Vw[F.level].max_lazy,F.good_match=Vw[F.level].good_length,F.nice_match=Vw[F.level].nice_length,F.max_chain_length=Vw[F.level].max_chain,F.strstart=0,F.block_start=0,F.lookahead=0,F.insert=0,F.match_length=F.prev_length=ht-1,F.match_available=0,F.ins_h=0}function Uw(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new I.Buf16(pt*2),this.dyn_dtree=new I.Buf16((2*dt+1)*2),this.bl_tree=new I.Buf16((2*ft+1)*2),Dw(this.dyn_ltree),Dw(this.dyn_dtree),Dw(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new I.Buf16(mt+1),this.heap=new I.Buf16(2*ut+1),Dw(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new I.Buf16(2*ut+1),Dw(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ww(F){var I;return!F||!F.state?Tw(F,Fe):(F.total_in=F.total_out=0,F.data_type=at,I=F.state,I.pending=0,I.pending_out=0,I.wrap<0&&(I.wrap=-I.wrap),I.status=I.wrap?yr:vw,F.adler=I.wrap===2?0:1,I.last_flush=Oe,L._tr_init(I),Ne)}function Gw(F){var I=Ww(F);return I===Ne&&Hw(F.state),I}function Kw(F,I){return!F||!F.state||F.state.wrap!==2?Fe:(F.state.gzhead=I,Ne)}function qw(F,L,R,z,De,Oe){if(!F)return Fe;var ke=1;if(L===Re&&(L=6),z<0?(ke=0,z=-z):z>15&&(ke=2,z-=16),De<1||De>st||R!==ot||z<8||z>15||L<0||L>9||Oe<0||Oe>rt)return Tw(F,Fe);z===8&&(z=9);var Ae=new Uw;return F.state=Ae,Ae.strm=F,Ae.wrap=ke,Ae.gzhead=null,Ae.w_bits=z,Ae.w_size=1<<Ae.w_bits,Ae.w_mask=Ae.w_size-1,Ae.hash_bits=De+7,Ae.hash_size=1<<Ae.hash_bits,Ae.hash_mask=Ae.hash_size-1,Ae.hash_shift=~~((Ae.hash_bits+ht-1)/ht),Ae.window=new I.Buf8(Ae.w_size*2),Ae.head=new I.Buf16(Ae.hash_size),Ae.prev=new I.Buf16(Ae.w_size),Ae.lit_bufsize=1<<De+6,Ae.pending_buf_size=Ae.lit_bufsize*4,Ae.pending_buf=new I.Buf8(Ae.pending_buf_size),Ae.d_buf=1*Ae.lit_bufsize,Ae.l_buf=3*Ae.lit_bufsize,Ae.level=L,Ae.strategy=Oe,Ae.method=R,Gw(F)}function Jw(F,I){return qw(F,I,ot,ct,lt,it)}function Yw(F,I){var R,De,Ie,Re;if(!F||!F.state||I>Me||I<0)return F?Tw(F,Fe):Fe;if(De=F.state,!F.output||!F.input&&F.avail_in!==0||De.status===yw&&I!==je)return Tw(F,F.avail_out===0?Le:Fe);if(De.strm=F,R=De.last_flush,De.last_flush=I,De.status===yr)if(De.wrap===2)F.adler=0,Aw(De,31),Aw(De,139),Aw(De,8),De.gzhead?(Aw(De,+!!De.gzhead.text+(De.gzhead.hcrc?2:0)+(De.gzhead.extra?4:0)+(De.gzhead.name?8:0)+(De.gzhead.comment?16:0)),Aw(De,De.gzhead.time&255),Aw(De,De.gzhead.time>>8&255),Aw(De,De.gzhead.time>>16&255),Aw(De,De.gzhead.time>>24&255),Aw(De,De.level===9?2:De.strategy>=Be||De.level<2?4:0),Aw(De,De.gzhead.os&255),De.gzhead.extra&&De.gzhead.extra.length&&(Aw(De,De.gzhead.extra.length&255),Aw(De,De.gzhead.extra.length>>8&255)),De.gzhead.hcrc&&(F.adler=z(F.adler,De.pending_buf,De.pending,0)),De.gzindex=0,De.status=br):(Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,0),Aw(De,De.level===9?2:De.strategy>=Be||De.level<2?4:0),Aw(De,ww),De.status=vw);else{var ze=ot+(De.w_bits-8<<4)<<8,rt=-1;rt=De.strategy>=Be||De.level<2?0:De.level<6?1:De.level===6?2:3,ze|=rt<<6,De.strstart!==0&&(ze|=yt),ze+=31-ze%31,De.status=vw,jw(De,ze),De.strstart!==0&&(jw(De,F.adler>>>16),jw(De,F.adler&65535)),F.adler=1}if(De.status===br)if(De.gzhead.extra){for(Ie=De.pending;De.gzindex<(De.gzhead.extra.length&65535)&&!(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size));)Aw(De,De.gzhead.extra[De.gzindex]&255),De.gzindex++;De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),De.gzindex===De.gzhead.extra.length&&(De.gzindex=0,De.status=hw)}else De.status=hw;if(De.status===hw)if(De.gzhead.name){Ie=De.pending;do{if(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size)){Re=1;break}Re=De.gzindex<De.gzhead.name.length?De.gzhead.name.charCodeAt(De.gzindex++)&255:0,Aw(De,Re)}while(Re!==0);De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Re===0&&(De.gzindex=0,De.status=gw)}else De.status=gw;if(De.status===gw)if(De.gzhead.comment){Ie=De.pending;do{if(De.pending===De.pending_buf_size&&(De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Ow(F),Ie=De.pending,De.pending===De.pending_buf_size)){Re=1;break}Re=De.gzindex<De.gzhead.comment.length?De.gzhead.comment.charCodeAt(De.gzindex++)&255:0,Aw(De,Re)}while(Re!==0);De.gzhead.hcrc&&De.pending>Ie&&(F.adler=z(F.adler,De.pending_buf,De.pending-Ie,Ie)),Re===0&&(De.status=_w)}else De.status=_w;if(De.status===_w&&(De.gzhead.hcrc?(De.pending+2>De.pending_buf_size&&Ow(F),De.pending+2<=De.pending_buf_size&&(Aw(De,F.adler&255),Aw(De,F.adler>>8&255),F.adler=0,De.status=vw)):De.status=vw),De.pending!==0){if(Ow(F),F.avail_out===0)return De.last_flush=-1,Ne}else if(F.avail_in===0&&Ew(I)<=Ew(R)&&I!==je)return Tw(F,Le);if(De.status===yw&&F.avail_in!==0)return Tw(F,Le);if(F.avail_in!==0||De.lookahead!==0||I!==Oe&&De.status!==yw){var it=De.strategy===Be?zw(De,I):De.strategy===Ge?Rw(De,I):Vw[De.level].func(De,I);if((it===Sw||it===Cw)&&(De.status=yw),it===bw||it===Sw)return F.avail_out===0&&(De.last_flush=-1),Ne;if(it===xw&&(I===ke?L._tr_align(De):I!==Me&&(L._tr_stored_block(De,0,0,!1),I===Ae&&(Dw(De.head),De.lookahead===0&&(De.strstart=0,De.block_start=0,De.insert=0))),Ow(F),F.avail_out===0))return De.last_flush=-1,Ne}return I===je?De.wrap<=0?Pe:(De.wrap===2?(Aw(De,F.adler&255),Aw(De,F.adler>>8&255),Aw(De,F.adler>>16&255),Aw(De,F.adler>>24&255),Aw(De,F.total_in&255),Aw(De,F.total_in>>8&255),Aw(De,F.total_in>>16&255),Aw(De,F.total_in>>24&255)):(jw(De,F.adler>>>16),jw(De,F.adler&65535)),Ow(F),De.wrap>0&&(De.wrap=-De.wrap),De.pending===0?Pe:Ne):Ne}function Xw(F){var I;return!F||!F.state?Fe:(I=F.state.status,I!==yr&&I!==br&&I!==hw&&I!==gw&&I!==_w&&I!==vw&&I!==yw?Tw(F,Fe):(F.state=null,I===vw?Tw(F,Ie):Ne))}function Zw(F,L){var z=L.length,De,Oe,ke,Ae,je,Me,Pe,Ie;if(!F||!F.state||(De=F.state,Ae=De.wrap,Ae===2||Ae===1&&De.status!==yr||De.lookahead))return Fe;for(Ae===1&&(F.adler=R(F.adler,L,z,0)),De.wrap=0,z>=De.w_size&&(Ae===0&&(Dw(De.head),De.strstart=0,De.block_start=0,De.insert=0),Ie=new I.Buf8(De.w_size),I.arraySet(Ie,L,z-De.w_size,De.w_size,0),L=Ie,z=De.w_size),je=F.avail_in,Me=F.next_in,Pe=F.input,F.avail_in=z,F.next_in=0,F.input=L,Pw(De);De.lookahead>=ht;){Oe=De.strstart,ke=De.lookahead-(ht-1);do De.ins_h=(De.ins_h<<De.hash_shift^De.window[Oe+ht-1])&De.hash_mask,De.prev[Oe&De.w_mask]=De.head[De.ins_h],De.head[De.ins_h]=Oe,Oe++;while(--ke);De.strstart=Oe,De.lookahead=ht-1,Pw(De)}return De.strstart+=De.lookahead,De.block_start=De.strstart,De.insert=De.lookahead,De.lookahead=0,De.match_length=De.prev_length=ht-1,De.match_available=0,F.next_in=Me,F.input=Pe,F.avail_in=je,De.wrap=Ae,Ne}F.deflateInit=Jw,F.deflateInit2=qw,F.deflateReset=Gw,F.deflateResetKeep=Ww,F.deflateSetHeader=Kw,F.deflate=Yw,F.deflateEnd=Xw,F.deflateSetDictionary=Zw,F.deflateInfo=`pako deflate (from Nodeca project)`})),require_inffast=__commonJSMin(((F,I)=>{var L=30,R=12;I.exports=function(F,I){var L=F.state,R=F.next_in,z,De,Oe,ke,Ae,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ge,rt,it,at,ot,st,ct=F.input,lt;z=R+(F.avail_in-5),De=F.next_out,lt=F.output,Oe=De-(I-F.avail_out),ke=De+(F.avail_out-257),Ae=L.dmax,je=L.wsize,Me=L.whave,Ne=L.wnext,Pe=L.window,Fe=L.hold,Ie=L.bits,Le=L.lencode,Re=L.distcode,ze=(1<<L.lenbits)-1,Be=(1<<L.distbits)-1;top:do{Ie<15&&(Fe+=ct[R++]<<Ie,Ie+=8,Fe+=ct[R++]<<Ie,Ie+=8),Ge=Le[Fe&ze];dolen:for(;;){if(rt=Ge>>>24,Fe>>>=rt,Ie-=rt,rt=Ge>>>16&255,rt===0)lt[De++]=Ge&65535;else if(rt&16){it=Ge&65535,rt&=15,rt&&(Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8),it+=Fe&(1<<rt)-1,Fe>>>=rt,Ie-=rt),Ie<15&&(Fe+=ct[R++]<<Ie,Ie+=8,Fe+=ct[R++]<<Ie,Ie+=8),Ge=Re[Fe&Be];dodist:for(;;){if(rt=Ge>>>24,Fe>>>=rt,Ie-=rt,rt=Ge>>>16&255,rt&16){if(at=Ge&65535,rt&=15,Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8,Ie<rt&&(Fe+=ct[R++]<<Ie,Ie+=8)),at+=Fe&(1<<rt)-1,at>Ae){F.msg=`invalid distance too far back`,L.mode=30;break top}if(Fe>>>=rt,Ie-=rt,rt=De-Oe,at>rt){if(rt=at-rt,rt>Me&&L.sane){F.msg=`invalid distance too far back`,L.mode=30;break top}if(ot=0,st=Pe,Ne===0){if(ot+=je-rt,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}}else if(Ne<rt){if(ot+=je+Ne-rt,rt-=Ne,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);if(ot=0,Ne<it){rt=Ne,it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}}}else if(ot+=Ne-rt,rt<it){it-=rt;do lt[De++]=Pe[ot++];while(--rt);ot=De-at,st=lt}for(;it>2;)lt[De++]=st[ot++],lt[De++]=st[ot++],lt[De++]=st[ot++],it-=3;it&&(lt[De++]=st[ot++],it>1&&(lt[De++]=st[ot++]))}else{ot=De-at;do lt[De++]=lt[ot++],lt[De++]=lt[ot++],lt[De++]=lt[ot++],it-=3;while(it>2);it&&(lt[De++]=lt[ot++],it>1&&(lt[De++]=lt[ot++]))}}else if(rt&64){F.msg=`invalid distance code`,L.mode=30;break top}else{Ge=Re[(Ge&65535)+(Fe&(1<<rt)-1)];continue dodist}break}}else if(!(rt&64)){Ge=Le[(Ge&65535)+(Fe&(1<<rt)-1)];continue dolen}else if(rt&32){L.mode=12;break top}else{F.msg=`invalid literal/length code`,L.mode=30;break top}break}}while(R<z&&De<ke);it=Ie>>3,R-=it,Ie-=it<<3,Fe&=(1<<Ie)-1,F.next_in=R,F.next_out=De,F.avail_in=R<z?5+(z-R):5-(R-z),F.avail_out=De<ke?257+(ke-De):257-(De-ke),L.hold=Fe,L.bits=Ie}})),require_inftrees=__commonJSMin(((F,I)=>{var L=require_common(),R=15,z=852,De=592,Oe=0,ke=1,Ae=2,je=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Me=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],Ne=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],Pe=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];I.exports=function(F,I,Fe,Ie,Le,Re,ze,Be){var Ge=Be.bits,rt=0,it=0,at=0,ot=0,st=0,ct=0,lt=0,ut=0,dt=0,ft=0,pt,mt,ht,gt,vt,yt=null,yr=0,br,hw=new L.Buf16(R+1),gw=new L.Buf16(R+1),_w=null,vw=0,yw,bw,xw;for(rt=0;rt<=R;rt++)hw[rt]=0;for(it=0;it<Ie;it++)hw[I[Fe+it]]++;for(st=Ge,ot=R;ot>=1&&hw[ot]===0;ot--);if(st>ot&&(st=ot),ot===0)return Le[Re++]=20971520,Le[Re++]=20971520,Be.bits=1,0;for(at=1;at<ot&&hw[at]===0;at++);for(st<at&&(st=at),ut=1,rt=1;rt<=R;rt++)if(ut<<=1,ut-=hw[rt],ut<0)return-1;if(ut>0&&(F===Oe||ot!==1))return-1;for(gw[1]=0,rt=1;rt<R;rt++)gw[rt+1]=gw[rt]+hw[rt];for(it=0;it<Ie;it++)I[Fe+it]!==0&&(ze[gw[I[Fe+it]]++]=it);if(F===Oe?(yt=_w=ze,br=19):F===ke?(yt=je,yr-=257,_w=Me,vw-=257,br=256):(yt=Ne,_w=Pe,br=-1),ft=0,it=0,rt=at,vt=Re,ct=st,lt=0,ht=-1,dt=1<<st,gt=dt-1,F===ke&&dt>z||F===Ae&&dt>De)return 1;for(;;){yw=rt-lt,ze[it]<br?(bw=0,xw=ze[it]):ze[it]>br?(bw=_w[vw+ze[it]],xw=yt[yr+ze[it]]):(bw=96,xw=0),pt=1<<rt-lt,mt=1<<ct,at=mt;do mt-=pt,Le[vt+(ft>>lt)+mt]=yw<<24|bw<<16|xw|0;while(mt!==0);for(pt=1<<rt-1;ft&pt;)pt>>=1;if(pt===0?ft=0:(ft&=pt-1,ft+=pt),it++,--hw[rt]===0){if(rt===ot)break;rt=I[Fe+ze[it]]}if(rt>st&&(ft&gt)!==ht){for(lt===0&&(lt=st),vt+=at,ct=rt-lt,ut=1<<ct;ct+lt<ot&&(ut-=hw[ct+lt],!(ut<=0));)ct++,ut<<=1;if(dt+=1<<ct,F===ke&&dt>z||F===Ae&&dt>De)return 1;ht=ft&gt,Le[ht]=st<<24|ct<<16|vt-Re|0}}return ft!==0&&(Le[vt+ft]=rt-lt<<24|4194304),Be.bits=st,0}})),require_inflate=__commonJSMin((F=>{var I=require_common(),L=require_adler32(),R=require_crc32(),z=require_inffast(),De=require_inftrees(),Oe=0,ke=1,Ae=2,je=4,Me=5,Ne=6,Pe=0,Fe=1,Ie=2,Le=-2,Re=-3,ze=-4,Be=-5,Ge=8,rt=1,it=2,at=3,ot=4,st=5,ct=6,lt=7,ut=8,dt=9,ft=10,pt=11,mt=12,ht=13,gt=14,vt=15,yt=16,yr=17,br=18,hw=19,gw=20,_w=21,vw=22,yw=23,bw=24,xw=25,Sw=26,Cw=27,ww=28,Tw=29,Ew=30,Dw=31,Ow=32,kw=852,Aw=592,jw=15;function Mw(F){return(F>>>24&255)+(F>>>8&65280)+((F&65280)<<8)+((F&255)<<24)}function Nw(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Pw(F){var L;return!F||!F.state?Le:(L=F.state,F.total_in=F.total_out=L.total=0,F.msg=``,L.wrap&&(F.adler=L.wrap&1),L.mode=rt,L.last=0,L.havedict=0,L.dmax=32768,L.head=null,L.hold=0,L.bits=0,L.lencode=L.lendyn=new I.Buf32(kw),L.distcode=L.distdyn=new I.Buf32(Aw),L.sane=1,L.back=-1,Pe)}function Fw(F){var I;return!F||!F.state?Le:(I=F.state,I.wsize=0,I.whave=0,I.wnext=0,Pw(F))}function Iw(F,I){var L,R;return!F||!F.state||(R=F.state,I<0?(L=0,I=-I):(L=(I>>4)+1,I<48&&(I&=15)),I&&(I<8||I>15))?Le:(R.window!==null&&R.wbits!==I&&(R.window=null),R.wrap=L,R.wbits=I,Fw(F))}function Lw(F,I){var L,R;return F?(R=new Nw,F.state=R,R.window=null,L=Iw(F,I),L!==Pe&&(F.state=null),L):Le}function Rw(F){return Lw(F,jw)}var zw=!0,Bw,Vw;function Hw(F){if(zw){var L;for(Bw=new I.Buf32(512),Vw=new I.Buf32(32),L=0;L<144;)F.lens[L++]=8;for(;L<256;)F.lens[L++]=9;for(;L<280;)F.lens[L++]=7;for(;L<288;)F.lens[L++]=8;for(De(ke,F.lens,0,288,Bw,0,F.work,{bits:9}),L=0;L<32;)F.lens[L++]=5;De(Ae,F.lens,0,32,Vw,0,F.work,{bits:5}),zw=!1}F.lencode=Bw,F.lenbits=9,F.distcode=Vw,F.distbits=5}function Uw(F,L,R,z){var De,Oe=F.state;return Oe.window===null&&(Oe.wsize=1<<Oe.wbits,Oe.wnext=0,Oe.whave=0,Oe.window=new I.Buf8(Oe.wsize)),z>=Oe.wsize?(I.arraySet(Oe.window,L,R-Oe.wsize,Oe.wsize,0),Oe.wnext=0,Oe.whave=Oe.wsize):(De=Oe.wsize-Oe.wnext,De>z&&(De=z),I.arraySet(Oe.window,L,R-z,De,Oe.wnext),z-=De,z?(I.arraySet(Oe.window,L,R-z,z,0),Oe.wnext=z,Oe.whave=Oe.wsize):(Oe.wnext+=De,Oe.wnext===Oe.wsize&&(Oe.wnext=0),Oe.whave<Oe.wsize&&(Oe.whave+=De))),0}function Ww(F,kw){var Aw,jw,Nw,Pw,Fw,Iw,Lw,Rw,zw,Bw,Vw,Ww,Gw,Kw,qw=0,Jw,Yw,Xw,Zw,Qw,$w,eT,tT,nT=new I.Buf8(4),rT,iT,aT=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!F||!F.state||!F.output||!F.input&&F.avail_in!==0)return Le;Aw=F.state,Aw.mode===mt&&(Aw.mode=ht),Fw=F.next_out,Nw=F.output,Lw=F.avail_out,Pw=F.next_in,jw=F.input,Iw=F.avail_in,Rw=Aw.hold,zw=Aw.bits,Bw=Iw,Vw=Lw,tT=Pe;inf_leave:for(;;)switch(Aw.mode){case rt:if(Aw.wrap===0){Aw.mode=ht;break}for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.wrap&2&&Rw===35615){Aw.check=0,nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0),Rw=0,zw=0,Aw.mode=it;break}if(Aw.flags=0,Aw.head&&(Aw.head.done=!1),!(Aw.wrap&1)||(((Rw&255)<<8)+(Rw>>8))%31){F.msg=`incorrect header check`,Aw.mode=Ew;break}if((Rw&15)!==Ge){F.msg=`unknown compression method`,Aw.mode=Ew;break}if(Rw>>>=4,zw-=4,eT=(Rw&15)+8,Aw.wbits===0)Aw.wbits=eT;else if(eT>Aw.wbits){F.msg=`invalid window size`,Aw.mode=Ew;break}Aw.dmax=1<<eT,F.adler=Aw.check=1,Aw.mode=Rw&512?ft:mt,Rw=0,zw=0;break;case it:for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.flags=Rw,(Aw.flags&255)!==Ge){F.msg=`unknown compression method`,Aw.mode=Ew;break}if(Aw.flags&57344){F.msg=`unknown header flags set`,Aw.mode=Ew;break}Aw.head&&(Aw.head.text=Rw>>8&1),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0,Aw.mode=at;case at:for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.head&&(Aw.head.time=Rw),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,nT[2]=Rw>>>16&255,nT[3]=Rw>>>24&255,Aw.check=R(Aw.check,nT,4,0)),Rw=0,zw=0,Aw.mode=ot;case ot:for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.head&&(Aw.head.xflags=Rw&255,Aw.head.os=Rw>>8),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0,Aw.mode=st;case st:if(Aw.flags&1024){for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.length=Rw,Aw.head&&(Aw.head.extra_len=Rw),Aw.flags&512&&(nT[0]=Rw&255,nT[1]=Rw>>>8&255,Aw.check=R(Aw.check,nT,2,0)),Rw=0,zw=0}else Aw.head&&(Aw.head.extra=null);Aw.mode=ct;case ct:if(Aw.flags&1024&&(Ww=Aw.length,Ww>Iw&&(Ww=Iw),Ww&&(Aw.head&&(eT=Aw.head.extra_len-Aw.length,Aw.head.extra||(Aw.head.extra=Array(Aw.head.extra_len)),I.arraySet(Aw.head.extra,jw,Pw,Ww,eT)),Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,Aw.length-=Ww),Aw.length))break inf_leave;Aw.length=0,Aw.mode=lt;case lt:if(Aw.flags&2048){if(Iw===0)break inf_leave;Ww=0;do eT=jw[Pw+Ww++],Aw.head&&eT&&Aw.length<65536&&(Aw.head.name+=String.fromCharCode(eT));while(eT&&Ww<Iw);if(Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,eT)break inf_leave}else Aw.head&&(Aw.head.name=null);Aw.length=0,Aw.mode=ut;case ut:if(Aw.flags&4096){if(Iw===0)break inf_leave;Ww=0;do eT=jw[Pw+Ww++],Aw.head&&eT&&Aw.length<65536&&(Aw.head.comment+=String.fromCharCode(eT));while(eT&&Ww<Iw);if(Aw.flags&512&&(Aw.check=R(Aw.check,jw,Ww,Pw)),Iw-=Ww,Pw+=Ww,eT)break inf_leave}else Aw.head&&(Aw.head.comment=null);Aw.mode=dt;case dt:if(Aw.flags&512){for(;zw<16;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw!==(Aw.check&65535)){F.msg=`header crc mismatch`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.head&&(Aw.head.hcrc=Aw.flags>>9&1,Aw.head.done=!0),F.adler=Aw.check=0,Aw.mode=mt;break;case ft:for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}F.adler=Aw.check=Mw(Rw),Rw=0,zw=0,Aw.mode=pt;case pt:if(Aw.havedict===0)return F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,Ie;F.adler=Aw.check=1,Aw.mode=mt;case mt:if(kw===Me||kw===Ne)break inf_leave;case ht:if(Aw.last){Rw>>>=zw&7,zw-=zw&7,Aw.mode=Cw;break}for(;zw<3;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}switch(Aw.last=Rw&1,Rw>>>=1,--zw,Rw&3){case 0:Aw.mode=gt;break;case 1:if(Hw(Aw),Aw.mode=gw,kw===Ne){Rw>>>=2,zw-=2;break inf_leave}break;case 2:Aw.mode=yr;break;case 3:F.msg=`invalid block type`,Aw.mode=Ew}Rw>>>=2,zw-=2;break;case gt:for(Rw>>>=zw&7,zw-=zw&7;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if((Rw&65535)!=(Rw>>>16^65535)){F.msg=`invalid stored block lengths`,Aw.mode=Ew;break}if(Aw.length=Rw&65535,Rw=0,zw=0,Aw.mode=vt,kw===Ne)break inf_leave;case vt:Aw.mode=yt;case yt:if(Ww=Aw.length,Ww){if(Ww>Iw&&(Ww=Iw),Ww>Lw&&(Ww=Lw),Ww===0)break inf_leave;I.arraySet(Nw,jw,Pw,Ww,Fw),Iw-=Ww,Pw+=Ww,Lw-=Ww,Fw+=Ww,Aw.length-=Ww;break}Aw.mode=mt;break;case yr:for(;zw<14;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Aw.nlen=(Rw&31)+257,Rw>>>=5,zw-=5,Aw.ndist=(Rw&31)+1,Rw>>>=5,zw-=5,Aw.ncode=(Rw&15)+4,Rw>>>=4,zw-=4,Aw.nlen>286||Aw.ndist>30){F.msg=`too many length or distance symbols`,Aw.mode=Ew;break}Aw.have=0,Aw.mode=br;case br:for(;Aw.have<Aw.ncode;){for(;zw<3;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.lens[aT[Aw.have++]]=Rw&7,Rw>>>=3,zw-=3}for(;Aw.have<19;)Aw.lens[aT[Aw.have++]]=0;if(Aw.lencode=Aw.lendyn,Aw.lenbits=7,rT={bits:Aw.lenbits},tT=De(Oe,Aw.lens,0,19,Aw.lencode,0,Aw.work,rT),Aw.lenbits=rT.bits,tT){F.msg=`invalid code lengths set`,Aw.mode=Ew;break}Aw.have=0,Aw.mode=hw;case hw:for(;Aw.have<Aw.nlen+Aw.ndist;){for(;qw=Aw.lencode[Rw&(1<<Aw.lenbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Xw<16)Rw>>>=Jw,zw-=Jw,Aw.lens[Aw.have++]=Xw;else{if(Xw===16){for(iT=Jw+2;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw>>>=Jw,zw-=Jw,Aw.have===0){F.msg=`invalid bit length repeat`,Aw.mode=Ew;break}eT=Aw.lens[Aw.have-1],Ww=3+(Rw&3),Rw>>>=2,zw-=2}else if(Xw===17){for(iT=Jw+3;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Jw,zw-=Jw,eT=0,Ww=3+(Rw&7),Rw>>>=3,zw-=3}else{for(iT=Jw+7;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Jw,zw-=Jw,eT=0,Ww=11+(Rw&127),Rw>>>=7,zw-=7}if(Aw.have+Ww>Aw.nlen+Aw.ndist){F.msg=`invalid bit length repeat`,Aw.mode=Ew;break}for(;Ww--;)Aw.lens[Aw.have++]=eT}}if(Aw.mode===Ew)break;if(Aw.lens[256]===0){F.msg=`invalid code -- missing end-of-block`,Aw.mode=Ew;break}if(Aw.lenbits=9,rT={bits:Aw.lenbits},tT=De(ke,Aw.lens,0,Aw.nlen,Aw.lencode,0,Aw.work,rT),Aw.lenbits=rT.bits,tT){F.msg=`invalid literal/lengths set`,Aw.mode=Ew;break}if(Aw.distbits=6,Aw.distcode=Aw.distdyn,rT={bits:Aw.distbits},tT=De(Ae,Aw.lens,Aw.nlen,Aw.ndist,Aw.distcode,0,Aw.work,rT),Aw.distbits=rT.bits,tT){F.msg=`invalid distances set`,Aw.mode=Ew;break}if(Aw.mode=gw,kw===Ne)break inf_leave;case gw:Aw.mode=_w;case _w:if(Iw>=6&&Lw>=258){F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,z(F,Vw),Fw=F.next_out,Nw=F.output,Lw=F.avail_out,Pw=F.next_in,jw=F.input,Iw=F.avail_in,Rw=Aw.hold,zw=Aw.bits,Aw.mode===mt&&(Aw.back=-1);break}for(Aw.back=0;qw=Aw.lencode[Rw&(1<<Aw.lenbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Yw&&!(Yw&240)){for(Zw=Jw,Qw=Yw,$w=Xw;qw=Aw.lencode[$w+((Rw&(1<<Zw+Qw)-1)>>Zw)],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Zw+Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Zw,zw-=Zw,Aw.back+=Zw}if(Rw>>>=Jw,zw-=Jw,Aw.back+=Jw,Aw.length=Xw,Yw===0){Aw.mode=Sw;break}if(Yw&32){Aw.back=-1,Aw.mode=mt;break}if(Yw&64){F.msg=`invalid literal/length code`,Aw.mode=Ew;break}Aw.extra=Yw&15,Aw.mode=vw;case vw:if(Aw.extra){for(iT=Aw.extra;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.length+=Rw&(1<<Aw.extra)-1,Rw>>>=Aw.extra,zw-=Aw.extra,Aw.back+=Aw.extra}Aw.was=Aw.length,Aw.mode=yw;case yw:for(;qw=Aw.distcode[Rw&(1<<Aw.distbits)-1],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(!(Yw&240)){for(Zw=Jw,Qw=Yw,$w=Xw;qw=Aw.distcode[$w+((Rw&(1<<Zw+Qw)-1)>>Zw)],Jw=qw>>>24,Yw=qw>>>16&255,Xw=qw&65535,!(Zw+Jw<=zw);){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Rw>>>=Zw,zw-=Zw,Aw.back+=Zw}if(Rw>>>=Jw,zw-=Jw,Aw.back+=Jw,Yw&64){F.msg=`invalid distance code`,Aw.mode=Ew;break}Aw.offset=Xw,Aw.extra=Yw&15,Aw.mode=bw;case bw:if(Aw.extra){for(iT=Aw.extra;zw<iT;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}Aw.offset+=Rw&(1<<Aw.extra)-1,Rw>>>=Aw.extra,zw-=Aw.extra,Aw.back+=Aw.extra}if(Aw.offset>Aw.dmax){F.msg=`invalid distance too far back`,Aw.mode=Ew;break}Aw.mode=xw;case xw:if(Lw===0)break inf_leave;if(Ww=Vw-Lw,Aw.offset>Ww){if(Ww=Aw.offset-Ww,Ww>Aw.whave&&Aw.sane){F.msg=`invalid distance too far back`,Aw.mode=Ew;break}Ww>Aw.wnext?(Ww-=Aw.wnext,Gw=Aw.wsize-Ww):Gw=Aw.wnext-Ww,Ww>Aw.length&&(Ww=Aw.length),Kw=Aw.window}else Kw=Nw,Gw=Fw-Aw.offset,Ww=Aw.length;Ww>Lw&&(Ww=Lw),Lw-=Ww,Aw.length-=Ww;do Nw[Fw++]=Kw[Gw++];while(--Ww);Aw.length===0&&(Aw.mode=_w);break;case Sw:if(Lw===0)break inf_leave;Nw[Fw++]=Aw.length,Lw--,Aw.mode=_w;break;case Cw:if(Aw.wrap){for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw|=jw[Pw++]<<zw,zw+=8}if(Vw-=Lw,F.total_out+=Vw,Aw.total+=Vw,Vw&&(F.adler=Aw.check=Aw.flags?R(Aw.check,Nw,Vw,Fw-Vw):L(Aw.check,Nw,Vw,Fw-Vw)),Vw=Lw,(Aw.flags?Rw:Mw(Rw))!==Aw.check){F.msg=`incorrect data check`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.mode=ww;case ww:if(Aw.wrap&&Aw.flags){for(;zw<32;){if(Iw===0)break inf_leave;Iw--,Rw+=jw[Pw++]<<zw,zw+=8}if(Rw!==(Aw.total&4294967295)){F.msg=`incorrect length check`,Aw.mode=Ew;break}Rw=0,zw=0}Aw.mode=Tw;case Tw:tT=Fe;break inf_leave;case Ew:tT=Re;break inf_leave;case Dw:return ze;case Ow:default:return Le}return F.next_out=Fw,F.avail_out=Lw,F.next_in=Pw,F.avail_in=Iw,Aw.hold=Rw,Aw.bits=zw,(Aw.wsize||Vw!==F.avail_out&&Aw.mode<Ew&&(Aw.mode<Cw||kw!==je))&&Uw(F,F.output,F.next_out,Vw-F.avail_out)?(Aw.mode=Dw,ze):(Bw-=F.avail_in,Vw-=F.avail_out,F.total_in+=Bw,F.total_out+=Vw,Aw.total+=Vw,Aw.wrap&&Vw&&(F.adler=Aw.check=Aw.flags?R(Aw.check,Nw,Vw,F.next_out-Vw):L(Aw.check,Nw,Vw,F.next_out-Vw)),F.data_type=Aw.bits+(Aw.last?64:0)+(Aw.mode===mt?128:0)+(Aw.mode===gw||Aw.mode===vt?256:0),(Bw===0&&Vw===0||kw===je)&&tT===Pe&&(tT=Be),tT)}function Gw(F){if(!F||!F.state)return Le;var I=F.state;return I.window&&=null,F.state=null,Pe}function Kw(F,I){var L;return!F||!F.state||(L=F.state,!(L.wrap&2))?Le:(L.head=I,I.done=!1,Pe)}function qw(F,I){var R=I.length,z,De,Oe;return!F||!F.state||(z=F.state,z.wrap!==0&&z.mode!==pt)?Le:z.mode===pt&&(De=1,De=L(De,I,R,0),De!==z.check)?Re:(Oe=Uw(F,I,R,R),Oe?(z.mode=Dw,ze):(z.havedict=1,Pe))}F.inflateReset=Fw,F.inflateReset2=Iw,F.inflateResetKeep=Pw,F.inflateInit=Rw,F.inflateInit2=Lw,F.inflate=Ww,F.inflateEnd=Gw,F.inflateGetHeader=Kw,F.inflateSetDictionary=qw,F.inflateInfo=`pako inflate (from Nodeca project)`})),require_constants$1=__commonJSMin(((F,I)=>{I.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}})),require_binding=__commonJSMin((F=>{var I=require_assert(),L=require_zstream(),R=require_deflate(),z=require_inflate(),De=require_constants$1();for(var Oe in De)F[Oe]=De[Oe];F.NONE=0,F.DEFLATE=1,F.INFLATE=2,F.GZIP=3,F.GUNZIP=4,F.DEFLATERAW=5,F.INFLATERAW=6,F.UNZIP=7;var ke=31,Ae=139;function je(I){if(typeof I!=`number`||I<F.DEFLATE||I>F.UNZIP)throw TypeError(`Bad argument`);this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=I,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}je.prototype.close=function(){if(this.write_in_progress){this.pending_close=!0;return}this.pending_close=!1,I(this.init_done,`close before init`),I(this.mode<=F.UNZIP),this.mode===F.DEFLATE||this.mode===F.GZIP||this.mode===F.DEFLATERAW?R.deflateEnd(this.strm):(this.mode===F.INFLATE||this.mode===F.GUNZIP||this.mode===F.INFLATERAW||this.mode===F.UNZIP)&&z.inflateEnd(this.strm),this.mode=F.NONE,this.dictionary=null},je.prototype.write=function(F,I,L,R,z,De,Oe){return this._write(!0,F,I,L,R,z,De,Oe)},je.prototype.writeSync=function(F,I,L,R,z,De,Oe){return this._write(!1,F,I,L,R,z,De,Oe)},je.prototype._write=function(L,R,z,De,Oe,ke,Ae,je){if(I.equal(arguments.length,8),I(this.init_done,`write before init`),I(this.mode!==F.NONE,`already finalized`),I.equal(!1,this.write_in_progress,`write already in progress`),I.equal(!1,this.pending_close,`close is pending`),this.write_in_progress=!0,I.equal(!1,R===void 0,`must provide flush value`),this.write_in_progress=!0,R!==F.Z_NO_FLUSH&&R!==F.Z_PARTIAL_FLUSH&&R!==F.Z_SYNC_FLUSH&&R!==F.Z_FULL_FLUSH&&R!==F.Z_FINISH&&R!==F.Z_BLOCK)throw Error(`Invalid flush value`);if(z??(z=Buffer.alloc(0),Oe=0,De=0),this.strm.avail_in=Oe,this.strm.input=z,this.strm.next_in=De,this.strm.avail_out=je,this.strm.output=ke,this.strm.next_out=Ae,this.flush=R,!L)return this._process(),this._checkError()?this._afterSync():void 0;var Me=this;return process.nextTick(function(){Me._process(),Me._after()}),this},je.prototype._afterSync=function(){var F=this.strm.avail_out,I=this.strm.avail_in;return this.write_in_progress=!1,[I,F]},je.prototype._process=function(){var I=null;switch(this.mode){case F.DEFLATE:case F.GZIP:case F.DEFLATERAW:this.err=R.deflate(this.strm,this.flush);break;case F.UNZIP:switch(this.strm.avail_in>0&&(I=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(I===null)break;if(this.strm.input[I]===ke){if(this.gzip_id_bytes_read=1,I++,this.strm.avail_in===1)break}else{this.mode=F.INFLATE;break}case 1:if(I===null)break;this.strm.input[I]===Ae?(this.gzip_id_bytes_read=2,this.mode=F.GUNZIP):this.mode=F.INFLATE;break;default:throw Error(`invalid number of gzip magic number bytes read`)}case F.INFLATE:case F.GUNZIP:case F.INFLATERAW:for(this.err=z.inflate(this.strm,this.flush),this.err===F.Z_NEED_DICT&&this.dictionary&&(this.err=z.inflateSetDictionary(this.strm,this.dictionary),this.err===F.Z_OK?this.err=z.inflate(this.strm,this.flush):this.err===F.Z_DATA_ERROR&&(this.err=F.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===F.GUNZIP&&this.err===F.Z_STREAM_END&&this.strm.next_in[0]!==0;)this.reset(),this.err=z.inflate(this.strm,this.flush);break;default:throw Error(`Unknown mode `+this.mode)}},je.prototype._checkError=function(){switch(this.err){case F.Z_OK:case F.Z_BUF_ERROR:if(this.strm.avail_out!==0&&this.flush===F.Z_FINISH)return this._error(`unexpected end of file`),!1;break;case F.Z_STREAM_END:break;case F.Z_NEED_DICT:return this.dictionary==null?this._error(`Missing dictionary`):this._error(`Bad dictionary`),!1;default:return this._error(`Zlib error`),!1}return!0},je.prototype._after=function(){if(this._checkError()){var F=this.strm.avail_out,I=this.strm.avail_in;this.write_in_progress=!1,this.callback(I,F),this.pending_close&&this.close()}},je.prototype._error=function(F){this.strm.msg&&(F=this.strm.msg),this.onerror(F,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},je.prototype.init=function(L,R,z,De,Oe){I(arguments.length===4||arguments.length===5,`init(windowBits, level, memLevel, strategy, [dictionary])`),I(L>=8&&L<=15,`invalid windowBits`),I(R>=-1&&R<=9,`invalid compression level`),I(z>=1&&z<=9,`invalid memlevel`),I(De===F.Z_FILTERED||De===F.Z_HUFFMAN_ONLY||De===F.Z_RLE||De===F.Z_FIXED||De===F.Z_DEFAULT_STRATEGY,`invalid strategy`),this._init(R,L,z,De,Oe),this._setDictionary()},je.prototype.params=function(){throw Error(`deflateParams Not supported`)},je.prototype.reset=function(){this._reset(),this._setDictionary()},je.prototype._init=function(I,De,Oe,ke,Ae){switch(this.level=I,this.windowBits=De,this.memLevel=Oe,this.strategy=ke,this.flush=F.Z_NO_FLUSH,this.err=F.Z_OK,(this.mode===F.GZIP||this.mode===F.GUNZIP)&&(this.windowBits+=16),this.mode===F.UNZIP&&(this.windowBits+=32),(this.mode===F.DEFLATERAW||this.mode===F.INFLATERAW)&&(this.windowBits=-1*this.windowBits),this.strm=new L,this.mode){case F.DEFLATE:case F.GZIP:case F.DEFLATERAW:this.err=R.deflateInit2(this.strm,this.level,F.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case F.INFLATE:case F.GUNZIP:case F.INFLATERAW:case F.UNZIP:this.err=z.inflateInit2(this.strm,this.windowBits);break;default:throw Error(`Unknown mode `+this.mode)}this.err!==F.Z_OK&&this._error(`Init error`),this.dictionary=Ae,this.write_in_progress=!1,this.init_done=!0},je.prototype._setDictionary=function(){if(this.dictionary!=null){switch(this.err=F.Z_OK,this.mode){case F.DEFLATE:case F.DEFLATERAW:this.err=R.deflateSetDictionary(this.strm,this.dictionary);break;default:break}this.err!==F.Z_OK&&this._error(`Failed to set dictionary`)}},je.prototype._reset=function(){switch(this.err=F.Z_OK,this.mode){case F.DEFLATE:case F.DEFLATERAW:case F.GZIP:this.err=R.deflateReset(this.strm);break;case F.INFLATE:case F.INFLATERAW:case F.GUNZIP:this.err=z.inflateReset(this.strm);break;default:break}this.err!==F.Z_OK&&this._error(`Failed to reset stream`)},F.Zlib=je})),require_lib=__commonJSMin((F=>{var I=require_buffer().Buffer,L=require_stream().Transform,R=require_binding(),z=require_util$4(),De=require_assert().ok,Oe=require_buffer().kMaxLength,ke=`Cannot create final Buffer. It would be larger than 0x`+Oe.toString(16)+` bytes`;R.Z_MIN_WINDOWBITS=8,R.Z_MAX_WINDOWBITS=15,R.Z_DEFAULT_WINDOWBITS=15,R.Z_MIN_CHUNK=64,R.Z_MAX_CHUNK=1/0,R.Z_DEFAULT_CHUNK=16*1024,R.Z_MIN_MEMLEVEL=1,R.Z_MAX_MEMLEVEL=9,R.Z_DEFAULT_MEMLEVEL=8,R.Z_MIN_LEVEL=-1,R.Z_MAX_LEVEL=9,R.Z_DEFAULT_LEVEL=R.Z_DEFAULT_COMPRESSION;for(var Ae=Object.keys(R),je=0;je<Ae.length;je++){var Me=Ae[je];Me.match(/^Z/)&&Object.defineProperty(F,Me,{enumerable:!0,value:R[Me],writable:!1})}for(var Ne={Z_OK:R.Z_OK,Z_STREAM_END:R.Z_STREAM_END,Z_NEED_DICT:R.Z_NEED_DICT,Z_ERRNO:R.Z_ERRNO,Z_STREAM_ERROR:R.Z_STREAM_ERROR,Z_DATA_ERROR:R.Z_DATA_ERROR,Z_MEM_ERROR:R.Z_MEM_ERROR,Z_BUF_ERROR:R.Z_BUF_ERROR,Z_VERSION_ERROR:R.Z_VERSION_ERROR},Pe=Object.keys(Ne),Fe=0;Fe<Pe.length;Fe++){var Ie=Pe[Fe];Ne[Ne[Ie]]=Ie}Object.defineProperty(F,"codes",{enumerable:!0,value:Object.freeze(Ne),writable:!1}),F.Deflate=ze,F.Inflate=Be,F.Gzip=Ge,F.Gunzip=rt,F.DeflateRaw=it,F.InflateRaw=at,F.Unzip=ot,F.createDeflate=function(F){return new ze(F)},F.createInflate=function(F){return new Be(F)},F.createDeflateRaw=function(F){return new it(F)},F.createInflateRaw=function(F){return new at(F)},F.createGzip=function(F){return new Ge(F)},F.createGunzip=function(F){return new rt(F)},F.createUnzip=function(F){return new ot(F)},F.deflate=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new ze(I),F,L)},F.deflateSync=function(F,I){return Re(new ze(I),F)},F.gzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new Ge(I),F,L)},F.gzipSync=function(F,I){return Re(new Ge(I),F)},F.deflateRaw=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new it(I),F,L)},F.deflateRawSync=function(F,I){return Re(new it(I),F)},F.unzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new ot(I),F,L)},F.unzipSync=function(F,I){return Re(new ot(I),F)},F.inflate=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new Be(I),F,L)},F.inflateSync=function(F,I){return Re(new Be(I),F)},F.gunzip=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new rt(I),F,L)},F.gunzipSync=function(F,I){return Re(new rt(I),F)},F.inflateRaw=function(F,I,L){return typeof I==`function`&&(L=I,I={}),Le(new at(I),F,L)},F.inflateRawSync=function(F,I){return Re(new at(I),F)};function Le(F,L,R){var z=[],De=0;F.on(`error`,je),F.on(`end`,Me),F.end(L),Ae();function Ae(){for(var I;(I=F.read())!==null;)z.push(I),De+=I.length;F.once(`readable`,Ae)}function je(I){F.removeListener(`end`,Me),F.removeListener(`readable`,Ae),R(I)}function Me(){var L,Ae=null;De>=Oe?Ae=RangeError(ke):L=I.concat(z,De),z=[],F.close(),R(Ae,L)}}function Re(F,L){if(typeof L==`string`&&(L=I.from(L)),!I.isBuffer(L))throw TypeError(`Not a string or buffer`);var R=F._finishFlushFlag;return F._processChunk(L,R)}function ze(F){if(!(this instanceof ze))return new ze(F);ct.call(this,F,R.DEFLATE)}function Be(F){if(!(this instanceof Be))return new Be(F);ct.call(this,F,R.INFLATE)}function Ge(F){if(!(this instanceof Ge))return new Ge(F);ct.call(this,F,R.GZIP)}function rt(F){if(!(this instanceof rt))return new rt(F);ct.call(this,F,R.GUNZIP)}function it(F){if(!(this instanceof it))return new it(F);ct.call(this,F,R.DEFLATERAW)}function at(F){if(!(this instanceof at))return new at(F);ct.call(this,F,R.INFLATERAW)}function ot(F){if(!(this instanceof ot))return new ot(F);ct.call(this,F,R.UNZIP)}function st(F){return F===R.Z_NO_FLUSH||F===R.Z_PARTIAL_FLUSH||F===R.Z_SYNC_FLUSH||F===R.Z_FULL_FLUSH||F===R.Z_FINISH||F===R.Z_BLOCK}function ct(z,De){var Oe=this;if(this._opts=z||={},this._chunkSize=z.chunkSize||F.Z_DEFAULT_CHUNK,L.call(this,z),z.flush&&!st(z.flush))throw Error(`Invalid flush flag: `+z.flush);if(z.finishFlush&&!st(z.finishFlush))throw Error(`Invalid flush flag: `+z.finishFlush);if(this._flushFlag=z.flush||R.Z_NO_FLUSH,this._finishFlushFlag=z.finishFlush===void 0?R.Z_FINISH:z.finishFlush,z.chunkSize&&(z.chunkSize<F.Z_MIN_CHUNK||z.chunkSize>F.Z_MAX_CHUNK))throw Error(`Invalid chunk size: `+z.chunkSize);if(z.windowBits&&(z.windowBits<F.Z_MIN_WINDOWBITS||z.windowBits>F.Z_MAX_WINDOWBITS))throw Error(`Invalid windowBits: `+z.windowBits);if(z.level&&(z.level<F.Z_MIN_LEVEL||z.level>F.Z_MAX_LEVEL))throw Error(`Invalid compression level: `+z.level);if(z.memLevel&&(z.memLevel<F.Z_MIN_MEMLEVEL||z.memLevel>F.Z_MAX_MEMLEVEL))throw Error(`Invalid memLevel: `+z.memLevel);if(z.strategy&&z.strategy!=F.Z_FILTERED&&z.strategy!=F.Z_HUFFMAN_ONLY&&z.strategy!=F.Z_RLE&&z.strategy!=F.Z_FIXED&&z.strategy!=F.Z_DEFAULT_STRATEGY)throw Error(`Invalid strategy: `+z.strategy);if(z.dictionary&&!I.isBuffer(z.dictionary))throw Error(`Invalid dictionary: it should be a Buffer instance`);this._handle=new R.Zlib(De);var ke=this;this._hadError=!1,this._handle.onerror=function(I,L){lt(ke),ke._hadError=!0;var R=Error(I);R.errno=L,R.code=F.codes[L],ke.emit(`error`,R)};var Ae=F.Z_DEFAULT_COMPRESSION;typeof z.level==`number`&&(Ae=z.level);var je=F.Z_DEFAULT_STRATEGY;typeof z.strategy==`number`&&(je=z.strategy),this._handle.init(z.windowBits||F.Z_DEFAULT_WINDOWBITS,Ae,z.memLevel||F.Z_DEFAULT_MEMLEVEL,je,z.dictionary),this._buffer=I.allocUnsafe(this._chunkSize),this._offset=0,this._level=Ae,this._strategy=je,this.once(`end`,this.close),Object.defineProperty(this,"_closed",{get:function(){return!Oe._handle},configurable:!0,enumerable:!0})}z.inherits(ct,L),ct.prototype.params=function(I,L,z){if(I<F.Z_MIN_LEVEL||I>F.Z_MAX_LEVEL)throw RangeError(`Invalid compression level: `+I);if(L!=F.Z_FILTERED&&L!=F.Z_HUFFMAN_ONLY&&L!=F.Z_RLE&&L!=F.Z_FIXED&&L!=F.Z_DEFAULT_STRATEGY)throw TypeError(`Invalid strategy: `+L);if(this._level!==I||this._strategy!==L){var Oe=this;this.flush(R.Z_SYNC_FLUSH,function(){De(Oe._handle,`zlib binding closed`),Oe._handle.params(I,L),Oe._hadError||(Oe._level=I,Oe._strategy=L,z&&z())})}else process.nextTick(z)},ct.prototype.reset=function(){return De(this._handle,`zlib binding closed`),this._handle.reset()},ct.prototype._flush=function(F){this._transform(I.alloc(0),``,F)},ct.prototype.flush=function(F,L){var z=this,De=this._writableState;(typeof F==`function`||F===void 0&&!L)&&(L=F,F=R.Z_FULL_FLUSH),De.ended?L&&process.nextTick(L):De.ending?L&&this.once(`end`,L):De.needDrain?L&&this.once(`drain`,function(){return z.flush(F,L)}):(this._flushFlag=F,this.write(I.alloc(0),``,L))},ct.prototype.close=function(F){lt(this,F),process.nextTick(ut,this)};function lt(F,I){I&&process.nextTick(I),F._handle&&=(F._handle.close(),null)}function ut(F){F.emit(`close`)}ct.prototype._transform=function(F,L,z){var De,Oe=this._writableState,ke=(Oe.ending||Oe.ended)&&(!F||Oe.length===F.length);if(F!==null&&!I.isBuffer(F))return z(Error(`invalid input`));if(!this._handle)return z(Error(`zlib binding closed`));ke?De=this._finishFlushFlag:(De=this._flushFlag,F.length>=Oe.length&&(this._flushFlag=this._opts.flush||R.Z_NO_FLUSH)),this._processChunk(F,De,z)},ct.prototype._processChunk=function(F,L,R){var z=F&&F.length,Ae=this._chunkSize-this._offset,je=0,Me=this,Ne=typeof R==`function`;if(!Ne){var Pe=[],Fe=0,Ie;this.on(`error`,function(F){Ie=F}),De(this._handle,`zlib binding closed`);do var Le=this._handle.writeSync(L,F,je,z,this._buffer,this._offset,Ae);while(!this._hadError&&Be(Le[0],Le[1]));if(this._hadError)throw Ie;if(Fe>=Oe)throw lt(this),RangeError(ke);var Re=I.concat(Pe,Fe);return lt(this),Re}De(this._handle,`zlib binding closed`);var ze=this._handle.write(L,F,je,z,this._buffer,this._offset,Ae);ze.buffer=F,ze.callback=Be;function Be(Oe,ke){if(this&&(this.buffer=null,this.callback=null),!Me._hadError){var Ie=Ae-ke;if(De(Ie>=0,`have should not go down`),Ie>0){var Le=Me._buffer.slice(Me._offset,Me._offset+Ie);Me._offset+=Ie,Ne?Me.push(Le):(Pe.push(Le),Fe+=Le.length)}if((ke===0||Me._offset>=Me._chunkSize)&&(Ae=Me._chunkSize,Me._offset=0,Me._buffer=I.allocUnsafe(Me._chunkSize)),ke===0){if(je+=z-Oe,z=Oe,!Ne)return!0;var Re=Me._handle.write(L,F,je,z,Me._buffer,Me._offset,Me._chunkSize);Re.callback=Be,Re.buffer=F;return}if(!Ne)return!1;R()}}},z.inherits(ze,ct),z.inherits(Be,ct),z.inherits(Ge,ct),z.inherits(rt,ct),z.inherits(it,ct),z.inherits(at,ct),z.inherits(ot,ct)})),require_chunkstream=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_stream(),z=I.exports=function(){R.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding=`utf8`,this.writable=!0};L.inherits(z,R),z.prototype.read=function(F,I){this._reads.push({length:Math.abs(F),allowLess:F<0,func:I}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit(`drain`))}.bind(this))},z.prototype.write=function(F,I){if(!this.writable)return this.emit(`error`,Error(`Stream not writable`)),!1;let L;return L=Buffer.isBuffer(F)?F:Buffer.from(F,I||this._encoding),this._buffers.push(L),this._buffered+=L.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused},z.prototype.end=function(F,I){F&&this.write(F,I),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))},z.prototype.destroySoon=z.prototype.end,z.prototype._end=function(){this._reads.length>0&&this.emit(`error`,Error(`Unexpected end of input`)),this.destroy()},z.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit(`close`))},z.prototype._processReadAllowingLess=function(F){this._reads.shift();let I=this._buffers[0];I.length>F.length?(this._buffered-=F.length,this._buffers[0]=I.slice(F.length),F.func.call(this,I.slice(0,F.length))):(this._buffered-=I.length,this._buffers.shift(),F.func.call(this,I))},z.prototype._processRead=function(F){this._reads.shift();let I=0,L=0,R=Buffer.alloc(F.length);for(;I<F.length;){let z=this._buffers[L++],De=Math.min(z.length,F.length-I);z.copy(R,I,0,De),I+=De,De!==z.length&&(this._buffers[--L]=z.slice(De))}L>0&&this._buffers.splice(0,L),this._buffered-=F.length,F.func.call(this,R)},z.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let F=this._reads[0];if(F.allowLess)this._processReadAllowingLess(F);else if(this._buffered>=F.length)this._processRead(F);else break}this._buffers&&!this.writable&&this._end()}catch(F){this.emit(`error`,F)}}})),require_interlace=__commonJSMin((F=>{var I=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];F.getImagePasses=function(F,L){let R=[],z=F%8,De=L%8,Oe=(F-z)/8,ke=(L-De)/8;for(let F=0;F<I.length;F++){let L=I[F],Ae=Oe*L.x.length,je=ke*L.y.length;for(let F=0;F<L.x.length&&L.x[F]<z;F++)Ae++;for(let F=0;F<L.y.length&&L.y[F]<De;F++)je++;Ae>0&&je>0&&R.push({width:Ae,height:je,index:F})}return R},F.getInterlaceIterator=function(F){return function(L,R,z){let De=L%I[z].x.length,Oe=(L-De)/I[z].x.length*8+I[z].x[De],ke=R%I[z].y.length,Ae=(R-ke)/I[z].y.length*8+I[z].y[ke];return Oe*4+Ae*F*4}}})),require_paeth_predictor=__commonJSMin(((F,I)=>{I.exports=function(F,I,L){let R=F+I-L,z=Math.abs(R-F),De=Math.abs(R-I),Oe=Math.abs(R-L);return z<=De&&z<=Oe?F:De<=Oe?I:L}})),require_filter_parse=__commonJSMin(((F,I)=>{var L=require_interlace(),R=require_paeth_predictor();function z(F,I,L){let R=F*I;return L!==8&&(R=Math.ceil(R/(8/L))),R}var De=I.exports=function(F,I){let R=F.width,De=F.height,Oe=F.interlace,ke=F.bpp,Ae=F.depth;if(this.read=I.read,this.write=I.write,this.complete=I.complete,this._imageIndex=0,this._images=[],Oe){let F=L.getImagePasses(R,De);for(let I=0;I<F.length;I++)this._images.push({byteWidth:z(F[I].width,ke,Ae),height:F[I].height,lineIndex:0})}else this._images.push({byteWidth:z(R,ke,Ae),height:De,lineIndex:0});Ae===8?this._xComparison=ke:Ae===16?this._xComparison=ke*2:this._xComparison=1};De.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))},De.prototype._unFilterType1=function(F,I,L){let R=this._xComparison,z=R-1;for(let De=0;De<L;De++)I[De]=F[1+De]+(De>z?I[De-R]:0)},De.prototype._unFilterType2=function(F,I,L){let R=this._lastLine;for(let z=0;z<L;z++)I[z]=F[1+z]+(R?R[z]:0)},De.prototype._unFilterType3=function(F,I,L){let R=this._xComparison,z=R-1,De=this._lastLine;for(let Oe=0;Oe<L;Oe++){let L=F[1+Oe],ke=De?De[Oe]:0,Ae=Oe>z?I[Oe-R]:0;I[Oe]=L+Math.floor((Ae+ke)/2)}},De.prototype._unFilterType4=function(F,I,L){let z=this._xComparison,De=z-1,Oe=this._lastLine;for(let ke=0;ke<L;ke++){let L=F[1+ke],Ae=Oe?Oe[ke]:0;I[ke]=L+R(ke>De?I[ke-z]:0,Ae,ke>De&&Oe?Oe[ke-z]:0)}},De.prototype._reverseFilterLine=function(F){let I=F[0],L,R=this._images[this._imageIndex],z=R.byteWidth;if(I===0)L=F.slice(1,z+1);else switch(L=Buffer.alloc(z),I){case 1:this._unFilterType1(F,L,z);break;case 2:this._unFilterType2(F,L,z);break;case 3:this._unFilterType3(F,L,z);break;case 4:this._unFilterType4(F,L,z);break;default:throw Error(`Unrecognised filter type - `+I)}this.write(L),R.lineIndex++,R.lineIndex>=R.height?(this._lastLine=null,this._imageIndex++,R=this._images[this._imageIndex]):this._lastLine=L,R?this.read(R.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}})),require_filter_parse_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_chunkstream(),z=require_filter_parse(),De=I.exports=function(F){R.call(this);let I=[],L=this;this._filter=new z(F,{read:this.read.bind(this),write:function(F){I.push(F)},complete:function(){L.emit(`complete`,Buffer.concat(I))}}),this._filter.start()};L.inherits(De,R)})),require_constants=__commonJSMin(((F,I)=>{I.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}})),require_crc=__commonJSMin(((F,I)=>{var L=[];(function(){for(let F=0;F<256;F++){let I=F;for(let F=0;F<8;F++)I&1?I=3988292384^I>>>1:I>>>=1;L[F]=I}})();var R=I.exports=function(){this._crc=-1};R.prototype.write=function(F){for(let I=0;I<F.length;I++)this._crc=L[(this._crc^F[I])&255]^this._crc>>>8;return!0},R.prototype.crc32=function(){return this._crc^-1},R.crc32=function(F){let I=-1;for(let R=0;R<F.length;R++)I=L[(I^F[R])&255]^I>>>8;return I^-1}})),require_parser=__commonJSMin(((F,I)=>{var L=require_constants(),R=require_crc(),z=I.exports=function(F,I){this._options=F,F.checkCRC=F.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[L.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[L.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[L.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[L.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[L.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[L.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=I.read,this.error=I.error,this.metadata=I.metadata,this.gamma=I.gamma,this.transColor=I.transColor,this.palette=I.palette,this.parsed=I.parsed,this.inflateData=I.inflateData,this.finished=I.finished,this.simpleTransparency=I.simpleTransparency,this.headersFinished=I.headersFinished||function(){}};z.prototype.start=function(){this.read(L.PNG_SIGNATURE.length,this._parseSignature.bind(this))},z.prototype._parseSignature=function(F){let I=L.PNG_SIGNATURE;for(let L=0;L<I.length;L++)if(F[L]!==I[L]){this.error(Error(`Invalid file signature`));return}this.read(8,this._parseChunkBegin.bind(this))},z.prototype._parseChunkBegin=function(F){let I=F.readUInt32BE(0),z=F.readUInt32BE(4),De=``;for(let I=4;I<8;I++)De+=String.fromCharCode(F[I]);let Oe=!!(F[4]&32);if(!this._hasIHDR&&z!==L.TYPE_IHDR){this.error(Error(`Expected IHDR on beggining`));return}if(this._crc=new R,this._crc.write(Buffer.from(De)),this._chunks[z])return this._chunks[z](I);if(!Oe){this.error(Error(`Unsupported critical chunk type `+De));return}this.read(I+4,this._skipChunk.bind(this))},z.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))},z.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))},z.prototype._parseChunkEnd=function(F){let I=F.readInt32BE(0),L=this._crc.crc32();if(this._options.checkCRC&&L!==I){this.error(Error(`Crc error - `+I+` - `+L));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))},z.prototype._handleIHDR=function(F){this.read(F,this._parseIHDR.bind(this))},z.prototype._parseIHDR=function(F){this._crc.write(F);let I=F.readUInt32BE(0),R=F.readUInt32BE(4),z=F[8],De=F[9],Oe=F[10],ke=F[11],Ae=F[12];if(z!==8&&z!==4&&z!==2&&z!==1&&z!==16){this.error(Error(`Unsupported bit depth `+z));return}if(!(De in L.COLORTYPE_TO_BPP_MAP)){this.error(Error(`Unsupported color type`));return}if(Oe!==0){this.error(Error(`Unsupported compression method`));return}if(ke!==0){this.error(Error(`Unsupported filter method`));return}if(Ae!==0&&Ae!==1){this.error(Error(`Unsupported interlace method`));return}this._colorType=De;let je=L.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:I,height:R,depth:z,interlace:!!Ae,palette:!!(De&L.COLORTYPE_PALETTE),color:!!(De&L.COLORTYPE_COLOR),alpha:!!(De&L.COLORTYPE_ALPHA),bpp:je,colorType:De}),this._handleChunkEnd()},z.prototype._handlePLTE=function(F){this.read(F,this._parsePLTE.bind(this))},z.prototype._parsePLTE=function(F){this._crc.write(F);let I=Math.floor(F.length/3);for(let L=0;L<I;L++)this._palette.push([F[L*3],F[L*3+1],F[L*3+2],255]);this.palette(this._palette),this._handleChunkEnd()},z.prototype._handleTRNS=function(F){this.simpleTransparency(),this.read(F,this._parseTRNS.bind(this))},z.prototype._parseTRNS=function(F){if(this._crc.write(F),this._colorType===L.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error(`Transparency chunk must be after palette`));return}if(F.length>this._palette.length){this.error(Error(`More transparent colors than palette size`));return}for(let I=0;I<F.length;I++)this._palette[I][3]=F[I];this.palette(this._palette)}this._colorType===L.COLORTYPE_GRAYSCALE&&this.transColor([F.readUInt16BE(0)]),this._colorType===L.COLORTYPE_COLOR&&this.transColor([F.readUInt16BE(0),F.readUInt16BE(2),F.readUInt16BE(4)]),this._handleChunkEnd()},z.prototype._handleGAMA=function(F){this.read(F,this._parseGAMA.bind(this))},z.prototype._parseGAMA=function(F){this._crc.write(F),this.gamma(F.readUInt32BE(0)/L.GAMMA_DIVISION),this._handleChunkEnd()},z.prototype._handleIDAT=function(F){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-F,this._parseIDAT.bind(this,F))},z.prototype._parseIDAT=function(F,I){if(this._crc.write(I),this._colorType===L.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error(`Expected palette not found`);this.inflateData(I);let R=F-I.length;R>0?this._handleIDAT(R):this._handleChunkEnd()},z.prototype._handleIEND=function(F){this.read(F,this._parseIEND.bind(this))},z.prototype._parseIEND=function(F){this._crc.write(F),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}})),require_bitmapper=__commonJSMin((F=>{var I=require_interlace(),L=[function(){},function(F,I,L,R){if(R===I.length)throw Error(`Ran out of data`);let z=I[R];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=255},function(F,I,L,R){if(R+1>=I.length)throw Error(`Ran out of data`);let z=I[R];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=I[R+1]},function(F,I,L,R){if(R+2>=I.length)throw Error(`Ran out of data`);F[L]=I[R],F[L+1]=I[R+1],F[L+2]=I[R+2],F[L+3]=255},function(F,I,L,R){if(R+3>=I.length)throw Error(`Ran out of data`);F[L]=I[R],F[L+1]=I[R+1],F[L+2]=I[R+2],F[L+3]=I[R+3]}],R=[function(){},function(F,I,L,R){let z=I[0];F[L]=z,F[L+1]=z,F[L+2]=z,F[L+3]=R},function(F,I,L){let R=I[0];F[L]=R,F[L+1]=R,F[L+2]=R,F[L+3]=I[1]},function(F,I,L,R){F[L]=I[0],F[L+1]=I[1],F[L+2]=I[2],F[L+3]=R},function(F,I,L){F[L]=I[0],F[L+1]=I[1],F[L+2]=I[2],F[L+3]=I[3]}];function z(F,I){let L=[],R=0;function z(){if(R===F.length)throw Error(`Ran out of data`);let z=F[R];R++;let De,Oe,ke,Ae,je,Me,Ne,Pe;switch(I){default:throw Error(`unrecognised depth`);case 16:Ne=F[R],R++,L.push((z<<8)+Ne);break;case 4:Ne=z&15,Pe=z>>4,L.push(Pe,Ne);break;case 2:je=z&3,Me=z>>2&3,Ne=z>>4&3,Pe=z>>6&3,L.push(Pe,Ne,Me,je);break;case 1:De=z&1,Oe=z>>1&1,ke=z>>2&1,Ae=z>>3&1,je=z>>4&1,Me=z>>5&1,Ne=z>>6&1,Pe=z>>7&1,L.push(Pe,Ne,Me,je,Ae,ke,Oe,De);break}}return{get:function(F){for(;L.length<F;)z();let I=L.slice(0,F);return L=L.slice(F),I},resetAfterLine:function(){L.length=0},end:function(){if(R!==F.length)throw Error(`extra data found`)}}}function De(F,I,R,z,De,Oe){let ke=F.width,Ae=F.height,je=F.index;for(let F=0;F<Ae;F++)for(let Ae=0;Ae<ke;Ae++){let ke=R(Ae,F,je);L[z](I,De,ke,Oe),Oe+=z}return Oe}function Oe(F,I,L,z,De,Oe){let ke=F.width,Ae=F.height,je=F.index;for(let F=0;F<Ae;F++){for(let Ae=0;Ae<ke;Ae++){let ke=De.get(z),Me=L(Ae,F,je);R[z](I,ke,Me,Oe)}De.resetAfterLine()}}F.dataToBitMap=function(F,L){let R=L.width,ke=L.height,Ae=L.depth,je=L.bpp,Me=L.interlace,Ne;Ae!==8&&(Ne=z(F,Ae));let Pe;Pe=Ae<=8?Buffer.alloc(R*ke*4):new Uint16Array(R*ke*4);let Fe=2**Ae-1,Ie=0,Le,Re;if(Me)Le=I.getImagePasses(R,ke),Re=I.getInterlaceIterator(R,ke);else{let F=0;Re=function(){let I=F;return F+=4,I},Le=[{width:R,height:ke}]}for(let I=0;I<Le.length;I++)Ae===8?Ie=De(Le[I],Pe,Re,je,F,Ie):Oe(Le[I],Pe,Re,je,Ne,Fe);if(Ae===8){if(Ie!==F.length)throw Error(`extra data found`)}else Ne.end();return Pe}})),require_format_normaliser=__commonJSMin(((F,I)=>{function L(F,I,L,R,z){let De=0;for(let Oe=0;Oe<R;Oe++)for(let R=0;R<L;R++){let L=z[F[De]];if(!L)throw Error(`index `+F[De]+` not in palette`);for(let F=0;F<4;F++)I[De+F]=L[F];De+=4}}function R(F,I,L,R,z){let De=0;for(let Oe=0;Oe<R;Oe++)for(let R=0;R<L;R++){let L=!1;if(z.length===1?z[0]===F[De]&&(L=!0):z[0]===F[De]&&z[1]===F[De+1]&&z[2]===F[De+2]&&(L=!0),L)for(let F=0;F<4;F++)I[De+F]=0;De+=4}}function z(F,I,L,R,z){let De=255,Oe=2**z-1,ke=0;for(let z=0;z<R;z++)for(let R=0;R<L;R++){for(let L=0;L<4;L++)I[ke+L]=Math.floor(F[ke+L]*255/Oe+.5);ke+=4}}I.exports=function(F,I,De=!1){let Oe=I.depth,ke=I.width,Ae=I.height,je=I.colorType,Me=I.transColor,Ne=I.palette,Pe=F;return je===3?L(F,Pe,ke,Ae,Ne):(Me&&R(F,Pe,ke,Ae,Me),Oe!==8&&!De&&(Oe===16&&(Pe=Buffer.alloc(ke*Ae*4)),z(F,Pe,ke,Ae,Oe))),Pe}})),require_parser_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_lib(),z=require_chunkstream(),De=require_filter_parse_async(),Oe=require_parser(),ke=require_bitmapper(),Ae=require_format_normaliser(),je=I.exports=function(F){z.call(this),this._parser=new Oe(F,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,`gamma`),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=F,this.writable=!0,this._parser.start()};L.inherits(je,z),je.prototype._handleError=function(F){this.emit(`error`,F),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on(`error`,function(){})),this.errord=!0},je.prototype._inflateData=function(F){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=R.createInflate(),this._inflate.on(`error`,this.emit.bind(this,`error`)),this._filter.on(`complete`,this._complete.bind(this)),this._inflate.pipe(this._filter);else{let F=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,I=Math.max(F,R.Z_MIN_CHUNK);this._inflate=R.createInflate({chunkSize:I});let L=F,z=this.emit.bind(this,`error`);this._inflate.on(`error`,function(F){L&&z(F)}),this._filter.on(`complete`,this._complete.bind(this));let De=this._filter.write.bind(this._filter);this._inflate.on(`data`,function(F){L&&(F.length>L&&(F=F.slice(0,L)),L-=F.length,De(F))}),this._inflate.on(`end`,this._filter.end.bind(this._filter))}this._inflate.write(F)},je.prototype._handleMetaData=function(F){this._metaData=F,this._bitmapInfo=Object.create(F),this._filter=new De(this._bitmapInfo)},je.prototype._handleTransColor=function(F){this._bitmapInfo.transColor=F},je.prototype._handlePalette=function(F){this._bitmapInfo.palette=F},je.prototype._simpleTransparency=function(){this._metaData.alpha=!0},je.prototype._headersFinished=function(){this.emit(`metadata`,this._metaData)},je.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit(`error`,`No Inflate block`))},je.prototype._complete=function(F){if(this.errord)return;let I;try{let L=ke.dataToBitMap(F,this._bitmapInfo);I=Ae(L,this._bitmapInfo,this._options.skipRescale),L=null}catch(F){this._handleError(F);return}this.emit(`parsed`,I)}})),require_bitpacker=__commonJSMin(((F,I)=>{var L=require_constants();I.exports=function(F,I,R,z){let De=[L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(z.colorType)!==-1;if(z.colorType===z.inputColorType){let I=(function(){let F=new ArrayBuffer(2);return new DataView(F).setInt16(0,256,!0),new Int16Array(F)[0]!==256})();if(z.bitDepth===8||z.bitDepth===16&&I)return F}let Oe=z.bitDepth===16?new Uint16Array(F.buffer):F,ke=255,Ae=L.COLORTYPE_TO_BPP_MAP[z.inputColorType];Ae===4&&!z.inputHasAlpha&&(Ae=3);let je=L.COLORTYPE_TO_BPP_MAP[z.colorType];z.bitDepth===16&&(ke=65535,je*=2);let Me=Buffer.alloc(I*R*je),Ne=0,Pe=0,Fe=z.bgColor||{};Fe.red===void 0&&(Fe.red=ke),Fe.green===void 0&&(Fe.green=ke),Fe.blue===void 0&&(Fe.blue=ke);function Ie(){let F,I,R,Ae=ke;switch(z.inputColorType){case L.COLORTYPE_COLOR_ALPHA:Ae=Oe[Ne+3],F=Oe[Ne],I=Oe[Ne+1],R=Oe[Ne+2];break;case L.COLORTYPE_COLOR:F=Oe[Ne],I=Oe[Ne+1],R=Oe[Ne+2];break;case L.COLORTYPE_ALPHA:Ae=Oe[Ne+1],F=Oe[Ne],I=F,R=F;break;case L.COLORTYPE_GRAYSCALE:F=Oe[Ne],I=F,R=F;break;default:throw Error(`input color type:`+z.inputColorType+` is not supported at present`)}return z.inputHasAlpha&&(De||(Ae/=ke,F=Math.min(Math.max(Math.round((1-Ae)*Fe.red+Ae*F),0),ke),I=Math.min(Math.max(Math.round((1-Ae)*Fe.green+Ae*I),0),ke),R=Math.min(Math.max(Math.round((1-Ae)*Fe.blue+Ae*R),0),ke))),{red:F,green:I,blue:R,alpha:Ae}}for(let F=0;F<R;F++)for(let F=0;F<I;F++){let F=Ie(Oe,Ne);switch(z.colorType){case L.COLORTYPE_COLOR_ALPHA:case L.COLORTYPE_COLOR:z.bitDepth===8?(Me[Pe]=F.red,Me[Pe+1]=F.green,Me[Pe+2]=F.blue,De&&(Me[Pe+3]=F.alpha)):(Me.writeUInt16BE(F.red,Pe),Me.writeUInt16BE(F.green,Pe+2),Me.writeUInt16BE(F.blue,Pe+4),De&&Me.writeUInt16BE(F.alpha,Pe+6));break;case L.COLORTYPE_ALPHA:case L.COLORTYPE_GRAYSCALE:{let I=(F.red+F.green+F.blue)/3;z.bitDepth===8?(Me[Pe]=I,De&&(Me[Pe+1]=F.alpha)):(Me.writeUInt16BE(I,Pe),De&&Me.writeUInt16BE(F.alpha,Pe+2));break}default:throw Error(`unrecognised color Type `+z.colorType)}Ne+=Ae,Pe+=je}return Me}})),require_filter_pack=__commonJSMin(((F,I)=>{var L=require_paeth_predictor();function R(F,I,L,R,z){for(let De=0;De<L;De++)R[z+De]=F[I+De]}function z(F,I,L){let R=0,z=I+L;for(let L=I;L<z;L++)R+=Math.abs(F[L]);return R}function De(F,I,L,R,z,De){for(let Oe=0;Oe<L;Oe++){let L=Oe>=De?F[I+Oe-De]:0,ke=F[I+Oe]-L;R[z+Oe]=ke}}function Oe(F,I,L,R){let z=0;for(let De=0;De<L;De++){let L=De>=R?F[I+De-R]:0,Oe=F[I+De]-L;z+=Math.abs(Oe)}return z}function ke(F,I,L,R,z){for(let De=0;De<L;De++){let Oe=I>0?F[I+De-L]:0,ke=F[I+De]-Oe;R[z+De]=ke}}function Ae(F,I,L){let R=0,z=I+L;for(let De=I;De<z;De++){let z=I>0?F[De-L]:0,Oe=F[De]-z;R+=Math.abs(Oe)}return R}function je(F,I,L,R,z,De){for(let Oe=0;Oe<L;Oe++){let ke=Oe>=De?F[I+Oe-De]:0,Ae=I>0?F[I+Oe-L]:0,je=F[I+Oe]-(ke+Ae>>1);R[z+Oe]=je}}function Me(F,I,L,R){let z=0;for(let De=0;De<L;De++){let Oe=De>=R?F[I+De-R]:0,ke=I>0?F[I+De-L]:0,Ae=F[I+De]-(Oe+ke>>1);z+=Math.abs(Ae)}return z}function Ne(F,I,R,z,De,Oe){for(let ke=0;ke<R;ke++){let Ae=ke>=Oe?F[I+ke-Oe]:0,je=I>0?F[I+ke-R]:0,Me=I>0&&ke>=Oe?F[I+ke-(R+Oe)]:0,Ne=F[I+ke]-L(Ae,je,Me);z[De+ke]=Ne}}function Pe(F,I,R,z){let De=0;for(let Oe=0;Oe<R;Oe++){let ke=Oe>=z?F[I+Oe-z]:0,Ae=I>0?F[I+Oe-R]:0,je=I>0&&Oe>=z?F[I+Oe-(R+z)]:0,Me=F[I+Oe]-L(ke,Ae,je);De+=Math.abs(Me)}return De}var Fe={0:R,1:De,2:ke,3:je,4:Ne},Ie={0:z,1:Oe,2:Ae,3:Me,4:Pe};I.exports=function(F,I,L,R,z){let De;if(!(`filterType`in R)||R.filterType===-1)De=[0,1,2,3,4];else if(typeof R.filterType==`number`)De=[R.filterType];else throw Error(`unrecognised filter types`);R.bitDepth===16&&(z*=2);let Oe=I*z,ke=0,Ae=0,je=Buffer.alloc((Oe+1)*L),Me=De[0];for(let I=0;I<L;I++){if(De.length>1){let I=1/0;for(let L=0;L<De.length;L++){let R=Ie[De[L]](F,Ae,Oe,z);R<I&&(Me=De[L],I=R)}}je[ke]=Me,ke++,Fe[Me](F,Ae,Oe,je,ke,z),ke+=Oe,Ae+=Oe}return je}})),require_packer=__commonJSMin(((F,I)=>{var L=require_constants(),R=require_crc(),z=require_bitpacker(),De=require_filter_pack(),Oe=require_lib(),ke=I.exports=function(F){if(this._options=F,F.deflateChunkSize=F.deflateChunkSize||32*1024,F.deflateLevel=F.deflateLevel==null?9:F.deflateLevel,F.deflateStrategy=F.deflateStrategy==null?3:F.deflateStrategy,F.inputHasAlpha=F.inputHasAlpha==null||F.inputHasAlpha,F.deflateFactory=F.deflateFactory||Oe.createDeflate,F.bitDepth=F.bitDepth||8,F.colorType=typeof F.colorType==`number`?F.colorType:L.COLORTYPE_COLOR_ALPHA,F.inputColorType=typeof F.inputColorType==`number`?F.inputColorType:L.COLORTYPE_COLOR_ALPHA,[L.COLORTYPE_GRAYSCALE,L.COLORTYPE_COLOR,L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(F.colorType)===-1)throw Error(`option color type:`+F.colorType+` is not supported at present`);if([L.COLORTYPE_GRAYSCALE,L.COLORTYPE_COLOR,L.COLORTYPE_COLOR_ALPHA,L.COLORTYPE_ALPHA].indexOf(F.inputColorType)===-1)throw Error(`option input color type:`+F.inputColorType+` is not supported at present`);if(F.bitDepth!==8&&F.bitDepth!==16)throw Error(`option bit depth:`+F.bitDepth+` is not supported at present`)};ke.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}},ke.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())},ke.prototype.filterData=function(F,I,R){let Oe=z(F,I,R,this._options),ke=L.COLORTYPE_TO_BPP_MAP[this._options.colorType];return De(Oe,I,R,this._options,ke)},ke.prototype._packChunk=function(F,I){let L=I?I.length:0,z=Buffer.alloc(L+12);return z.writeUInt32BE(L,0),z.writeUInt32BE(F,4),I&&I.copy(z,8),z.writeInt32BE(R.crc32(z.slice(4,z.length-4)),z.length-4),z},ke.prototype.packGAMA=function(F){let I=Buffer.alloc(4);return I.writeUInt32BE(Math.floor(F*L.GAMMA_DIVISION),0),this._packChunk(L.TYPE_gAMA,I)},ke.prototype.packIHDR=function(F,I){let R=Buffer.alloc(13);return R.writeUInt32BE(F,0),R.writeUInt32BE(I,4),R[8]=this._options.bitDepth,R[9]=this._options.colorType,R[10]=0,R[11]=0,R[12]=0,this._packChunk(L.TYPE_IHDR,R)},ke.prototype.packIDAT=function(F){return this._packChunk(L.TYPE_IDAT,F)},ke.prototype.packIEND=function(){return this._packChunk(L.TYPE_IEND,null)}})),require_packer_async=__commonJSMin(((F,I)=>{var L=require_util$4(),R=require_stream(),z=require_constants(),De=require_packer(),Oe=I.exports=function(F){R.call(this);let I=F||{};this._packer=new De(I),this._deflate=this._packer.createDeflate(),this.readable=!0};L.inherits(Oe,R),Oe.prototype.pack=function(F,I,L,R){this.emit(`data`,Buffer.from(z.PNG_SIGNATURE)),this.emit(`data`,this._packer.packIHDR(I,L)),R&&this.emit(`data`,this._packer.packGAMA(R));let De=this._packer.filterData(F,I,L);this._deflate.on(`error`,this.emit.bind(this,`error`)),this._deflate.on(`data`,function(F){this.emit(`data`,this._packer.packIDAT(F))}.bind(this)),this._deflate.on(`end`,function(){this.emit(`data`,this._packer.packIEND()),this.emit(`end`)}.bind(this)),this._deflate.end(De)}})),require_sync_inflate=__commonJSMin(((F,I)=>{var L=require_assert().ok,R=require_lib(),z=require_util$4(),De=require_buffer().kMaxLength;function Oe(F){if(!(this instanceof Oe))return new Oe(F);F&&F.chunkSize<R.Z_MIN_CHUNK&&(F.chunkSize=R.Z_MIN_CHUNK),R.Inflate.call(this,F),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,F&&F.maxLength!=null&&(this._maxLength=F.maxLength)}function ke(F){return new Oe(F)}function Ae(F,I){I&&process.nextTick(I),F._handle&&=(F._handle.close(),null)}Oe.prototype._processChunk=function(F,I,z){if(typeof z==`function`)return R.Inflate._processChunk.call(this,F,I,z);let Oe=this,ke=F&&F.length,je=this._chunkSize-this._offset,Me=this._maxLength,Ne=0,Pe=[],Fe=0,Ie;this.on(`error`,function(F){Ie=F});function Le(F,I){if(Oe._hadError)return;let R=je-I;if(L(R>=0,`have should not go down`),R>0){let F=Oe._buffer.slice(Oe._offset,Oe._offset+R);if(Oe._offset+=R,F.length>Me&&(F=F.slice(0,Me)),Pe.push(F),Fe+=F.length,Me-=F.length,Me===0)return!1}return(I===0||Oe._offset>=Oe._chunkSize)&&(je=Oe._chunkSize,Oe._offset=0,Oe._buffer=Buffer.allocUnsafe(Oe._chunkSize)),I===0?(Ne+=ke-F,ke=F,!0):!1}L(this._handle,`zlib binding closed`);let Re;do Re=this._handle.writeSync(I,F,Ne,ke,this._buffer,this._offset,je),Re||=this._writeState;while(!this._hadError&&Le(Re[0],Re[1]));if(this._hadError)throw Ie;if(Fe>=De)throw Ae(this),RangeError(`Cannot create final Buffer. It would be larger than 0x`+De.toString(16)+` bytes`);let ze=Buffer.concat(Pe,Fe);return Ae(this),ze},z.inherits(Oe,R.Inflate);function je(F,I){if(typeof I==`string`&&(I=Buffer.from(I)),!(I instanceof Buffer))throw TypeError(`Not a string or buffer`);let L=F._finishFlushFlag;return L??=R.Z_FINISH,F._processChunk(I,L)}function Me(F,I){return je(new Oe(I),F)}I.exports=F=Me,F.Inflate=Oe,F.createInflate=ke,F.inflateSync=Me})),require_sync_reader=__commonJSMin(((F,I)=>{var L=I.exports=function(F){this._buffer=F,this._reads=[]};L.prototype.read=function(F,I){this._reads.push({length:Math.abs(F),allowLess:F<0,func:I})},L.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let F=this._reads[0];if(this._buffer.length&&(this._buffer.length>=F.length||F.allowLess)){this._reads.shift();let I=this._buffer;this._buffer=I.slice(F.length),F.func.call(this,I.slice(0,F.length))}else break}if(this._reads.length>0)throw Error(`There are some read requests waitng on finished stream`);if(this._buffer.length>0)throw Error(`unrecognised content at end of stream`)}})),require_filter_parse_sync=__commonJSMin((F=>{var I=require_sync_reader(),L=require_filter_parse();F.process=function(F,R){let z=[],De=new I(F);return new L(R,{read:De.read.bind(De),write:function(F){z.push(F)},complete:function(){}}).start(),De.process(),Buffer.concat(z)}})),require_parser_sync=__commonJSMin(((F,I)=>{var L=!0,R=require_lib(),z=require_sync_inflate();R.deflateSync||(L=!1);var De=require_sync_reader(),Oe=require_filter_parse_sync(),ke=require_parser(),Ae=require_bitmapper(),je=require_format_normaliser();I.exports=function(F,I){if(!L)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let Me;function Ne(F){Me=F}let Pe;function Fe(F){Pe=F}function Ie(F){Pe.transColor=F}function Le(F){Pe.palette=F}function Re(){Pe.alpha=!0}let ze;function Be(F){ze=F}let Ge=[];function rt(F){Ge.push(F)}let it=new De(F);if(new ke(I,{read:it.read.bind(it),error:Ne,metadata:Fe,gamma:Be,palette:Le,transColor:Ie,inflateData:rt,simpleTransparency:Re}).start(),it.process(),Me)throw Me;let at=Buffer.concat(Ge);Ge.length=0;let ot;if(Pe.interlace)ot=R.inflateSync(at);else{let F=((Pe.width*Pe.bpp*Pe.depth+7>>3)+1)*Pe.height;ot=z(at,{chunkSize:F,maxLength:F})}if(at=null,!ot||!ot.length)throw Error(`bad png - invalid inflate data response`);let st=Oe.process(ot,Pe);at=null;let ct=Ae.dataToBitMap(st,Pe);st=null;let lt=je(ct,Pe,I.skipRescale);return Pe.data=lt,Pe.gamma=ze||0,Pe}})),require_packer_sync=__commonJSMin(((F,I)=>{var L=!0,R=require_lib();R.deflateSync||(L=!1);var z=require_constants(),De=require_packer();I.exports=function(F,I){if(!L)throw Error(`To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0`);let Oe=new De(I||{}),ke=[];ke.push(Buffer.from(z.PNG_SIGNATURE)),ke.push(Oe.packIHDR(F.width,F.height)),F.gamma&&ke.push(Oe.packGAMA(F.gamma));let Ae=Oe.filterData(F.data,F.width,F.height),je=R.deflateSync(Ae,Oe.getDeflateOptions());if(Ae=null,!je||!je.length)throw Error(`bad png - invalid compressed data response`);return ke.push(Oe.packIDAT(je)),ke.push(Oe.packIEND()),Buffer.concat(ke)}})),require_png_sync=__commonJSMin((F=>{var I=require_parser_sync(),L=require_packer_sync();F.read=function(F,L){return I(F,L||{})},F.write=function(F,I){return L(F,I)}})),require_png=__commonJSMin((F=>{var I=require_util$4(),L=require_stream(),R=require_parser_async(),z=require_packer_async(),De=require_png_sync(),Oe=F.PNG=function(F){L.call(this),F||={},this.width=F.width|0,this.height=F.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,F.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new R(F),this._parser.on(`error`,this.emit.bind(this,`error`)),this._parser.on(`close`,this._handleClose.bind(this)),this._parser.on(`metadata`,this._metadata.bind(this)),this._parser.on(`gamma`,this._gamma.bind(this)),this._parser.on(`parsed`,function(F){this.data=F,this.emit(`parsed`,F)}.bind(this)),this._packer=new z(F),this._packer.on(`data`,this.emit.bind(this,`data`)),this._packer.on(`end`,this.emit.bind(this,`end`)),this._parser.on(`close`,this._handleClose.bind(this)),this._packer.on(`error`,this.emit.bind(this,`error`))};I.inherits(Oe,L),Oe.sync=De,Oe.prototype.pack=function(){return!this.data||!this.data.length?(this.emit(`error`,`No data provided`),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)},Oe.prototype.parse=function(F,I){if(I){let F,L;F=function(F){this.removeListener(`error`,L),this.data=F,I(null,this)}.bind(this),L=function(L){this.removeListener(`parsed`,F),I(L,null)}.bind(this),this.once(`parsed`,F),this.once(`error`,L)}return this.end(F),this},Oe.prototype.write=function(F){return this._parser.write(F),!0},Oe.prototype.end=function(F){this._parser.end(F)},Oe.prototype._metadata=function(F){this.width=F.width,this.height=F.height,this.emit(`metadata`,F)},Oe.prototype._gamma=function(F){this.gamma=F},Oe.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit(`close`)},Oe.bitblt=function(F,I,L,R,z,De,Oe,ke){if(L|=0,R|=0,z|=0,De|=0,Oe|=0,ke|=0,L>F.width||R>F.height||L+z>F.width||R+De>F.height)throw Error(`bitblt reading outside image`);if(Oe>I.width||ke>I.height||Oe+z>I.width||ke+De>I.height)throw Error(`bitblt writing outside image`);for(let Ae=0;Ae<De;Ae++)F.data.copy(I.data,(ke+Ae)*I.width+Oe<<2,(R+Ae)*F.width+L<<2,(R+Ae)*F.width+L+z<<2)},Oe.prototype.bitblt=function(F,I,L,R,z,De,ke){return Oe.bitblt(this,F,I,L,R,z,De,ke),this},Oe.adjustGamma=function(F){if(F.gamma){for(let I=0;I<F.height;I++)for(let L=0;L<F.width;L++){let R=F.width*I+L<<2;for(let I=0;I<3;I++){let L=F.data[R+I]/255;L**=1/2.2/F.gamma,F.data[R+I]=Math.round(L*255)}}F.gamma=0}},Oe.prototype.adjustGamma=function(){Oe.adjustGamma(this)}})),import_png=require_png(),MIME_TYPE=`image/png`,PNG_FILTER_AUTO=-1,PNG_FILTER_NONE=0,PNG_FILTER_SUB=1,PNG_FILTER_UP=2,PNG_FILTER_AVERAGE=3,PNG_FILTER_PATH=4,es_default=(()=>({mime:{[MIME_TYPE]:[`png`]},constants:{MIME_PNG:MIME_TYPE,PNG_FILTER_AUTO,PNG_FILTER_NONE,PNG_FILTER_SUB,PNG_FILTER_UP,PNG_FILTER_AVERAGE,PNG_FILTER_PATH},hasAlpha:{[MIME_TYPE]:!0},decoders:{[MIME_TYPE]:import_png.PNG.sync.read},encoders:{[MIME_TYPE](F){let I=new import_png.PNG({width:F.bitmap.width,height:F.bitmap.height});return I.data=F.bitmap.data,import_png.PNG.sync.write(I,{deflateLevel:F._deflateLevel,deflateStrategy:F._deflateStrategy,filterType:F._filterType,colorType:typeof F._colorType==`number`?F._colorType:F._rgba?6:2,inputHasAlpha:F._rgba})}},class:{_deflateLevel:9,_deflateStrategy:3,_filterType:PNG_FILTER_AUTO,_colorType:null,deflateLevel(F,I){return typeof F==`number`?F<0||F>9?throwError.call(this,`l must be a number 0 - 9`,I):(this._deflateLevel=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`l must be a number`,I)},deflateStrategy(F,I){return typeof F==`number`?F<0||F>3?throwError.call(this,`s must be a number 0 - 3`,I):(this._deflateStrategy=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`s must be a number`,I)},filterType(F,I){return typeof F==`number`?F<-1||F>4?throwError.call(this,`n must be -1 (auto) or a number 0 - 4`,I):(this._filterType=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`n must be a number`,I)},colorType(F,I){return typeof F==`number`?F!==0&&F!==2&&F!==4&&F!==6?throwError.call(this,`s must be a number 0, 2, 4, 6.`,I):(this._colorType=Math.round(F),isNodePattern(I)&&I.call(this,null,this),this):throwError.call(this,`s must be a number`,I)}}})),Jimp=configure$1({types:[es_default]}),colorizeCowTemplate=(()=>{let F={},I=memoize(F=>{let[,I,L,R]=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(F)??[``,`0`,`0`,`0`];return{r:parseInt(I,16),g:parseInt(L,16),b:parseInt(R,16)}});return async(L,R,{isBlinking:z=!1}={})=>{if(R===cowColors.RAINBOW)return z?animals.cow.rainbowBlinking:animals.cow.rainbow;let De=`${R}_${L}`;if(F[De])return F[De];try{let z=import_buffer.Buffer.from(L.split(`,`)[1]??``,`base64`),Oe=await Jimp.read(z);return Oe.scan(0,0,Oe.bitmap.width,Oe.bitmap.height,function(F,L){let{r:z,g:De,b:ke}=Jimp.intToRGBA(Oe.getPixelColor(F,L));if(z===102&&De===102&&ke===102){let z=I(COW_COLORS_HEX_MAP[R]),De=Jimp.rgbaToInt(z.r,z.g,z.b,255);Oe.setPixelColor(De,F,L)}}),F[De]=await Oe.getBase64Async(Jimp.MIME_PNG),F[De]}catch(F){return console.error(F),pixel_default}}})(),getCowImage=async(F,{isBlinking:I=!1}={})=>{let L=convertStringToInteger$1(F.id),{variations:R,blinkingVariations:z}=animals.cow,De=I?z:R,Oe=De[L%De.length];return await colorizeCowTemplate(Oe,F.color,{isBlinking:I})},isInViewport=F=>{let{top:I,left:L,bottom:R,right:z}=F.getBoundingClientRect();return I>=0&&L>=0&&R<=(window.innerHeight||document.documentElement.clientHeight)&&z<=(window.innerWidth||document.documentElement.clientWidth)},dotSize=`1.25em`,Bloodline=({colorsInBloodline:F})=>(0,import_jsx_runtime$2.jsx)(Ul$1,{className:`Bloodline`,sx:{display:`flex`,gap:`0.5em`,margin:`1em 0`},children:Object.keys(F).sort().map(F=>(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:COW_COLOR_NAMES[F],children:(0,import_jsx_runtime$2.jsx)(Li$1,{className:F.toLowerCase(),sx:{background:colors.cow[F.toLowerCase()],borderRadius:`50%`,border:`solid 1px #000`,height:dotSize,width:dotSize,marginBottom:0,marginTop:0}})},F))}),Bloodline_default=(0,import_react$10.memo)(Bloodline),isHeartFull=(F,I)=>F+.5<I,getCowMapById=memoize(F=>F.reduce((F,I)=>(F[I.id]=I,F),{})),Subheader=({canCowBeTradedFor:F,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,cowValue:De,handleCowAutomaticHugChange:Oe,handleCowBreedChange:ke,huggingMachinesRemain:Ae,playerId:je,isCowPurchased:Me})=>{let Ne=I.happiness*10,Pe=isCowInBreedingPen(I,L),Fe=L.cowId1===null||L.cowId2===null,Ie=R===I.id,Le=L.cowId1??L.cowId2,Re=getCowMapById(z)[Le??``],ze=I.gender!==Re?.gender,Be=Fe&&ze&&!Ie,Ge=!Be&&!Pe,rt=Me&&je!==I.originalOwnerId&&je===I.ownerId;return(0,import_jsx_runtime$2.jsxs)(`div`,{className:`Subheader`,children:[(0,import_jsx_runtime$2.jsx)(Bloodline_default,{colorsInBloodline:I.colorsInBloodline}),(Me||R)&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[I.daysOld,` `,I.daysOld===1?`day`:`days`,` old`]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Color: `,COW_COLOR_NAMES[I.color]]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[I.originalOwnerId===``?`Price`:`Value`,`:`,` `,moneyString(De)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Weight: `,getCowWeight(I),` lbs.`]}),(Me||F)&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Times traded: `,integerString(I.timesTraded)]}),rt&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Original owner: `,(0,import_jsx_runtime$2.jsx)(`strong`,{children:getPlayerName(I.originalOwnerId)})]}),Me&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`ol`,{className:`hearts`,children:nullArray(10).map((F,L)=>(0,import_jsx_runtime$2.jsx)(`li`,{children:isHeartFull(L,Ne)?(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:`heart is-full`,fontSize:`inherit`,htmlColor:colors.heart}):(0,import_jsx_runtime$2.jsx)(HeartOutlineIcon,{className:`heart`,fontSize:`inherit`})},`${I.id}_${L}`))}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Check this box to put `,I.name,` into a `,huggingMachine.name,` `,`and automatically hug them at the start of every day. Requires a Hugging Machine in your inventory.`]}),children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Checkbox,{color:`primary`,checked:I.isUsingHuggingMachine,onChange:F=>Oe&&Oe(F,I)}),disabled:!I.isUsingHuggingMachine&&!Ae,label:`Hug automatically`})}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,disableFocusListener:Ge,disableHoverListener:Ge,disableTouchListener:Ge,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:Pe?`Uncheck this box to return ${I.name} to the regular pen.`:`Check this box to move ${I.name} to the breeding pen to mate with a ${I.gender===genders.MALE?`female`:`male`} cow.`}),children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Checkbox,{color:`primary`,checked:Pe,inputProps:{"aria-label":`move cow to breeding pen`},onChange:F=>ke&&ke(F,I)}),disabled:!Pe&&!Be,label:`Breed`})})]})]})},genderIcons={[genders.FEMALE]:FemaleIcon,[genders.MALE]:MaleIcon},CowCard=({allowCustomPeerCowNames:F,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,debounced:De,handleCowAutomaticHugChange:Oe,handleCowBreedChange:ke,handleCowHugClick:Ae,handleCowOfferClick:je,handleCowPurchaseClick:Me,handleCowWithdrawClick:Ne,handleCowSellClick:Pe,handleCowTradeClick:Fe,playerId:Ie,inventory:Le,isCowOfferedForTradeByPeer:Re,isSelected:ze,isOnline:Be,money:Ge,purchasedCowPen:rt,huggingMachinesRemain:it=areHuggingMachinesInInventory(Le)})=>{let at=getCowDisplayName(I,Ie,F),[ot,st]=(0,import_react$10.useState)(at),[ct,lt]=(0,import_react$10.useState)(pixel_default),ut=(0,import_react$10.useRef)(null),dt=(0,import_react$10.useRef)(null),ft=!!z.find(({id:F})=>F===I.id)&&!Re,pt=getCowValue(I,I.originalOwnerId!==``),mt=Be&&!isCowInBreedingPen(I,L),ht=!!(Re&&R.length>0),gt=useIsMounted();(0,import_react$10.useEffect)(()=>{(async()=>{let F=await getCowImage(I);gt()!==!1&&lt(F)})(),st(getCowDisplayName(I,Ie,F))},[I,Ie,F,gt]),(0,import_react$10.useEffect)(()=>{if(ze){let{current:F}=dt,{current:I}=ut;if(!F||!I)return;F.scrollIntoView&&!isInViewport(I)&&F.scrollIntoView({behavior:`smooth`})}},[ze]);let vt=genderIcons[I.gender];return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(A$1,{className:`CowCard-scroll-anchor`,href:`#cow-${I.id}`,ref:dt,sx:{display:`block`,height:0,position:`relative`,top:`-0.75em`,visibility:`hidden`},children:`\xA0`}),(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`CowCard`,{"is-selected":ze,"is-purchased":ft}),raised:ze,ref:ut,sx:{"& .hearts":{marginTop:`0.5em`,"& li":{display:`inline`,margin:`0 0.25em 0 0`}},...ft?{"& .MuiCardHeader-root":{paddingTop:0},"& .MuiCardHeader-title":{alignItems:`baseline`,display:`flex`},"& .Bloodline":{margin:`0 0 1em`}}:{}},children:[ze&&(0,import_jsx_runtime$2.jsxs)(`span`,{className:`visually_hidden`,children:[ot,` is currently selected`]}),(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:ct,alt:`Cow`}),title:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[ft?(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,disabled:Ie!==I.originalOwnerId,onChange:F=>{st(F.target.value),De?.handleCowNameInputChange?.(F.target.value,I)},placeholder:`Name`,value:ot}):ot,` `,(0,import_jsx_runtime$2.jsx)(vt,{fontSize:`inherit`})]}),subheader:(0,import_jsx_runtime$2.jsx)(Subheader,{canCowBeTradedFor:ht,cow:I,cowBreedingPen:L,cowIdOfferedForTrade:R,cowInventory:z,cowValue:pt,handleCowBreedChange:ke,handleCowAutomaticHugChange:Oe,huggingMachinesRemain:it,playerId:Ie,isCowPurchased:ft})}),(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[!ft&&!Re&&(0,import_jsx_runtime$2.jsx)(Button,{className:`purchase`,color:`primary`,disabled:pt>Ge||z.length>=(PURCHASEABLE_COW_PENS.get(rt)?.cows??0),onClick:()=>Me?.(I),variant:`contained`,children:`Buy`}),ht&&(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:`The game will be saved when the trade is completed.`,children:(0,import_jsx_runtime$2.jsx)(Button,{className:`purchase`,color:`primary`,onClick:()=>Fe?.(I),variant:`contained`,children:`Trade`})}),ft&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(Button,{className:`hug`,color:`primary`,onClick:()=>Ae?.(I),variant:`contained`,children:`Hug`}),mt&&(R===I.id?(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:WITHDRAW_COW_FROM_TRADE(``,at),children:(0,import_jsx_runtime$2.jsx)(Button,{className:`offer`,color:`primary`,onClick:()=>{Ne?.(I)},variant:`contained`,children:`Withdraw`})}):(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:OFFER_COW_FOR_TRADE(``,at)}),children:(0,import_jsx_runtime$2.jsx)(Button,{className:`offer`,color:`primary`,onClick:()=>{je?.(I)},variant:`contained`,children:`Offer`})})),(0,import_jsx_runtime$2.jsx)(Button,{className:`sell`,color:`error`,onClick:()=>Pe?.(I),variant:`contained`,children:`Sell`})]})]})]})]})};function Consumer$27(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(CowCard,{...I,...L,...F})})}var TabPanel$3=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`cow-context-tabpanel-${R}`,"aria-labelledby":`cow-context-tab-${R}`,...z,children:L===R?I:null})},a11yProps$3=F=>({id:`cow-context-tab-${F}`,"aria-controls":`cow-context-tabpanel-${F}`}),{AGE,COLOR,GENDER,HAPPINESS,VALUE,WEIGHT}={AGE:`AGE`,COLOR:`COLOR`,GENDER:`GENDER`,HAPPINESS:`HAPPINESS`,VALUE:`VALUE`,WEIGHT:`WEIGHT`},sortCows=(F,I,L)=>{let R=F=>F;I===VALUE?R=getCowSellValue:I===WEIGHT?R=getCowWeight:I===AGE?R=({daysOld:F})=>F:I===COLOR?R=({color:F})=>F:I===GENDER?R=({gender:F})=>F:I===HAPPINESS&&(R=({happiness:F})=>F);let z=(0,import_lodash_sortby.default)(F,R);return L?z.reverse():z},numberOfCowsBreeding=({cowId1:F,cowId2:I})=>F?I?2:1:0,CowPenContextMenu=({cowBreedingPen:F,cowForSale:I,cowInventory:L,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSelect:Ae,handleCowSellClick:je,handleCowWithdrawClick:Me,purchasedCowPen:Ne,selectedCowId:Pe})=>{let[Fe,Ie]=(0,import_react$10.useState)(AGE),[Le,Re]=(0,import_react$10.useState)(!1),[ze,Be]=(0,import_react$10.useState)(0),[Ge,rt]=(0,import_react$10.useState)(``);(0,import_react$10.useEffect)(()=>{rt(``)},[ze]);let it=Ge?L.filter(F=>F.name.toLowerCase().includes(Ge.toLowerCase())):L,at=Ge?inventory$1.filter(F=>F.name.toLowerCase().includes(Ge.toLowerCase())):inventory$1;return(0,import_jsx_runtime$2.jsxs)(Div,{className:`CowPenContextMenu`,sx:{display:`flex`,flexFlow:`column`,"& h3":{textAlign:`center`},"& .MuiTab-root":{minWidth:`unset`},"& .sort-wrapper":{alignItems:`center`,display:`flex`,justifyContent:`flex-end`,"& .MuiFab-root":{margin:`0 1em`},"& .sort-select":{flexGrow:1}}},children:[(0,import_jsx_runtime$2.jsx)(`h3`,{children:`For sale`}),(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:I,isSelected:!1,isCowOfferedForTradeByPeer:!1}),(0,import_jsx_runtime$2.jsxs)(Tabs,{value:ze,onChange:(F,I)=>Be(I),"aria-label":`Cow tabs`,sx:{mt:`1rem`},children:[(0,import_jsx_runtime$2.jsx)(Tab,{label:`Cows`,...a11yProps$3(0)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Breeding Pen`,...a11yProps$3(1)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Supplies`,...a11yProps$3(2)})]}),(0,import_jsx_runtime$2.jsxs)(TabPanel$3,{value:ze,index:0,children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Capacity: `,L.length,` /`,` `,PURCHASEABLE_COW_PENS.get(Ne)?.cows]}),L.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search cows by name...`,onSearch:rt}),it.length>0&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[it.length>1&&(0,import_jsx_runtime$2.jsxs)(`div`,{className:`sort-wrapper`,children:[(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Toggle sorting order`,onClick:()=>Re(!Le),color:`primary`,children:Le?(0,import_jsx_runtime$2.jsx)(ArrowUpwardIcon,{}):(0,import_jsx_runtime$2.jsx)(ArrowDownwardIcon,{})}),(0,import_jsx_runtime$2.jsxs)(Select,{variant:`standard`,className:`sort-select`,displayEmpty:!0,value:Fe,onChange:({target:{value:F}})=>Ie(String(F)),children:[(0,import_jsx_runtime$2.jsx)(MenuItem,{value:VALUE,children:`Sort by Value`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:AGE,children:`Sort by Age`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:HAPPINESS,children:`Sort by Happiness`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:WEIGHT,children:`Sort by Weight`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:GENDER,children:`Sort by Gender`}),(0,import_jsx_runtime$2.jsx)(MenuItem,{value:COLOR,children:`Sort by Color`})]})]}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list purchased-cows`,children:sortCows(it,Fe,Le).map(I=>isCowInBreedingPen(I,F)?null:(0,import_jsx_runtime$2.jsx)(`li`,{onFocus:()=>Ae(I),onClick:()=>Ae(I),children:(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:I,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSellClick:je,handleCowWithdrawClick:Me,isCowPurchased:!0,isCowOfferedForTradeByPeer:!1,isSelected:I.id===Pe})},I.id))})]})]}),(0,import_jsx_runtime$2.jsx)(TabPanel$3,{value:ze,index:1,children:(()=>{let I=nullArray(numberOfCowsBreeding(F)).map((I,R)=>{let z=F[`cowId${R+1}`],De=typeof z==`string`?findCowById(L,z):null;return!De||!De.name.toLowerCase().includes(Ge.toLowerCase())?null:De}).filter(Boolean);return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Capacity: `,numberOfCowsBreeding(F),` / 2`]}),L.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search cows by name...`,onSearch:rt}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list purchased-cows breeding-cows`,children:I.map(F=>{if(!F)throw TypeError(`cow is undefined`);return(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$27,{cow:F,handleCowAutomaticHugChange:R,handleCowBreedChange:z,handleCowHugClick:De,handleCowNameInputChange:Oe,handleCowOfferClick:ke,handleCowSellClick:je,handleCowWithdrawClick:Me,isCowPurchased:!0,isCowOfferedForTradeByPeer:!1,isSelected:F.id===Pe})},F.id)})})]})})()}),(0,import_jsx_runtime$2.jsxs)(TabPanel$3,{value:ze,index:2,children:[inventory$1.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search supplies...`,onSearch:rt}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:at.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$29,{item:F,isPurchaseView:!0,showQuantity:!0})},F.id))})]})]})};function Consumer$26(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(CowPenContextMenu,{...F,...I})})}var FarmhandShuffleContextMenu=({farmhandShuffle:F,playerId:I,handleSettleFarmhandShuffleMatch:L})=>{let[R,z]=(0,import_react$10.useState)(!1),{isMatchInProgress:De,wager:Oe,totalWins:ke,totalLosses:Ae,currentWinStreak:je}=F;return(0,import_jsx_runtime$2.jsxs)(Div,{className:`FarmhandShuffleContextMenu`,children:[(0,import_jsx_runtime$2.jsx)(`h2`,{children:`Farmhand Shuffle`}),(0,import_jsx_runtime$2.jsxs)(Paper,{sx:{padding:`1em`,display:`flex`,flexDirection:`column`,gap:`0.75em`},children:[De&&(0,import_jsx_runtime$2.jsx)(P$1,{sx:{fontWeight:`bold`,textAlign:`center`},children:Oe>0?`Wager: ${moneyString(Oe)} · Prize: ${moneyString(Oe*2)}`:`No wager placed · playing for fun`}),(0,import_jsx_runtime$2.jsxs)(Div,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Wins: `,ke]}),(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Losses: `,Ae]})]}),(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Current win streak: `,je]})]}),De&&(0,import_jsx_runtime$2.jsx)(Button,{color:`error`,variant:`contained`,onClick:()=>z(!0),sx:{marginTop:`1em`,width:`100%`},children:`Forfeit Match`}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:`Farmhand`,open:R,onClose:()=>z(!1),maxWidth:`xs`,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{children:`Forfeit match?`}),(0,import_jsx_runtime$2.jsxs)(DialogContent,{dividers:!0,children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Are you sure that you want to forfeit this match?`,` `,Oe>0?`You'll lose your ${moneyString(Oe)} wager and it will count as a loss.`:`It will count as a loss.`]}),(0,import_jsx_runtime$2.jsxs)(DialogActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{autoFocus:!0,color:`primary`,onClick:()=>z(!1),children:`Cancel`}),(0,import_jsx_runtime$2.jsx)(Button,{color:`error`,onClick:()=>{L(FARMHAND_SHUFFLE_BOT_PLAYER_ID,I),z(!1)},children:`Do it`})]})]})]})]})};function Consumer$25(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(FarmhandShuffleContextMenu,{...F,...I})})}var PlayerInventory=(0,import_react$10.memo)(({playerInventory:F})=>(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:F,isSellView:!0}),(F,I)=>F.playerInventory===I.playerInventory),ContextPane=({playerInventory:F,stageFocus:I,inventory:L,inventoryLimit:R})=>{let z=!doesInventorySpaceRemain({inventory:L,inventoryLimit:R});return(0,import_jsx_runtime$2.jsx)(Div,{className:`ContextPane`,sx:{...centerTabsSx,margin:0,"& h2":{margin:`0.5em 0 1em`,textAlign:`center`},"& .inventory-info":{fontSize:`1em`},"& .inventory-title":{marginBottom:`0.5em`}},children:I===stageFocusType.COW_PEN?(0,import_jsx_runtime$2.jsx)(Consumer$26,{}):I===stageFocusType.FARMHAND_SHUFFLE?(0,import_jsx_runtime$2.jsx)(Consumer$25,{}):(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`h2`,{className:`inventory-title`,children:`Inventory`}),R>-1&&(0,import_jsx_runtime$2.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":z}),sx:{color:z?colors.error:void 0,textAlign:`center`},children:[`Capacity: `,integerString(inventorySpaceConsumed(L)),` /`,` `,integerString(R)]}),(0,import_jsx_runtime$2.jsx)(PlayerInventory,{playerInventory:F})]})})};function Consumer$24(){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:F,handlers:I})=>(0,import_jsx_runtime$2.jsx)(ContextPane,{...F,...I})})}function getFormGroupUtilityClass(F){return generateUtilityClass(`MuiFormGroup`,F)}var formGroupClasses=generateUtilityClasses(`MuiFormGroup`,[`root`,`row`,`error`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$15=[`className`,`row`],useUtilityClasses$15=F=>{let{classes:I,row:L,error:R}=F;return composeClasses({root:[`root`,L&&`row`,R&&`error`]},getFormGroupUtilityClass,I)},FormGroupRoot=styled(`div`,{name:`MuiFormGroup`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.row&&I.row]}})(({ownerState:F})=>_extends$3({display:`flex`,flexDirection:`column`,flexWrap:`wrap`},F.row&&{flexDirection:`row`})),FormGroup=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiFormGroup`}),{className:R,row:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$15),Oe=_extends$3({},L,{row:z,error:formControlState({props:L,muiFormControl:useFormControl(),states:[`error`]}).error}),ke=useUtilityClasses$15(Oe);return(0,import_jsx_runtime$2.jsx)(FormGroupRoot,_extends$3({className:clsx$1(ke.root,R),ownerState:Oe,ref:I},De))});function getSwitchUtilityClass(F){return generateUtilityClass(`MuiSwitch`,F)}var switchClasses=generateUtilityClasses(`MuiSwitch`,[`root`,`edgeStart`,`edgeEnd`,`switchBase`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`,`checked`,`disabled`,`input`,`thumb`,`track`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$14=[`className`,`color`,`edge`,`size`,`sx`],useUtilityClasses$14=F=>{let{classes:I,edge:L,size:R,color:z,checked:De,disabled:Oe}=F;return _extends$3({},I,composeClasses({root:[`root`,L&&`edge${capitalize_default(L)}`,`size${capitalize_default(R)}`],switchBase:[`switchBase`,`color${capitalize_default(z)}`,De&&`checked`,Oe&&`disabled`],thumb:[`thumb`],track:[`track`],input:[`input`]},getSwitchUtilityClass,I))},SwitchRoot=styled(`span`,{name:`MuiSwitch`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.edge&&I[`edge${capitalize_default(L.edge)}`],I[`size${capitalize_default(L.size)}`]]}})({display:`inline-flex`,width:58,height:38,overflow:`hidden`,padding:12,boxSizing:`border-box`,position:`relative`,flexShrink:0,zIndex:0,verticalAlign:`middle`,"@media print":{colorAdjust:`exact`},variants:[{props:{edge:`start`},style:{marginLeft:-8}},{props:{edge:`end`},style:{marginRight:-8}},{props:{size:`small`},style:{width:40,height:24,padding:7,[`& .${switchClasses.thumb}`]:{width:16,height:16},[`& .${switchClasses.switchBase}`]:{padding:4,[`&.${switchClasses.checked}`]:{transform:`translateX(16px)`}}}}]}),SwitchSwitchBase=styled(SwitchBase,{name:`MuiSwitch`,slot:`SwitchBase`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.switchBase,{[`& .${switchClasses.input}`]:I.input},L.color!=="default"&&I[`color${capitalize_default(L.color)}`]]}})(({theme:F})=>({position:`absolute`,top:0,left:0,zIndex:1,color:F.vars?F.vars.palette.Switch.defaultColor:`${F.palette.mode===`light`?F.palette.common.white:F.palette.grey[300]}`,transition:F.transitions.create([`left`,`transform`],{duration:F.transitions.duration.shortest}),[`&.${switchClasses.checked}`]:{transform:`translateX(20px)`},[`&.${switchClasses.disabled}`]:{color:F.vars?F.vars.palette.Switch.defaultDisabledColor:`${F.palette.mode===`light`?F.palette.grey[100]:F.palette.grey[600]}`},[`&.${switchClasses.checked} + .${switchClasses.track}`]:{opacity:.5},[`&.${switchClasses.disabled} + .${switchClasses.track}`]:{opacity:F.vars?F.vars.opacity.switchTrackDisabled:`${F.palette.mode===`light`?.12:.2}`},[`& .${switchClasses.input}`]:{left:`-100%`,width:`300%`}}),({theme:F})=>({"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.action.activeChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette.action.active,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},variants:[...Object.entries(F.palette).filter(([,F])=>F.main&&F.light).map(([I])=>({props:{color:I},style:{[`&.${switchClasses.checked}`]:{color:(F.vars||F).palette[I].main,"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette[I].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I].main,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},[`&.${switchClasses.disabled}`]:{color:F.vars?F.vars.palette.Switch[`${I}DisabledColor`]:`${F.palette.mode===`light`?(0,import_colorManipulator.lighten)(F.palette[I].main,.62):(0,import_colorManipulator.darken)(F.palette[I].main,.55)}`}},[`&.${switchClasses.checked} + .${switchClasses.track}`]:{backgroundColor:(F.vars||F).palette[I].main}}}))]})),SwitchTrack=styled(`span`,{name:`MuiSwitch`,slot:`Track`,overridesResolver:(F,I)=>I.track})(({theme:F})=>({height:`100%`,width:`100%`,borderRadius:14/2,zIndex:-1,transition:F.transitions.create([`opacity`,`background-color`],{duration:F.transitions.duration.shortest}),backgroundColor:F.vars?F.vars.palette.common.onBackground:`${F.palette.mode===`light`?F.palette.common.black:F.palette.common.white}`,opacity:F.vars?F.vars.opacity.switchTrack:`${F.palette.mode===`light`?.38:.3}`})),SwitchThumb=styled(`span`,{name:`MuiSwitch`,slot:`Thumb`,overridesResolver:(F,I)=>I.thumb})(({theme:F})=>({boxShadow:(F.vars||F).shadows[1],backgroundColor:`currentColor`,width:20,height:20,borderRadius:`50%`})),Switch=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSwitch`}),{className:R,color:z=`primary`,edge:De=!1,size:Oe=`medium`,sx:ke}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$14),je=_extends$3({},L,{color:z,edge:De,size:Oe}),Me=useUtilityClasses$14(je),Ne=(0,import_jsx_runtime$2.jsx)(SwitchThumb,{className:Me.thumb,ownerState:je});return(0,import_jsx_runtime$2.jsxs)(SwitchRoot,{className:clsx$1(Me.root,R),sx:ke,ownerState:je,children:[(0,import_jsx_runtime$2.jsx)(SwitchSwitchBase,_extends$3({type:`checkbox`,icon:Ne,checkedIcon:Ne,ref:I,ownerState:je},Ae,{classes:_extends$3({},Me,{root:Me.switchBase})})),(0,import_jsx_runtime$2.jsx)(SwitchTrack,{className:Me.track,ownerState:je})]})}),MoneyNumberFormat=(0,import_react$10.forwardRef)((F,I)=>{let{max:L,min:R,onChange:z,setLoanInputValue:De,...Oe}=F;return(0,import_jsx_runtime$2.jsx)(NumberFormat,{fixedDecimalScale:!0,thousandSeparator:!0,getInputRef:I,...Oe,allowNegative:!1,decimalScale:2,prefix:`$`,isAllowed:({floatValue:F=0})=>R>=0&&F<=L,onValueChange:({floatValue:F=0})=>z(F)})}),AccountingView=({handleClickLoanPaydownButton:F,handleClickTakeOutLoanButton:I,loanBalance:L,money:R})=>{let[z,De]=(0,import_react$10.useState)(Math.min(L,R));return(0,import_react$10.useEffect)(()=>De(Math.min(L,R)),[L,R]),(0,import_jsx_runtime$2.jsx)(Div,{className:`AccountingView`,children:(0,import_jsx_runtime$2.jsxs)(Card,{sx:{"& .MuiCardContent-root":{paddingTop:0}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(AccountBalanceIcon,{}),title:`Loan Balance`,subheader:(0,import_jsx_runtime$2.jsx)(`p`,{children:moneyString(L)})}),(0,import_jsx_runtime$2.jsxs)(CardContent,{children:[(0,import_jsx_runtime$2.jsxs)(Div,{className:`loan-container`,sx:{"& p":{margin:`1em 0`},"& button":{margin:`1em`}},children:[(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,value:z,inputProps:{max:L,min:0,pattern:`[0-9]*`},onChange:F=>{De(Number(F))},InputProps:{inputComponent:MoneyNumberFormat}}),(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,disabled:L===0,variant:`contained`,onClick:()=>{F(z),De(L-z)},children:`Pay into loan`}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`You may take out a Hardship Assistance Loan if your funds fall below `,dollarString(500),`. So long as you have an outstanding loan balance, all farm product sales are garnished by`,` `,LOAN_GARNISHMENT_RATE*100,`% until the loan is repaid. The loan interest rate is `,LOAN_INTEREST_RATE*100,`% per day, compounded daily.`]})]}),(0,import_jsx_runtime$2.jsxs)(Button,{color:`error`,disabled:R>=500,onClick:()=>{I(500),De(Math.min(moneyTotal(z,500),moneyTotal(R,500)))},variant:`contained`,children:[`Take out a `,dollarString(500),` loan`]})]})]})})};function Consumer$23(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AccountingView,{...I,...L,...F})})}var incompleteColor=`#ff9f00`,completeColor=`#00e500`,ProgressBar=({percent:F})=>{let I=usePrefersReducedMotion(),[L,R]=(0,import_react$10.useState)(I?F:0),[z,De]=(0,import_react$10.useState)(I?(0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},F/100).color:incompleteColor),Oe=(0,import_react$10.useRef)(null),ke=(0,import_react$10.useRef)(I?F:0);return(0,import_react$10.useEffect)(()=>{let L=(0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},F/100).color;if(I){R(F),De(L),ke.current=F,Oe.current&&=(Oe.current.cancel(),null);return}if(!Oe.current){let I=(0,import_shifty.tween)({delay:750,easing:`easeInOutQuad`,duration:1500,from:{currentPercent:ke.current},to:{currentPercent:F},render:({currentPercent:F})=>{let I=Number(F);R(Number(I.toFixed(2))),De((0,import_shifty.interpolate)({color:incompleteColor},{color:completeColor},I/100).color)}});Oe.current=I,ke.current=F}return()=>{Oe.current&&=(Oe.current.cancel(),null)}},[F,I]),(0,import_jsx_runtime$2.jsxs)(Div,{className:`ProgressBar`,sx:{margin:`0 auto`,display:`flex`,alignItems:`center`,gap:`0.5em`},children:[(0,import_jsx_runtime$2.jsx)(Div,{className:`progress-wrapper`,sx:{flexGrow:1,...pixelFrameSx({outline:colors.neutralOutline}),height:`calc(1em + ${px$1(2)})`,backgroundColor:`rgba(0, 0, 0, 0.15)`,boxShadow:pixelBevel({highlight:`rgba(0, 0, 0, 0.15)`,lowlight:`rgba(255, 255, 255, 0.2)`}),overflow:`hidden`},children:(0,import_jsx_runtime$2.jsx)(Div,{className:`progress`,style:{background:z,width:`${L}%`},sx:{height:`100%`}})}),(0,import_jsx_runtime$2.jsx)(P$1,{sx:{lineHeight:`1em`,minWidth:`3em`,textAlign:`right`},children:(0,import_jsx_runtime$2.jsxs)(`span`,{children:[L,`%`]})})]})},Achievement=({achievement:F,completedAchievements:I,gameState:L,isComplete:R=!!I[F.id]})=>{let{description:z,name:De,rewardDescription:Oe}=F,ke=F.getProgress?.(L);return(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`Achievement`,{"is-complete":R}),sx:{"& .MuiSvgIcon-root":{color:R?`#13b747`:`#666`}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:R?(0,import_jsx_runtime$2.jsx)(BeenhereIcon,{}):(0,import_jsx_runtime$2.jsx)(AssignmentLateIcon,{}),title:De,subheader:(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Reward: `,Oe]})}),(0,import_jsx_runtime$2.jsxs)(CardContent,{children:[(0,import_jsx_runtime$2.jsx)(`p`,{children:z}),!R&&ke&&(0,import_jsx_runtime$2.jsx)(Div,{sx:{marginTop:`1em`},children:(0,import_jsx_runtime$2.jsx)(ProgressBar,{percent:Math.min(100,ke.currentValue/ke.goal*100)})})]})]})};function Consumer$22(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Achievement,{...I,...L,...F,gameState:I})})}var partitionAchievements=memoize(F=>achievements.reduce((I,L)=>(I[F[L.id]?`complete`:`incomplete`].push(L),I),{complete:[],incomplete:[]})),AchievementsList=({unpartitionedAchievements:F})=>(0,import_jsx_runtime$2.jsx)(AccordionDetails,{children:(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:F.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$22,{achievement:F})},F.id))})}),AchievementsView=({completedAchievements:F,partitionedAchievements:{complete:I,incomplete:L}=partitionAchievements(F)})=>(0,import_jsx_runtime$2.jsxs)(Div,{className:`AchievementsView`,sx:{"& h3":{margin:0},"& .ProgressBar":{maxWidth:500}},children:[(0,import_jsx_runtime$2.jsx)(ProgressBar,{percent:I.length/achievements.length*100}),I.length?(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(Accordion,{defaultExpanded:!0,children:[(0,import_jsx_runtime$2.jsx)(AccordionSummary,{children:(0,import_jsx_runtime$2.jsx)(`h3`,{children:`Completed`})}),(0,import_jsx_runtime$2.jsx)(AchievementsList,{unpartitionedAchievements:I})]}),(0,import_jsx_runtime$2.jsx)(Divider,{})]}):null,(0,import_jsx_runtime$2.jsxs)(Accordion,{defaultExpanded:!0,children:[(0,import_jsx_runtime$2.jsx)(AccordionSummary,{children:(0,import_jsx_runtime$2.jsx)(`h3`,{children:`Not Completed`})}),(0,import_jsx_runtime$2.jsx)(AchievementsList,{unpartitionedAchievements:L})]})]});function Consumer$21(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(AchievementsView,{...I,...L,...F})})}var TableContext=import_react$10.createContext();function getTableUtilityClass(F){return generateUtilityClass(`MuiTable`,F)}var tableClasses=generateUtilityClasses(`MuiTable`,[`root`,`stickyHeader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$13=[`className`,`component`,`padding`,`size`,`stickyHeader`],useUtilityClasses$13=F=>{let{classes:I,stickyHeader:L}=F;return composeClasses({root:[`root`,L&&`stickyHeader`]},getTableUtilityClass,I)},TableRoot=styled(`table`,{name:`MuiTable`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.stickyHeader&&I.stickyHeader]}})(({theme:F,ownerState:I})=>_extends$3({display:`table`,width:`100%`,borderCollapse:`collapse`,borderSpacing:0,"& caption":_extends$3({},F.typography.body2,{padding:F.spacing(2),color:(F.vars||F).palette.text.secondary,textAlign:`left`,captionSide:`bottom`})},I.stickyHeader&&{borderCollapse:`separate`})),defaultComponent$2=`table`,Table=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTable`}),{className:R,component:z=defaultComponent$2,padding:De=`normal`,size:Oe=`medium`,stickyHeader:ke=!1}=L,Ae=_objectWithoutPropertiesLoose$2(L,_excluded$13),je=_extends$3({},L,{component:z,padding:De,size:Oe,stickyHeader:ke}),Me=useUtilityClasses$13(je),Ne=import_react$10.useMemo(()=>({padding:De,size:Oe,stickyHeader:ke}),[De,Oe,ke]);return(0,import_jsx_runtime$2.jsx)(TableContext.Provider,{value:Ne,children:(0,import_jsx_runtime$2.jsx)(TableRoot,_extends$3({as:z,role:z===defaultComponent$2?null:`table`,ref:I,className:clsx$1(Me.root,R),ownerState:je},Ae))})}),Tablelvl2Context=import_react$10.createContext();function getTableBodyUtilityClass(F){return generateUtilityClass(`MuiTableBody`,F)}var tableBodyClasses=generateUtilityClasses(`MuiTableBody`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$12=[`className`,`component`],useUtilityClasses$12=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getTableBodyUtilityClass,I)},TableBodyRoot=styled(`tbody`,{name:`MuiTableBody`,slot:`Root`,overridesResolver:(F,I)=>I.root})({display:`table-row-group`}),tablelvl2={variant:`body`},defaultComponent$1=`tbody`,TableBody=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTableBody`}),{className:R,component:z=defaultComponent$1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$12),Oe=_extends$3({},L,{component:z}),ke=useUtilityClasses$12(Oe);return(0,import_jsx_runtime$2.jsx)(Tablelvl2Context.Provider,{value:tablelvl2,children:(0,import_jsx_runtime$2.jsx)(TableBodyRoot,_extends$3({className:clsx$1(ke.root,R),as:z,ref:I,role:z===defaultComponent$1?null:`rowgroup`,ownerState:Oe},De))})});function getTableCellUtilityClass(F){return generateUtilityClass(`MuiTableCell`,F)}var tableCellClasses=generateUtilityClasses(`MuiTableCell`,[`root`,`head`,`body`,`footer`,`sizeSmall`,`sizeMedium`,`paddingCheckbox`,`paddingNone`,`alignLeft`,`alignCenter`,`alignRight`,`alignJustify`,`stickyHeader`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$11=[`align`,`className`,`component`,`padding`,`scope`,`size`,`sortDirection`,`variant`],useUtilityClasses$11=F=>{let{classes:I,variant:L,align:R,padding:z,size:De,stickyHeader:Oe}=F;return composeClasses({root:[`root`,L,Oe&&`stickyHeader`,R!==`inherit`&&`align${capitalize_default(R)}`,z!==`normal`&&`padding${capitalize_default(z)}`,`size${capitalize_default(De)}`]},getTableCellUtilityClass,I)},TableCellRoot=styled(`td`,{name:`MuiTableCell`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[L.variant],I[`size${capitalize_default(L.size)}`],L.padding!==`normal`&&I[`padding${capitalize_default(L.padding)}`],L.align!==`inherit`&&I[`align${capitalize_default(L.align)}`],L.stickyHeader&&I.stickyHeader]}})(({theme:F,ownerState:I})=>_extends$3({},F.typography.body2,{display:`table-cell`,verticalAlign:`inherit`,borderBottom:F.vars?`1px solid ${F.vars.palette.TableCell.border}`:`1px solid
223
223
  ${F.palette.mode===`light`?(0,import_colorManipulator.lighten)((0,import_colorManipulator.alpha)(F.palette.divider,1),.88):(0,import_colorManipulator.darken)((0,import_colorManipulator.alpha)(F.palette.divider,1),.68)}`,textAlign:`left`,padding:16},I.variant===`head`&&{color:(F.vars||F).palette.text.primary,lineHeight:F.typography.pxToRem(24),fontWeight:F.typography.fontWeightMedium},I.variant===`body`&&{color:(F.vars||F).palette.text.primary},I.variant===`footer`&&{color:(F.vars||F).palette.text.secondary,lineHeight:F.typography.pxToRem(21),fontSize:F.typography.pxToRem(12)},I.size===`small`&&{padding:`6px 16px`,[`&.${tableCellClasses.paddingCheckbox}`]:{width:24,padding:`0 12px 0 16px`,"& > *":{padding:0}}},I.padding===`checkbox`&&{width:48,padding:`0 0 0 4px`},I.padding===`none`&&{padding:0},I.align===`left`&&{textAlign:`left`},I.align===`center`&&{textAlign:`center`},I.align===`right`&&{textAlign:`right`,flexDirection:`row-reverse`},I.align===`justify`&&{textAlign:`justify`},I.stickyHeader&&{position:`sticky`,top:0,zIndex:2,backgroundColor:(F.vars||F).palette.background.default})),TableCell=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTableCell`}),{align:R=`inherit`,className:z,component:De,padding:Oe,scope:ke,size:Ae,sortDirection:je,variant:Me}=L,Ne=_objectWithoutPropertiesLoose$2(L,_excluded$11),Pe=import_react$10.useContext(TableContext),Fe=import_react$10.useContext(Tablelvl2Context),Ie=Fe&&Fe.variant===`head`,Le;Le=De||(Ie?`th`:`td`);let Re=ke;Le===`td`?Re=void 0:!Re&&Ie&&(Re=`col`);let ze=Me||Fe&&Fe.variant,Be=_extends$3({},L,{align:R,component:Le,padding:Oe||(Pe&&Pe.padding?Pe.padding:`normal`),size:Ae||(Pe&&Pe.size?Pe.size:`medium`),sortDirection:je,stickyHeader:ze===`head`&&Pe&&Pe.stickyHeader,variant:ze}),Ge=useUtilityClasses$11(Be),rt=null;return je&&(rt=je===`asc`?`ascending`:`descending`),(0,import_jsx_runtime$2.jsx)(TableCellRoot,_extends$3({as:Le,ref:I,className:clsx$1(Ge.root,z),"aria-sort":rt,scope:Re,ownerState:Be},Ne))});function getTableContainerUtilityClass(F){return generateUtilityClass(`MuiTableContainer`,F)}var tableContainerClasses=generateUtilityClasses(`MuiTableContainer`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$10=[`className`,`component`],useUtilityClasses$10=F=>{let{classes:I}=F;return composeClasses({root:[`root`]},getTableContainerUtilityClass,I)},TableContainerRoot=styled(`div`,{name:`MuiTableContainer`,slot:`Root`,overridesResolver:(F,I)=>I.root})({width:`100%`,overflowX:`auto`}),TableContainer=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTableContainer`}),{className:R,component:z=`div`}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$10),Oe=_extends$3({},L,{component:z}),ke=useUtilityClasses$10(Oe);return(0,import_jsx_runtime$2.jsx)(TableContainerRoot,_extends$3({ref:I,as:z,className:clsx$1(ke.root,R),ownerState:Oe},De))});function getTableRowUtilityClass(F){return generateUtilityClass(`MuiTableRow`,F)}var tableRowClasses=generateUtilityClasses(`MuiTableRow`,[`root`,`selected`,`hover`,`head`,`footer`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$9=[`className`,`component`,`hover`,`selected`],useUtilityClasses$9=F=>{let{classes:I,selected:L,hover:R,head:z,footer:De}=F;return composeClasses({root:[`root`,L&&`selected`,R&&`hover`,z&&`head`,De&&`footer`]},getTableRowUtilityClass,I)},TableRowRoot=styled(`tr`,{name:`MuiTableRow`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.head&&I.head,L.footer&&I.footer]}})(({theme:F})=>({color:`inherit`,display:`table-row`,verticalAlign:`middle`,outline:0,[`&.${tableRowClasses.hover}:hover`]:{backgroundColor:(F.vars||F).palette.action.hover},[`&.${tableRowClasses.selected}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette.primary.mainChannel} / ${F.vars.palette.action.selectedOpacity})`:(0,import_colorManipulator.alpha)(F.palette.primary.main,F.palette.action.selectedOpacity),"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.primary.mainChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.hoverOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.primary.main,F.palette.action.selectedOpacity+F.palette.action.hoverOpacity)}}})),defaultComponent=`tr`,TableRow=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiTableRow`}),{className:R,component:z=defaultComponent,hover:De=!1,selected:Oe=!1}=L,ke=_objectWithoutPropertiesLoose$2(L,_excluded$9),Ae=import_react$10.useContext(Tablelvl2Context),je=_extends$3({},L,{component:z,hover:De,selected:Oe,head:Ae&&Ae.variant===`head`,footer:Ae&&Ae.variant===`footer`}),Me=useUtilityClasses$9(je);return(0,import_jsx_runtime$2.jsx)(TableRowRoot,_extends$3({as:z,ref:I,className:clsx$1(Me.root,R),role:z===defaultComponent?null:`row`,ownerState:je},ke))}),ElevatedPaper$1=F=>(0,import_jsx_runtime$2.jsx)(Paper,{...F,elevation:6,children:F.children}),KeybindingsView=()=>(0,import_jsx_runtime$2.jsxs)(`div`,{className:`KeybindingsView`,children:[(0,import_jsx_runtime$2.jsx)(TableContainer,{component:ElevatedPaper$1,children:(0,import_jsx_runtime$2.jsx)(Table,{"aria-label":`Keyboard Shortcuts`,children:(0,import_jsx_runtime$2.jsx)(TableBody,{children:[{label:`Show Keyboard Shortcuts (this screen)`,keybinding:`Shift + ?`},{label:`Toggle menu`,keybinding:`M`},{label:`End the day`,keybinding:`Shift + C`},{label:`Go to screen by <1-9> order`,keybinding:`<1-9>`},{label:`Go to next screen`,keybinding:`Right arrow key`},{label:`Go to previous screen`,keybinding:`Left arrow key`},{label:`Go to Farm Stats`,keybinding:`S`},{label:`Go to Achievements`,keybinding:`A`},{label:`Go to Farmer's Log`,keybinding:`L`},{label:`Go to Price Events`,keybinding:`E`},{label:`Go to Bank Account`,keybinding:`B`},{label:`Go to Settings`,keybinding:`,`}].map(({label:F,keybinding:I})=>(0,import_jsx_runtime$2.jsxs)(TableRow,{children:[(0,import_jsx_runtime$2.jsx)(TableCell,{component:`th`,scope:`row`,children:F}),(0,import_jsx_runtime$2.jsx)(TableCell,{align:`right`,children:I})]},F))})})}),(0,import_jsx_runtime$2.jsx)(`h3`,{children:`Field-specific keyboard shortcuts`}),(0,import_jsx_runtime$2.jsx)(TableContainer,{component:ElevatedPaper$1,children:(0,import_jsx_runtime$2.jsx)(Table,{"aria-label":`Keyboard Shortcuts`,children:(0,import_jsx_runtime$2.jsx)(TableBody,{children:[{label:`Zoom in`,keybinding:`=`},{label:`Zoom out`,keybinding:`-`}].map(({label:F,keybinding:I})=>(0,import_jsx_runtime$2.jsxs)(TableRow,{children:[(0,import_jsx_runtime$2.jsx)(TableCell,{component:`th`,scope:`row`,children:F}),(0,import_jsx_runtime$2.jsx)(TableCell,{align:`right`,children:I})]},F))})})})]});function getAlertUtilityClass(F){return generateUtilityClass(`MuiAlert`,F)}var alertClasses=generateUtilityClasses(`MuiAlert`,[`root`,`action`,`icon`,`message`,`filled`,`colorSuccess`,`colorInfo`,`colorWarning`,`colorError`,`filledSuccess`,`filledInfo`,`filledWarning`,`filledError`,`outlined`,`outlinedSuccess`,`outlinedInfo`,`outlinedWarning`,`outlinedError`,`standard`,`standardSuccess`,`standardInfo`,`standardWarning`,`standardError`]);function getIconButtonUtilityClass(F){return generateUtilityClass(`MuiIconButton`,F)}var iconButtonClasses=generateUtilityClasses(`MuiIconButton`,[`root`,`disabled`,`colorInherit`,`colorPrimary`,`colorSecondary`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`,`edgeStart`,`edgeEnd`,`sizeSmall`,`sizeMedium`,`sizeLarge`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$8=[`edge`,`children`,`className`,`color`,`disabled`,`disableFocusRipple`,`size`],useUtilityClasses$8=F=>{let{classes:I,disabled:L,color:R,edge:z,size:De}=F;return composeClasses({root:[`root`,L&&`disabled`,R!=="default"&&`color${capitalize_default(R)}`,z&&`edge${capitalize_default(z)}`,`size${capitalize_default(De)}`]},getIconButtonUtilityClass,I)},IconButtonRoot=styled(ButtonBase,{name:`MuiIconButton`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,L.color!=="default"&&I[`color${capitalize_default(L.color)}`],L.edge&&I[`edge${capitalize_default(L.edge)}`],I[`size${capitalize_default(L.size)}`]]}})(({theme:F,ownerState:I})=>_extends$3({textAlign:`center`,flex:`0 0 auto`,fontSize:F.typography.pxToRem(24),padding:8,borderRadius:`50%`,overflow:`visible`,color:(F.vars||F).palette.action.active,transition:F.transitions.create(`background-color`,{duration:F.transitions.duration.shortest})},!I.disableRipple&&{"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.action.activeChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette.action.active,F.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},I.edge===`start`&&{marginLeft:I.size===`small`?-3:-12},I.edge===`end`&&{marginRight:I.size===`small`?-3:-12}),({theme:F,ownerState:I})=>{var L;let R=(F.vars||F).palette?.[I.color];return _extends$3({},I.color===`inherit`&&{color:`inherit`},I.color!==`inherit`&&I.color!=="default"&&_extends$3({color:R?.main},!I.disableRipple&&{"&:hover":_extends$3({},R&&{backgroundColor:F.vars?`rgba(${R.mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(R.main,F.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:`transparent`}})}),I.size===`small`&&{padding:5,fontSize:F.typography.pxToRem(18)},I.size===`large`&&{padding:12,fontSize:F.typography.pxToRem(28)},{[`&.${iconButtonClasses.disabled}`]:{backgroundColor:`transparent`,color:(F.vars||F).palette.action.disabled}})}),IconButton=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiIconButton`}),{edge:R=!1,children:z,className:De,color:Oe=`default`,disabled:ke=!1,disableFocusRipple:Ae=!1,size:je=`medium`}=L,Me=_objectWithoutPropertiesLoose$2(L,_excluded$8),Ne=_extends$3({},L,{edge:R,color:Oe,disabled:ke,disableFocusRipple:Ae,size:je}),Pe=useUtilityClasses$8(Ne);return(0,import_jsx_runtime$2.jsx)(IconButtonRoot,_extends$3({className:clsx$1(Pe.root,De),centerRipple:!0,focusRipple:!Ae,disabled:ke,ref:I},Me,{ownerState:Ne,children:z}))}),SuccessOutlined_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z`}),`SuccessOutlined`),ReportProblemOutlined_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z`}),`ReportProblemOutlined`),ErrorOutline_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z`}),`ErrorOutline`),InfoOutlined_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z`}),`InfoOutlined`),Close_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`}),`Close`);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$7=[`action`,`children`,`className`,`closeText`,`color`,`components`,`componentsProps`,`icon`,`iconMapping`,`onClose`,`role`,`severity`,`slotProps`,`slots`,`variant`],useUtilityClasses$7=F=>{let{variant:I,color:L,severity:R,classes:z}=F;return composeClasses({root:[`root`,`color${capitalize_default(L||R)}`,`${I}${capitalize_default(L||R)}`,`${I}`],icon:[`icon`],message:[`message`],action:[`action`]},getAlertUtilityClass,z)},AlertRoot=styled(Paper,{name:`MuiAlert`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[L.variant],I[`${L.variant}${capitalize_default(L.color||L.severity)}`]]}})(({theme:F})=>{let I=F.palette.mode===`light`?import_colorManipulator.darken:import_colorManipulator.lighten,L=F.palette.mode===`light`?import_colorManipulator.lighten:import_colorManipulator.darken;return _extends$3({},F.typography.body2,{backgroundColor:`transparent`,display:`flex`,padding:`6px 16px`,variants:[...Object.entries(F.palette).filter(([,F])=>F.main&&F.light).map(([R])=>({props:{colorSeverity:R,variant:`standard`},style:{color:F.vars?F.vars.palette.Alert[`${R}Color`]:I(F.palette[R].light,.6),backgroundColor:F.vars?F.vars.palette.Alert[`${R}StandardBg`]:L(F.palette[R].light,.9),[`& .${alertClasses.icon}`]:F.vars?{color:F.vars.palette.Alert[`${R}IconColor`]}:{color:F.palette[R].main}}})),...Object.entries(F.palette).filter(([,F])=>F.main&&F.light).map(([L])=>({props:{colorSeverity:L,variant:`outlined`},style:{color:F.vars?F.vars.palette.Alert[`${L}Color`]:I(F.palette[L].light,.6),border:`1px solid ${(F.vars||F).palette[L].light}`,[`& .${alertClasses.icon}`]:F.vars?{color:F.vars.palette.Alert[`${L}IconColor`]}:{color:F.palette[L].main}}})),...Object.entries(F.palette).filter(([,F])=>F.main&&F.dark).map(([I])=>({props:{colorSeverity:I,variant:`filled`},style:_extends$3({fontWeight:F.typography.fontWeightMedium},F.vars?{color:F.vars.palette.Alert[`${I}FilledColor`],backgroundColor:F.vars.palette.Alert[`${I}FilledBg`]}:{backgroundColor:F.palette.mode===`dark`?F.palette[I].dark:F.palette[I].main,color:F.palette.getContrastText(F.palette[I].main)})}))]})}),AlertIcon=styled(`div`,{name:`MuiAlert`,slot:`Icon`,overridesResolver:(F,I)=>I.icon})({marginRight:12,padding:`7px 0`,display:`flex`,fontSize:22,opacity:.9}),AlertMessage=styled(`div`,{name:`MuiAlert`,slot:`Message`,overridesResolver:(F,I)=>I.message})({padding:`8px 0`,minWidth:0,overflow:`auto`}),AlertAction=styled(`div`,{name:`MuiAlert`,slot:`Action`,overridesResolver:(F,I)=>I.action})({display:`flex`,alignItems:`flex-start`,padding:`4px 0 0 16px`,marginLeft:`auto`,marginRight:-8}),defaultIconMapping={success:(0,import_jsx_runtime$2.jsx)(SuccessOutlined_default,{fontSize:`inherit`}),warning:(0,import_jsx_runtime$2.jsx)(ReportProblemOutlined_default,{fontSize:`inherit`}),error:(0,import_jsx_runtime$2.jsx)(ErrorOutline_default,{fontSize:`inherit`}),info:(0,import_jsx_runtime$2.jsx)(InfoOutlined_default,{fontSize:`inherit`})},Alert=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAlert`}),{action:R,children:z,className:De,closeText:Oe=`Close`,color:ke,components:Ae={},componentsProps:je={},icon:Me,iconMapping:Ne=defaultIconMapping,onClose:Pe,role:Fe=`alert`,severity:Ie=`success`,slotProps:Le={},slots:Re={},variant:ze=`standard`}=L,Be=_objectWithoutPropertiesLoose$2(L,_excluded$7),Ge=_extends$3({},L,{color:ke,severity:Ie,variant:ze,colorSeverity:ke||Ie}),rt=useUtilityClasses$7(Ge),it={slots:_extends$3({closeButton:Ae.CloseButton,closeIcon:Ae.CloseIcon},Re),slotProps:_extends$3({},je,Le)},[at,ot]=useSlot(`closeButton`,{elementType:IconButton,externalForwardedProps:it,ownerState:Ge}),[st,ct]=useSlot(`closeIcon`,{elementType:Close_default,externalForwardedProps:it,ownerState:Ge});return(0,import_jsx_runtime$2.jsxs)(AlertRoot,_extends$3({role:Fe,elevation:0,ownerState:Ge,className:clsx$1(rt.root,De),ref:I},Be,{children:[Me===!1?null:(0,import_jsx_runtime$2.jsx)(AlertIcon,{ownerState:Ge,className:rt.icon,children:Me||Ne[Ie]||defaultIconMapping[Ie]}),(0,import_jsx_runtime$2.jsx)(AlertMessage,{ownerState:Ge,className:rt.message,children:z}),R==null?null:(0,import_jsx_runtime$2.jsx)(AlertAction,{ownerState:Ge,className:rt.action,children:R}),R==null&&Pe?(0,import_jsx_runtime$2.jsx)(AlertAction,{ownerState:Ge,className:rt.action,children:(0,import_jsx_runtime$2.jsx)(at,_extends$3({size:`small`,"aria-label":Oe,title:Oe,color:`inherit`,onClick:Pe},ot,{children:(0,import_jsx_runtime$2.jsx)(st,_extends$3({fontSize:`small`},ct))}))}):null]}))});function ok$1(){}function unreachable(){}function stringify$1(F,I){let L=I||{};return(F[F.length-1]===``?[...F,``]:F).join((L.padRight?` `:``)+`,`+(L.padLeft===!1?``:` `)).trim()}var nameRe=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,nameReJsx=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,emptyOptions$2={};function name$1(F,I){return((I||emptyOptions$2).jsx?nameReJsx:nameRe).test(F)}var re$1=/[ \t\n\f\r]/g;function whitespace(F){return typeof F==`object`?F.type===`text`&&empty$1(F.value):empty$1(F)}function empty$1(F){return F.replace(re$1,``)===``}var Schema=class{constructor(F,I,L){this.normal=I,this.property=F,L&&(this.space=L)}};Schema.prototype.normal={},Schema.prototype.property={},Schema.prototype.space=void 0;function merge(F,I){let L={},R={};for(let I of F)Object.assign(L,I.property),Object.assign(R,I.normal);return new Schema(L,R,I)}function normalize$1(F){return F.toLowerCase()}var Info=class{constructor(F,I){this.attribute=I,this.property=F}};Info.prototype.attribute=``,Info.prototype.booleanish=!1,Info.prototype.boolean=!1,Info.prototype.commaOrSpaceSeparated=!1,Info.prototype.commaSeparated=!1,Info.prototype.defined=!1,Info.prototype.mustUseProperty=!1,Info.prototype.number=!1,Info.prototype.overloadedBoolean=!1,Info.prototype.property=``,Info.prototype.spaceSeparated=!1,Info.prototype.space=void 0;var types_exports=__exportAll({boolean:()=>boolean,booleanish:()=>booleanish,commaOrSpaceSeparated:()=>commaOrSpaceSeparated,commaSeparated:()=>commaSeparated,number:()=>number,overloadedBoolean:()=>overloadedBoolean,spaceSeparated:()=>spaceSeparated}),powers=0,boolean=increment(),booleanish=increment(),overloadedBoolean=increment(),number=increment(),spaceSeparated=increment(),commaSeparated=increment(),commaOrSpaceSeparated=increment();function increment(){return 2**++powers}var checks=Object.keys(types_exports),DefinedInfo=class extends Info{constructor(F,I,L,R){let z=-1;if(super(F,I),mark(this,`space`,R),typeof L==`number`)for(;++z<checks.length;){let F=checks[z];mark(this,checks[z],(L&types_exports[F])===types_exports[F])}}};DefinedInfo.prototype.defined=!0;function mark(F,I,L){L&&(F[I]=L)}function create(F){let I={},L={};for(let[R,z]of Object.entries(F.properties)){let De=new DefinedInfo(R,F.transform(F.attributes||{},R),z,F.space);F.mustUseProperty&&F.mustUseProperty.includes(R)&&(De.mustUseProperty=!0),I[R]=De,L[normalize$1(R)]=R,L[normalize$1(De.attribute)]=R}return new Schema(I,L,F.space)}var aria=create({properties:{ariaActiveDescendant:null,ariaAtomic:booleanish,ariaAutoComplete:null,ariaBusy:booleanish,ariaChecked:booleanish,ariaColCount:number,ariaColIndex:number,ariaColSpan:number,ariaControls:spaceSeparated,ariaCurrent:null,ariaDescribedBy:spaceSeparated,ariaDetails:null,ariaDisabled:booleanish,ariaDropEffect:spaceSeparated,ariaErrorMessage:null,ariaExpanded:booleanish,ariaFlowTo:spaceSeparated,ariaGrabbed:booleanish,ariaHasPopup:null,ariaHidden:booleanish,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:spaceSeparated,ariaLevel:number,ariaLive:null,ariaModal:booleanish,ariaMultiLine:booleanish,ariaMultiSelectable:booleanish,ariaOrientation:null,ariaOwns:spaceSeparated,ariaPlaceholder:null,ariaPosInSet:number,ariaPressed:booleanish,ariaReadOnly:booleanish,ariaRelevant:null,ariaRequired:booleanish,ariaRoleDescription:spaceSeparated,ariaRowCount:number,ariaRowIndex:number,ariaRowSpan:number,ariaSelected:booleanish,ariaSetSize:number,ariaSort:null,ariaValueMax:number,ariaValueMin:number,ariaValueNow:number,ariaValueText:null,role:null},transform(F,I){return I===`role`?I:`aria-`+I.slice(4).toLowerCase()}});function caseSensitiveTransform(F,I){return I in F?F[I]:I}function caseInsensitiveTransform(F,I){return caseSensitiveTransform(F,I.toLowerCase())}var html$2=create({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:commaSeparated,acceptCharset:spaceSeparated,accessKey:spaceSeparated,action:null,allow:null,allowFullScreen:boolean,allowPaymentRequest:boolean,allowUserMedia:boolean,alpha:boolean,alt:null,as:null,async:boolean,autoCapitalize:null,autoComplete:spaceSeparated,autoFocus:boolean,autoPlay:boolean,blocking:spaceSeparated,capture:null,charSet:null,checked:boolean,cite:null,className:spaceSeparated,closedBy:null,colorSpace:null,cols:number,colSpan:number,command:null,commandFor:null,content:null,contentEditable:booleanish,controls:boolean,controlsList:spaceSeparated,coords:number|commaSeparated,crossOrigin:null,data:null,dateTime:null,decoding:null,default:boolean,defer:boolean,dir:null,dirName:null,disabled:boolean,download:overloadedBoolean,draggable:booleanish,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:boolean,formTarget:null,headers:spaceSeparated,height:number,hidden:overloadedBoolean,high:number,href:null,hrefLang:null,htmlFor:spaceSeparated,httpEquiv:spaceSeparated,id:null,imageSizes:null,imageSrcSet:null,inert:boolean,inputMode:null,integrity:null,is:null,isMap:boolean,itemId:null,itemProp:spaceSeparated,itemRef:spaceSeparated,itemScope:boolean,itemType:spaceSeparated,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:boolean,low:number,manifest:null,max:null,maxLength:number,media:null,method:null,min:null,minLength:number,multiple:boolean,muted:boolean,name:null,nonce:null,noModule:boolean,noValidate:boolean,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:boolean,optimum:number,pattern:null,ping:spaceSeparated,placeholder:null,playsInline:boolean,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:boolean,referrerPolicy:null,rel:spaceSeparated,required:boolean,reversed:boolean,rows:number,rowSpan:number,sandbox:spaceSeparated,scope:null,scoped:boolean,seamless:boolean,selected:boolean,shadowRootClonable:boolean,shadowRootCustomElementRegistry:boolean,shadowRootDelegatesFocus:boolean,shadowRootMode:null,shadowRootSerializable:boolean,shape:null,size:number,sizes:null,slot:null,span:number,spellCheck:booleanish,src:null,srcDoc:null,srcLang:null,srcSet:null,start:number,step:null,style:null,tabIndex:number,target:null,title:null,translate:null,type:null,typeMustMatch:boolean,useMap:null,value:booleanish,width:number,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:spaceSeparated,axis:null,background:null,bgColor:null,border:number,borderColor:null,bottomMargin:number,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:boolean,declare:boolean,event:null,face:null,frame:null,frameBorder:null,hSpace:number,leftMargin:number,link:null,longDesc:null,lowSrc:null,marginHeight:number,marginWidth:number,noResize:boolean,noHref:boolean,noShade:boolean,noWrap:boolean,object:null,profile:null,prompt:null,rev:null,rightMargin:number,rules:null,scheme:null,scrolling:booleanish,standby:null,summary:null,text:null,topMargin:number,valueType:null,version:null,vAlign:null,vLink:null,vSpace:number,allowTransparency:null,autoCorrect:null,autoSave:null,credentialless:boolean,disablePictureInPicture:boolean,disableRemotePlayback:boolean,exportParts:commaSeparated,part:spaceSeparated,prefix:null,property:null,results:number,security:null,unselectable:null},space:`html`,transform:caseInsensitiveTransform}),svg$1=create({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,maskType:`mask-type`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:commaOrSpaceSeparated,accentHeight:number,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:number,amplitude:number,arabicForm:null,ascent:number,attributeName:null,attributeType:null,azimuth:number,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:number,by:null,calcMode:null,capHeight:number,className:spaceSeparated,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:number,diffuseConstant:number,direction:null,display:null,dur:null,divisor:number,dominantBaseline:null,download:boolean,dx:null,dy:null,edgeMode:null,editable:null,elevation:number,enableBackground:null,end:null,event:null,exponent:number,externalResourcesRequired:null,fill:null,fillOpacity:number,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:commaSeparated,g2:commaSeparated,glyphName:commaSeparated,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:number,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:number,horizOriginX:number,horizOriginY:number,id:null,ideographic:number,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:number,k:number,k1:number,k2:number,k3:number,k4:number,kernelMatrix:commaOrSpaceSeparated,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:number,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskType:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:number,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:number,overlineThickness:number,paintOrder:null,panose1:null,path:null,pathLength:number,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:spaceSeparated,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:number,pointsAtY:number,pointsAtZ:number,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:commaOrSpaceSeparated,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:commaOrSpaceSeparated,rev:commaOrSpaceSeparated,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:commaOrSpaceSeparated,requiredFeatures:commaOrSpaceSeparated,requiredFonts:commaOrSpaceSeparated,requiredFormats:commaOrSpaceSeparated,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:number,specularExponent:number,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:number,strikethroughThickness:number,string:null,stroke:null,strokeDashArray:commaOrSpaceSeparated,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:number,strokeOpacity:number,strokeWidth:null,style:null,surfaceScale:number,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:commaOrSpaceSeparated,tabIndex:number,tableValues:null,target:null,targetX:number,targetY:number,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:commaOrSpaceSeparated,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:number,underlineThickness:number,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:number,values:null,vAlphabetic:number,vMathematical:number,vectorEffect:null,vHanging:number,vIdeographic:number,version:null,vertAdvY:number,vertOriginX:number,vertOriginY:number,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:number,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:caseSensitiveTransform}),xlink=create({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(F,I){return`xlink:`+I.slice(5).toLowerCase()}}),xmlns=create({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:caseInsensitiveTransform}),xml=create({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(F,I){return`xml:`+I.slice(3).toLowerCase()}}),hastToReact={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},cap$1=/[A-Z]/g,dash=/-[a-z]/g,valid=/^data[-\w.:]+$/i;function find(F,I){let L=normalize$1(I),R=I,z=Info;if(L in F.normal)return F.property[F.normal[L]];if(L.length>4&&L.slice(0,4)===`data`&&valid.test(I)){if(I.charAt(4)===`-`){let F=I.slice(5).replace(dash,camelcase);R=`data`+F.charAt(0).toUpperCase()+F.slice(1)}else{let F=I.slice(4);if(!dash.test(F)){let L=F.replace(cap$1,kebab);L.charAt(0)!==`-`&&(L=`-`+L),I=`data`+L}}z=DefinedInfo}return new z(R,I)}function kebab(F){return`-`+F.toLowerCase()}function camelcase(F){return F.charAt(1).toUpperCase()}var html$1=merge([aria,html$2,xlink,xmlns,xml],`html`),svg=merge([aria,svg$1,xlink,xmlns,xml],`svg`);function stringify(F){return F.join(` `).trim()}var require_cjs$2=__commonJSMin(((F,I)=>{var L=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,R=/\n/g,z=/^\s*/,De=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,Oe=/^:\s*/,ke=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Ae=/^[;\s]*/,je=/^\s+|\s+$/g,Me=`
224
224
  `,Ne=`/`,Pe=`*`,Fe=``,Ie=`comment`,Le=`declaration`;function Re(F,I){if(typeof F!=`string`)throw TypeError(`First argument must be a string`);if(!F)return[];I||={};var je=1,Me=1;function Ne(F){var I=F.match(R);I&&(je+=I.length);var L=F.lastIndexOf(`
225
225
  `);Me=~L?F.length-L:Me+F.length}function Pe(){var F={line:je,column:Me};return function(I){return I.position=new Fe(F),Re(),I}}function Fe(F){this.start=F,this.end={line:je,column:Me},this.source=I.source}Fe.prototype.content=F;function Ie(L){var R=Error(I.source+`:`+je+`:`+Me+`: `+L);if(R.reason=L,R.filename=I.source,R.line=je,R.column=Me,R.source=F,!I.silent)throw R}function Le(I){var L=I.exec(F);if(L){var R=L[0];return Ne(R),F=F.slice(R.length),L}}function Re(){Le(z)}function Be(F){var I;for(F||=[];I=Ge();)I!==!1&&F.push(I);return F}function Ge(){var I=Pe();if(!(F.charAt(0)!=`/`||F.charAt(1)!=`*`)){for(var L=2;F.charAt(L)!=``&&(F.charAt(L)!=`*`||F.charAt(L+1)!=`/`);)++L;if(L+=2,F.charAt(L-1)===``)return Ie(`End of comment missing`);var R=F.slice(2,L-2);return Me+=2,Ne(R),F=F.slice(L),Me+=2,I({type:`comment`,comment:R})}}function rt(){var F=Pe(),I=Le(De);if(I){if(Ge(),!Le(Oe))return Ie(`property missing ':'`);var R=Le(ke),z=F({type:`declaration`,property:ze(I[0].replace(L,``)),value:R?ze(R[0].replace(L,``)):``});return Le(Ae),z}}function it(){var F=[];Be(F);for(var I;I=rt();)I!==!1&&(F.push(I),Be(F));return F}return Re(),it()}function ze(F){return F?F.replace(je,``):``}I.exports=Re})),require_cjs$1=__commonJSMin((F=>{var I=F&&F.__importDefault||function(F){return F&&F.__esModule?F:{default:F}};Object.defineProperty(F,"__esModule",{value:!0}),F.default=R;var L=I(require_cjs$2());function R(F,I){let R=null;if(!F||typeof F!=`string`)return R;let z=(0,L.default)(F),De=typeof I==`function`;return z.forEach(F=>{if(F.type!==`declaration`)return;let{property:L,value:z}=F;De?I(L,z,F):z&&(R||={},R[L]=z)}),R}})),require_utilities=__commonJSMin((F=>{Object.defineProperty(F,"__esModule",{value:!0}),F.camelCase=void 0;var I=/^--[a-zA-Z0-9_-]+$/,L=/-([a-z])/g,R=/^[^-]+$/,z=/^-(webkit|moz|ms|o|khtml)-/,De=/^-(ms)-/,Oe=function(F){return!F||R.test(F)||I.test(F)},ke=function(F,I){return I.toUpperCase()},Ae=function(F,I){return`${I}-`};F.camelCase=function(F,I){return I===void 0&&(I={}),Oe(F)?F:(F=F.toLowerCase(),F=I.reactCompat?F.replace(De,Ae):F.replace(z,Ae),F.replace(L,ke))}})),require_cjs=__commonJSMin(((F,I)=>{var L=(F&&F.__importDefault||function(F){return F&&F.__esModule?F:{default:F}})(require_cjs$1()),R=require_utilities();function z(F,I){var z={};return!F||typeof F!=`string`||(0,L.default)(F,function(F,L){F&&L&&(z[(0,R.camelCase)(F,I)]=L)}),z}z.default=z,I.exports=z})),pointEnd=point$2(`end`),pointStart=point$2(`start`);function point$2(F){return I;function I(I){let L=I&&I.position&&I.position[F]||{};if(typeof L.line==`number`&&L.line>0&&typeof L.column==`number`&&L.column>0)return{line:L.line,column:L.column,offset:typeof L.offset==`number`&&L.offset>-1?L.offset:void 0}}}function position$1(F){let I=pointStart(F),L=pointEnd(F);if(I&&L)return{start:I,end:L}}function stringifyPosition(F){return!F||typeof F!=`object`?``:`position`in F||`type`in F?position(F.position):`start`in F||`end`in F?position(F):`line`in F||`column`in F?point$1(F):``}function point$1(F){return index(F&&F.line)+`:`+index(F&&F.column)}function position(F){return point$1(F&&F.start)+`-`+point$1(F&&F.end)}function index(F){return F&&typeof F==`number`?F:1}var VFileMessage=class extends Error{constructor(F,I,L){super(),typeof I==`string`&&(L=I,I=void 0);let R=``,z={},De=!1;if(I&&(z=`line`in I&&`column`in I||`start`in I&&`end`in I?{place:I}:`type`in I?{ancestors:[I],place:I.position}:{...I}),typeof F==`string`?R=F:!z.cause&&F&&(De=!0,R=F.message,z.cause=F),!z.ruleId&&!z.source&&typeof L==`string`){let F=L.indexOf(`:`);F===-1?z.ruleId=L:(z.source=L.slice(0,F),z.ruleId=L.slice(F+1))}if(!z.place&&z.ancestors&&z.ancestors){let F=z.ancestors[z.ancestors.length-1];F&&(z.place=F.position)}let Oe=z.place&&`start`in z.place?z.place.start:z.place;this.ancestors=z.ancestors||void 0,this.cause=z.cause||void 0,this.column=Oe?Oe.column:void 0,this.fatal=void 0,this.file=``,this.message=R,this.line=Oe?Oe.line:void 0,this.name=stringifyPosition(z.place)||`1:1`,this.place=z.place||void 0,this.reason=this.message,this.ruleId=z.ruleId||void 0,this.source=z.source||void 0,this.stack=De&&z.cause&&typeof z.cause.stack==`string`?z.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};VFileMessage.prototype.file=``,VFileMessage.prototype.name=``,VFileMessage.prototype.reason=``,VFileMessage.prototype.message=``,VFileMessage.prototype.stack=``,VFileMessage.prototype.column=void 0,VFileMessage.prototype.line=void 0,VFileMessage.prototype.ancestors=void 0,VFileMessage.prototype.cause=void 0,VFileMessage.prototype.fatal=void 0,VFileMessage.prototype.place=void 0,VFileMessage.prototype.ruleId=void 0,VFileMessage.prototype.source=void 0;var import_cjs=__toESM(require_cjs()),own$3={}.hasOwnProperty,emptyMap=new Map,cap=/[A-Z]/g,tableElements=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),tableCellElement=new Set([`td`,`th`]);function toJsxRuntime(F,I){if(!I||I.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let L=I.filePath||void 0,R;if(I.development){if(typeof I.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");R=developmentCreate(L,I.jsxDEV)}else{if(typeof I.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof I.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");R=productionCreate(L,I.jsx,I.jsxs)}let z={Fragment:I.Fragment,ancestors:[],components:I.components||{},create:R,elementAttributeNameCase:I.elementAttributeNameCase||`react`,evaluater:I.createEvaluater?I.createEvaluater():void 0,filePath:L,ignoreInvalidStyle:I.ignoreInvalidStyle||!1,passKeys:I.passKeys!==!1,passNode:I.passNode||!1,schema:I.space===`svg`?svg:html$1,stylePropertyNameCase:I.stylePropertyNameCase||`dom`,tableCellAlignToStyle:I.tableCellAlignToStyle!==!1},De=one$1(z,F,void 0);return De&&typeof De!=`string`?De:z.create(F,z.Fragment,{children:De||void 0},void 0)}function one$1(F,I,L){if(I.type===`element`)return element$1(F,I,L);if(I.type===`mdxFlowExpression`||I.type===`mdxTextExpression`)return mdxExpression(F,I);if(I.type===`mdxJsxFlowElement`||I.type===`mdxJsxTextElement`)return mdxJsxElement(F,I,L);if(I.type===`mdxjsEsm`)return mdxEsm(F,I);if(I.type===`root`)return root$1(F,I,L);if(I.type===`text`)return text$3(F,I)}function element$1(F,I,L){let R=F.schema,z=R;I.tagName.toLowerCase()===`svg`&&R.space===`html`&&(z=svg,F.schema=z),F.ancestors.push(I);let De=findComponentFromName(F,I.tagName,!1),Oe=createElementProps(F,I),ke=createChildren(F,I);return tableElements.has(I.tagName)&&(ke=ke.filter(function(F){return typeof F!=`string`||!whitespace(F)})),addNode(F,Oe,De,I),addChildren(Oe,ke),F.ancestors.pop(),F.schema=R,F.create(I,De,Oe,L)}function mdxExpression(F,I){if(I.data&&I.data.estree&&F.evaluater){let L=I.data.estree.body[0];return L.type,F.evaluater.evaluateExpression(L.expression)}crashEstree(F,I.position)}function mdxEsm(F,I){if(I.data&&I.data.estree&&F.evaluater)return F.evaluater.evaluateProgram(I.data.estree);crashEstree(F,I.position)}function mdxJsxElement(F,I,L){let R=F.schema,z=R;I.name===`svg`&&R.space===`html`&&(z=svg,F.schema=z),F.ancestors.push(I);let De=I.name===null?F.Fragment:findComponentFromName(F,I.name,!0),Oe=createJsxElementProps(F,I),ke=createChildren(F,I);return addNode(F,Oe,De,I),addChildren(Oe,ke),F.ancestors.pop(),F.schema=R,F.create(I,De,Oe,L)}function root$1(F,I,L){let R={};return addChildren(R,createChildren(F,I)),F.create(I,F.Fragment,R,L)}function text$3(F,I){return I.value}function addNode(F,I,L,R){typeof L!=`string`&&L!==F.Fragment&&F.passNode&&(I.node=R)}function addChildren(F,I){if(I.length>0){let L=I.length>1?I:I[0];L&&(F.children=L)}}function productionCreate(F,I,L){return R;function R(F,R,z,De){let Oe=Array.isArray(z.children)?L:I;return De?Oe(R,z,De):Oe(R,z)}}function developmentCreate(F,I){return L;function L(L,R,z,De){let Oe=Array.isArray(z.children),ke=pointStart(L);return I(R,z,De,Oe,{columnNumber:ke?ke.column-1:void 0,fileName:F,lineNumber:ke?ke.line:void 0},void 0)}}function createElementProps(F,I){let L={},R,z;for(z in I.properties)if(z!==`children`&&own$3.call(I.properties,z)){let De=createProperty(F,z,I.properties[z]);if(De){let[z,Oe]=De;F.tableCellAlignToStyle&&z===`align`&&typeof Oe==`string`&&tableCellElement.has(I.tagName)?R=Oe:L[z]=Oe}}if(R){let I=L.style||={};I[F.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=R}return L}function createJsxElementProps(F,I){let L={};for(let R of I.attributes)if(R.type===`mdxJsxExpressionAttribute`)if(R.data&&R.data.estree&&F.evaluater){let I=R.data.estree.body[0];I.type;let z=I.expression;z.type;let De=z.properties[0];De.type,Object.assign(L,F.evaluater.evaluateExpression(De.argument))}else crashEstree(F,I.position);else{let z=R.name,De;if(R.value&&typeof R.value==`object`)if(R.value.data&&R.value.data.estree&&F.evaluater){let I=R.value.data.estree.body[0];I.type,De=F.evaluater.evaluateExpression(I.expression)}else crashEstree(F,I.position);else De=R.value===null||R.value;L[z]=De}return L}function createChildren(F,I){let L=[],R=-1,z=F.passKeys?new Map:emptyMap;for(;++R<I.children.length;){let De=I.children[R],Oe;if(F.passKeys){let F=De.type===`element`?De.tagName:De.type===`mdxJsxFlowElement`||De.type===`mdxJsxTextElement`?De.name:void 0;if(F){let I=z.get(F)||0;Oe=F+`-`+I,z.set(F,I+1)}}let ke=one$1(F,De,Oe);ke!==void 0&&L.push(ke)}return L}function createProperty(F,I,L){let R=find(F.schema,I);if(!(L==null||typeof L==`number`&&Number.isNaN(L))){if(Array.isArray(L)&&(L=R.commaSeparated?stringify$1(L):stringify(L)),R.property===`style`){let I=typeof L==`object`?L:parseStyle(F,String(L));return F.stylePropertyNameCase===`css`&&(I=transformStylesToCssCasing(I)),[`style`,I]}return[F.elementAttributeNameCase===`react`&&R.space?hastToReact[R.property]||R.property:R.attribute,L]}}function parseStyle(F,I){try{return(0,import_cjs.default)(I,{reactCompat:!0})}catch(I){if(F.ignoreInvalidStyle)return{};let L=I,R=new VFileMessage("Cannot parse `style` attribute",{ancestors:F.ancestors,cause:L,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw R.file=F.filePath||void 0,R.url=`https://github.com/syntax-tree/hast-util-to-jsx-runtime#cannot-parse-style-attribute`,R}}function findComponentFromName(F,I,L){let R;if(!L)R={type:`Literal`,value:I};else if(I.includes(`.`)){let F=I.split(`.`),L=-1,z;for(;++L<F.length;){let I=name$1(F[L])?{type:`Identifier`,name:F[L]}:{type:`Literal`,value:F[L]};z=z?{type:`MemberExpression`,object:z,property:I,computed:!!(L&&I.type===`Literal`),optional:!1}:I}R=z}else R=name$1(I)&&!/^[a-z]/.test(I)?{type:`Identifier`,name:I}:{type:`Literal`,value:I};if(R.type===`Literal`){let I=R.value;return own$3.call(F.components,I)?F.components[I]:I}if(F.evaluater)return F.evaluater.evaluateExpression(R);crashEstree(F)}function crashEstree(F,I){let L=new VFileMessage("Cannot handle MDX estrees without `createEvaluater`",{ancestors:F.ancestors,place:I,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw L.file=F.filePath||void 0,L.url=`https://github.com/syntax-tree/hast-util-to-jsx-runtime#cannot-handle-mdx-estrees-without-createevaluater`,L}function transformStylesToCssCasing(F){let I={},L;for(L in F)own$3.call(F,L)&&(I[transformStyleToCssCasing(L)]=F[L]);return I}function transformStyleToCssCasing(F){let I=F.replace(cap,toDash);return I.slice(0,3)===`ms-`&&(I=`-`+I),I}function toDash(F){return`-`+F.toLowerCase()}var urlAttributes={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]},emptyOptions$1={};function toString$1(F,I){let L=I||emptyOptions$1;return one(F,typeof L.includeImageAlt!=`boolean`||L.includeImageAlt,typeof L.includeHtml!=`boolean`||L.includeHtml)}function one(F,I,L){if(node(F)){if(`value`in F)return F.type===`html`&&!L?``:F.value;if(I&&`alt`in F&&F.alt)return F.alt;if(`children`in F)return all$1(F.children,I,L)}return Array.isArray(F)?all$1(F,I,L):``}function all$1(F,I,L){let R=[],z=-1;for(;++z<F.length;)R[z]=one(F[z],I,L);return R.join(``)}function node(F){return!!(F&&typeof F==`object`)}var element=document.createElement(`i`);function decodeNamedCharacterReference(F){let I=`&`+F+`;`;element.innerHTML=I;let L=element.textContent;return L.charCodeAt(L.length-1)===59&&F!==`semi`?!1:L!==I&&L}function splice(F,I,L,R){let z=F.length,De=0,Oe;if(I=I<0?-I>z?0:z+I:I>z?z:I,L=L>0?L:0,R.length<1e4)Oe=Array.from(R),Oe.unshift(I,L),F.splice(...Oe);else for(L&&F.splice(I,L);De<R.length;)Oe=R.slice(De,De+1e4),Oe.unshift(I,0),F.splice(...Oe),De+=1e4,I+=1e4}function push(F,I){return F.length>0?(splice(F,F.length,0,I),F):I}var hasOwnProperty={}.hasOwnProperty;function combineExtensions(F){let I={},L=-1;for(;++L<F.length;)syntaxExtension(I,F[L]);return I}function syntaxExtension(F,I){let L;for(L in I){let R=(hasOwnProperty.call(F,L)?F[L]:void 0)||(F[L]={}),z=I[L],De;if(z)for(De in z){hasOwnProperty.call(R,De)||(R[De]=[]);let F=z[De];constructs(R[De],Array.isArray(F)?F:F?[F]:[])}}}function constructs(F,I){let L=-1,R=[];for(;++L<I.length;)(I[L].add===`after`?F:R).push(I[L]);splice(F,0,0,R)}function decodeNumericCharacterReference(F,I){let L=Number.parseInt(F,I);return L<9||L===11||L>13&&L<32||L>126&&L<160||L>55295&&L<57344||L>64975&&L<65008||(L&65535)==65535||(L&65535)==65534||L>1114111?`�`:String.fromCodePoint(L)}function normalizeIdentifier(F){return F.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var asciiAlpha=regexCheck(/[A-Za-z]/),asciiAlphanumeric=regexCheck(/[\dA-Za-z]/),asciiAtext=regexCheck(/[#-'*+\--9=?A-Z^-~]/);function asciiControl(F){return F!==null&&(F<32||F===127)}var asciiDigit=regexCheck(/\d/),asciiHexDigit=regexCheck(/[\dA-Fa-f]/),asciiPunctuation=regexCheck(/[!-/:-@[-`{-~]/);function markdownLineEnding(F){return F!==null&&F<-2}function markdownLineEndingOrSpace(F){return F!==null&&(F<0||F===32)}function markdownSpace(F){return F===-2||F===-1||F===32}var unicodePunctuation=regexCheck(/\p{P}|\p{S}/u),unicodeWhitespace=regexCheck(/\s/);function regexCheck(F){return I;function I(I){return I!==null&&I>-1&&F.test(String.fromCharCode(I))}}function normalizeUri(F){let I=[],L=-1,R=0,z=0;for(;++L<F.length;){let De=F.charCodeAt(L),Oe=``;if(De===37&&asciiAlphanumeric(F.charCodeAt(L+1))&&asciiAlphanumeric(F.charCodeAt(L+2)))z=2;else if(De<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(De))||(Oe=String.fromCharCode(De));else if(De>55295&&De<57344){let I=F.charCodeAt(L+1);De<56320&&I>56319&&I<57344?(Oe=String.fromCharCode(De,I),z=1):Oe=`�`}else Oe=String.fromCharCode(De);Oe&&=(I.push(F.slice(R,L),encodeURIComponent(Oe)),R=L+z+1,``),z&&=(L+=z,0)}return I.join(``)+F.slice(R)}function factorySpace(F,I,L,R){let z=R?R-1:1/0,De=0;return Oe;function Oe(R){return markdownSpace(R)?(F.enter(L),ke(R)):I(R)}function ke(R){return markdownSpace(R)&&De++<z?(F.consume(R),ke):(F.exit(L),I(R))}}function factorySpaceMinMax(F,I,L,R,z,De){let Oe=0;return ke;function ke(I){return De>0&&markdownSpace(I)?(F.enter(R),Ae(I)):je(I)}function Ae(I){return markdownSpace(I)&&Oe<De?(F.consume(I),Oe++,Ae):(F.exit(R),je(I))}function je(F){return Oe>=z?I(F):L(F)}}var content$1={tokenize:initializeContent};function initializeContent(F){let I=F.attempt(this.parser.constructs.contentInitial,R,z),L;return I;function R(L){if(L===null){F.consume(L);return}return F.enter(`lineEnding`),F.consume(L),F.exit(`lineEnding`),factorySpace(F,I,`linePrefix`)}function z(I){return F.enter(`paragraph`),De(I)}function De(I){let R=F.enter(`chunkText`,{contentType:`text`,previous:L});return L&&(L.next=R),L=R,Oe(I)}function Oe(I){if(I===null){F.exit(`chunkText`),F.exit(`paragraph`),F.consume(I);return}return markdownLineEnding(I)?(F.consume(I),F.exit(`chunkText`),De):(F.consume(I),Oe)}}var EditMap=class{constructor(){this.index=new Map,this.map=[]}add(F,I,L){addImplementation(this,F,I,L,!1)}addBefore(F,I,L){addImplementation(this,F,I,L,!0)}consume(F){if(this.map.sort(function(F,I){return F[0]-I[0]}),this.map.length===0)return;let I=this.map.length,L=[];for(;I>0;)--I,L.push(F.slice(this.map[I][0]+this.map[I][1]),this.map[I][2]),F.length=this.map[I][0];L.push(F.slice()),F.length=0;let R=L.pop();for(;R;){for(let I of R)F.push(I);R=L.pop()}this.map.length=0,this.index.clear()}};function addImplementation(F,I,L,R,z){if(L===0&&R.length===0)return;let De=F.index.get(I);if(De){De[1]+=L,z?(R.push(...De[2]),De[2]=R):De[2].push(...R);return}let Oe=[I,L,R];F.map.push(Oe),F.index.set(I,Oe)}var document$2={tokenize:initializeDocument},containerConstruct={tokenize:tokenizeContainer};function initializeDocument(F){let I=this,L=[],R=0,z,De,Oe;return ke;function ke(z){if(R<L.length){let De=L[R];return I.containerState=De[1],F.attempt(De[0].continuation,Ae,je)(z)}return je(z)}function Ae(F){if(R++,I.containerState._closeFlow){I.containerState._closeFlow=void 0,z&&Be();let L=I.events.length,De=L,Oe;for(;De--;)if(I.events[De][0]===`exit`&&I.events[De][1].type===`chunkFlow`){Oe=I.events[De][1].end;break}ze(R);let ke=L;for(;ke<I.events.length;)I.events[ke][1].end={...Oe},ke++;let Ae=new EditMap;return Ae.add(De+1,0,I.events.slice(L)),Ae.add(L,ke-L,[]),Ae.consume(I.events),je(F)}return ke(F)}function je(De){if(R===L.length){if(!z)return Pe(De);if(z.currentConstruct&&z.currentConstruct.concrete)return Ie(De);I.interrupt=!!(z.currentConstruct&&!z._gfmTableDynamicInterruptHack)}return I.containerState={},F.check(containerConstruct,Me,Ne)(De)}function Me(F){return z&&Be(),ze(R),Pe(F)}function Ne(F){return I.parser.lazy[I.now().line]=R!==L.length,Oe=I.now().offset,Ie(F)}function Pe(L){return I.containerState={},F.attempt(containerConstruct,Fe,Ie)(L)}function Fe(F){return R++,L.push([I.currentConstruct,I.containerState]),Pe(F)}function Ie(L){if(L===null){z&&Be(),ze(0),F.consume(L);return}return z||=I.parser.flow(I.now()),F.enter(`chunkFlow`,{_tokenizer:z,contentType:`flow`,previous:De}),Le(L)}function Le(L){if(L===null){Re(F.exit(`chunkFlow`),!0),ze(0),F.consume(L);return}return markdownLineEnding(L)?(F.consume(L),Re(F.exit(`chunkFlow`)),R=0,I.interrupt=void 0,ke):(F.consume(L),Le)}function Re(F,L){let ke=I.sliceStream(F);if(L&&ke.push(null),F.previous=De,De&&(De.next=F),De=F,z.defineSkip(F.start),z.write(ke),I.parser.lazy[F.start.line]){let F=z.events.length;for(;F--;)if(z.events[F][1].start.offset<Oe&&(!z.events[F][1].end||z.events[F][1].end.offset>Oe))return;let L=I.events.length,De=L,ke,Ae;for(;De--;)if(I.events[De][0]===`exit`&&I.events[De][1].type===`chunkFlow`){if(ke){Ae=I.events[De][1].end;break}ke=!0}for(ze(R),F=L;F<I.events.length;)I.events[F][1].end={...Ae},F++;let je=new EditMap;je.add(De+1,0,I.events.slice(L)),je.add(L,F-L,[]),je.consume(I.events)}}function ze(R){let z=L.length;for(;z-->R;){let R=L[z];I.containerState=R[1],R[0].exit.call(I,F)}L.length=R}function Be(){z.write([null]),De=void 0,z=void 0,I.containerState._closeFlow=void 0}}function tokenizeContainer(F,I,L){return factorySpace(F,F.attempt(this.parser.constructs.document,I,L),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function classifyCharacter(F){if(F===null||markdownLineEndingOrSpace(F)||unicodeWhitespace(F))return 1;if(unicodePunctuation(F))return 2}function resolveAll(F,I,L){let R=[],z=-1;for(;++z<F.length;){let De=F[z].resolveAll;De&&!R.includes(De)&&(I=De(I,L),R.push(De))}return I}var attention={name:`attention`,resolveAll:resolveAllAttention,tokenize:tokenizeAttention};function resolveAllAttention(F,I){let L=-1,R;for(;++L<F.length;)if(F[L][0]===`enter`&&F[L][1].type===`attentionSequence`&&F[L][1]._close){let z=L;for(;z--;)if(F[z][0]===`exit`&&F[z][1].type===`attentionSequence`&&F[z][1]._open&&I.sliceSerialize(F[z][1]).charCodeAt(0)===I.sliceSerialize(F[L][1]).charCodeAt(0)){if((F[z][1]._close||F[L][1]._open)&&(F[L][1].end.offset-F[L][1].start.offset)%3&&!((F[z][1].end.offset-F[z][1].start.offset+F[L][1].end.offset-F[L][1].start.offset)%3))continue;let De=F[z][1].end.offset-F[z][1].start.offset>1&&F[L][1].end.offset-F[L][1].start.offset>1?2:1,Oe={...F[z][1].end},ke={...F[L][1].start};movePoint(Oe,-De),movePoint(ke,De);let Ae={type:De>1?`strongSequence`:`emphasisSequence`,start:Oe,end:{...F[z][1].end}},je={type:De>1?`strongSequence`:`emphasisSequence`,start:{...F[L][1].start},end:ke},Me={type:De>1?`strongText`:`emphasisText`,start:{...F[z][1].end},end:{...F[L][1].start}},Ne={type:De>1?`strong`:`emphasis`,start:{...Ae.start},end:{...je.end}};F[z][1].end={...Ae.start},F[L][1].start={...je.end},R=[],F[z][1].end.offset-F[z][1].start.offset&&(R=push(R,[[`enter`,F[z][1],I],[`exit`,F[z][1],I]])),R=push(R,[[`enter`,Ne,I],[`enter`,Ae,I],[`exit`,Ae,I],[`enter`,Me,I]]),R=push(R,resolveAll(I.parser.constructs.insideSpan.null,F.slice(z+1,L),I)),R=push(R,[[`exit`,Me,I],[`enter`,je,I],[`exit`,je,I],[`exit`,Ne,I]]);let Pe=0;F[L][1].end.offset-F[L][1].start.offset&&(Pe=2,R=push(R,[[`enter`,F[L][1],I],[`exit`,F[L][1],I]])),splice(F,z-1,L-z+3,R),L=z+R.length-Pe-2;break}}for(L=-1;++L<F.length;)F[L][1].type===`attentionSequence`&&(F[L][1].type=`data`);return F}function tokenizeAttention(F,I){let L=this.parser.constructs.attentionMarkers.null,R=this.previous,z=classifyCharacter(R),De;return Oe;function Oe(I){return De=I,F.enter(`attentionSequence`),ke(I)}function ke(Oe){if(Oe===De)return F.consume(Oe),ke;let Ae=F.exit(`attentionSequence`),je=classifyCharacter(Oe),Me=!je||je===2&&z||L.includes(Oe)&&Oe!==42&&Oe!==95,Ne=!z||z===2&&je||L.includes(R)&&R!==42&&R!==95;return Ae._open=!!(De===42?Me:Me&&(z||!Ne)),Ae._close=!!(De===42?Ne:Ne&&(je||!Me)),I(Oe)}}function movePoint(F,I){F.column+=I,F.offset+=I,F._bufferIndex+=I}var autolink={name:`autolink`,tokenize:tokenizeAutolink};function tokenizeAutolink(F,I,L){let R=0;return z;function z(I){return F.enter(`autolink`),F.enter(`autolinkMarker`),F.consume(I),F.exit(`autolinkMarker`),F.enter(`autolinkProtocol`),De}function De(I){return asciiAlpha(I)?(F.consume(I),Oe):I===64?L(I):je(I)}function Oe(F){return F===43||F===45||F===46||asciiAlphanumeric(F)?(R=1,ke(F)):je(F)}function ke(I){return I===58?(F.consume(I),R=0,Ae):(I===43||I===45||I===46||asciiAlphanumeric(I))&&R++<32?(F.consume(I),ke):(R=0,je(I))}function Ae(R){return R===62?(F.exit(`autolinkProtocol`),F.enter(`autolinkMarker`),F.consume(R),F.exit(`autolinkMarker`),F.exit(`autolink`),I):R===null||R===32||R===60||asciiControl(R)?L(R):(F.consume(R),Ae)}function je(I){return I===64?(F.consume(I),Me):asciiAtext(I)?(F.consume(I),je):L(I)}function Me(F){return asciiAlphanumeric(F)?Ne(F):L(F)}function Ne(L){return L===46?(F.consume(L),R=0,Me):L===62?(F.exit(`autolinkProtocol`).type=`autolinkEmail`,F.enter(`autolinkMarker`),F.consume(L),F.exit(`autolinkMarker`),F.exit(`autolink`),I):Pe(L)}function Pe(I){if((I===45||asciiAlphanumeric(I))&&R++<63){let L=I===45?Pe:Ne;return F.consume(I),L}return L(I)}}var blankLine={partial:!0,tokenize:tokenizeBlankLine};function tokenizeBlankLine(F,I,L){return R;function R(I){return markdownSpace(I)?factorySpace(F,z,`linePrefix`)(I):z(I)}function z(F){return F===null||markdownLineEnding(F)?I(F):L(F)}}var blockQuote={continuation:{tokenize:tokenizeBlockQuoteContinuation},exit,name:`blockQuote`,tokenize:tokenizeBlockQuoteStart};function tokenizeBlockQuoteStart(F,I,L){let R=this;return z;function z(I){if(I===62){let L=R.containerState;return L.open||=(F.enter(`blockQuote`,{_container:!0}),!0),F.enter(`blockQuotePrefix`),F.enter(`blockQuoteMarker`),F.consume(I),F.exit(`blockQuoteMarker`),De}return L(I)}function De(L){return markdownSpace(L)?(F.enter(`blockQuotePrefixWhitespace`),F.consume(L),F.exit(`blockQuotePrefixWhitespace`),F.exit(`blockQuotePrefix`),I):(F.exit(`blockQuotePrefix`),I(L))}}function tokenizeBlockQuoteContinuation(F,I,L){let R=this;return z;function z(I){return markdownSpace(I)?factorySpace(F,De,`linePrefix`,R.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(I):De(I)}function De(R){return F.attempt(blockQuote,I,L)(R)}}function exit(F){F.exit(`blockQuote`)}var characterEscape={name:`characterEscape`,tokenize:tokenizeCharacterEscape};function tokenizeCharacterEscape(F,I,L){return R;function R(I){return F.enter(`characterEscape`),F.enter(`escapeMarker`),F.consume(I),F.exit(`escapeMarker`),z}function z(R){return asciiPunctuation(R)?(F.enter(`characterEscapeValue`),F.consume(R),F.exit(`characterEscapeValue`),F.exit(`characterEscape`),I):L(R)}}var characterReference={name:`characterReference`,tokenize:tokenizeCharacterReference};function tokenizeCharacterReference(F,I,L){let R=this,z=0,De,Oe;return ke;function ke(I){return F.enter(`characterReference`),F.enter(`characterReferenceMarker`),F.consume(I),F.exit(`characterReferenceMarker`),Ae}function Ae(I){return I===35?(F.enter(`characterReferenceMarkerNumeric`),F.consume(I),F.exit(`characterReferenceMarkerNumeric`),je):(F.enter(`characterReferenceValue`),De=31,Oe=asciiAlphanumeric,Me(I))}function je(I){return I===88||I===120?(F.enter(`characterReferenceMarkerHexadecimal`),F.consume(I),F.exit(`characterReferenceMarkerHexadecimal`),F.enter(`characterReferenceValue`),De=6,Oe=asciiHexDigit,Me):(F.enter(`characterReferenceValue`),De=7,Oe=asciiDigit,Me(I))}function Me(ke){if(ke===59&&z){let z=F.exit(`characterReferenceValue`);return Oe===asciiAlphanumeric&&!decodeNamedCharacterReference(R.sliceSerialize(z))?L(ke):(F.enter(`characterReferenceMarker`),F.consume(ke),F.exit(`characterReferenceMarker`),F.exit(`characterReference`),I)}return Oe(ke)&&z++<De?(F.consume(ke),Me):L(ke)}}var nonLazyContinuation={partial:!0,tokenize:tokenizeNonLazyContinuation};function tokenizeNonLazyContinuation(F,I,L){let R=this;return z;function z(I){return I===null?L(I):(F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),De)}function De(F){return R.parser.lazy[R.now().line]?L(F):I(F)}}var codeFenced={concrete:!0,name:`codeFenced`,tokenize:tokenizeCodeFenced};function tokenizeCodeFenced(F,I,L){let R=this,z={partial:!0,tokenize:it},De=0,Oe=0,ke;return Ae;function Ae(F){return je(F)}function je(I){let L=R.events[R.events.length-1];return De=L&&L[1].type===`linePrefix`?L[2].sliceSerialize(L[1],!0).length:0,ke=I,F.enter(`codeFenced`),F.enter(`codeFencedFence`),F.enter(`codeFencedFenceSequence`),Me(I)}function Me(I){return I===ke?(Oe++,F.consume(I),Me):Oe<3?L(I):(F.exit(`codeFencedFenceSequence`),markdownSpace(I)?factorySpace(F,Ne,`whitespace`)(I):Ne(I))}function Ne(L){return L===null||markdownLineEnding(L)?(F.exit(`codeFencedFence`),R.interrupt?I(L):F.check(nonLazyContinuation,Le,rt)(L)):(F.enter(`codeFencedFenceInfo`),F.enter(`chunkString`,{contentType:`string`}),Pe(L))}function Pe(I){return I===null||markdownLineEnding(I)?(F.exit(`chunkString`),F.exit(`codeFencedFenceInfo`),Ne(I)):markdownSpace(I)?(F.exit(`chunkString`),F.exit(`codeFencedFenceInfo`),factorySpace(F,Fe,`whitespace`)(I)):I===96&&I===ke?L(I):(F.consume(I),Pe)}function Fe(I){return I===null||markdownLineEnding(I)?Ne(I):(F.enter(`codeFencedFenceMeta`),F.enter(`chunkString`,{contentType:`string`}),Ie(I))}function Ie(I){return I===null||markdownLineEnding(I)?(F.exit(`chunkString`),F.exit(`codeFencedFenceMeta`),Ne(I)):I===96&&I===ke?L(I):(F.consume(I),Ie)}function Le(I){return F.attempt(z,rt,Re)(I)}function Re(I){return F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),ze}function ze(I){return De>0&&markdownSpace(I)?factorySpace(F,Be,`linePrefix`,De+1)(I):Be(I)}function Be(I){return I===null||markdownLineEnding(I)?F.check(nonLazyContinuation,Le,rt)(I):(F.enter(`codeFlowValue`),Ge(I))}function Ge(I){return I===null||markdownLineEnding(I)?(F.exit(`codeFlowValue`),Be(I)):(F.consume(I),Ge)}function rt(L){return F.exit(`codeFenced`),I(L)}function it(F,I,L){let z=0;return De;function De(I){return F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),Ae}function Ae(I){return F.enter(`codeFencedFence`),markdownSpace(I)?factorySpace(F,je,`linePrefix`,R.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(I):je(I)}function je(I){return I===ke?(F.enter(`codeFencedFenceSequence`),Me(I)):L(I)}function Me(I){return I===ke?(z++,F.consume(I),Me):z>=Oe?(F.exit(`codeFencedFenceSequence`),markdownSpace(I)?factorySpace(F,Ne,`whitespace`)(I):Ne(I)):L(I)}function Ne(R){return R===null||markdownLineEnding(R)?(F.exit(`codeFencedFence`),I(R)):L(R)}}}var codeIndented={name:`codeIndented`,tokenize:tokenizeCodeIndented},furtherStart={partial:!0,tokenize:tokenizeFurtherStart};function tokenizeCodeIndented(F,I,L){return R;function R(I){return F.enter(`codeIndented`),factorySpaceMinMax(F,z,L,`linePrefix`,4,4)(I)}function z(I){return I===null?Oe(I):markdownLineEnding(I)?F.attempt(furtherStart,z,Oe)(I):(F.enter(`codeFlowValue`),De(I))}function De(I){return I===null||markdownLineEnding(I)?(F.exit(`codeFlowValue`),z(I)):(F.consume(I),De)}function Oe(L){return F.exit(`codeIndented`),I(L)}}function tokenizeFurtherStart(F,I,L){let R=this;return z;function z(Oe){return R.parser.lazy[R.now().line]?L(Oe):markdownLineEnding(Oe)?(F.enter(`lineEnding`),F.consume(Oe),F.exit(`lineEnding`),z):factorySpaceMinMax(F,I,De,`linePrefix`,4,4)(Oe)}function De(F){return markdownLineEnding(F)?z(F):L(F)}}var codeText={name:`codeText`,previous,resolve:resolveCodeText,tokenize:tokenizeCodeText};function resolveCodeText(F){let I=F.length-4,L=3,R,z;if((F[L][1].type===`lineEnding`||F[L][1].type===`space`)&&(F[I][1].type===`lineEnding`||F[I][1].type===`space`)){for(R=L;++R<I;)if(F[R][1].type===`codeTextData`){F[L][1].type=`codeTextPadding`,F[I][1].type=`codeTextPadding`,L+=2,I-=2;break}}for(R=L-1,I++;++R<=I;)z===void 0?R!==I&&F[R][1].type!==`lineEnding`&&(z=R):(R===I||F[R][1].type===`lineEnding`)&&(F[z][1].type=`codeTextData`,R!==z+2&&(F[z][1].end=F[R-1][1].end,F.splice(z+2,R-z-2),I-=R-z-2,R=z+2),z=void 0);return F}function previous(F){return F!==96||this.events[this.events.length-1][1].type===`characterEscape`}function tokenizeCodeText(F,I,L){let R=0,z,De;return Oe;function Oe(I){return F.enter(`codeText`),F.enter(`codeTextSequence`),ke(I)}function ke(I){return I===96?(F.consume(I),R++,ke):(F.exit(`codeTextSequence`),Ae(I))}function Ae(I){return I===null?L(I):I===32?(F.enter(`space`),F.consume(I),F.exit(`space`),Ae):I===96?(De=F.enter(`codeTextSequence`),z=0,Me(I)):markdownLineEnding(I)?(F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),Ae):(F.enter(`codeTextData`),je(I))}function je(I){return I===null||I===32||I===96||markdownLineEnding(I)?(F.exit(`codeTextData`),Ae(I)):(F.consume(I),je)}function Me(L){return L===96?(F.consume(L),z++,Me):z===R?(F.exit(`codeTextSequence`),F.exit(`codeText`),I(L)):(De.type=`codeTextData`,je(L))}}var SpliceBuffer=class{constructor(F){this.left=F?[...F]:[],this.right=[]}get(F){if(F<0||F>=this.left.length+this.right.length)throw RangeError("Cannot access index `"+F+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return F<this.left.length?this.left[F]:this.right[this.right.length-F+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(F,I){let L=I??1/0;return L<this.left.length?this.left.slice(F,L):F>this.left.length?this.right.slice(this.right.length-L+this.left.length,this.right.length-F+this.left.length).reverse():this.left.slice(F).concat(this.right.slice(this.right.length-L+this.left.length).reverse())}splice(F,I,L){let R=I||0;this.setCursor(Math.trunc(F));let z=this.right.splice(this.right.length-R,1/0);return L&&chunkedPush(this.left,L),z.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(F){this.setCursor(1/0),this.left.push(F)}pushMany(F){this.setCursor(1/0),chunkedPush(this.left,F)}unshift(F){this.setCursor(0),this.right.push(F)}unshiftMany(F){this.setCursor(0),chunkedPush(this.right,F.reverse())}setCursor(F){if(!(F===this.left.length||F>this.left.length&&this.right.length===0||F<0&&this.left.length===0))if(F<this.left.length){let I=this.left.splice(F,1/0);chunkedPush(this.right,I.reverse())}else{let I=this.right.splice(this.left.length+this.right.length-F,1/0);chunkedPush(this.left,I.reverse())}}};function chunkedPush(F,I){let L=0;if(I.length<1e4)F.push(...I);else for(;L<I.length;)F.push(...I.slice(L,L+1e4)),L+=1e4}function subtokenize(F){let I={},L=-1,R,z,De,Oe,ke,Ae,je,Me=new SpliceBuffer(F);for(;++L<Me.length;){for(;L in I;)L=I[L];if(R=Me.get(L),L&&R[1].type===`chunkFlow`&&Me.get(L-1)[1].type===`listItemPrefix`&&(Ae=R[1]._tokenizer.events,De=0,De<Ae.length&&Ae[De][1].type===`lineEndingBlank`&&(De+=2),De<Ae.length&&Ae[De][1].type===`content`))for(;++De<Ae.length&&Ae[De][1].type!==`content`;)Ae[De][1].type===`chunkText`&&(Ae[De][1]._isInFirstContentOfListItem=!0,De++);if(R[0]===`enter`)R[1].contentType&&(Object.assign(I,subcontent(Me,L)),L=I[L],je=!0);else if(R[1]._container){for(De=L,z=void 0;De--;)if(Oe=Me.get(De),Oe[1].type===`lineEnding`||Oe[1].type===`lineEndingBlank`)Oe[0]===`enter`&&(z&&(Me.get(z)[1].type=`lineEndingBlank`),Oe[1].type=`lineEnding`,z=De);else if(!(Oe[1].type===`linePrefix`||Oe[1].type===`listItemIndent`))break;z&&(R[1].end={...Me.get(z)[1].start},ke=Me.slice(z,L),ke.unshift(R),Me.splice(z,L-z+1,ke))}}return splice(F,0,1/0,Me.slice(0)),!je}function subcontent(F,I){let L=F.get(I)[1],R=F.get(I)[2],z=I-1,De=[],Oe=L._tokenizer;Oe||(Oe=R.parser[L.contentType](L.start),L._contentTypeTextTrailing&&(Oe._contentTypeTextTrailing=!0));let ke=Oe.events,Ae=[],je={},Me,Ne,Pe=-1,Fe=L,Ie=0,Le=0,Re=[Le];for(;Fe;){for(;F.get(++z)[1]!==Fe;);De.push(z),Fe._tokenizer||(Me=R.sliceStream(Fe),Fe.next||Me.push(null),Ne&&Oe.defineSkip(Fe.start),Fe._isInFirstContentOfListItem&&(Oe._gfmTasklistFirstContentOfListItem=!0),Oe.write(Me),Fe._isInFirstContentOfListItem&&(Oe._gfmTasklistFirstContentOfListItem=void 0)),Ne=Fe,Fe=Fe.next}for(Fe=L;++Pe<ke.length;)ke[Pe][0]===`exit`&&ke[Pe-1][0]===`enter`&&ke[Pe][1].type===ke[Pe-1][1].type&&ke[Pe][1].start.line!==ke[Pe][1].end.line&&(Le=Pe+1,Re.push(Le),Fe._tokenizer=void 0,Fe.previous=void 0,Fe=Fe.next);for(Oe.events=[],Fe?(Fe._tokenizer=void 0,Fe.previous=void 0):Re.pop(),Pe=Re.length;Pe--;){let I=ke.slice(Re[Pe],Re[Pe+1]),L=De.pop();Ae.push([L,L+I.length-1]),F.splice(L,2,I)}for(Ae.reverse(),Pe=-1;++Pe<Ae.length;)je[Ie+Ae[Pe][0]]=Ie+Ae[Pe][1],Ie+=Ae[Pe][1]-Ae[Pe][0]-1;return je}var content={resolve:resolveContent,tokenize:tokenizeContent},continuationConstruct={partial:!0,tokenize:tokenizeContinuation};function resolveContent(F){return subtokenize(F),F}function tokenizeContent(F,I){let L;return R;function R(I){return F.enter(`content`),L=F.enter(`chunkContent`,{contentType:`content`}),z(I)}function z(I){return I===null?De(I):markdownLineEnding(I)?F.check(continuationConstruct,Oe,De)(I):(F.consume(I),z)}function De(L){return F.exit(`chunkContent`),F.exit(`content`),I(L)}function Oe(I){return F.consume(I),F.exit(`chunkContent`),L.next=F.enter(`chunkContent`,{contentType:`content`,previous:L}),L=L.next,z}}function tokenizeContinuation(F,I,L){let R=this;return z;function z(I){return F.exit(`chunkContent`),F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),factorySpace(F,De,`linePrefix`)}function De(z){if(z===null||markdownLineEnding(z))return L(z);let De=R.events[R.events.length-1];return!R.parser.constructs.disable.null.includes(`codeIndented`)&&De&&De[1].type===`linePrefix`&&De[2].sliceSerialize(De[1],!0).length>=4?I(z):F.interrupt(R.parser.constructs.flow,L,I)(z)}}function factoryDestination(F,I,L,R,z,De,Oe,ke,Ae){let je=Ae||1/0,Me=0;return Ne;function Ne(I){return I===60?(F.enter(R),F.enter(z),F.enter(De),F.consume(I),F.exit(De),Pe):I===null||I===32||I===41||asciiControl(I)?L(I):(F.enter(R),F.enter(Oe),F.enter(ke),F.enter(`chunkString`,{contentType:`string`}),Le(I))}function Pe(L){return L===62?(F.enter(De),F.consume(L),F.exit(De),F.exit(z),F.exit(R),I):(F.enter(ke),F.enter(`chunkString`,{contentType:`string`}),Fe(L))}function Fe(I){return I===62?(F.exit(`chunkString`),F.exit(ke),Pe(I)):I===null||I===60||markdownLineEnding(I)?L(I):(F.consume(I),I===92?Ie:Fe)}function Ie(I){return I===60||I===62||I===92?(F.consume(I),Fe):Fe(I)}function Le(z){return!Me&&(z===null||z===41||markdownLineEndingOrSpace(z))?(F.exit(`chunkString`),F.exit(ke),F.exit(Oe),F.exit(R),I(z)):Me<je&&z===40?(F.consume(z),Me++,Le):z===41?(F.consume(z),Me--,Le):z===null||z===32||z===40||asciiControl(z)?L(z):(F.consume(z),z===92?Re:Le)}function Re(I){return I===40||I===41||I===92?(F.consume(I),Le):Le(I)}}function factoryLabel(F,I,L,R,z,De){let Oe=this,ke=0,Ae;return je;function je(I){return F.enter(R),F.enter(z),F.consume(I),F.exit(z),F.enter(De),Me}function Me(je){return ke>999||je===null||je===91||je===93&&!Ae||je===94&&!ke&&`_hiddenFootnoteSupport`in Oe.parser.constructs?L(je):je===93?(F.exit(De),F.enter(z),F.consume(je),F.exit(z),F.exit(R),I):markdownLineEnding(je)?(F.enter(`lineEnding`),F.consume(je),F.exit(`lineEnding`),Me):(F.enter(`chunkString`,{contentType:`string`}),Ne(je))}function Ne(I){return I===null||I===91||I===93||markdownLineEnding(I)||ke++>999?(F.exit(`chunkString`),Me(I)):(F.consume(I),Ae||=!markdownSpace(I),I===92?Pe:Ne)}function Pe(I){return I===91||I===92||I===93?(F.consume(I),ke++,Ne):Ne(I)}}function factoryTitle(F,I,L,R,z,De){let Oe;return ke;function ke(I){return I===34||I===39||I===40?(F.enter(R),F.enter(z),F.consume(I),F.exit(z),Oe=I===40?41:I,Ae):L(I)}function Ae(L){return L===Oe?(F.enter(z),F.consume(L),F.exit(z),F.exit(R),I):(F.enter(De),je(L))}function je(I){return I===Oe?(F.exit(De),Ae(Oe)):I===null?L(I):markdownLineEnding(I)?(F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),factorySpace(F,je,`linePrefix`)):(F.enter(`chunkString`,{contentType:`string`}),Me(I))}function Me(I){return I===Oe||I===null||markdownLineEnding(I)?(F.exit(`chunkString`),je(I)):(F.consume(I),I===92?Ne:Me)}function Ne(I){return I===Oe||I===92?(F.consume(I),Me):Me(I)}}function factoryWhitespace(F,I){let L;return R;function R(z){return markdownLineEnding(z)?(F.enter(`lineEnding`),F.consume(z),F.exit(`lineEnding`),L=!0,R):markdownSpace(z)?factorySpace(F,R,L?`linePrefix`:`lineSuffix`)(z):I(z)}}var definition={name:`definition`,tokenize:tokenizeDefinition},titleBefore={partial:!0,tokenize:tokenizeTitleBefore};function tokenizeDefinition(F,I,L){let R=this,z;return De;function De(I){return F.enter(`definition`),Oe(I)}function Oe(I){return factoryLabel.call(R,F,ke,L,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(I)}function ke(I){return z=normalizeIdentifier(R.sliceSerialize(R.events[R.events.length-1][1]).slice(1,-1)),I===58?(F.enter(`definitionMarker`),F.consume(I),F.exit(`definitionMarker`),Ae):L(I)}function Ae(I){return markdownLineEndingOrSpace(I)?factoryWhitespace(F,je)(I):je(I)}function je(I){return factoryDestination(F,Me,L,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(I)}function Me(I){return F.attempt(titleBefore,Ne,Ne)(I)}function Ne(I){return markdownSpace(I)?factorySpace(F,Pe,`whitespace`)(I):Pe(I)}function Pe(De){return De===null||markdownLineEnding(De)?(F.exit(`definition`),R.parser.defined.push(z),I(De)):L(De)}}function tokenizeTitleBefore(F,I,L){return R;function R(I){return markdownLineEndingOrSpace(I)?factoryWhitespace(F,z)(I):L(I)}function z(I){return factoryTitle(F,De,L,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(I)}function De(I){return markdownSpace(I)?factorySpace(F,Oe,`whitespace`)(I):Oe(I)}function Oe(F){return F===null||markdownLineEnding(F)?I(F):L(F)}}var hardBreakEscape={name:`hardBreakEscape`,tokenize:tokenizeHardBreakEscape};function tokenizeHardBreakEscape(F,I,L){return R;function R(I){return F.enter(`hardBreakEscape`),F.consume(I),z}function z(R){return markdownLineEnding(R)?(F.exit(`hardBreakEscape`),I(R)):L(R)}}var headingAtx={name:`headingAtx`,resolve:resolveHeadingAtx,tokenize:tokenizeHeadingAtx};function resolveHeadingAtx(F,I){let L=F.length-2,R=3;if(F[R][1].type===`whitespace`&&(R+=2),L-2>R&&F[L][1].type===`whitespace`&&(L-=2),F[L][1].type===`atxHeadingSequence`&&(R===L-1||L-4>R&&F[L-2][1].type===`whitespace`)&&(L-=R+1===L?2:4),L>R){let z={type:`atxHeadingText`,start:F[R][1].start,end:F[L][1].end},De={type:`chunkText`,start:F[R][1].start,end:F[L][1].end,contentType:`text`};splice(F,R,L-R+1,[[`enter`,z,I],[`enter`,De,I],[`exit`,De,I],[`exit`,z,I]])}return F}function tokenizeHeadingAtx(F,I,L){let R=0;return z;function z(I){return F.enter(`atxHeading`),De(I)}function De(I){return F.enter(`atxHeadingSequence`),Oe(I)}function Oe(I){return I===35&&R++<6?(F.consume(I),Oe):I===null||markdownLineEndingOrSpace(I)?(F.exit(`atxHeadingSequence`),ke(I)):L(I)}function ke(L){return L===35?(F.enter(`atxHeadingSequence`),Ae(L)):L===null||markdownLineEnding(L)?(F.exit(`atxHeading`),I(L)):markdownSpace(L)?factorySpace(F,ke,`whitespace`)(L):(F.enter(`atxHeadingText`),je(L))}function Ae(I){return I===35?(F.consume(I),Ae):(F.exit(`atxHeadingSequence`),ke(I))}function je(I){return I===null||I===35||markdownLineEndingOrSpace(I)?(F.exit(`atxHeadingText`),ke(I)):(F.consume(I),je)}}var htmlBlockNames=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),htmlRawNames=[`pre`,`script`,`style`,`textarea`],htmlFlow={concrete:!0,name:`htmlFlow`,resolveTo:resolveToHtmlFlow,tokenize:tokenizeHtmlFlow},blankLineBefore={partial:!0,tokenize:tokenizeBlankLineBefore};function resolveToHtmlFlow(F){let I=F.length;for(;I--&&!(F[I][0]===`enter`&&F[I][1].type===`htmlFlow`););return I>1&&F[I-2][1].type===`linePrefix`&&(F[I][1].start=F[I-2][1].start,F[I+1][1].start=F[I-2][1].start,F.splice(I-2,2)),F}function tokenizeHtmlFlow(F,I,L){let R=this,z,De,Oe,ke,Ae;return je;function je(F){return Me(F)}function Me(I){return F.enter(`htmlFlow`),F.enter(`htmlFlowData`),F.consume(I),Ne}function Ne(ke){return ke===33?(F.consume(ke),Pe):ke===47?(F.consume(ke),De=!0,Le):ke===63?(F.consume(ke),z=3,R.interrupt?I:yr):asciiAlpha(ke)?(F.consume(ke),Oe=String.fromCharCode(ke),Re):L(ke)}function Pe(De){return De===45?(F.consume(De),z=2,Fe):De===91?(F.consume(De),z=5,ke=0,Ie):asciiAlpha(De)?(F.consume(De),z=4,R.interrupt?I:yr):L(De)}function Fe(z){return z===45?(F.consume(z),R.interrupt?I:yr):L(z)}function Ie(z){return z===`CDATA[`.charCodeAt(ke++)?(F.consume(z),ke===6?R.interrupt?I:dt:Ie):L(z)}function Le(I){return asciiAlpha(I)?(F.consume(I),Oe=String.fromCharCode(I),Re):L(I)}function Re(ke){if(ke===null||ke===47||ke===62||markdownLineEndingOrSpace(ke)){let Ae=ke===47,je=Oe.toLowerCase();return!Ae&&!De&&htmlRawNames.includes(je)?(z=1,R.interrupt?I(ke):dt(ke)):htmlBlockNames.includes(Oe.toLowerCase())?(z=6,Ae?(F.consume(ke),ze):R.interrupt?I(ke):dt(ke)):(z=7,R.interrupt&&!R.parser.lazy[R.now().line]?L(ke):De?Be(ke):Ge(ke))}return ke===45||asciiAlphanumeric(ke)?(F.consume(ke),Oe+=String.fromCharCode(ke),Re):L(ke)}function ze(z){return z===62?(F.consume(z),R.interrupt?I:dt):L(z)}function Be(I){return markdownSpace(I)?(F.consume(I),Be):lt(I)}function Ge(I){return I===47?(F.consume(I),lt):I===58||I===95||asciiAlpha(I)?(F.consume(I),rt):markdownSpace(I)?(F.consume(I),Ge):lt(I)}function rt(I){return I===45||I===46||I===58||I===95||asciiAlphanumeric(I)?(F.consume(I),rt):it(I)}function it(I){return I===61?(F.consume(I),at):markdownSpace(I)?(F.consume(I),it):Ge(I)}function at(I){return I===null||I===60||I===61||I===62||I===96?L(I):I===34||I===39?(F.consume(I),Ae=I,ot):markdownSpace(I)?(F.consume(I),at):st(I)}function ot(I){return I===Ae?(F.consume(I),Ae=null,ct):I===null||markdownLineEnding(I)?L(I):(F.consume(I),ot)}function st(I){return I===null||I===34||I===39||I===47||I===60||I===61||I===62||I===96||markdownLineEndingOrSpace(I)?it(I):(F.consume(I),st)}function ct(F){return F===47||F===62||markdownSpace(F)?Ge(F):L(F)}function lt(I){return I===62?(F.consume(I),ut):L(I)}function ut(I){return I===null||markdownLineEnding(I)?dt(I):markdownSpace(I)?(F.consume(I),ut):L(I)}function dt(I){return I===45&&z===2?(F.consume(I),ht):I===60&&z===1?(F.consume(I),gt):I===62&&z===4?(F.consume(I),br):I===63&&z===3?(F.consume(I),yr):I===93&&z===5?(F.consume(I),yt):markdownLineEnding(I)&&(z===6||z===7)?(F.exit(`htmlFlowData`),F.check(blankLineBefore,hw,ft)(I)):I===null||markdownLineEnding(I)?(F.exit(`htmlFlowData`),ft(I)):(F.consume(I),dt)}function ft(I){return F.check(nonLazyContinuation,pt,hw)(I)}function pt(I){return F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),mt}function mt(I){return I===null||markdownLineEnding(I)?ft(I):(F.enter(`htmlFlowData`),dt(I))}function ht(I){return I===45?(F.consume(I),yr):dt(I)}function gt(I){return I===47?(F.consume(I),Oe=``,vt):dt(I)}function vt(I){if(I===62){let L=Oe.toLowerCase();return htmlRawNames.includes(L)?(F.consume(I),br):dt(I)}return asciiAlpha(I)&&Oe.length<8?(F.consume(I),Oe+=String.fromCharCode(I),vt):dt(I)}function yt(I){return I===93?(F.consume(I),yr):dt(I)}function yr(I){return I===62?(F.consume(I),br):I===45&&z===2?(F.consume(I),yr):dt(I)}function br(I){return I===null||markdownLineEnding(I)?(F.exit(`htmlFlowData`),hw(I)):(F.consume(I),br)}function hw(L){return F.exit(`htmlFlow`),I(L)}}function tokenizeBlankLineBefore(F,I,L){return R;function R(R){return F.enter(`lineEnding`),F.consume(R),F.exit(`lineEnding`),F.attempt(blankLine,I,L)}}var htmlText={name:`htmlText`,tokenize:tokenizeHtmlText};function tokenizeHtmlText(F,I,L){let R=this,z,De,Oe;return ke;function ke(I){return F.enter(`htmlText`),F.enter(`htmlTextData`),F.consume(I),Ae}function Ae(I){return I===33?(F.consume(I),je):I===47?(F.consume(I),it):I===63?(F.consume(I),Ge):asciiAlpha(I)?(F.consume(I),st):L(I)}function je(I){return I===45?(F.consume(I),Me):I===91?(F.consume(I),De=0,Ie):asciiAlpha(I)?(F.consume(I),Be):L(I)}function Me(I){return I===45?(F.consume(I),Fe):L(I)}function Ne(I){return I===null?L(I):I===45?(F.consume(I),Pe):markdownLineEnding(I)?(Oe=Ne,gt(I)):(F.consume(I),Ne)}function Pe(I){return I===45?(F.consume(I),Fe):Ne(I)}function Fe(F){return F===62?ht(F):F===45?Pe(F):Ne(F)}function Ie(I){return I===`CDATA[`.charCodeAt(De++)?(F.consume(I),De===6?Le:Ie):L(I)}function Le(I){return I===null?L(I):I===93?(F.consume(I),Re):markdownLineEnding(I)?(Oe=Le,gt(I)):(F.consume(I),Le)}function Re(I){return I===93?(F.consume(I),ze):Le(I)}function ze(I){return I===62?ht(I):I===93?(F.consume(I),ze):Le(I)}function Be(I){return I===null||I===62?ht(I):markdownLineEnding(I)?(Oe=Be,gt(I)):(F.consume(I),Be)}function Ge(I){return I===null?L(I):I===63?(F.consume(I),rt):markdownLineEnding(I)?(Oe=Ge,gt(I)):(F.consume(I),Ge)}function rt(F){return F===62?ht(F):Ge(F)}function it(I){return asciiAlpha(I)?(F.consume(I),at):L(I)}function at(I){return I===45||asciiAlphanumeric(I)?(F.consume(I),at):ot(I)}function ot(I){return markdownLineEnding(I)?(Oe=ot,gt(I)):markdownSpace(I)?(F.consume(I),ot):ht(I)}function st(I){return I===45||asciiAlphanumeric(I)?(F.consume(I),st):I===47||I===62||markdownLineEndingOrSpace(I)?ct(I):L(I)}function ct(I){return I===47?(F.consume(I),ht):I===58||I===95||asciiAlpha(I)?(F.consume(I),lt):markdownLineEnding(I)?(Oe=ct,gt(I)):markdownSpace(I)?(F.consume(I),ct):ht(I)}function lt(I){return I===45||I===46||I===58||I===95||asciiAlphanumeric(I)?(F.consume(I),lt):ut(I)}function ut(I){return I===61?(F.consume(I),dt):markdownLineEnding(I)?(Oe=ut,gt(I)):markdownSpace(I)?(F.consume(I),ut):ct(I)}function dt(I){return I===null||I===60||I===61||I===62||I===96?L(I):I===34||I===39?(F.consume(I),z=I,ft):markdownLineEnding(I)?(Oe=dt,gt(I)):markdownSpace(I)?(F.consume(I),dt):(F.consume(I),pt)}function ft(I){return I===z?(F.consume(I),z=void 0,mt):I===null?L(I):markdownLineEnding(I)?(Oe=ft,gt(I)):(F.consume(I),ft)}function pt(I){return I===null||I===34||I===39||I===60||I===61||I===96?L(I):I===47||I===62||markdownLineEndingOrSpace(I)?ct(I):(F.consume(I),pt)}function mt(F){return F===47||F===62||markdownLineEndingOrSpace(F)?ct(F):L(F)}function ht(R){return R===62?(F.consume(R),F.exit(`htmlTextData`),F.exit(`htmlText`),I):L(R)}function gt(I){return F.exit(`htmlTextData`),F.enter(`lineEnding`),F.consume(I),F.exit(`lineEnding`),vt}function vt(I){return markdownSpace(I)?factorySpace(F,yt,`linePrefix`,R.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(I):yt(I)}function yt(I){return F.enter(`htmlTextData`),Oe(I)}}var labelEnd={name:`labelEnd`,resolveAll:resolveAllLabelEnd,resolveTo:resolveToLabelEnd,tokenize:tokenizeLabelEnd},resourceConstruct={tokenize:tokenizeResource},referenceFullConstruct={tokenize:tokenizeReferenceFull},referenceCollapsedConstruct={tokenize:tokenizeReferenceCollapsed};function resolveAllLabelEnd(F){let I=-1,L=[];for(;++I<F.length;){let R=F[I][1];if(L.push(F[I]),R.type===`labelImage`||R.type===`labelLink`||R.type===`labelEnd`){let F=R.type===`labelImage`?4:2;R.type=`data`,I+=F}}return F.length!==L.length&&splice(F,0,F.length,L),F}function resolveToLabelEnd(F,I){let L=F.length,R=0,z,De,Oe;for(;L--;){let I=F[L][1];if(z){if(I.type===`link`||I.type===`labelLink`&&I._inactive)break;F[L][0]===`enter`&&I.type===`labelLink`&&(I._inactive=!0)}else if(De){if(F[L][0]===`enter`&&(I.type===`labelImage`||I.type===`labelLink`)&&!I._balanced&&(z=L,I.type!==`labelLink`)){R=2;break}}else I.type===`labelEnd`&&(De=L)}let ke={type:F[z][1].type===`labelLink`?`link`:`image`,start:{...F[z][1].start},end:{...F[F.length-1][1].end}},Ae={type:`label`,start:{...F[z][1].start},end:{...F[De][1].end}},je={type:`labelText`,start:{...F[z+R+2][1].end},end:{...F[De-2][1].start}};return Oe=[[`enter`,ke,I],[`enter`,Ae,I]],Oe=push(Oe,F.slice(z+1,z+R+3)),Oe=push(Oe,[[`enter`,je,I]]),Oe=push(Oe,resolveAll(I.parser.constructs.insideSpan.null,F.slice(z+R+4,De-3),I)),Oe=push(Oe,[[`exit`,je,I],F[De-2],F[De-1],[`exit`,Ae,I]]),Oe=push(Oe,F.slice(De+1)),Oe=push(Oe,[[`exit`,ke,I]]),splice(F,z,F.length,Oe),F}function tokenizeLabelEnd(F,I,L){let R=this,z=R._labelStarts,De,Oe;if(z){for(;z.length>0&&z[z.length-1]._balanced;)z.pop();De=z[z.length-1]}return ke;function ke(I){return De?De._inactive?Ne(I):(Oe=R.parser.defined.includes(normalizeIdentifier(R.sliceSerialize({start:De.end,end:R.now()}))),F.enter(`labelEnd`),F.enter(`labelMarker`),F.consume(I),F.exit(`labelMarker`),F.exit(`labelEnd`),Ae):L(I)}function Ae(I){return I===40?F.attempt(resourceConstruct,Me,Oe?Me:Ne)(I):I===91?F.attempt(referenceFullConstruct,Me,Oe?je:Ne)(I):Oe?Me(I):Ne(I)}function je(I){return F.attempt(referenceCollapsedConstruct,Me,Ne)(I)}function Me(F){return z.pop(),I(F)}function Ne(F){return De._balanced=!0,L(F)}}function tokenizeResource(F,I,L){return R;function R(I){return F.enter(`resource`),F.enter(`resourceMarker`),F.consume(I),F.exit(`resourceMarker`),z}function z(I){return markdownLineEndingOrSpace(I)?factoryWhitespace(F,De)(I):De(I)}function De(I){return I===41?Me(I):factoryDestination(F,Oe,ke,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(I)}function Oe(I){return markdownLineEndingOrSpace(I)?factoryWhitespace(F,Ae)(I):Me(I)}function ke(F){return L(F)}function Ae(I){return I===34||I===39||I===40?factoryTitle(F,je,L,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(I):Me(I)}function je(I){return markdownLineEndingOrSpace(I)?factoryWhitespace(F,Me)(I):Me(I)}function Me(R){return R===41?(F.enter(`resourceMarker`),F.consume(R),F.exit(`resourceMarker`),F.exit(`resource`),I):L(R)}}function tokenizeReferenceFull(F,I,L){let R=this;return z;function z(I){return factoryLabel.call(R,F,De,Oe,`reference`,`referenceMarker`,`referenceString`)(I)}function De(F){return R.parser.defined.includes(normalizeIdentifier(R.sliceSerialize(R.events[R.events.length-1][1]).slice(1,-1)))?I(F):L(F)}function Oe(F){return L(F)}}function tokenizeReferenceCollapsed(F,I,L){return R;function R(I){return F.enter(`reference`),F.enter(`referenceMarker`),F.consume(I),F.exit(`referenceMarker`),z}function z(R){return R===93?(F.enter(`referenceMarker`),F.consume(R),F.exit(`referenceMarker`),F.exit(`reference`),I):L(R)}}var labelStartImage={name:`labelStartImage`,resolveAll:labelEnd.resolveAll,tokenize:tokenizeLabelStartImage};function tokenizeLabelStartImage(F,I,L){let R=this,z;return De;function De(I){return F.enter(`labelImage`),F.enter(`labelImageMarker`),F.consume(I),F.exit(`labelImageMarker`),Oe}function Oe(I){return I===91?(F.enter(`labelMarker`),F.consume(I),F.exit(`labelMarker`),z=F.exit(`labelImage`),ke):L(I)}function ke(F){return F===94&&`_hiddenFootnoteSupport`in R.parser.constructs?L(F):(R._labelStarts=R._labelStarts||[],R._labelStarts.push(z),I(F))}}var labelStartLink={name:`labelStartLink`,resolveAll:labelEnd.resolveAll,tokenize:tokenizeLabelStartLink};function tokenizeLabelStartLink(F,I,L){let R=this,z;return De;function De(I){return F.enter(`labelLink`),F.enter(`labelMarker`),F.consume(I),F.exit(`labelMarker`),z=F.exit(`labelLink`),Oe}function Oe(F){return F===94&&`_hiddenFootnoteSupport`in R.parser.constructs?L(F):(R._labelStarts=R._labelStarts||[],R._labelStarts.push(z),I(F))}}var lineEnding={name:`lineEnding`,tokenize:tokenizeLineEnding};function tokenizeLineEnding(F,I){return L;function L(L){return F.enter(`lineEnding`),F.consume(L),F.exit(`lineEnding`),factorySpace(F,I,`linePrefix`)}}var thematicBreak$1={name:`thematicBreak`,tokenize:tokenizeThematicBreak};function tokenizeThematicBreak(F,I,L){let R=0,z;return De;function De(I){return F.enter(`thematicBreak`),Oe(I)}function Oe(F){return z=F,ke(F)}function ke(De){return De===z?(F.enter(`thematicBreakSequence`),Ae(De)):R>=3&&(De===null||markdownLineEnding(De))?(F.exit(`thematicBreak`),I(De)):L(De)}function Ae(I){return I===z?(F.consume(I),R++,Ae):(F.exit(`thematicBreakSequence`),markdownSpace(I)?factorySpace(F,ke,`whitespace`)(I):ke(I))}}var list$1={continuation:{tokenize:tokenizeListContinuation},exit:tokenizeListEnd,name:`list`,tokenize:tokenizeListStart},listItemPrefixWhitespaceConstruct={partial:!0,tokenize:tokenizeListItemPrefixWhitespace},indentConstruct={partial:!0,tokenize:tokenizeIndent};function tokenizeListStart(F,I,L){let R=this,z=R.events[R.events.length-1],De=z&&z[1].type===`linePrefix`?z[2].sliceSerialize(z[1],!0).length:0,Oe=0;return ke;function ke(I){let z=R.containerState.type||(I===42||I===43||I===45?`listUnordered`:`listOrdered`);if(z===`listUnordered`?!R.containerState.marker||I===R.containerState.marker:asciiDigit(I)){if(R.containerState.type||(R.containerState.type=z,F.enter(z,{_container:!0})),z===`listUnordered`)return F.enter(`listItemPrefix`),I===42||I===45?F.check(thematicBreak$1,L,je)(I):je(I);if(!R.interrupt||I===49)return F.enter(`listItemPrefix`),F.enter(`listItemValue`),Ae(I)}return L(I)}function Ae(I){return asciiDigit(I)&&++Oe<10?(F.consume(I),Ae):(!R.interrupt||Oe<2)&&(R.containerState.marker?I===R.containerState.marker:I===41||I===46)?(F.exit(`listItemValue`),je(I)):L(I)}function je(I){return F.enter(`listItemMarker`),F.consume(I),F.exit(`listItemMarker`),R.containerState.marker=R.containerState.marker||I,F.check(blankLine,R.interrupt?L:Me,F.attempt(listItemPrefixWhitespaceConstruct,Pe,Ne))}function Me(F){return R.containerState.initialBlankLine=!0,De++,Pe(F)}function Ne(I){return markdownSpace(I)?(F.enter(`listItemPrefixWhitespace`),F.consume(I),F.exit(`listItemPrefixWhitespace`),Pe):L(I)}function Pe(L){return R.containerState.size=De+R.sliceSerialize(F.exit(`listItemPrefix`),!0).length,I(L)}}function tokenizeListContinuation(F,I,L){let R=this;return R.containerState._closeFlow=void 0,F.check(blankLine,z,De);function z(L){return R.containerState.furtherBlankLines=R.containerState.furtherBlankLines||R.containerState.initialBlankLine,factorySpace(F,I,`listItemIndent`,R.containerState.size+1)(L)}function De(L){return R.containerState.furtherBlankLines||!markdownSpace(L)?(R.containerState.furtherBlankLines=void 0,R.containerState.initialBlankLine=void 0,Oe(L)):(R.containerState.furtherBlankLines=void 0,R.containerState.initialBlankLine=void 0,F.attempt(indentConstruct,I,Oe)(L))}function Oe(z){return R.containerState._closeFlow=!0,R.interrupt=void 0,factorySpace(F,F.attempt(list$1,I,L),`linePrefix`,R.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(z)}}function tokenizeIndent(F,I,L){let R=this;return factorySpace(F,z,`listItemIndent`,R.containerState.size+1);function z(F){let z=R.events[R.events.length-1];return z&&z[1].type===`listItemIndent`&&z[2].sliceSerialize(z[1],!0).length===R.containerState.size?I(F):L(F)}}function tokenizeListEnd(F){F.exit(this.containerState.type)}function tokenizeListItemPrefixWhitespace(F,I,L){let R=this;return factorySpace(F,z,`listItemPrefixWhitespace`,R.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function z(F){let z=R.events[R.events.length-1];return!markdownSpace(F)&&z&&z[1].type===`listItemPrefixWhitespace`?I(F):L(F)}}var setextUnderline={name:`setextUnderline`,resolveTo:resolveToSetextUnderline,tokenize:tokenizeSetextUnderline};function resolveToSetextUnderline(F,I){let L=new EditMap,R=F.length,z,De,Oe;for(;R--;)if(F[R][0]===`enter`){if(F[R][1].type===`content`){z=R;break}F[R][1].type===`paragraph`&&(De=R)}else F[R][1].type===`content`&&L.add(R,1,[]),!Oe&&F[R][1].type===`definition`&&(Oe=R);let ke={type:`setextHeading`,start:{...F[z][1].start},end:{...F[F.length-1][1].end}};return F[De][1].type=`setextHeadingText`,Oe?(L.add(De,0,[[`enter`,ke,I]]),L.add(Oe+1,0,[[`exit`,F[z][1],I]]),F[z][1].end={...F[Oe][1].end}):F[z][1]=ke,L.add(F.length,0,[[`exit`,ke,I]]),L.consume(F),F}function tokenizeSetextUnderline(F,I,L){let R=this,z;return De;function De(I){let De=R.events.length,ke;for(;De--;)if(R.events[De][1].type!==`lineEnding`&&R.events[De][1].type!==`linePrefix`&&R.events[De][1].type!==`content`){ke=R.events[De][1].type===`paragraph`;break}return!R.parser.lazy[R.now().line]&&(R.interrupt||ke)?(F.enter(`setextHeadingLine`),z=I,Oe(I)):L(I)}function Oe(I){return F.enter(`setextHeadingLineSequence`),ke(I)}function ke(I){return I===z?(F.consume(I),ke):(F.exit(`setextHeadingLineSequence`),markdownSpace(I)?factorySpace(F,Ae,`lineSuffix`)(I):Ae(I))}function Ae(R){return R===null||markdownLineEnding(R)?(F.exit(`setextHeadingLine`),I(R)):L(R)}}var flow$1={tokenize:initializeFlow};function initializeFlow(F){let I=this,L=F.attempt(blankLine,R,F.attempt(this.parser.constructs.flowInitial,z,factorySpace(F,F.attempt(this.parser.constructs.flow,z,F.attempt(content,z)),`linePrefix`)));return L;function R(R){if(R===null){F.consume(R);return}return F.enter(`lineEndingBlank`),F.consume(R),F.exit(`lineEndingBlank`),I.currentConstruct=void 0,L}function z(R){if(R===null){F.consume(R);return}return F.enter(`lineEnding`),F.consume(R),F.exit(`lineEnding`),I.currentConstruct=void 0,L}}var resolver$1={resolveAll:createResolver()},string$1=initializeFactory(`string`),text$2=initializeFactory(`text`);function initializeFactory(F){return{resolveAll:createResolver(F===`text`?resolveAllLineSuffixes:void 0),tokenize:I};function I(I){let L=this,R=this.parser.constructs[F],z=I.attempt(R,De,Oe);return De;function De(F){return Ae(F)?z(F):Oe(F)}function Oe(F){if(F===null){I.consume(F);return}return I.enter(`data`),I.consume(F),ke}function ke(F){return Ae(F)?(I.exit(`data`),z(F)):(I.consume(F),ke)}function Ae(F){if(F===null)return!0;let I=R[F],z=-1;if(I)for(;++z<I.length;){let F=I[z];if(!F.previous||F.previous.call(L,L.previous))return!0}return!1}}}function createResolver(F){return I;function I(I,L){let R=-1,z;for(;++R<=I.length;)z===void 0?I[R]&&I[R][1].type===`data`&&(z=R,R++):(!I[R]||I[R][1].type!==`data`)&&(R!==z+2&&(I[z][1].end=I[R-1][1].end,I.splice(z+2,R-z-2),R=z+2),z=void 0);return F?F(I,L):I}}function resolveAllLineSuffixes(F,I){let L=new EditMap,R=0;for(;++R<=F.length;)if((R===F.length||F[R][1].type===`lineEnding`)&&F[R-1][1].type===`data`){let z=F[R-1][1],De=I.sliceStream(z),Oe=De.length,ke=-1,Ae=0,je;for(;Oe--;){let F=De[Oe];if(typeof F==`string`){for(ke=F.length;F.charCodeAt(ke-1)===32;)Ae++,ke--;if(ke)break;ke=-1}else if(F===-2)je=!0,Ae++;else if(F!==-1){Oe++;break}}if(I._contentTypeTextTrailing&&R===F.length&&(Ae=0),Ae){let De={type:R===F.length||je||Ae<2?`lineSuffix`:`hardBreakTrailing`,start:{_bufferIndex:Oe?ke:z.start._bufferIndex+ke,_index:z.start._index+Oe,line:z.end.line,column:z.end.column-Ae,offset:z.end.offset-Ae},end:{...z.end}};z.end={...De.start},z.start.offset===z.end.offset?Object.assign(z,De):L.add(R,0,[[`enter`,De,I],[`exit`,De,I]])}R++}return L.consume(F),F}var constructs_exports=__exportAll({attentionMarkers:()=>attentionMarkers,contentInitial:()=>contentInitial,disable:()=>disable,document:()=>document$1,flow:()=>flow,flowInitial:()=>flowInitial,insideSpan:()=>insideSpan,string:()=>string,text:()=>text$1}),document$1={42:list$1,43:list$1,45:list$1,48:list$1,49:list$1,50:list$1,51:list$1,52:list$1,53:list$1,54:list$1,55:list$1,56:list$1,57:list$1,62:blockQuote},contentInitial={91:definition},flowInitial={[-2]:codeIndented,[-1]:codeIndented,32:codeIndented},flow={35:headingAtx,42:thematicBreak$1,45:[setextUnderline,thematicBreak$1],60:htmlFlow,61:setextUnderline,95:thematicBreak$1,96:codeFenced,126:codeFenced},string={38:characterReference,92:characterEscape},text$1={[-5]:lineEnding,[-4]:lineEnding,[-3]:lineEnding,33:labelStartImage,38:characterReference,42:attention,60:[autolink,htmlText],91:labelStartLink,92:[hardBreakEscape,characterEscape],93:labelEnd,95:attention,96:codeText},insideSpan={null:[attention,resolver$1]},attentionMarkers={null:[42,95]},disable={null:[]};function createTokenizer(F,I,L){let R={_bufferIndex:-1,_index:0,line:L&&L.line||1,column:L&&L.column||1,offset:L&&L.offset||0},z={},De=[],Oe=[],ke=[],Ae={attempt:ot(it),check:ot(at),consume:Be,enter:Ge,exit:rt,interrupt:ot(at,{interrupt:!0})},je={code:null,containerState:{},defineSkip:Le,events:[],now:Ie,parser:F,previous:null,sliceSerialize:Pe,sliceStream:Fe,write:Ne},Me=I.tokenize.call(je,Ae);return I.resolveAll&&De.push(I),je;function Ne(F){return Oe=push(Oe,F),Re(),Oe[Oe.length-1]===null?(st(I,0),je.events=resolveAll(De,je.events,je),je.events):[]}function Pe(F,I){return serializeChunks(Fe(F),I)}function Fe(F){return sliceChunks(Oe,F)}function Ie(){let{_bufferIndex:F,_index:I,line:L,column:z,offset:De}=R;return{_bufferIndex:F,_index:I,line:L,column:z,offset:De}}function Le(F){z[F.line]=F.column,lt()}function Re(){for(;R._index<Oe.length;){let F=Oe[R._index];if(typeof F==`string`){let I=R._index;for(R._bufferIndex<0&&(R._bufferIndex=0);R._index===I&&R._bufferIndex<F.length;)ze(F.charCodeAt(R._bufferIndex))}else ze(F)}}function ze(F){Me=Me(F)}function Be(F){markdownLineEnding(F)?(R.line++,R.column=1,R.offset+=F===-3?2:1,lt()):F!==-1&&(R.column++,R.offset++),R._bufferIndex<0?R._index++:(R._bufferIndex++,R._bufferIndex===Oe[R._index].length&&(R._bufferIndex=-1,R._index++)),je.previous=F}function Ge(F,I){let L=I||{};return L.type=F,L.start=Ie(),je.events.push([`enter`,L,je]),ke.push(L),L}function rt(F){let I=ke.pop();return I.end=Ie(),je.events.push([`exit`,I,je]),I}function it(F,I){st(F,I.from)}function at(F,I){I.restore()}function ot(F,I){return L;function L(L,R,z){let De,Oe,ke,Me;return Array.isArray(L)?Pe(L):`tokenize`in L?Pe([L]):Ne(L);function Ne(F){return I;function I(I){let L=I!==null&&F[I],R=I!==null&&F.null;return Pe([...Array.isArray(L)?L:L?[L]:[],...Array.isArray(R)?R:R?[R]:[]])(I)}}function Pe(F){return De=F,Oe=0,F.length===0?z:Fe(F[Oe])}function Fe(F){return L;function L(L){return Me=ct(),ke=F,F.partial||(je.currentConstruct=F),F.name&&je.parser.constructs.disable.null.includes(F.name)?Le(L):F.tokenize.call(I?Object.assign(Object.create(je),I):je,Ae,Ie,Le)(L)}}function Ie(I){return F(ke,Me),R}function Le(F){return Me.restore(),++Oe<De.length?Fe(De[Oe]):z}}}function st(F,I){F.resolveAll&&!De.includes(F)&&De.push(F),F.resolve&&splice(je.events,I,je.events.length-I,F.resolve(je.events.slice(I),je)),F.resolveTo&&(je.events=F.resolveTo(je.events,je))}function ct(){let F=Ie(),I=je.previous,L=je.currentConstruct,z=je.events.length,De=Array.from(ke);return{from:z,restore:Oe};function Oe(){R=F,je.previous=I,je.currentConstruct=L,je.events.length=z,ke=De,lt()}}function lt(){R.line in z&&R.column<2&&(R.column=z[R.line],R.offset+=z[R.line]-1)}}function sliceChunks(F,I){let L=I.start._index,R=I.start._bufferIndex,z=I.end._index,De=I.end._bufferIndex,Oe;if(L===z)Oe=[F[L].slice(R,De)];else{if(Oe=F.slice(L,z),R>-1){let F=Oe[0];typeof F==`string`?Oe[0]=F.slice(R):Oe.shift()}De>0&&Oe.push(F[z].slice(0,De))}return Oe}function serializeChunks(F,I){let L=-1,R=[],z;for(;++L<F.length;){let De=F[L],Oe;if(typeof De==`string`)Oe=De;else switch(De){case-5:Oe=`\r`;break;case-4:Oe=`
@@ -261,7 +261,7 @@ ${Oe.join(`
261
261
  animation: ${0} 1.4s linear infinite;
262
262
  `,circularRotateKeyframe)),CircularProgressSVG=styled(`svg`,{name:`MuiCircularProgress`,slot:`Svg`,overridesResolver:(F,I)=>I.svg})({display:`block`}),CircularProgressCircle=styled(`circle`,{name:`MuiCircularProgress`,slot:`Circle`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.circle,I[`circle${capitalize_default(L.variant)}`],L.disableShrink&&I.circleDisableShrink]}})(({ownerState:F,theme:I})=>_extends$3({stroke:`currentColor`},F.variant===`determinate`&&{transition:I.transitions.create(`stroke-dashoffset`)},F.variant===`indeterminate`&&{strokeDasharray:`80px, 200px`,strokeDashoffset:0}),({ownerState:F})=>F.variant===`indeterminate`&&!F.disableShrink&&css$1(_t4||=_$1`
263
263
  animation: ${0} 1.4s ease-in-out infinite;
264
- `,circularDashKeyframe)),CircularProgress=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCircularProgress`}),{className:R,color:z=`primary`,disableShrink:De=!1,size:Oe=40,style:ke,thickness:Ae=3.6,value:je=0,variant:Me=`indeterminate`}=L,Ne=_objectWithoutPropertiesLoose$2(L,_excluded$5),Pe=_extends$3({},L,{color:z,disableShrink:De,size:Oe,thickness:Ae,value:je,variant:Me}),Fe=useUtilityClasses$5(Pe),Ie={},Le={},Re={};if(Me===`determinate`){let F=2*Math.PI*((SIZE-Ae)/2);Ie.strokeDasharray=F.toFixed(3),Re[`aria-valuenow`]=Math.round(je),Ie.strokeDashoffset=`${((100-je)/100*F).toFixed(3)}px`,Le.transform=`rotate(-90deg)`}return(0,import_jsx_runtime$2.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(Fe.root,R),style:_extends$3({width:Oe,height:Oe},Le,ke),ownerState:Pe,ref:I,role:`progressbar`},Re,Ne,{children:(0,import_jsx_runtime$2.jsx)(CircularProgressSVG,{className:Fe.svg,ownerState:Pe,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime$2.jsx)(CircularProgressCircle,{className:Fe.circle,style:Ie,ownerState:Pe,cx:SIZE,cy:SIZE,r:(SIZE-Ae)/2,fill:`none`,strokeWidth:Ae})})}))});function DayAndProgressContainer({dayCount:F,experience:I,itemsSold:L}){let R=levelAchieved(I),z=scaleNumber(I,experienceNeededForLevel(R),experienceNeededForLevel(R+1),0,100),De=experienceNeededForLevel(R+1)-I,Oe=R+1;return(0,import_jsx_runtime$2.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime$2.jsxs)(`span`,{children:[`Day `,integerString(F),`, level:`]}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${De}${Oe}`,children:(0,import_jsx_runtime$2.jsxs)(Box,{children:[(0,import_jsx_runtime$2.jsx)(CircularProgress,{value:z,variant:`determinate`}),(0,import_jsx_runtime$2.jsx)(`span`,{className:`current-level`,children:integerString(R)})]})})]})}function Consumer$15(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(DayAndProgressContainer,{...I,...L,...F})})}var FarmNameDisplay=({farmName:F,handleFarmNameUpdate:I})=>{let[L,R]=(0,import_react$10.useState)(F);return(0,import_react$10.useEffect)(()=>{R(F)},[F,R]),(0,import_jsx_runtime$2.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:F}})=>{R(F)},onBlur:({target:{value:F}})=>{I(F)},placeholder:`Farm Name`,value:L}),` `,`Farm`]})},OnlineControls=({activePlayers:F,handleActivePlayerButtonClick:I,handleChatRoomOpenStateChange:L,handleOnlineToggleChange:R,handleRoomChange:z,isChatAvailable:De,isOnline:Oe,room:ke})=>{let[Ae,je]=(0,import_react$10.useState)(ke);(0,import_react$10.useEffect)(()=>{je(ke)},[ke,je]);let Me=()=>{L(!0)},Ne=()=>{z(Ae)},Pe=F=>{Ne(),R(F)};return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime$2.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Switch,{color:`primary`,checked:Oe,onChange:(F,I)=>{Pe(I)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime$2.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:F}})=>{je(F)},onKeyUp:({key:F})=>{F===`Enter`&&Ne()},value:Ae,variant:`outlined`})]}),F&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(Button,{color:`primary`,onClick:I,variant:`contained`,children:[`Connected players: `,integerString(F)]}),De?(0,import_jsx_runtime$2.jsx)(Button,{variant:`contained`,color:`primary`,onClick:Me,children:`Open chat`}):(0,import_jsx_runtime$2.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime$2.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime$2.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime$2.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime$2.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime$2.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime$2.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime$2.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime$2.jsx)(KeybindingsView,{})},Navigation=({activePlayers:F,blockInput:I,currentDialogView:L,farmName:R,handleActivePlayerButtonClick:z,handleChatRoomOpenStateChange:De,handleClickDialogViewButton:Oe,handleCloseDialogView:ke,handleDialogViewExited:Ae,handleFarmNameUpdate:je,handleOnlineToggleChange:Me,handleRoomChange:Ne,handleViewChange:Pe,isChatAvailable:Fe,isDialogViewOpen:Ie,isOnline:Le,room:Re,stageFocus:ze,viewList:Be,currentDialogViewLowerCase:Ge=(L||``).toLowerCase(),modalTitleId:rt=`${Ge}-modal-title`,modalContentId:it=`${Ge}-modal-content`})=>(0,import_jsx_runtime$2.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:fonts.display,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:fonts.display,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime$2.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime$2.jsxs)(`p`,{className:`version`,children:[`v`,`1.24.2`]}),(0,import_jsx_runtime$2.jsx)(FarmNameDisplay,{farmName:R,handleFarmNameUpdate:je}),(0,import_jsx_runtime$2.jsx)(Consumer$15,{}),(0,import_jsx_runtime$2.jsx)(OnlineControls,{activePlayers:F,handleActivePlayerButtonClick:z,handleChatRoomOpenStateChange:De,handleOnlineToggleChange:Me,handleRoomChange:Ne,isChatAvailable:Fe,isOnline:Le,room:Re}),(0,import_jsx_runtime$2.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:Pe,value:ze,children:Be.map((F,I)=>(0,import_jsx_runtime$2.jsxs)(MenuItem,{value:F,children:[I+1,`: `,STAGE_TITLE_MAP[F]]},F))}),(0,import_jsx_runtime$2.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:BookIcon},{dialogView:PRICE_EVENTS,Icon:FlashOnIcon},{dialogView:STATS,Icon:AssessmentIcon},{dialogView:ACHIEVEMENTS,Icon:BeenhereIcon},{dialogView:ACCOUNTING,Icon:AccountBalanceIcon},{dialogView:SETTINGS,Icon:SettingsIcon}].map(({dialogView:F,Icon:I})=>(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:dialogTriggerTextMap[F],children:(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":dialogTriggerTextMap[F],color:`primary`,onClick:()=>Oe(F),children:(0,import_jsx_runtime$2.jsx)(I,{})})},F))}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":I}),fullWidth:!0,maxWidth:`xs`,onClose:ke,open:Ie,TransitionProps:{onExited:Ae},"aria-describedby":rt,"aria-labelledby":it,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{id:rt,children:L?dialogTitleMap[L]:``}),(0,import_jsx_runtime$2.jsx)(DialogContent,{id:it,children:L?dialogContentMap[L]:null}),(0,import_jsx_runtime$2.jsx)(DialogActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{onClick:ke,color:`primary`,autoFocus:!0,children:`Close`})})]})]});function Consumer$14(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Navigation,{...I,...L,...F})})}var extendStatics$1=function(F,I){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(F,I){F.__proto__=I}||function(F,I){for(var L in I)I.hasOwnProperty(L)&&(F[L]=I[L])},extendStatics$1(F,I)};function __extends$1(F,I){extendStatics$1(F,I);function L(){this.constructor=F}F.prototype=I===null?Object.create(I):(L.prototype=I.prototype,new L)}var __assign$1=function(){return __assign$1=Object.assign||function(F){for(var I,L=1,R=arguments.length;L<R;L++)for(var z in I=arguments[L],I)Object.prototype.hasOwnProperty.call(I,z)&&(F[z]=I[z]);return F},__assign$1.apply(this,arguments)};function __rest$1(F,I){var L={};for(var R in F)Object.prototype.hasOwnProperty.call(F,R)&&I.indexOf(R)<0&&(L[R]=F[R]);if(F!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var z=0,R=Object.getOwnPropertySymbols(F);z<R.length;z++)I.indexOf(R[z])<0&&Object.prototype.propertyIsEnumerable.call(F,R[z])&&(L[R[z]]=F[R[z]]);return L}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(F,I){return Number(F.toFixed(I))},checkIsNumber=function(F,I){return typeof F==`number`?F:I},boundLimiter=function(F,I,L,R){return roundNumber(R?F<I?I:F>L?L:F:F,2)},calculateBoundingArea=function(F,I,L,R,z,De,Oe){var ke=F>I?L*(Oe?1:.5):0,Ae=R>z?De*(Oe?1:.5):0;return{minPositionX:F-I-ke,maxPositionX:ke,minPositionY:R-z-Ae,maxPositionY:Ae}},getDistance=function(F,I){return Math.sqrt((F.pageX-I.pageX)**2+(F.pageY-I.pageY)**2)},deleteUndefinedProps=function(F){var I=__assign$1({},F);return Object.keys(I).forEach(function(F){return I[F]===void 0&&delete I[F]}),I},handleCallback=function(F,I){F&&typeof F==`function`&&F(I)},handleWheelStop=function(F,I,L){var R=L.scale,z=L.options,De=z.maxScale,Oe=z.minScale;return F?R<De||R>Oe||Math.sign(F.deltaY)!==Math.sign(I.deltaY)||F.deltaY>0&&F.deltaY<I.deltaY||F.deltaY<0&&F.deltaY>I.deltaY||Math.sign(F.deltaY)!==Math.sign(I.deltaY):!1},mergeProps=function(F,I){return Object.keys(F).reduce(function(L,R){return typeof I[R]==`object`&&I[R]!==null?L[R]=__assign$1(__assign$1({},F[R]),I[R]):L[R]=I[R]===void 0?F[R]:I[R],L},{})};function getWindowScaleY(F){return F?window.innerHeight/F.offsetHeight:0}function getWindowScaleX(F){return F?window.innerWidth/F.offsetWidth:0}var easeOut=function(F){return-Math.cos(F*Math.PI)/2+.5},linear=function(F){return F},easeInQuad=function(F){return F*F},easeOutQuad=function(F){return F*(2-F)},easeInOutQuad=function(F){return F<.5?2*F*F:-1+(4-2*F)*F},easeInCubic=function(F){return F*F*F},easeOutCubic=function(F){return--F*F*F+1},easeInOutCubic=function(F){return F<.5?4*F*F*F:(F-1)*(2*F-2)*(2*F-2)+1},easeInQuart=function(F){return F*F*F*F},easeOutQuart=function(F){return 1- --F*F*F*F},easeInOutQuart=function(F){return F<.5?8*F*F*F*F:1-8*--F*F*F*F},easeInQuint=function(F){return F*F*F*F*F},easeOutQuint=function(F){return 1+--F*F*F*F*F},easeInOutQuint=function(F){return F<.5?16*F*F*F*F*F:1+16*--F*F*F*F*F},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(F,I,L){var R=this;if(this.mounted){var z=new Date().getTime(),De=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!R.animation||!R.mounted)){var Oe=new Date().getTime()-z,ke=Oe/I,Ae=availableAnimations[F],je=Ae(ke);Oe>=I?(L(De),R.animation=null):(L(je),requestAnimationFrame(R.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(F){var I=this,L=F.targetState,R=F.speed,z=F.type,De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=L.scale-Oe,Me=L.positionX-ke,Ne=L.positionY-Ae;R===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=L.scale,this.stateProvider.positionX=L.positionX,this.stateProvider.positionY=L.positionY,this.applyTransformation()):animate.call(this,z,R,function(F){I.stateProvider.previousScale=I.stateProvider.scale,I.stateProvider.scale=Oe+je*F,I.stateProvider.positionX=ke+Me*F,I.stateProvider.positionY=Ae+Ne*F,I.applyTransformation()})}function checkZoomBounds(F,I,L,R,z){var De=I-(z?R:0);return!isNaN(L)&&F>=L?L:!isNaN(I)&&F<=De?De:F}function checkPositionBounds(F,I,L,R,z,De){var Oe=L.minPositionX,ke=L.minPositionY,Ae=L.maxPositionX,je=L.maxPositionY,Me=De?z*De.offsetWidth/100:0,Ne=De?z*De.offsetHeight/100:0;return{x:boundLimiter(F,Oe-Me,Ae+Me,R),y:boundLimiter(I,ke-Ne,je+Ne,R)}}function getDelta(F,I){return checkIsNumber(I,F?F.deltaY<0?1:-1:0)}function wheelMousePosition(F,I,L){var R=I.getBoundingClientRect(),z=(F.clientX-R.left)/L,De=(F.clientY-R.top)/L;return(isNaN(z)||isNaN(De))&&console.error(`No mouse or touch offset found`),{mouseX:z,mouseY:De}}function getComponentsSizes(F,I,L){var R=F.offsetWidth,z=F.offsetHeight,De=I.offsetWidth,Oe=I.offsetHeight,ke=De*L,Ae=Oe*L;return{wrapperWidth:R,wrapperHeight:z,newContentWidth:ke,newDiffWidth:R-ke,newContentHeight:Ae,newDiffHeight:z-Ae}}function handleCalculatePositions(F,I,L,R,z){var De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=De.options.transformEnabled,Me=L-Oe;return typeof F!=`number`||typeof I!=`number`?console.error(`Mouse X and Y position were not provided!`):je?checkPositionBounds(ke-F*Me,Ae-I*Me,R,z,0,null):{newPositionX:ke,newPositionY:Ae}}function getClientPosition(F){var I=F.touches;return I&&I.length===1?{clientX:I[0].clientX,clientY:I[0].clientY}:I?null:{clientX:F.clientX,clientY:F.clientY}}function handlePanning(F){var I=this.stateProvider,L=I.scale,R=I.positionX,z=I.positionY,De=I.options,Oe=De.limitToBounds,ke=De.minScale,Ae=I.pan,je=Ae.lockAxisX,Me=Ae.lockAxisY,Ne=Ae.padding,Pe=Ae.paddingSize,Fe=I.wrapperComponent;if(this.startCoords){var Ie=this.startCoords,Le=Ie.x,Re=Ie.y,ze=getClientPosition(F);if(!ze)return console.error(`Cannot find mouse client positions`);var Be=ze.clientX,Ge=ze.clientY,rt=Be-Le,it=Ge-Re,at=je?R:rt,ot=Me?z:it,st=Ne&&L>=ke?Pe:0;if(!(at===R&&ot===z)){var ct=checkPositionBounds(at,ot,this.bounds,Oe,st,Fe);handlePaddingAnimation.call(this,ct.x,ct.y)}}}function handlePanningAnimation(){var F=this.stateProvider,I=F.scale,L=F.options.minScale,R=F.pan,z=R.disabled,De=R.padding,Oe=R.panReturnAnimationTime,ke=R.panReturnAnimationType;if(!(z||I<L||!De)){var Ae=handlePanToBounds.call(this);animateComponent.call(this,{targetState:Ae,speed:Oe,type:ke})}}function handlePanToBounds(){var F=this.stateProvider,I=F.positionX,L=F.positionY,R=F.scale,z=F.options,De=z.disabled,Oe=z.limitToBounds,ke=z.limitToWrapper,Ae=this.state.wrapperComponent;if(!De){var je=this.bounds,Me=je.maxPositionX,Ne=je.minPositionX,Pe=je.maxPositionY,Fe=je.minPositionY,Ie=I>Me||I<Ne,Le=L>Pe||L<Fe,Re=I>Me?Ae.offsetWidth:this.stateProvider.minPositionX||0,ze=L>Pe?Ae.offsetHeight:this.stateProvider.minPositionY||0,Be=Re,Ge=ze,rt=handleCalculatePositions.call(this,Be,Ge,R,this.bounds,Oe||ke),it=rt.x,at=rt.y;return{scale:R,positionX:Ie?it:I,positionY:Le?at:L}}}function handlePaddingAnimation(F,I){this.stateProvider.pan.padding&&(this.stateProvider.positionX=F,this.stateProvider.positionY=I,this.applyTransformation())}function handleCalculateZoom(F,I,L,R,z){var De=this.stateProvider,Oe=De.scale,ke=De.options,Ae=ke.maxScale,je=ke.minScale,Me=De.scalePadding,Ne=Me.size,Pe=Me.disabled,Fe=De.wrapperComponent,Ie=null;if(z){var Le=window.innerWidth*1e-4,Re=F<0?30:20;Ie=Oe+(I-I*Le)*F*(Oe/Re)}else{var ze=2-window.innerWidth/Fe.offsetWidth,Le=Math.max(.2,Math.min(.99,ze)),Re=20;Ie=Oe+I*F*((Oe-Oe*Le)/Re)}if(R)return Ie;var Be=!L&&!Pe;return checkZoomBounds(roundNumber(Ie,3),je,Ae,Ne,Be)}function handleCalculateBounds(F,I){var L=this.stateProvider,R=L.wrapperComponent,z=L.contentComponent,De=getComponentsSizes(R,z,F),Oe=De.wrapperWidth,ke=De.wrapperHeight,Ae=De.newContentWidth,je=De.newDiffWidth,Me=De.newContentHeight,Ne=De.newDiffHeight,Pe=calculateBoundingArea(Oe,Ae,je,ke,Me,Ne,I);return this.bounds=Pe,Pe}function handleWheelZoom(F){var I=this.stateProvider,L=I.scale,R=I.contentComponent,z=I.options.limitToBounds,De=I.scalePadding,Oe=De.size,ke=De.disabled,Ae=I.wheel,je=Ae.step,Me=Ae.limitsOnWheel;F.preventDefault(),F.stopPropagation();var Ne=getDelta(F,null),Pe=handleCalculateZoom.call(this,Ne,je,!F.ctrlKey);if(L!==Pe){var Fe=handleCalculateBounds.call(this,Pe,!Me),Ie=wheelMousePosition(F,R,L),Le=Ie.mouseX,Re=Ie.mouseY,ze=z&&(ke||Oe===0||Me),Be=handleCalculatePositions.call(this,Le,Re,Pe,Fe,ze),Ge=Be.x,rt=Be.y;this.bounds=Fe,this.stateProvider.previousScale=L,this.stateProvider.scale=Pe,this.stateProvider.positionX=Ge,this.stateProvider.positionY=rt,this.applyTransformation()}}function handleZoomToPoint(F,I,L,R,z){var De=this.stateProvider,Oe=De.contentComponent,ke=De.options,Ae=ke.disabled,je=ke.minScale,Me=ke.maxScale,Ne=ke.limitToBounds,Pe=ke.limitToWrapper;if(!(Ae||F)){var Fe=checkZoomBounds(roundNumber(I,2),je,Me,null,null),Ie=handleCalculateBounds.call(this,Fe,Pe),Le=L,Re=R;if(z){var ze=wheelMousePosition(z,Oe,I);Le=ze.mouseX,Re=ze.mouseY}var Be=handleCalculatePositions.call(this,Le,Re,Fe,Ie,Ne);return{scale:Fe,positionX:Be.x,positionY:Be.y}}}function handlePaddingAnimation$1(){var F=this.stateProvider,I=F.scale,L=F.wrapperComponent,R=F.options,z=R.minScale,De=R.limitToBounds,Oe=F.scalePadding,ke=Oe.disabled,Ae=Oe.animationTime,je=Oe.animationType,Me=ke||I>=z;if((I>=1||De)&&handlePanningAnimation.call(this),!Me){var Ne=L.offsetWidth/2,Pe=L.offsetHeight/2,Fe=handleZoomToPoint.call(this,!1,z,Ne,Pe,null);animateComponent.call(this,{targetState:Fe,speed:Ae,type:je})}}function handleDoubleClick(F){F.preventDefault(),F.stopPropagation();var I=this.stateProvider,L=I.contentComponent,R=I.scale,z=I.doubleClick,De=z.disabled,Oe=z.mode,ke=z.step,Ae=z.animationTime,je=z.animationType;if(Oe===`reset`)return resetTransformations.call(this,F,Ae);var Me=Oe===`zoomOut`?-1:1,Ne=handleCalculateZoom.call(this,Me,ke,void 0,void 0,!0),Pe=wheelMousePosition(F,L,R),Fe=Pe.mouseX,Ie=Pe.mouseY,Le=handleZoomToPoint.call(this,De,Ne,Fe,Ie);if(Le.scale!==R){var Re=getButtonAnimationTime(handleCalculateZoom.call(this,Me,ke,!0,void 0,!0),Ne,Ae);animateComponent.call(this,{targetState:Le,speed:Re,type:je})}}function handleZoomControls(F,I){var L=this.stateProvider,R=L.scale,z=L.positionX,De=L.positionY,Oe=L.wrapperComponent,ke=L.zoomIn,Ae=L.zoomOut,je=Oe.offsetWidth,Me=Oe.offsetHeight,Ne=(je/2-z)/R,Pe=(Me/2-De)/R,Fe=handleCalculateZoom.call(this,F,I,void 0,void 0,!0),Ie=Fe>R,Le=Ie?ke.animationTime:Ae.animationTime,Re=Ie?ke.animationType:Ae.animationType,ze=Ie?ke.disabled:Ae.disabled,Be=handleZoomToPoint.call(this,ze,Fe,Ne,Pe);if(Be.scale!==R){var Ge=getButtonAnimationTime(handleCalculateZoom.call(this,F,I,!0,void 0,!0),Fe,Le);animateComponent.call(this,{targetState:Be,speed:Ge,type:Re})}}function resetTransformations(F){var I=this.props.defaultValues,L=I.defaultScale,R=I.defaultPositionX,z=I.defaultPositionY,De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=De.reset,Me=De.options,Ne=Me.disabled,Pe=Me.limitToBounds,Fe=Me.centerContent,Ie=Me.limitToWrapper;if(!(Ne||je.disabled)&&!(Oe===L&&ke===R&&Ae===z)){var Le=typeof F==`number`?F:je.animationTime,Re=checkIsNumber(L,initialState.scale),ze=checkIsNumber(R,initialState.positionX),Be=checkIsNumber(z,initialState.positionY);if(Pe&&!Ie||Fe){var Ge=handleCalculateBounds.call(this,Re,Ie);ze=Ge.minPositionX,Be=Ge.minPositionY}var rt={scale:Re,positionX:ze,positionY:Be};animateComponent.call(this,{targetState:rt,speed:Le,type:je.animationType})}}function getButtonAnimationTime(F,I,L){return I/F*L}function round(F,I){var L=10**I;return Math.round(F*L)/L}function getCurrentDistance(F){return getDistance(F.touches[0],F.touches[1])}function checkIfInfinite(F){return F===1/0||F===-1/0}function calculatePinchZoom(F,I){var L=this.stateProvider,R=L.options,z=R.minScale,De=R.maxScale,Oe=L.scalePadding,ke=Oe.size,Ae=Oe.disabled;if(typeof I!=`number`||typeof F!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(F<0))return checkZoomBounds(roundNumber(F/I*this.pinchStartScale,2),z,De,ke,!Ae)}function calculateMidpoint(F,I,L){var R=L.getBoundingClientRect(),z=F.touches,De=round(z[0].clientX-R.left,5),Oe=round(z[0].clientY-R.top,5),ke=round(z[1].clientX-R.left,5),Ae=round(z[1].clientY-R.top,5);return{mouseX:(De+ke)/2/I,mouseY:(Oe+Ae)/2/I}}function handleZoomPinch(F){var I=this.stateProvider,L=I.scale,R=I.options,z=R.limitToBounds,De=R.limitToWrapper,Oe=I.scalePadding,ke=Oe.disabled,Ae=Oe.size,je=I.wheel.limitsOnWheel,Me=I.pinch,Ne=this.state.contentComponent;if(!(Me.disabled||this.stateProvider.options.disabled)&&(F.cancelable&&(F.preventDefault(),F.stopPropagation()),this.pinchStartDistance!==null)){var Pe=calculateMidpoint(F,L,Ne),Fe=Pe.mouseX,Ie=Pe.mouseY;if(!(checkIfInfinite(Fe)||checkIfInfinite(Ie))){var Le=getCurrentDistance(F),Re=calculatePinchZoom.call(this,Le,this.pinchStartDistance);if(!(checkIfInfinite(Re)||Re===L)){var ze=handleCalculateBounds.call(this,Re,De),Be=z&&(ke||Ae===0||je),Ge=handleCalculatePositions.call(this,Fe,Ie,Re,ze,Be),rt=Ge.x,it=Ge.y;this.lastDistance=Le,this.stateProvider.positionX=rt,this.stateProvider.positionY=it,this.stateProvider.scale=Re,this.stateProvider.previousScale=L,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(F,I){return this.stateProvider.pan.velocityEqualToMove?I-I/Math.max(1,F):I}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var F=this,I=this.stateProvider,L=I.positionX,R=I.positionY,z=I.options.limitToBounds,De=I.pan,Oe=De.velocityBaseTime,ke=De.lockAxisX,Ae=De.lockAxisY,je=De.velocityAnimationType,Me=De.panReturnAnimationTime,Ne=De.panReturnAnimationType,Pe=De.padding,Fe=De.paddingSize,Ie=I.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var Le=this.bounds,Re=Le.maxPositionX,ze=Le.minPositionX,Be=Le.maxPositionY,Ge=Le.minPositionY,rt=this.velocity,it=rt.velocityX,at=rt.velocityY,ot=rt.velocity,st=velocityTimeSpeed.call(this,ot,Oe);if(!st){handlePanningAnimation.call(this);return}var ct=it,lt=at,ut=st>Me?st:Me,dt=Pe?Fe:0,ft=Ie?dt*Ie.offsetWidth/100:0,pt=Ie?dt*Ie.offsetHeight/100:0,mt=Re+ft,ht=ze-ft,gt=Be+pt,vt=Ge-pt,yt=checkPositionBounds(L,R,this.bounds,z,dt,Ie),yr=new Date().getTime();animate.call(this,je,ut,function(I){var De=new Date().getTime()-yr,Oe=De/Me,je=availableAnimations[Ne],Pe=je(Oe);(De>Me||Pe>1||Pe===1/0||Pe===-1/0)&&(Pe=1);var Fe=getPosition(ke,ct,I,Pe,ze,Re,z,L,yt.x,ht,mt),Ie=getPosition(Ae,lt,I,Pe,Ge,Be,z,R,yt.y,vt,gt);(L!==Fe||R!==Ie)&&(F.stateProvider.positionX=Fe,F.stateProvider.positionY=Ie,F.applyTransformation())})}}function calculateVelocityStart(F){var I=this,L=this.stateProvider,R=L.scale,z=L.options.disabled,De=L.pan,Oe=De.velocity,ke=De.velocitySensitivity,Ae=De.velocityActiveScale,je=De.velocityMinSpeed,Me=L.wrapperComponent;if(!(!Oe||Ae>=R||z)){handleEnableVelocity.call(this);var Ne=Date.now();if(this.lastMousePosition){var Pe=getClientPosition(F);if(!Pe)return console.error(`No mouse or touch position detected`);var Fe=Pe.clientX,Ie=Pe.clientY,Le=Fe-this.lastMousePosition.clientX,Re=Ie-this.lastMousePosition.clientY,ze=Ne-this.velocityTime,Be=2-Me.offsetWidth/window.innerWidth,Ge=2-Me.offsetHeight/window.innerHeight,rt=20*Math.max(je,Math.min(2,Be)),it=20*Math.max(je,Math.min(2,Ge)),at=Le/ze*ke*R*rt,ot=Re/ze*ke*R*it,st=Le*Le+Re*Re,ct=Math.sqrt(st)/ze*ke;if(this.velocity&&ct<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:at,velocityY:ot,velocity:ct},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){I.mounted&&(I.throttle=!1)},throttleTime)}var lt=getClientPosition(F);this.lastMousePosition=lt,this.velocityTime=Ne}}function getPosition(F,I,L,R,z,De,Oe,ke,Ae,je,Me){if(Oe){if(Ae>z&&ke>De){var Ne=Ae-(Ae-De)*R;return Ne>Me?Me:Ne<De?De:Ne}if(Ae<z&&ke<z){var Ne=Ae-(Ae-z)*R;return Ne<je?je:Ne>z?z:Ne}}return F?Ae:boundLimiter(ke+I*L,z,De,Oe)}function makePassiveEventOption(F){return F}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(F){return Object.keys(F).reduce(function(I,L){return propsList.includes(L)&&(I[L]=F[L]),I},{})},Context=import_react$10.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(F){__extends$1(I,F);function I(){var I=F!==null&&F.apply(this,arguments)||this;return I.mounted=!0,I.state={wrapperComponent:void 0,contentComponent:void 0},I.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,I.props.dynamicValues)),I.props.defaultValues),{previousScale:I.props.dynamicValues.scale||I.props.defaultValues.scale||initialState.scale}),I.windowToWrapperScaleX=0,I.windowToWrapperScaleY=0,I.startCoords=null,I.isDown=!1,I.pinchStartDistance=null,I.lastDistance=null,I.pinchStartScale=null,I.distance=null,I.bounds=null,I.velocityTime=null,I.lastMousePosition=null,I.velocity=null,I.offsetX=null,I.offsetY=null,I.throttle=!1,I.previousWheelEvent=null,I.lastScale=null,I.animate=null,I.animation=null,I.maxBounds=null,I.handleWheel=function(F){var L=I.stateProvider,R=L.scale,z=L.wheel,De=z.disabled,Oe=z.wheelEnabled,ke=z.touchPadEnabled,Ae=I.props,je=Ae.onWheelStart,Me=Ae.onWheel,Ne=Ae.onWheelStop,Pe=I.state,Fe=Pe.wrapperComponent,Ie=Pe.contentComponent;I.isDown||De||I.stateProvider.options.disabled||!Fe||!Ie||!Oe&&!F.ctrlKey||!ke&&F.ctrlKey||(wheelStopEventTimer||(I.lastScale=R,handleDisableAnimation.call(I),handleCallback(je,I.getCallbackProps())),handleWheelZoom.call(I,F),handleCallback(Me,I.getCallbackProps()),I.applyTransformation(null,null,null),I.previousWheelEvent=F,handleWheelStop(I.previousWheelEvent,F,I.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){I.mounted&&(handleCallback(Ne,I.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),I.animate=!1,I.lastScale=I.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){I.mounted&&handlePaddingAnimation$1.call(I,F)},wheelAnimationTime))},I.checkPanningTarget=function(F){var L=I.stateProvider.pan.disableOnTarget;return L.map(function(F){return F.toUpperCase()}).includes(F.target.tagName)||L.find(function(I){return F.target.classList.value.includes(I)})},I.checkIsPanningActive=function(F){var L=I.stateProvider.pan.disabled,R=I.state,z=R.wrapperComponent,De=R.contentComponent;return!I.isDown||L||I.stateProvider.options.disabled||F.touches&&(F.touches.length!==1||Math.abs(I.startCoords.x-F.touches[0].clientX)<1||Math.abs(I.startCoords.y-F.touches[0].clientY)<1)||!z||!De},I.handleSetUpPanning=function(F,L){var R=I.stateProvider,z=R.positionX,De=R.positionY;I.isDown=!0,I.startCoords={x:F-z,y:L-De},handleCallback(I.props.onPanningStart,I.getCallbackProps())},I.handleStartPanning=function(F){var L=I.stateProvider,R=L.wrapperComponent,z=L.scale,De=L.options,Oe=De.minScale,ke=De.maxScale,Ae=De.limitToWrapper,je=L.pan.disabled,Me=F.target,Ne=F.touches;je||I.stateProvider.options.disabled||R&&!R.contains(Me)||I.checkPanningTarget(F)||z<Oe||z>ke||(handleDisableAnimation.call(I),I.bounds=handleCalculateBounds.call(I,z,Ae),Ne&&Ne.length===1&&I.handleSetUpPanning(Ne[0].clientX,Ne[0].clientY),Ne||I.handleSetUpPanning(F.clientX,F.clientY))},I.handlePanning=function(F){I.isDown&&F.preventDefault(),!I.checkIsPanningActive(F)&&(F.stopPropagation(),calculateVelocityStart.call(I,F),handlePanning.call(I,F),handleCallback(I.props.onPanning,I.getCallbackProps()))},I.handleStopPanning=function(){if(I.isDown){I.isDown=!1,I.animate=!1,I.animation=!1,handleFireVelocity.call(I),handleCallback(I.props.onPanningStop,I.getCallbackProps());var F=I.stateProvider,L=F.pan.velocity,R=F.scale;I.velocity&&L&&R>1?animateVelocity.call(I):handlePanningAnimation.call(I)}},I.handlePinchStart=function(F){var L=I.stateProvider.scale;F.preventDefault(),F.stopPropagation(),handleDisableAnimation.call(I);var R=getDistance(F.touches[0],F.touches[1]);I.pinchStartDistance=R,I.lastDistance=R,I.pinchStartScale=L,I.isDown=!1,handleCallback(I.props.onPinchingStart,I.getCallbackProps())},I.handlePinch=function(F){I.isDown=!1,handleZoomPinch.call(I,F),handleCallback(I.props.onPinching,I.getCallbackProps())},I.handlePinchStop=function(){typeof I.pinchStartScale==`number`&&(I.isDown=!1,I.velocity=null,I.lastDistance=null,I.pinchStartScale=null,I.pinchStartDistance=null,handlePaddingAnimation$1.call(I),handleCallback(I.props.onPinchingStop,I.getCallbackProps()))},I.handleTouchStart=function(F){var L=I.stateProvider,R=L.wrapperComponent,z=L.contentComponent,De=L.scale,Oe=L.options,ke=Oe.disabled,Ae=Oe.minScale,je=F.touches;if(!(ke||!R||!z||De<Ae)){if(handleDisableAnimation.call(I),je&&je.length===1)return I.handleStartPanning(F);if(je&&je.length===2)return I.handlePinchStart(F)}},I.handleTouch=function(F){var L=I.stateProvider,R=L.pan,z=L.pinch;if(!L.options.disabled){if(!R.disabled&&F.touches.length===1)return I.handlePanning(F);if(!z.disabled&&F.touches.length===2)return I.handlePinch(F)}},I.handleTouchStop=function(){I.handleStopPanning(),I.handlePinchStop()},I.zoomIn=function(F){var L=I.stateProvider,R=L.zoomIn,z=R.disabled,De=R.step,Oe=L.options,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Zoom in function requires event prop`);z||Oe.disabled||!Ae||!je||handleZoomControls.call(I,1,De)},I.zoomOut=function(F){var L=I.stateProvider,R=L.zoomOut,z=R.disabled,De=R.step,Oe=L.options,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Zoom out function requires event prop`);z||Oe.disabled||!Ae||!je||handleZoomControls.call(I,-1,De)},I.handleDbClick=function(F){var L=I.stateProvider,R=L.options,z=L.doubleClick,De=z.disabled,Oe=z.step,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Double click function requires event prop`);De||R.disabled||!Ae||!je||handleDoubleClick.call(I,F,1,Oe)},I.setScale=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.positionY,ke=z.scale,Ae=z.options.disabled,je=I.state,Me=je.wrapperComponent,Ne=je.contentComponent;if(!(Ae||!Me||!Ne)){var Pe={positionX:De,positionY:Oe,scale:isNaN(F)?ke:F};animateComponent.call(I,{targetState:Pe,speed:L,type:R})}},I.setPositionX=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.positionY,ke=z.scale,Ae=z.options,je=Ae.disabled,Me=Ae.transformEnabled,Ne=I.state,Pe=Ne.wrapperComponent,Fe=Ne.contentComponent;if(!(je||!Me||!Pe||!Fe)){var Ie={positionX:isNaN(F)?De:F,positionY:Oe,scale:ke};animateComponent.call(I,{targetState:Ie,speed:L,type:R})}},I.setPositionY=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.scale,ke=z.positionY,Ae=z.options,je=Ae.disabled,Me=Ae.transformEnabled,Ne=I.state,Pe=Ne.wrapperComponent,Fe=Ne.contentComponent;if(!(je||!Me||!Pe||!Fe)){var Ie={positionX:De,positionY:isNaN(F)?ke:F,scale:Oe};animateComponent.call(I,{targetState:Ie,speed:L,type:R})}},I.setTransform=function(F,L,R,z,De){z===void 0&&(z=200),De===void 0&&(De=`easeOut`);var Oe=I.stateProvider,ke=Oe.positionX,Ae=Oe.positionY,je=Oe.scale,Me=Oe.options,Ne=Me.disabled,Pe=Me.transformEnabled,Fe=I.state,Ie=Fe.wrapperComponent,Le=Fe.contentComponent;if(!(Ne||!Pe||!Ie||!Le)){var Re={positionX:isNaN(F)?ke:F,positionY:isNaN(L)?Ae:L,scale:isNaN(R)?je:R};animateComponent.call(I,{targetState:Re,speed:z,type:De})}},I.resetTransform=function(){var F=I.stateProvider.options,L=F.disabled,R=F.transformEnabled;L||!R||resetTransformations.call(I)},I.setDefaultState=function(){I.animation=null,I.stateProvider=__assign$1(__assign$1(__assign$1({},I.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),I.props.defaultValues),I.forceUpdate()},I.setWrapperComponent=function(F){I.setState({wrapperComponent:F})},I.setContentComponent=function(F){I.setState({contentComponent:F},function(){var L=I.stateProvider,R=L.wrapperComponent,z=L.options,De=z.centerContent,Oe=z.limitToBounds,ke=z.limitToWrapper,Ae=L.scale,je=I.props.defaultValues,Me=je.positionX,Ne=je.positionY;if(Oe&&!ke||De&&!Me&&!Ne){var Pe=`translate(25%, 25%) scale(`+Ae+`)`;F.style.transform=Pe,F.style.WebkitTransform=Pe,I.forceUpdate();var Fe=new Date().getTime(),Ie=2e3,Le=setInterval(function(){if(R.offsetWidth){var F=handleCalculateBounds.call(I,Ae,!1);I.stateProvider.positionX=F.minPositionX,I.stateProvider.positionY=F.minPositionY,I.applyTransformation(null,null,null),clearInterval(Le),Le=null}else new Date().getTime()-Fe>Ie&&(clearInterval(Le),Le=null)},20)}else I.applyTransformation(null,null,null)})},I.applyTransformation=function(F,L,R){if(I.mounted){var z=I.state.contentComponent,De=I.props.onZoomChange,Oe=I.stateProvider,ke=Oe.previousScale,Ae=Oe.scale,je=Oe.positionX,Me=Oe.positionY;if(!z)return console.error(`There is no content component`);var Ne=`translate(`+(L||je)+`px, `+(R||Me)+`px) scale(`+(F||Ae)+`)`;z.style.transform=Ne,z.style.WebkitTransform=Ne,I.forceUpdate(),De&&ke!==Ae&&handleCallback(De,I.getCallbackProps())}},I.getCallbackProps=function(){return getValidPropsFromObject(I.stateProvider)},I}return I.prototype.componentDidMount=function(){var F=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,F),window.addEventListener(`mousemove`,this.handlePanning,F),window.addEventListener(`mouseup`,this.handleStopPanning,F)},I.prototype.componentWillUnmount=function(){var F=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,F),window.removeEventListener(`mousemove`,this.handlePanning,F),window.removeEventListener(`mouseup`,this.handleStopPanning,F),handleDisableAnimation.call(this)},I.prototype.componentDidUpdate=function(F,I){var L=this.state,R=L.wrapperComponent,z=L.contentComponent,De=this.props.dynamicValues;if(!I.contentComponent&&z&&(this.stateProvider.contentComponent=z),!I.wrapperComponent&&R&&R!==void 0){this.stateProvider.wrapperComponent=R,this.windowToWrapperScaleX=getWindowScaleX(R),this.windowToWrapperScaleY=getWindowScaleY(R);var Oe=makePassiveEventOption(!1);R.addEventListener(`wheel`,this.handleWheel,Oe),R.addEventListener(`dblclick`,this.handleDbClick,Oe),R.addEventListener(`touchstart`,this.handleTouchStart,Oe),R.addEventListener(`touchmove`,this.handleTouch,Oe),R.addEventListener(`touchend`,this.handleTouchStop,Oe)}(R&&z||F.dynamicValues!==De)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),F.dynamicValues&&F.dynamicValues!==De&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,De)),this.applyTransformation(null,null,null))},I.prototype.render=function(){var F=this.state,I=F.wrapperComponent,L=F.contentComponent,R={loaded:!!(I&&L),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},z=this.props.children,De=typeof z==`function`?z(__assign$1(__assign$1({},R.state),R.dispatch)):z;return import_react$10.createElement(Context.Provider,{value:R},De)},I}(import_react$10.Component),TransformWrapper=function(F){var I=F.children,L=F.defaultPositionX,R=F.defaultPositionY,z=F.defaultScale,De=F.onWheelStart,Oe=F.onWheel,ke=F.onWheelStop,Ae=F.onPanningStart,je=F.onPanning,Me=F.onPanningStop,Ne=F.onPinchingStart,Pe=F.onPinching,Fe=F.onPinchingStop,Ie=F.onZoomChange,Le=__rest$1(F,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),Re=__assign$1({},Le);return Re.options&&Re.options.limitToWrapper&&(Re.options.limitToBounds=!0),import_react$10.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:L,positionY:R,scale:z}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(Re)),onWheelStart:De,onWheel:Oe,onWheelStop:ke,onPanningStart:Ae,onPanning:je,onPanningStop:Me,onPinchingStart:Ne,onPinching:Pe,onPinchingStop:Fe,onZoomChange:Ie},I)};function styleInject(F,I){I===void 0&&(I={});var L=I.insertAt;if(!(!F||typeof document>`u`)){var R=document.head||document.getElementsByTagName(`head`)[0],z=document.createElement(`style`);z.type=`text/css`,L===`top`&&R.firstChild?R.insertBefore(z,R.firstChild):R.appendChild(z),z.styleSheet?z.styleSheet.cssText=F:z.appendChild(document.createTextNode(F))}}var css=`.TransformComponent-module_container__3NwNd {
264
+ `,circularDashKeyframe)),CircularProgress=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiCircularProgress`}),{className:R,color:z=`primary`,disableShrink:De=!1,size:Oe=40,style:ke,thickness:Ae=3.6,value:je=0,variant:Me=`indeterminate`}=L,Ne=_objectWithoutPropertiesLoose$2(L,_excluded$5),Pe=_extends$3({},L,{color:z,disableShrink:De,size:Oe,thickness:Ae,value:je,variant:Me}),Fe=useUtilityClasses$5(Pe),Ie={},Le={},Re={};if(Me===`determinate`){let F=2*Math.PI*((SIZE-Ae)/2);Ie.strokeDasharray=F.toFixed(3),Re[`aria-valuenow`]=Math.round(je),Ie.strokeDashoffset=`${((100-je)/100*F).toFixed(3)}px`,Le.transform=`rotate(-90deg)`}return(0,import_jsx_runtime$2.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(Fe.root,R),style:_extends$3({width:Oe,height:Oe},Le,ke),ownerState:Pe,ref:I,role:`progressbar`},Re,Ne,{children:(0,import_jsx_runtime$2.jsx)(CircularProgressSVG,{className:Fe.svg,ownerState:Pe,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime$2.jsx)(CircularProgressCircle,{className:Fe.circle,style:Ie,ownerState:Pe,cx:SIZE,cy:SIZE,r:(SIZE-Ae)/2,fill:`none`,strokeWidth:Ae})})}))});function DayAndProgressContainer({dayCount:F,experience:I,itemsSold:L}){let R=levelAchieved(I),z=scaleNumber(I,experienceNeededForLevel(R),experienceNeededForLevel(R+1),0,100),De=experienceNeededForLevel(R+1)-I,Oe=R+1;return(0,import_jsx_runtime$2.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime$2.jsxs)(`span`,{children:[`Day `,integerString(F),`, level:`]}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${De}${Oe}`,children:(0,import_jsx_runtime$2.jsxs)(Box,{children:[(0,import_jsx_runtime$2.jsx)(CircularProgress,{value:z,variant:`determinate`}),(0,import_jsx_runtime$2.jsx)(`span`,{className:`current-level`,children:integerString(R)})]})})]})}function Consumer$15(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(DayAndProgressContainer,{...I,...L,...F})})}var FarmNameDisplay=({farmName:F,handleFarmNameUpdate:I})=>{let[L,R]=(0,import_react$10.useState)(F);return(0,import_react$10.useEffect)(()=>{R(F)},[F,R]),(0,import_jsx_runtime$2.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:F}})=>{R(F)},onBlur:({target:{value:F}})=>{I(F)},placeholder:`Farm Name`,value:L}),` `,`Farm`]})},OnlineControls=({activePlayers:F,handleActivePlayerButtonClick:I,handleChatRoomOpenStateChange:L,handleOnlineToggleChange:R,handleRoomChange:z,isChatAvailable:De,isOnline:Oe,room:ke})=>{let[Ae,je]=(0,import_react$10.useState)(ke);(0,import_react$10.useEffect)(()=>{je(ke)},[ke,je]);let Me=()=>{L(!0)},Ne=()=>{z(Ae)},Pe=F=>{Ne(),R(F)};return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime$2.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime$2.jsx)(FormControlLabel,{control:(0,import_jsx_runtime$2.jsx)(Switch,{color:`primary`,checked:Oe,onChange:(F,I)=>{Pe(I)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime$2.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:F}})=>{je(F)},onKeyUp:({key:F})=>{F===`Enter`&&Ne()},value:Ae,variant:`outlined`})]}),F&&(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(Button,{color:`primary`,onClick:I,variant:`contained`,children:[`Connected players: `,integerString(F)]}),De?(0,import_jsx_runtime$2.jsx)(Button,{variant:`contained`,color:`primary`,onClick:Me,children:`Open chat`}):(0,import_jsx_runtime$2.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime$2.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime$2.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime$2.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime$2.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime$2.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime$2.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime$2.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime$2.jsx)(KeybindingsView,{})},Navigation=({activePlayers:F,blockInput:I,currentDialogView:L,farmName:R,handleActivePlayerButtonClick:z,handleChatRoomOpenStateChange:De,handleClickDialogViewButton:Oe,handleCloseDialogView:ke,handleDialogViewExited:Ae,handleFarmNameUpdate:je,handleOnlineToggleChange:Me,handleRoomChange:Ne,handleViewChange:Pe,isChatAvailable:Fe,isDialogViewOpen:Ie,isOnline:Le,room:Re,stageFocus:ze,viewList:Be,currentDialogViewLowerCase:Ge=(L||``).toLowerCase(),modalTitleId:rt=`${Ge}-modal-title`,modalContentId:it=`${Ge}-modal-content`})=>(0,import_jsx_runtime$2.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:fonts.display,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:fonts.display,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime$2.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime$2.jsxs)(`p`,{className:`version`,children:[`v`,`1.24.3`]}),(0,import_jsx_runtime$2.jsx)(FarmNameDisplay,{farmName:R,handleFarmNameUpdate:je}),(0,import_jsx_runtime$2.jsx)(Consumer$15,{}),(0,import_jsx_runtime$2.jsx)(OnlineControls,{activePlayers:F,handleActivePlayerButtonClick:z,handleChatRoomOpenStateChange:De,handleOnlineToggleChange:Me,handleRoomChange:Ne,isChatAvailable:Fe,isOnline:Le,room:Re}),(0,import_jsx_runtime$2.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:Pe,value:ze,children:Be.map((F,I)=>(0,import_jsx_runtime$2.jsxs)(MenuItem,{value:F,children:[I+1,`: `,STAGE_TITLE_MAP[F]]},F))}),(0,import_jsx_runtime$2.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:BookIcon},{dialogView:PRICE_EVENTS,Icon:FlashOnIcon},{dialogView:STATS,Icon:AssessmentIcon},{dialogView:ACHIEVEMENTS,Icon:BeenhereIcon},{dialogView:ACCOUNTING,Icon:AccountBalanceIcon},{dialogView:SETTINGS,Icon:SettingsIcon}].map(({dialogView:F,Icon:I})=>(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:dialogTriggerTextMap[F],children:(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":dialogTriggerTextMap[F],color:`primary`,onClick:()=>Oe(F),children:(0,import_jsx_runtime$2.jsx)(I,{})})},F))}),(0,import_jsx_runtime$2.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":I}),fullWidth:!0,maxWidth:`xs`,onClose:ke,open:Ie,TransitionProps:{onExited:Ae},"aria-describedby":rt,"aria-labelledby":it,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{id:rt,children:L?dialogTitleMap[L]:``}),(0,import_jsx_runtime$2.jsx)(DialogContent,{id:it,children:L?dialogContentMap[L]:null}),(0,import_jsx_runtime$2.jsx)(DialogActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{onClick:ke,color:`primary`,autoFocus:!0,children:`Close`})})]})]});function Consumer$14(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Navigation,{...I,...L,...F})})}var extendStatics$1=function(F,I){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(F,I){F.__proto__=I}||function(F,I){for(var L in I)I.hasOwnProperty(L)&&(F[L]=I[L])},extendStatics$1(F,I)};function __extends$1(F,I){extendStatics$1(F,I);function L(){this.constructor=F}F.prototype=I===null?Object.create(I):(L.prototype=I.prototype,new L)}var __assign$1=function(){return __assign$1=Object.assign||function(F){for(var I,L=1,R=arguments.length;L<R;L++)for(var z in I=arguments[L],I)Object.prototype.hasOwnProperty.call(I,z)&&(F[z]=I[z]);return F},__assign$1.apply(this,arguments)};function __rest$1(F,I){var L={};for(var R in F)Object.prototype.hasOwnProperty.call(F,R)&&I.indexOf(R)<0&&(L[R]=F[R]);if(F!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var z=0,R=Object.getOwnPropertySymbols(F);z<R.length;z++)I.indexOf(R[z])<0&&Object.prototype.propertyIsEnumerable.call(F,R[z])&&(L[R[z]]=F[R[z]]);return L}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(F,I){return Number(F.toFixed(I))},checkIsNumber=function(F,I){return typeof F==`number`?F:I},boundLimiter=function(F,I,L,R){return roundNumber(R?F<I?I:F>L?L:F:F,2)},calculateBoundingArea=function(F,I,L,R,z,De,Oe){var ke=F>I?L*(Oe?1:.5):0,Ae=R>z?De*(Oe?1:.5):0;return{minPositionX:F-I-ke,maxPositionX:ke,minPositionY:R-z-Ae,maxPositionY:Ae}},getDistance=function(F,I){return Math.sqrt((F.pageX-I.pageX)**2+(F.pageY-I.pageY)**2)},deleteUndefinedProps=function(F){var I=__assign$1({},F);return Object.keys(I).forEach(function(F){return I[F]===void 0&&delete I[F]}),I},handleCallback=function(F,I){F&&typeof F==`function`&&F(I)},handleWheelStop=function(F,I,L){var R=L.scale,z=L.options,De=z.maxScale,Oe=z.minScale;return F?R<De||R>Oe||Math.sign(F.deltaY)!==Math.sign(I.deltaY)||F.deltaY>0&&F.deltaY<I.deltaY||F.deltaY<0&&F.deltaY>I.deltaY||Math.sign(F.deltaY)!==Math.sign(I.deltaY):!1},mergeProps=function(F,I){return Object.keys(F).reduce(function(L,R){return typeof I[R]==`object`&&I[R]!==null?L[R]=__assign$1(__assign$1({},F[R]),I[R]):L[R]=I[R]===void 0?F[R]:I[R],L},{})};function getWindowScaleY(F){return F?window.innerHeight/F.offsetHeight:0}function getWindowScaleX(F){return F?window.innerWidth/F.offsetWidth:0}var easeOut=function(F){return-Math.cos(F*Math.PI)/2+.5},linear=function(F){return F},easeInQuad=function(F){return F*F},easeOutQuad=function(F){return F*(2-F)},easeInOutQuad=function(F){return F<.5?2*F*F:-1+(4-2*F)*F},easeInCubic=function(F){return F*F*F},easeOutCubic=function(F){return--F*F*F+1},easeInOutCubic=function(F){return F<.5?4*F*F*F:(F-1)*(2*F-2)*(2*F-2)+1},easeInQuart=function(F){return F*F*F*F},easeOutQuart=function(F){return 1- --F*F*F*F},easeInOutQuart=function(F){return F<.5?8*F*F*F*F:1-8*--F*F*F*F},easeInQuint=function(F){return F*F*F*F*F},easeOutQuint=function(F){return 1+--F*F*F*F*F},easeInOutQuint=function(F){return F<.5?16*F*F*F*F*F:1+16*--F*F*F*F*F},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(F,I,L){var R=this;if(this.mounted){var z=new Date().getTime(),De=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!R.animation||!R.mounted)){var Oe=new Date().getTime()-z,ke=Oe/I,Ae=availableAnimations[F],je=Ae(ke);Oe>=I?(L(De),R.animation=null):(L(je),requestAnimationFrame(R.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(F){var I=this,L=F.targetState,R=F.speed,z=F.type,De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=L.scale-Oe,Me=L.positionX-ke,Ne=L.positionY-Ae;R===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=L.scale,this.stateProvider.positionX=L.positionX,this.stateProvider.positionY=L.positionY,this.applyTransformation()):animate.call(this,z,R,function(F){I.stateProvider.previousScale=I.stateProvider.scale,I.stateProvider.scale=Oe+je*F,I.stateProvider.positionX=ke+Me*F,I.stateProvider.positionY=Ae+Ne*F,I.applyTransformation()})}function checkZoomBounds(F,I,L,R,z){var De=I-(z?R:0);return!isNaN(L)&&F>=L?L:!isNaN(I)&&F<=De?De:F}function checkPositionBounds(F,I,L,R,z,De){var Oe=L.minPositionX,ke=L.minPositionY,Ae=L.maxPositionX,je=L.maxPositionY,Me=De?z*De.offsetWidth/100:0,Ne=De?z*De.offsetHeight/100:0;return{x:boundLimiter(F,Oe-Me,Ae+Me,R),y:boundLimiter(I,ke-Ne,je+Ne,R)}}function getDelta(F,I){return checkIsNumber(I,F?F.deltaY<0?1:-1:0)}function wheelMousePosition(F,I,L){var R=I.getBoundingClientRect(),z=(F.clientX-R.left)/L,De=(F.clientY-R.top)/L;return(isNaN(z)||isNaN(De))&&console.error(`No mouse or touch offset found`),{mouseX:z,mouseY:De}}function getComponentsSizes(F,I,L){var R=F.offsetWidth,z=F.offsetHeight,De=I.offsetWidth,Oe=I.offsetHeight,ke=De*L,Ae=Oe*L;return{wrapperWidth:R,wrapperHeight:z,newContentWidth:ke,newDiffWidth:R-ke,newContentHeight:Ae,newDiffHeight:z-Ae}}function handleCalculatePositions(F,I,L,R,z){var De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=De.options.transformEnabled,Me=L-Oe;return typeof F!=`number`||typeof I!=`number`?console.error(`Mouse X and Y position were not provided!`):je?checkPositionBounds(ke-F*Me,Ae-I*Me,R,z,0,null):{newPositionX:ke,newPositionY:Ae}}function getClientPosition(F){var I=F.touches;return I&&I.length===1?{clientX:I[0].clientX,clientY:I[0].clientY}:I?null:{clientX:F.clientX,clientY:F.clientY}}function handlePanning(F){var I=this.stateProvider,L=I.scale,R=I.positionX,z=I.positionY,De=I.options,Oe=De.limitToBounds,ke=De.minScale,Ae=I.pan,je=Ae.lockAxisX,Me=Ae.lockAxisY,Ne=Ae.padding,Pe=Ae.paddingSize,Fe=I.wrapperComponent;if(this.startCoords){var Ie=this.startCoords,Le=Ie.x,Re=Ie.y,ze=getClientPosition(F);if(!ze)return console.error(`Cannot find mouse client positions`);var Be=ze.clientX,Ge=ze.clientY,rt=Be-Le,it=Ge-Re,at=je?R:rt,ot=Me?z:it,st=Ne&&L>=ke?Pe:0;if(!(at===R&&ot===z)){var ct=checkPositionBounds(at,ot,this.bounds,Oe,st,Fe);handlePaddingAnimation.call(this,ct.x,ct.y)}}}function handlePanningAnimation(){var F=this.stateProvider,I=F.scale,L=F.options.minScale,R=F.pan,z=R.disabled,De=R.padding,Oe=R.panReturnAnimationTime,ke=R.panReturnAnimationType;if(!(z||I<L||!De)){var Ae=handlePanToBounds.call(this);animateComponent.call(this,{targetState:Ae,speed:Oe,type:ke})}}function handlePanToBounds(){var F=this.stateProvider,I=F.positionX,L=F.positionY,R=F.scale,z=F.options,De=z.disabled,Oe=z.limitToBounds,ke=z.limitToWrapper,Ae=this.state.wrapperComponent;if(!De){var je=this.bounds,Me=je.maxPositionX,Ne=je.minPositionX,Pe=je.maxPositionY,Fe=je.minPositionY,Ie=I>Me||I<Ne,Le=L>Pe||L<Fe,Re=I>Me?Ae.offsetWidth:this.stateProvider.minPositionX||0,ze=L>Pe?Ae.offsetHeight:this.stateProvider.minPositionY||0,Be=Re,Ge=ze,rt=handleCalculatePositions.call(this,Be,Ge,R,this.bounds,Oe||ke),it=rt.x,at=rt.y;return{scale:R,positionX:Ie?it:I,positionY:Le?at:L}}}function handlePaddingAnimation(F,I){this.stateProvider.pan.padding&&(this.stateProvider.positionX=F,this.stateProvider.positionY=I,this.applyTransformation())}function handleCalculateZoom(F,I,L,R,z){var De=this.stateProvider,Oe=De.scale,ke=De.options,Ae=ke.maxScale,je=ke.minScale,Me=De.scalePadding,Ne=Me.size,Pe=Me.disabled,Fe=De.wrapperComponent,Ie=null;if(z){var Le=window.innerWidth*1e-4,Re=F<0?30:20;Ie=Oe+(I-I*Le)*F*(Oe/Re)}else{var ze=2-window.innerWidth/Fe.offsetWidth,Le=Math.max(.2,Math.min(.99,ze)),Re=20;Ie=Oe+I*F*((Oe-Oe*Le)/Re)}if(R)return Ie;var Be=!L&&!Pe;return checkZoomBounds(roundNumber(Ie,3),je,Ae,Ne,Be)}function handleCalculateBounds(F,I){var L=this.stateProvider,R=L.wrapperComponent,z=L.contentComponent,De=getComponentsSizes(R,z,F),Oe=De.wrapperWidth,ke=De.wrapperHeight,Ae=De.newContentWidth,je=De.newDiffWidth,Me=De.newContentHeight,Ne=De.newDiffHeight,Pe=calculateBoundingArea(Oe,Ae,je,ke,Me,Ne,I);return this.bounds=Pe,Pe}function handleWheelZoom(F){var I=this.stateProvider,L=I.scale,R=I.contentComponent,z=I.options.limitToBounds,De=I.scalePadding,Oe=De.size,ke=De.disabled,Ae=I.wheel,je=Ae.step,Me=Ae.limitsOnWheel;F.preventDefault(),F.stopPropagation();var Ne=getDelta(F,null),Pe=handleCalculateZoom.call(this,Ne,je,!F.ctrlKey);if(L!==Pe){var Fe=handleCalculateBounds.call(this,Pe,!Me),Ie=wheelMousePosition(F,R,L),Le=Ie.mouseX,Re=Ie.mouseY,ze=z&&(ke||Oe===0||Me),Be=handleCalculatePositions.call(this,Le,Re,Pe,Fe,ze),Ge=Be.x,rt=Be.y;this.bounds=Fe,this.stateProvider.previousScale=L,this.stateProvider.scale=Pe,this.stateProvider.positionX=Ge,this.stateProvider.positionY=rt,this.applyTransformation()}}function handleZoomToPoint(F,I,L,R,z){var De=this.stateProvider,Oe=De.contentComponent,ke=De.options,Ae=ke.disabled,je=ke.minScale,Me=ke.maxScale,Ne=ke.limitToBounds,Pe=ke.limitToWrapper;if(!(Ae||F)){var Fe=checkZoomBounds(roundNumber(I,2),je,Me,null,null),Ie=handleCalculateBounds.call(this,Fe,Pe),Le=L,Re=R;if(z){var ze=wheelMousePosition(z,Oe,I);Le=ze.mouseX,Re=ze.mouseY}var Be=handleCalculatePositions.call(this,Le,Re,Fe,Ie,Ne);return{scale:Fe,positionX:Be.x,positionY:Be.y}}}function handlePaddingAnimation$1(){var F=this.stateProvider,I=F.scale,L=F.wrapperComponent,R=F.options,z=R.minScale,De=R.limitToBounds,Oe=F.scalePadding,ke=Oe.disabled,Ae=Oe.animationTime,je=Oe.animationType,Me=ke||I>=z;if((I>=1||De)&&handlePanningAnimation.call(this),!Me){var Ne=L.offsetWidth/2,Pe=L.offsetHeight/2,Fe=handleZoomToPoint.call(this,!1,z,Ne,Pe,null);animateComponent.call(this,{targetState:Fe,speed:Ae,type:je})}}function handleDoubleClick(F){F.preventDefault(),F.stopPropagation();var I=this.stateProvider,L=I.contentComponent,R=I.scale,z=I.doubleClick,De=z.disabled,Oe=z.mode,ke=z.step,Ae=z.animationTime,je=z.animationType;if(Oe===`reset`)return resetTransformations.call(this,F,Ae);var Me=Oe===`zoomOut`?-1:1,Ne=handleCalculateZoom.call(this,Me,ke,void 0,void 0,!0),Pe=wheelMousePosition(F,L,R),Fe=Pe.mouseX,Ie=Pe.mouseY,Le=handleZoomToPoint.call(this,De,Ne,Fe,Ie);if(Le.scale!==R){var Re=getButtonAnimationTime(handleCalculateZoom.call(this,Me,ke,!0,void 0,!0),Ne,Ae);animateComponent.call(this,{targetState:Le,speed:Re,type:je})}}function handleZoomControls(F,I){var L=this.stateProvider,R=L.scale,z=L.positionX,De=L.positionY,Oe=L.wrapperComponent,ke=L.zoomIn,Ae=L.zoomOut,je=Oe.offsetWidth,Me=Oe.offsetHeight,Ne=(je/2-z)/R,Pe=(Me/2-De)/R,Fe=handleCalculateZoom.call(this,F,I,void 0,void 0,!0),Ie=Fe>R,Le=Ie?ke.animationTime:Ae.animationTime,Re=Ie?ke.animationType:Ae.animationType,ze=Ie?ke.disabled:Ae.disabled,Be=handleZoomToPoint.call(this,ze,Fe,Ne,Pe);if(Be.scale!==R){var Ge=getButtonAnimationTime(handleCalculateZoom.call(this,F,I,!0,void 0,!0),Fe,Le);animateComponent.call(this,{targetState:Be,speed:Ge,type:Re})}}function resetTransformations(F){var I=this.props.defaultValues,L=I.defaultScale,R=I.defaultPositionX,z=I.defaultPositionY,De=this.stateProvider,Oe=De.scale,ke=De.positionX,Ae=De.positionY,je=De.reset,Me=De.options,Ne=Me.disabled,Pe=Me.limitToBounds,Fe=Me.centerContent,Ie=Me.limitToWrapper;if(!(Ne||je.disabled)&&!(Oe===L&&ke===R&&Ae===z)){var Le=typeof F==`number`?F:je.animationTime,Re=checkIsNumber(L,initialState.scale),ze=checkIsNumber(R,initialState.positionX),Be=checkIsNumber(z,initialState.positionY);if(Pe&&!Ie||Fe){var Ge=handleCalculateBounds.call(this,Re,Ie);ze=Ge.minPositionX,Be=Ge.minPositionY}var rt={scale:Re,positionX:ze,positionY:Be};animateComponent.call(this,{targetState:rt,speed:Le,type:je.animationType})}}function getButtonAnimationTime(F,I,L){return I/F*L}function round(F,I){var L=10**I;return Math.round(F*L)/L}function getCurrentDistance(F){return getDistance(F.touches[0],F.touches[1])}function checkIfInfinite(F){return F===1/0||F===-1/0}function calculatePinchZoom(F,I){var L=this.stateProvider,R=L.options,z=R.minScale,De=R.maxScale,Oe=L.scalePadding,ke=Oe.size,Ae=Oe.disabled;if(typeof I!=`number`||typeof F!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(F<0))return checkZoomBounds(roundNumber(F/I*this.pinchStartScale,2),z,De,ke,!Ae)}function calculateMidpoint(F,I,L){var R=L.getBoundingClientRect(),z=F.touches,De=round(z[0].clientX-R.left,5),Oe=round(z[0].clientY-R.top,5),ke=round(z[1].clientX-R.left,5),Ae=round(z[1].clientY-R.top,5);return{mouseX:(De+ke)/2/I,mouseY:(Oe+Ae)/2/I}}function handleZoomPinch(F){var I=this.stateProvider,L=I.scale,R=I.options,z=R.limitToBounds,De=R.limitToWrapper,Oe=I.scalePadding,ke=Oe.disabled,Ae=Oe.size,je=I.wheel.limitsOnWheel,Me=I.pinch,Ne=this.state.contentComponent;if(!(Me.disabled||this.stateProvider.options.disabled)&&(F.cancelable&&(F.preventDefault(),F.stopPropagation()),this.pinchStartDistance!==null)){var Pe=calculateMidpoint(F,L,Ne),Fe=Pe.mouseX,Ie=Pe.mouseY;if(!(checkIfInfinite(Fe)||checkIfInfinite(Ie))){var Le=getCurrentDistance(F),Re=calculatePinchZoom.call(this,Le,this.pinchStartDistance);if(!(checkIfInfinite(Re)||Re===L)){var ze=handleCalculateBounds.call(this,Re,De),Be=z&&(ke||Ae===0||je),Ge=handleCalculatePositions.call(this,Fe,Ie,Re,ze,Be),rt=Ge.x,it=Ge.y;this.lastDistance=Le,this.stateProvider.positionX=rt,this.stateProvider.positionY=it,this.stateProvider.scale=Re,this.stateProvider.previousScale=L,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(F,I){return this.stateProvider.pan.velocityEqualToMove?I-I/Math.max(1,F):I}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var F=this,I=this.stateProvider,L=I.positionX,R=I.positionY,z=I.options.limitToBounds,De=I.pan,Oe=De.velocityBaseTime,ke=De.lockAxisX,Ae=De.lockAxisY,je=De.velocityAnimationType,Me=De.panReturnAnimationTime,Ne=De.panReturnAnimationType,Pe=De.padding,Fe=De.paddingSize,Ie=I.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var Le=this.bounds,Re=Le.maxPositionX,ze=Le.minPositionX,Be=Le.maxPositionY,Ge=Le.minPositionY,rt=this.velocity,it=rt.velocityX,at=rt.velocityY,ot=rt.velocity,st=velocityTimeSpeed.call(this,ot,Oe);if(!st){handlePanningAnimation.call(this);return}var ct=it,lt=at,ut=st>Me?st:Me,dt=Pe?Fe:0,ft=Ie?dt*Ie.offsetWidth/100:0,pt=Ie?dt*Ie.offsetHeight/100:0,mt=Re+ft,ht=ze-ft,gt=Be+pt,vt=Ge-pt,yt=checkPositionBounds(L,R,this.bounds,z,dt,Ie),yr=new Date().getTime();animate.call(this,je,ut,function(I){var De=new Date().getTime()-yr,Oe=De/Me,je=availableAnimations[Ne],Pe=je(Oe);(De>Me||Pe>1||Pe===1/0||Pe===-1/0)&&(Pe=1);var Fe=getPosition(ke,ct,I,Pe,ze,Re,z,L,yt.x,ht,mt),Ie=getPosition(Ae,lt,I,Pe,Ge,Be,z,R,yt.y,vt,gt);(L!==Fe||R!==Ie)&&(F.stateProvider.positionX=Fe,F.stateProvider.positionY=Ie,F.applyTransformation())})}}function calculateVelocityStart(F){var I=this,L=this.stateProvider,R=L.scale,z=L.options.disabled,De=L.pan,Oe=De.velocity,ke=De.velocitySensitivity,Ae=De.velocityActiveScale,je=De.velocityMinSpeed,Me=L.wrapperComponent;if(!(!Oe||Ae>=R||z)){handleEnableVelocity.call(this);var Ne=Date.now();if(this.lastMousePosition){var Pe=getClientPosition(F);if(!Pe)return console.error(`No mouse or touch position detected`);var Fe=Pe.clientX,Ie=Pe.clientY,Le=Fe-this.lastMousePosition.clientX,Re=Ie-this.lastMousePosition.clientY,ze=Ne-this.velocityTime,Be=2-Me.offsetWidth/window.innerWidth,Ge=2-Me.offsetHeight/window.innerHeight,rt=20*Math.max(je,Math.min(2,Be)),it=20*Math.max(je,Math.min(2,Ge)),at=Le/ze*ke*R*rt,ot=Re/ze*ke*R*it,st=Le*Le+Re*Re,ct=Math.sqrt(st)/ze*ke;if(this.velocity&&ct<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:at,velocityY:ot,velocity:ct},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){I.mounted&&(I.throttle=!1)},throttleTime)}var lt=getClientPosition(F);this.lastMousePosition=lt,this.velocityTime=Ne}}function getPosition(F,I,L,R,z,De,Oe,ke,Ae,je,Me){if(Oe){if(Ae>z&&ke>De){var Ne=Ae-(Ae-De)*R;return Ne>Me?Me:Ne<De?De:Ne}if(Ae<z&&ke<z){var Ne=Ae-(Ae-z)*R;return Ne<je?je:Ne>z?z:Ne}}return F?Ae:boundLimiter(ke+I*L,z,De,Oe)}function makePassiveEventOption(F){return F}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(F){return Object.keys(F).reduce(function(I,L){return propsList.includes(L)&&(I[L]=F[L]),I},{})},Context=import_react$10.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(F){__extends$1(I,F);function I(){var I=F!==null&&F.apply(this,arguments)||this;return I.mounted=!0,I.state={wrapperComponent:void 0,contentComponent:void 0},I.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,I.props.dynamicValues)),I.props.defaultValues),{previousScale:I.props.dynamicValues.scale||I.props.defaultValues.scale||initialState.scale}),I.windowToWrapperScaleX=0,I.windowToWrapperScaleY=0,I.startCoords=null,I.isDown=!1,I.pinchStartDistance=null,I.lastDistance=null,I.pinchStartScale=null,I.distance=null,I.bounds=null,I.velocityTime=null,I.lastMousePosition=null,I.velocity=null,I.offsetX=null,I.offsetY=null,I.throttle=!1,I.previousWheelEvent=null,I.lastScale=null,I.animate=null,I.animation=null,I.maxBounds=null,I.handleWheel=function(F){var L=I.stateProvider,R=L.scale,z=L.wheel,De=z.disabled,Oe=z.wheelEnabled,ke=z.touchPadEnabled,Ae=I.props,je=Ae.onWheelStart,Me=Ae.onWheel,Ne=Ae.onWheelStop,Pe=I.state,Fe=Pe.wrapperComponent,Ie=Pe.contentComponent;I.isDown||De||I.stateProvider.options.disabled||!Fe||!Ie||!Oe&&!F.ctrlKey||!ke&&F.ctrlKey||(wheelStopEventTimer||(I.lastScale=R,handleDisableAnimation.call(I),handleCallback(je,I.getCallbackProps())),handleWheelZoom.call(I,F),handleCallback(Me,I.getCallbackProps()),I.applyTransformation(null,null,null),I.previousWheelEvent=F,handleWheelStop(I.previousWheelEvent,F,I.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){I.mounted&&(handleCallback(Ne,I.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),I.animate=!1,I.lastScale=I.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){I.mounted&&handlePaddingAnimation$1.call(I,F)},wheelAnimationTime))},I.checkPanningTarget=function(F){var L=I.stateProvider.pan.disableOnTarget;return L.map(function(F){return F.toUpperCase()}).includes(F.target.tagName)||L.find(function(I){return F.target.classList.value.includes(I)})},I.checkIsPanningActive=function(F){var L=I.stateProvider.pan.disabled,R=I.state,z=R.wrapperComponent,De=R.contentComponent;return!I.isDown||L||I.stateProvider.options.disabled||F.touches&&(F.touches.length!==1||Math.abs(I.startCoords.x-F.touches[0].clientX)<1||Math.abs(I.startCoords.y-F.touches[0].clientY)<1)||!z||!De},I.handleSetUpPanning=function(F,L){var R=I.stateProvider,z=R.positionX,De=R.positionY;I.isDown=!0,I.startCoords={x:F-z,y:L-De},handleCallback(I.props.onPanningStart,I.getCallbackProps())},I.handleStartPanning=function(F){var L=I.stateProvider,R=L.wrapperComponent,z=L.scale,De=L.options,Oe=De.minScale,ke=De.maxScale,Ae=De.limitToWrapper,je=L.pan.disabled,Me=F.target,Ne=F.touches;je||I.stateProvider.options.disabled||R&&!R.contains(Me)||I.checkPanningTarget(F)||z<Oe||z>ke||(handleDisableAnimation.call(I),I.bounds=handleCalculateBounds.call(I,z,Ae),Ne&&Ne.length===1&&I.handleSetUpPanning(Ne[0].clientX,Ne[0].clientY),Ne||I.handleSetUpPanning(F.clientX,F.clientY))},I.handlePanning=function(F){I.isDown&&F.preventDefault(),!I.checkIsPanningActive(F)&&(F.stopPropagation(),calculateVelocityStart.call(I,F),handlePanning.call(I,F),handleCallback(I.props.onPanning,I.getCallbackProps()))},I.handleStopPanning=function(){if(I.isDown){I.isDown=!1,I.animate=!1,I.animation=!1,handleFireVelocity.call(I),handleCallback(I.props.onPanningStop,I.getCallbackProps());var F=I.stateProvider,L=F.pan.velocity,R=F.scale;I.velocity&&L&&R>1?animateVelocity.call(I):handlePanningAnimation.call(I)}},I.handlePinchStart=function(F){var L=I.stateProvider.scale;F.preventDefault(),F.stopPropagation(),handleDisableAnimation.call(I);var R=getDistance(F.touches[0],F.touches[1]);I.pinchStartDistance=R,I.lastDistance=R,I.pinchStartScale=L,I.isDown=!1,handleCallback(I.props.onPinchingStart,I.getCallbackProps())},I.handlePinch=function(F){I.isDown=!1,handleZoomPinch.call(I,F),handleCallback(I.props.onPinching,I.getCallbackProps())},I.handlePinchStop=function(){typeof I.pinchStartScale==`number`&&(I.isDown=!1,I.velocity=null,I.lastDistance=null,I.pinchStartScale=null,I.pinchStartDistance=null,handlePaddingAnimation$1.call(I),handleCallback(I.props.onPinchingStop,I.getCallbackProps()))},I.handleTouchStart=function(F){var L=I.stateProvider,R=L.wrapperComponent,z=L.contentComponent,De=L.scale,Oe=L.options,ke=Oe.disabled,Ae=Oe.minScale,je=F.touches;if(!(ke||!R||!z||De<Ae)){if(handleDisableAnimation.call(I),je&&je.length===1)return I.handleStartPanning(F);if(je&&je.length===2)return I.handlePinchStart(F)}},I.handleTouch=function(F){var L=I.stateProvider,R=L.pan,z=L.pinch;if(!L.options.disabled){if(!R.disabled&&F.touches.length===1)return I.handlePanning(F);if(!z.disabled&&F.touches.length===2)return I.handlePinch(F)}},I.handleTouchStop=function(){I.handleStopPanning(),I.handlePinchStop()},I.zoomIn=function(F){var L=I.stateProvider,R=L.zoomIn,z=R.disabled,De=R.step,Oe=L.options,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Zoom in function requires event prop`);z||Oe.disabled||!Ae||!je||handleZoomControls.call(I,1,De)},I.zoomOut=function(F){var L=I.stateProvider,R=L.zoomOut,z=R.disabled,De=R.step,Oe=L.options,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Zoom out function requires event prop`);z||Oe.disabled||!Ae||!je||handleZoomControls.call(I,-1,De)},I.handleDbClick=function(F){var L=I.stateProvider,R=L.options,z=L.doubleClick,De=z.disabled,Oe=z.step,ke=I.state,Ae=ke.wrapperComponent,je=ke.contentComponent;if(!F)throw Error(`Double click function requires event prop`);De||R.disabled||!Ae||!je||handleDoubleClick.call(I,F,1,Oe)},I.setScale=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.positionY,ke=z.scale,Ae=z.options.disabled,je=I.state,Me=je.wrapperComponent,Ne=je.contentComponent;if(!(Ae||!Me||!Ne)){var Pe={positionX:De,positionY:Oe,scale:isNaN(F)?ke:F};animateComponent.call(I,{targetState:Pe,speed:L,type:R})}},I.setPositionX=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.positionY,ke=z.scale,Ae=z.options,je=Ae.disabled,Me=Ae.transformEnabled,Ne=I.state,Pe=Ne.wrapperComponent,Fe=Ne.contentComponent;if(!(je||!Me||!Pe||!Fe)){var Ie={positionX:isNaN(F)?De:F,positionY:Oe,scale:ke};animateComponent.call(I,{targetState:Ie,speed:L,type:R})}},I.setPositionY=function(F,L,R){L===void 0&&(L=200),R===void 0&&(R=`easeOut`);var z=I.stateProvider,De=z.positionX,Oe=z.scale,ke=z.positionY,Ae=z.options,je=Ae.disabled,Me=Ae.transformEnabled,Ne=I.state,Pe=Ne.wrapperComponent,Fe=Ne.contentComponent;if(!(je||!Me||!Pe||!Fe)){var Ie={positionX:De,positionY:isNaN(F)?ke:F,scale:Oe};animateComponent.call(I,{targetState:Ie,speed:L,type:R})}},I.setTransform=function(F,L,R,z,De){z===void 0&&(z=200),De===void 0&&(De=`easeOut`);var Oe=I.stateProvider,ke=Oe.positionX,Ae=Oe.positionY,je=Oe.scale,Me=Oe.options,Ne=Me.disabled,Pe=Me.transformEnabled,Fe=I.state,Ie=Fe.wrapperComponent,Le=Fe.contentComponent;if(!(Ne||!Pe||!Ie||!Le)){var Re={positionX:isNaN(F)?ke:F,positionY:isNaN(L)?Ae:L,scale:isNaN(R)?je:R};animateComponent.call(I,{targetState:Re,speed:z,type:De})}},I.resetTransform=function(){var F=I.stateProvider.options,L=F.disabled,R=F.transformEnabled;L||!R||resetTransformations.call(I)},I.setDefaultState=function(){I.animation=null,I.stateProvider=__assign$1(__assign$1(__assign$1({},I.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),I.props.defaultValues),I.forceUpdate()},I.setWrapperComponent=function(F){I.setState({wrapperComponent:F})},I.setContentComponent=function(F){I.setState({contentComponent:F},function(){var L=I.stateProvider,R=L.wrapperComponent,z=L.options,De=z.centerContent,Oe=z.limitToBounds,ke=z.limitToWrapper,Ae=L.scale,je=I.props.defaultValues,Me=je.positionX,Ne=je.positionY;if(Oe&&!ke||De&&!Me&&!Ne){var Pe=`translate(25%, 25%) scale(`+Ae+`)`;F.style.transform=Pe,F.style.WebkitTransform=Pe,I.forceUpdate();var Fe=new Date().getTime(),Ie=2e3,Le=setInterval(function(){if(R.offsetWidth){var F=handleCalculateBounds.call(I,Ae,!1);I.stateProvider.positionX=F.minPositionX,I.stateProvider.positionY=F.minPositionY,I.applyTransformation(null,null,null),clearInterval(Le),Le=null}else new Date().getTime()-Fe>Ie&&(clearInterval(Le),Le=null)},20)}else I.applyTransformation(null,null,null)})},I.applyTransformation=function(F,L,R){if(I.mounted){var z=I.state.contentComponent,De=I.props.onZoomChange,Oe=I.stateProvider,ke=Oe.previousScale,Ae=Oe.scale,je=Oe.positionX,Me=Oe.positionY;if(!z)return console.error(`There is no content component`);var Ne=`translate(`+(L||je)+`px, `+(R||Me)+`px) scale(`+(F||Ae)+`)`;z.style.transform=Ne,z.style.WebkitTransform=Ne,I.forceUpdate(),De&&ke!==Ae&&handleCallback(De,I.getCallbackProps())}},I.getCallbackProps=function(){return getValidPropsFromObject(I.stateProvider)},I}return I.prototype.componentDidMount=function(){var F=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,F),window.addEventListener(`mousemove`,this.handlePanning,F),window.addEventListener(`mouseup`,this.handleStopPanning,F)},I.prototype.componentWillUnmount=function(){var F=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,F),window.removeEventListener(`mousemove`,this.handlePanning,F),window.removeEventListener(`mouseup`,this.handleStopPanning,F),handleDisableAnimation.call(this)},I.prototype.componentDidUpdate=function(F,I){var L=this.state,R=L.wrapperComponent,z=L.contentComponent,De=this.props.dynamicValues;if(!I.contentComponent&&z&&(this.stateProvider.contentComponent=z),!I.wrapperComponent&&R&&R!==void 0){this.stateProvider.wrapperComponent=R,this.windowToWrapperScaleX=getWindowScaleX(R),this.windowToWrapperScaleY=getWindowScaleY(R);var Oe=makePassiveEventOption(!1);R.addEventListener(`wheel`,this.handleWheel,Oe),R.addEventListener(`dblclick`,this.handleDbClick,Oe),R.addEventListener(`touchstart`,this.handleTouchStart,Oe),R.addEventListener(`touchmove`,this.handleTouch,Oe),R.addEventListener(`touchend`,this.handleTouchStop,Oe)}(R&&z||F.dynamicValues!==De)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),F.dynamicValues&&F.dynamicValues!==De&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,De)),this.applyTransformation(null,null,null))},I.prototype.render=function(){var F=this.state,I=F.wrapperComponent,L=F.contentComponent,R={loaded:!!(I&&L),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},z=this.props.children,De=typeof z==`function`?z(__assign$1(__assign$1({},R.state),R.dispatch)):z;return import_react$10.createElement(Context.Provider,{value:R},De)},I}(import_react$10.Component),TransformWrapper=function(F){var I=F.children,L=F.defaultPositionX,R=F.defaultPositionY,z=F.defaultScale,De=F.onWheelStart,Oe=F.onWheel,ke=F.onWheelStop,Ae=F.onPanningStart,je=F.onPanning,Me=F.onPanningStop,Ne=F.onPinchingStart,Pe=F.onPinching,Fe=F.onPinchingStop,Ie=F.onZoomChange,Le=__rest$1(F,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),Re=__assign$1({},Le);return Re.options&&Re.options.limitToWrapper&&(Re.options.limitToBounds=!0),import_react$10.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:L,positionY:R,scale:z}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(Re)),onWheelStart:De,onWheel:Oe,onWheelStop:ke,onPanningStart:Ae,onPanning:je,onPanningStop:Me,onPinchingStart:Ne,onPinching:Pe,onPinchingStop:Fe,onZoomChange:Ie},I)};function styleInject(F,I){I===void 0&&(I={});var L=I.insertAt;if(!(!F||typeof document>`u`)){var R=document.head||document.getElementsByTagName(`head`)[0],z=document.createElement(`style`);z.type=`text/css`,L===`top`&&R.firstChild?R.insertBefore(z,R.firstChild):R.appendChild(z),z.styleSheet?z.styleSheet.cssText=F:z.appendChild(document.createTextNode(F))}}var css=`.TransformComponent-module_container__3NwNd {
265
265
  position: relative;
266
266
  width: fit-content;
267
267
  height: fit-content;
@@ -368,7 +368,7 @@ If you're playing on a mobile device, all you need to do is [add it to your home
368
368
 
369
369
  * Press "Shift + ?" to see all of the keyboard shortcuts available to you.
370
370
 
371
- `})})})]});function Consumer$7(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Home,{...I,...L,...F})})}var randomPosition=()=>10+random$1()*80,flipAnimationDuration=1e3,transitionAnimationDuration=3e3,hugAnimationDuration=750,Cow=({allowCustomPeerCowNames:F,cow:I,cowInventory:L,handleCowClick:R,playerId:z,isSelected:De})=>{let[Oe,ke]=(0,import_react$10.useState)(pixel_default),[Ae,je]=(0,import_react$10.useState)(!1),[Me,Ne]=(0,import_react$10.useState)(RIGHT),[Pe,Fe]=(0,import_react$10.useState)(0),[Ie,Le]=(0,import_react$10.useState)(!1),[Re,ze]=(0,import_react$10.useState)(()=>({x:randomPosition(),y:randomPosition()})),[Be]=(0,import_react$10.useState)(()=>new import_shifty.Tweenable),[Ge,rt]=(0,import_react$10.useState)(I.happinessBoostsToday),it=useIsMounted(),{x:at,y:ot}=Re,st=(0,import_react$10.useCallback)(async(F,I)=>{let L=randomPosition(),R=L<F.x?LEFT:RIGHT;if(Ne(R),I!==R){let F=F=>{typeof F.rotate==`number`&&Fe(F.rotate)};try{let I=flipAnimationDuration,L=`swingTo`;R===`left`?await Be.tween({from:{rotate:0},to:{rotate:180},easing:L,duration:I,render:F}):await Be.tween({from:{rotate:180},to:{rotate:0},easing:L,duration:I,render:F})}catch{return}}je(!0);try{let I=randomPosition();await Be.tween({from:{x:F.x,y:F.y},to:{x:L,y:I},duration:transitionAnimationDuration,render:F=>{typeof F.x==`number`&&typeof F.y==`number`&&ze({x:F.x,y:F.y})},easing:`linear`})}catch{return}je(!1)},[Be]);(0,import_react$10.useEffect)(()=>{(async()=>{let F=await getCowImage(I);it()!==!1&&ke(F)})()},[]),(0,import_react$10.useEffect)(()=>()=>{Be.cancel()},[Be]),(0,import_react$10.useEffect)(()=>{if(De||Ae)return;let F=2e3*L.length,I=setTimeout(()=>{st(Re,Me)},random$1()*F);return()=>{clearTimeout(I)}},[De,Ae,L.length,st]),(0,import_react$10.useEffect)(()=>{let F=I.happinessBoostsToday>Ge;rt(I.happinessBoostsToday),F&&!Ie&&Le(!0)},[I.happinessBoostsToday,Ge,Ie]),(0,import_react$10.useEffect)(()=>{if(!Ie)return;let F=setTimeout(()=>{Le(!1)},hugAnimationDuration);return()=>{clearTimeout(F)}},[Ie]);let ct=getCowDisplayName(I,z,F);return(0,import_jsx_runtime$2.jsxs)(`div`,{className:(0,import_classnames.default)(`cow`,{"is-transitioning":Ae,"is-selected":De,"is-loaded":Oe!==pixel_default}),onClick:()=>R(I),style:{left:`${at}%`,top:`${ot}%`},children:[De&&(0,import_jsx_runtime$2.jsxs)(`p`,{className:`visually_hidden`,children:[ct,` is selected`]}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:ct}),open:De,PopperProps:{disablePortal:!0},children:(0,import_jsx_runtime$2.jsxs)(`div`,{style:{transform:`rotateY(${Pe}deg)`},children:[(0,import_jsx_runtime$2.jsx)(`img`,{src:Oe,alt:ct}),(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:(0,import_classnames.default)(`heart-icon`,`animation`,{"is-animating":Ie}),fontSize:`inherit`})]})}),(0,import_jsx_runtime$2.jsx)(`ol`,{className:`happiness-boosts-today`,children:Array(I.happinessBoostsToday).fill(void 0).map((F,I)=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:`heart-icon`,fontSize:`inherit`})},I))})]})};function getAccordionActionsUtilityClass(F){return generateUtilityClass(`MuiAccordionActions`,F)}var accordionActionsClasses=generateUtilityClasses(`MuiAccordionActions`,[`root`,`spacing`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$3=[`className`,`disableSpacing`],useUtilityClasses$3=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getAccordionActionsUtilityClass,I)},AccordionActionsRoot=styled(`div`,{name:`MuiAccordionActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,variants:[{props:F=>!F.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),AccordionActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionActions`}),{className:R,disableSpacing:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$3),Oe=_extends$3({},L,{disableSpacing:z}),ke=useUtilityClasses$3(Oe);return(0,import_jsx_runtime$2.jsx)(AccordionActionsRoot,_extends$3({className:clsx$1(ke.root,R),ref:I,ownerState:Oe},De))}),Cancel_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z`}),`Cancel`);function getChipUtilityClass(F){return generateUtilityClass(`MuiChip`,F)}var chipClasses=generateUtilityClasses(`MuiChip`,`root.sizeSmall.sizeMedium.colorError.colorInfo.colorPrimary.colorSecondary.colorSuccess.colorWarning.disabled.clickable.clickableColorPrimary.clickableColorSecondary.deletable.deletableColorPrimary.deletableColorSecondary.outlined.filled.outlinedPrimary.outlinedSecondary.filledPrimary.filledSecondary.avatar.avatarSmall.avatarMedium.avatarColorPrimary.avatarColorSecondary.icon.iconSmall.iconMedium.iconColorPrimary.iconColorSecondary.label.labelSmall.labelMedium.deleteIcon.deleteIconSmall.deleteIconMedium.deleteIconColorPrimary.deleteIconColorSecondary.deleteIconOutlinedColorPrimary.deleteIconOutlinedColorSecondary.deleteIconFilledColorPrimary.deleteIconFilledColorSecondary.focusVisible`.split(`.`));init_objectWithoutPropertiesLoose(),init_extends();var _excluded$2=[`avatar`,`className`,`clickable`,`color`,`component`,`deleteIcon`,`disabled`,`icon`,`label`,`onClick`,`onDelete`,`onKeyDown`,`onKeyUp`,`size`,`variant`,`tabIndex`,`skipFocusWhenDisabled`],useUtilityClasses$2=F=>{let{classes:I,disabled:L,size:R,color:z,iconColor:De,onDelete:Oe,clickable:ke,variant:Ae}=F;return composeClasses({root:[`root`,Ae,L&&`disabled`,`size${capitalize_default(R)}`,`color${capitalize_default(z)}`,ke&&`clickable`,ke&&`clickableColor${capitalize_default(z)}`,Oe&&`deletable`,Oe&&`deletableColor${capitalize_default(z)}`,`${Ae}${capitalize_default(z)}`],label:[`label`,`label${capitalize_default(R)}`],avatar:[`avatar`,`avatar${capitalize_default(R)}`,`avatarColor${capitalize_default(z)}`],icon:[`icon`,`icon${capitalize_default(R)}`,`iconColor${capitalize_default(De)}`],deleteIcon:[`deleteIcon`,`deleteIcon${capitalize_default(R)}`,`deleteIconColor${capitalize_default(z)}`,`deleteIcon${capitalize_default(Ae)}Color${capitalize_default(z)}`]},getChipUtilityClass,I)},ChipRoot=styled(`div`,{name:`MuiChip`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F,{color:R,iconColor:z,clickable:De,onDelete:Oe,size:ke,variant:Ae}=L;return[{[`& .${chipClasses.avatar}`]:I.avatar},{[`& .${chipClasses.avatar}`]:I[`avatar${capitalize_default(ke)}`]},{[`& .${chipClasses.avatar}`]:I[`avatarColor${capitalize_default(R)}`]},{[`& .${chipClasses.icon}`]:I.icon},{[`& .${chipClasses.icon}`]:I[`icon${capitalize_default(ke)}`]},{[`& .${chipClasses.icon}`]:I[`iconColor${capitalize_default(z)}`]},{[`& .${chipClasses.deleteIcon}`]:I.deleteIcon},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIcon${capitalize_default(ke)}`]},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIconColor${capitalize_default(R)}`]},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIcon${capitalize_default(Ae)}Color${capitalize_default(R)}`]},I.root,I[`size${capitalize_default(ke)}`],I[`color${capitalize_default(R)}`],De&&I.clickable,De&&R!=="default"&&I[`clickableColor${capitalize_default(R)})`],Oe&&I.deletable,Oe&&R!=="default"&&I[`deletableColor${capitalize_default(R)}`],I[Ae],I[`${Ae}${capitalize_default(R)}`]]}})(({theme:F,ownerState:I})=>{let L=F.palette.mode===`light`?F.palette.grey[700]:F.palette.grey[300];return _extends$3({maxWidth:`100%`,fontFamily:F.typography.fontFamily,fontSize:F.typography.pxToRem(13),display:`inline-flex`,alignItems:`center`,justifyContent:`center`,height:32,color:(F.vars||F).palette.text.primary,backgroundColor:(F.vars||F).palette.action.selected,borderRadius:32/2,whiteSpace:`nowrap`,transition:F.transitions.create([`background-color`,`box-shadow`]),cursor:`unset`,outline:0,textDecoration:`none`,border:0,padding:0,verticalAlign:`middle`,boxSizing:`border-box`,[`&.${chipClasses.disabled}`]:{opacity:(F.vars||F).palette.action.disabledOpacity,pointerEvents:`none`},[`& .${chipClasses.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:F.vars?F.vars.palette.Chip.defaultAvatarColor:L,fontSize:F.typography.pxToRem(12)},[`& .${chipClasses.avatarColorPrimary}`]:{color:(F.vars||F).palette.primary.contrastText,backgroundColor:(F.vars||F).palette.primary.dark},[`& .${chipClasses.avatarColorSecondary}`]:{color:(F.vars||F).palette.secondary.contrastText,backgroundColor:(F.vars||F).palette.secondary.dark},[`& .${chipClasses.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:F.typography.pxToRem(10)},[`& .${chipClasses.icon}`]:_extends$3({marginLeft:5,marginRight:-6},I.size===`small`&&{fontSize:18,marginLeft:4,marginRight:-4},I.iconColor===I.color&&_extends$3({color:F.vars?F.vars.palette.Chip.defaultIconColor:L},I.color!=="default"&&{color:`inherit`})),[`& .${chipClasses.deleteIcon}`]:_extends$3({WebkitTapHighlightColor:`transparent`,color:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / 0.26)`:(0,import_colorManipulator.alpha)(F.palette.text.primary,.26),fontSize:22,cursor:`pointer`,margin:`0 5px 0 -6px`,"&:hover":{color:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / 0.4)`:(0,import_colorManipulator.alpha)(F.palette.text.primary,.4)}},I.size===`small`&&{fontSize:16,marginRight:4,marginLeft:-4},I.color!=="default"&&{color:F.vars?`rgba(${F.vars.palette[I.color].contrastTextChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].contrastText,.7),"&:hover, &:active":{color:(F.vars||F).palette[I.color].contrastText}})},I.size===`small`&&{height:24},I.color!=="default"&&{backgroundColor:(F.vars||F).palette[I.color].main,color:(F.vars||F).palette[I.color].contrastText},I.onDelete&&{[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.focusOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.focusOpacity)}},I.onDelete&&I.color!=="default"&&{[`&.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette[I.color].dark}})},({theme:F,ownerState:I})=>_extends$3({},I.clickable&&{userSelect:`none`,WebkitTapHighlightColor:`transparent`,cursor:`pointer`,"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.hoverOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.hoverOpacity)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.focusOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.focusOpacity)},"&:active":{boxShadow:(F.vars||F).shadows[1]}},I.clickable&&I.color!=="default"&&{[`&:hover, &.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette[I.color].dark}}),({theme:F,ownerState:I})=>_extends$3({},I.variant===`outlined`&&{backgroundColor:`transparent`,border:F.vars?`1px solid ${F.vars.palette.Chip.defaultBorder}`:`1px solid ${F.palette.mode===`light`?F.palette.grey[400]:F.palette.grey[700]}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:(F.vars||F).palette.action.hover},[`&.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette.action.focus},[`& .${chipClasses.avatar}`]:{marginLeft:4},[`& .${chipClasses.avatarSmall}`]:{marginLeft:2},[`& .${chipClasses.icon}`]:{marginLeft:4},[`& .${chipClasses.iconSmall}`]:{marginLeft:2},[`& .${chipClasses.deleteIcon}`]:{marginRight:5},[`& .${chipClasses.deleteIconSmall}`]:{marginRight:3}},I.variant===`outlined`&&I.color!=="default"&&{color:(F.vars||F).palette[I.color].main,border:`1px solid ${F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,.7)}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.focusOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.focusOpacity)},[`& .${chipClasses.deleteIcon}`]:{color:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,.7),"&:hover, &:active":{color:(F.vars||F).palette[I.color].main}}})),ChipLabel=styled(`span`,{name:`MuiChip`,slot:`Label`,overridesResolver:(F,I)=>{let{ownerState:L}=F,{size:R}=L;return[I.label,I[`label${capitalize_default(R)}`]]}})(({ownerState:F})=>_extends$3({overflow:`hidden`,textOverflow:`ellipsis`,paddingLeft:12,paddingRight:12,whiteSpace:`nowrap`},F.variant===`outlined`&&{paddingLeft:11,paddingRight:11},F.size===`small`&&{paddingLeft:8,paddingRight:8},F.size===`small`&&F.variant===`outlined`&&{paddingLeft:7,paddingRight:7}));function isDeleteKeyboardEvent(F){return F.key===`Backspace`||F.key===`Delete`}var Chip=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiChip`}),{avatar:R,className:z,clickable:De,color:Oe=`default`,component:ke,deleteIcon:Ae,disabled:je=!1,icon:Me,label:Ne,onClick:Pe,onDelete:Fe,onKeyDown:Ie,onKeyUp:Le,size:Re=`medium`,variant:ze=`filled`,tabIndex:Be,skipFocusWhenDisabled:Ge=!1}=L,rt=_objectWithoutPropertiesLoose$2(L,_excluded$2),it=import_react$10.useRef(null),at=useForkRef_default(it,I),ot=F=>{F.stopPropagation(),Fe&&Fe(F)},st=F=>{F.currentTarget===F.target&&isDeleteKeyboardEvent(F)&&F.preventDefault(),Ie&&Ie(F)},ct=F=>{F.currentTarget===F.target&&(Fe&&isDeleteKeyboardEvent(F)?Fe(F):F.key===`Escape`&&it.current&&it.current.blur()),Le&&Le(F)},lt=De!==!1&&Pe?!0:De,ut=lt||Fe?ButtonBase:ke||`div`,dt=_extends$3({},L,{component:ut,disabled:je,size:Re,color:Oe,iconColor:import_react$10.isValidElement(Me)&&Me.props.color||Oe,onDelete:!!Fe,clickable:lt,variant:ze}),ft=useUtilityClasses$2(dt),pt=ut===ButtonBase?_extends$3({component:ke||`div`,focusVisibleClassName:ft.focusVisible},Fe&&{disableRipple:!0}):{},mt=null;Fe&&(mt=Ae&&import_react$10.isValidElement(Ae)?import_react$10.cloneElement(Ae,{className:clsx$1(Ae.props.className,ft.deleteIcon),onClick:ot}):(0,import_jsx_runtime$2.jsx)(Cancel_default,{className:clsx$1(ft.deleteIcon),onClick:ot}));let ht=null;R&&import_react$10.isValidElement(R)&&(ht=import_react$10.cloneElement(R,{className:clsx$1(ft.avatar,R.props.className)}));let gt=null;return Me&&import_react$10.isValidElement(Me)&&(gt=import_react$10.cloneElement(Me,{className:clsx$1(ft.icon,Me.props.className)})),(0,import_jsx_runtime$2.jsxs)(ChipRoot,_extends$3({as:ut,className:clsx$1(ft.root,z),disabled:lt&&je?!0:void 0,onClick:Pe,onKeyDown:st,onKeyUp:ct,ref:at,tabIndex:Ge&&je?-1:Be,ownerState:dt},pt,rt,{children:[ht||gt,(0,import_jsx_runtime$2.jsx)(ChipLabel,{className:clsx$1(ft.label),ownerState:dt,children:Ne}),mt]}))}),Container=createContainer({createStyledComponent:styled(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[`maxWidth${capitalize_default(String(L.maxWidth))}`],L.fixed&&I.fixed,L.disableGutters&&I.disableGutters]}}),useThemeProps:F=>useDefaultProps({props:F,name:`MuiContainer`})});init_extends();function useSnackbar(F={}){let{autoHideDuration:I=null,disableWindowBlurListener:L=!1,onClose:R,open:z,resumeHideDuration:De}=F,Oe=useTimeout();import_react$10.useEffect(()=>{if(!z)return;function F(F){F.defaultPrevented||(F.key===`Escape`||F.key===`Esc`)&&R?.(F,`escapeKeyDown`)}return document.addEventListener(`keydown`,F),()=>{document.removeEventListener(`keydown`,F)}},[z,R]);let ke=useEventCallback$1((F,I)=>{R?.(F,I)}),Ae=useEventCallback$1(F=>{!R||F==null||Oe.start(F,()=>{ke(null,`timeout`)})});import_react$10.useEffect(()=>(z&&Ae(I),Oe.clear),[z,I,Ae,Oe]);let je=F=>{R?.(F,`clickaway`)},Me=Oe.clear,Ne=import_react$10.useCallback(()=>{I!=null&&Ae(De??I*.5)},[I,De,Ae]),Pe=F=>I=>{let L=F.onBlur;L?.(I),Ne()},Fe=F=>I=>{let L=F.onFocus;L?.(I),Me()},Ie=F=>I=>{let L=F.onMouseEnter;L?.(I),Me()},Le=F=>I=>{let L=F.onMouseLeave;L?.(I),Ne()};return import_react$10.useEffect(()=>{if(!L&&z)return window.addEventListener(`focus`,Ne),window.addEventListener(`blur`,Me),()=>{window.removeEventListener(`focus`,Ne),window.removeEventListener(`blur`,Me)}},[L,z,Ne,Me]),{getRootProps:(I={})=>{let L=_extends$3({},extractEventHandlers(F),extractEventHandlers(I));return _extends$3({role:`presentation`},I,L,{onBlur:Pe(L),onFocus:Fe(L),onMouseEnter:Ie(L),onMouseLeave:Le(L)})},onClickAway:je}}function getSnackbarContentUtilityClass(F){return generateUtilityClass(`MuiSnackbarContent`,F)}var snackbarContentClasses=generateUtilityClasses(`MuiSnackbarContent`,[`root`,`message`,`action`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$1=[`action`,`className`,`message`,`role`],useUtilityClasses$1=F=>{let{classes:I}=F;return composeClasses({root:[`root`],action:[`action`],message:[`message`]},getSnackbarContentUtilityClass,I)},SnackbarContentRoot=styled(Paper,{name:`MuiSnackbarContent`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>{let I=F.palette.mode===`light`?.8:.98,L=(0,import_colorManipulator.emphasize)(F.palette.background.default,I);return _extends$3({},F.typography.body2,{color:F.vars?F.vars.palette.SnackbarContent.color:F.palette.getContrastText(L),backgroundColor:F.vars?F.vars.palette.SnackbarContent.bg:L,display:`flex`,alignItems:`center`,flexWrap:`wrap`,padding:`6px 16px`,borderRadius:(F.vars||F).shape.borderRadius,flexGrow:1,[F.breakpoints.up(`sm`)]:{flexGrow:`initial`,minWidth:288}})}),SnackbarContentMessage=styled(`div`,{name:`MuiSnackbarContent`,slot:`Message`,overridesResolver:(F,I)=>I.message})({padding:`8px 0`}),SnackbarContentAction=styled(`div`,{name:`MuiSnackbarContent`,slot:`Action`,overridesResolver:(F,I)=>I.action})({display:`flex`,alignItems:`center`,marginLeft:`auto`,paddingLeft:16,marginRight:-8}),SnackbarContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSnackbarContent`}),{action:R,className:z,message:De,role:Oe=`alert`}=L,ke=_objectWithoutPropertiesLoose$2(L,_excluded$1),Ae=L,je=useUtilityClasses$1(Ae);return(0,import_jsx_runtime$2.jsxs)(SnackbarContentRoot,_extends$3({role:Oe,square:!0,elevation:6,className:clsx$1(je.root,z),ownerState:Ae,ref:I},ke,{children:[(0,import_jsx_runtime$2.jsx)(SnackbarContentMessage,{className:je.message,ownerState:Ae,children:De}),R?(0,import_jsx_runtime$2.jsx)(SnackbarContentAction,{className:je.action,ownerState:Ae,children:R}):null]}))});function getSnackbarUtilityClass(F){return generateUtilityClass(`MuiSnackbar`,F)}var snackbarClasses=generateUtilityClasses(`MuiSnackbar`,[`root`,`anchorOriginTopCenter`,`anchorOriginBottomCenter`,`anchorOriginTopRight`,`anchorOriginBottomRight`,`anchorOriginTopLeft`,`anchorOriginBottomLeft`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded=[`onEnter`,`onExited`],_excluded2=[`action`,`anchorOrigin`,`autoHideDuration`,`children`,`className`,`ClickAwayListenerProps`,`ContentProps`,`disableWindowBlurListener`,`message`,`onBlur`,`onClose`,`onFocus`,`onMouseEnter`,`onMouseLeave`,`open`,`resumeHideDuration`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],useUtilityClasses=F=>{let{classes:I,anchorOrigin:L}=F;return composeClasses({root:[`root`,`anchorOrigin${capitalize_default(L.vertical)}${capitalize_default(L.horizontal)}`]},getSnackbarUtilityClass,I)},SnackbarRoot=styled(`div`,{name:`MuiSnackbar`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[`anchorOrigin${capitalize_default(L.anchorOrigin.vertical)}${capitalize_default(L.anchorOrigin.horizontal)}`]]}})(({theme:F,ownerState:I})=>{let L={left:`50%`,right:`auto`,transform:`translateX(-50%)`};return _extends$3({zIndex:(F.vars||F).zIndex.snackbar,position:`fixed`,display:`flex`,left:8,right:8,justifyContent:`center`,alignItems:`center`},I.anchorOrigin.vertical===`top`?{top:8}:{bottom:8},I.anchorOrigin.horizontal===`left`&&{justifyContent:`flex-start`},I.anchorOrigin.horizontal===`right`&&{justifyContent:`flex-end`},{[F.breakpoints.up(`sm`)]:_extends$3({},I.anchorOrigin.vertical===`top`?{top:24}:{bottom:24},I.anchorOrigin.horizontal===`center`&&L,I.anchorOrigin.horizontal===`left`&&{left:24,right:`auto`},I.anchorOrigin.horizontal===`right`&&{right:24,left:`auto`})})}),Snackbar=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSnackbar`}),R=useTheme$1(),z={enter:R.transitions.duration.enteringScreen,exit:R.transitions.duration.leavingScreen},{action:De,anchorOrigin:{vertical:Oe,horizontal:ke}={vertical:`bottom`,horizontal:`left`},autoHideDuration:Ae=null,children:je,className:Me,ClickAwayListenerProps:Ne,ContentProps:Pe,disableWindowBlurListener:Fe=!1,message:Ie,open:Le,TransitionComponent:Re=Grow,transitionDuration:ze=z,TransitionProps:{onEnter:Be,onExited:Ge}={}}=L,rt=_objectWithoutPropertiesLoose$2(L.TransitionProps,_excluded),it=_objectWithoutPropertiesLoose$2(L,_excluded2),at=_extends$3({},L,{anchorOrigin:{vertical:Oe,horizontal:ke},autoHideDuration:Ae,disableWindowBlurListener:Fe,TransitionComponent:Re,transitionDuration:ze}),ot=useUtilityClasses(at),{getRootProps:st,onClickAway:ct}=useSnackbar(_extends$3({},at)),[lt,ut]=import_react$10.useState(!0),dt=useSlotProps({elementType:SnackbarRoot,getSlotProps:st,externalForwardedProps:it,ownerState:at,additionalProps:{ref:I},className:[ot.root,Me]});return!Le&&lt?null:(0,import_jsx_runtime$2.jsx)(ClickAwayListener,_extends$3({onClickAway:ct},Ne,{children:(0,import_jsx_runtime$2.jsx)(SnackbarRoot,_extends$3({},dt,{children:(0,import_jsx_runtime$2.jsx)(Re,_extends$3({appear:!0,in:Le,timeout:ze,direction:Oe===`top`?`down`:`up`,onEnter:(F,I)=>{ut(!1),Be&&Be(F,I)},onExited:F=>{ut(!0),Ge&&Ge(F)}},rt,{children:je||(0,import_jsx_runtime$2.jsx)(SnackbarContent,_extends$3({message:Ie,action:De},Pe))}))}))}))}),initialSpawnIntervalMs=3e3,finalSpawnIntervalMs=200,spawnIntervalDecrementAmountMs=100,tumbleweedSize=48,Tumbleweed=({onAnimationComplete:F})=>{let[I]=(0,import_react$10.useState)(randomNumberService.generateRandomNumber());return(0,import_jsx_runtime$2.jsx)(Box,{className:`Tumbleweed`,onAnimationEnd:F,sx:{position:`absolute`,left:-48,top:`${scaleNumber(I,0,1,0,100)}%`,width:`100%`},children:(0,import_jsx_runtime$2.jsx)(Box,{className:`bounce-container`,sx:{height:tumbleweedSize,width:tumbleweedSize},children:(0,import_jsx_runtime$2.jsx)(Box,{component:`img`,src:items.tumbleweed,sx:{height:tumbleweedSize,width:tumbleweedSize}})})})},useConcurrentTimeout=()=>{let F=(0,import_react$10.useRef)(new Set),I=(0,import_react$10.useCallback)((I,L)=>{let R=setTimeout(()=>{I(),F.current.delete(R)},L);F.current.add(R)},[]),L=(0,import_react$10.useCallback)(()=>{F.current.forEach(F=>clearTimeout(F)),F.current.clear()},[]);return(0,import_react$10.useEffect)(()=>{let I=F.current;return()=>{I.forEach(F=>clearTimeout(F)),I.clear()}},[]),{schedule:I,cancelAll:L}},Tumbleweeds=({doSpawn:F})=>{let[I,L]=(0,import_react$10.useState)([]),[R,z]=(0,import_react$10.useState)(initialSpawnIntervalMs),[De,Oe]=(0,import_react$10.useState)(0),[ke,Ae]=(0,import_react$10.useState)(0),{schedule:je,cancelAll:Me}=useConcurrentTimeout();(0,import_react$10.useEffect)(()=>{if(!F)return;let I=Math.max(0,R-(Date.now()-De)),L=setTimeout(()=>{Ae(F=>F+1)},I);return()=>clearTimeout(L)},[F,De,R]);let Ne=(0,import_react$10.useCallback)(()=>{L(F=>[...F,v4()])},[]),Pe=(0,import_react$10.useCallback)(()=>{let F=scaleNumber(randomNumberService.generateRandomNumber(),0,1,0,R);je(Ne,F)},[je,R,Ne]);(0,import_react$10.useEffect)(()=>{if(!F){z(initialSpawnIntervalMs),Me();return}if(R<=finalSpawnIntervalMs)return;let I=Date.now();I-De<R||(Pe(),Oe(I),z(F=>F-spawnIntervalDecrementAmountMs))},[Me,F,De,Pe,R,ke]);let Fe=(0,import_react$10.useCallback)(I=>{L(F=>F.filter(F=>F!==I)),F&&Pe()},[F,Pe]);return(0,import_jsx_runtime$2.jsx)(Box,{className:`Tumbleweeds`,sx:{position:`absolute`,top:0,bottom:0,left:0,right:0},children:I.map(F=>(0,import_jsx_runtime$2.jsx)(Tumbleweed,{onAnimationComplete:()=>Fe(F)},F))})},CowPen=({allowCustomPeerCowNames:F,cowInventory:I,handleCowPenUnmount:L,handleCowClick:R,playerId:z,selectedCowId:De})=>((0,import_react$10.useEffect)(()=>()=>{L()},[L]),(0,import_jsx_runtime$2.jsxs)(Div,{className:`CowPen fill`,sx:F=>({...fillSx,overflow:`hidden`,"& .cow":{opacity:0,position:`absolute`,zIndex:20,transition:F.transitions.create(`opacity`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut}),"&:hover":{cursor:`pointer`},"&::before":{background:`hsla(0, 0%, 30%, 0.5)`,borderRadius:`50%`,bottom:`5px`,content:`""`,height:`16px`,left:`16px`,position:`absolute`,width:`75px`,zIndex:-1},"&.is-loaded":{opacity:1},"&.is-selected":{zIndex:40,"& img":{filter:`drop-shadow(0 0 5px #fff)`}},"& img":{width:`100px`,transition:F.transitions.create(`filter`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut})},"& .heart-icon":{color:colors.heart,"&.animation":{opacity:0,position:`absolute`,right:`20px`,top:`10px`,transform:`translateY(0px) scale(1)`,"&.is-animating":{animationName:`hug-indicator`,animationDuration:`750ms`,animationFillMode:`forwards`,animationTimingFunction:`ease-out`,animationIterationCount:1}}}},"& .is-transitioning img":{animationName:`cow-bounce`,animationDuration:`500ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:`infinite`},"& .happiness-boosts-today":{bottom:`-12px`,display:`flex`,justifyContent:`space-evenly`,left:`10%`,position:`absolute`,width:`80%`,zIndex:-1},"& .Tumbleweeds .Tumbleweed":{animationName:`move-across-screen`,animationDuration:`5000ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:1,"& .bounce-container":{animationName:`tumbleweed-bounce`,animationDuration:`1000ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:`infinite`},"&::before":{background:`hsla(0, 0%, 30%, 0.5)`,borderRadius:`50%`,bottom:`-5px`,content:`""`,height:`16px`,left:`1px`,position:`absolute`,width:`48px`,zIndex:-1}},"@keyframes cow-bounce":{"0%, 100%":{transform:`translate(0px, 0px)`},"20%, 80%":{transform:`translate(0px, -32px)`},"40%, 60%":{transform:`translate(0px, -48px)`}},"@keyframes tumbleweed-bounce":{"0%, 100%":{transform:`translate(0px, 0px)`},"20%, 80%":{transform:`translate(0px, -24px)`},"40%, 60%":{transform:`translate(0px, -32px)`}},"@keyframes hug-indicator":{"0%":{opacity:0,transform:`translateY(0px) scale(1)`},"50%":{opacity:1,transform:`translateY(-80px) scale(2)`},"100%":{opacity:0,transform:`translateY(-80px) scale(2)`}},"@keyframes move-across-screen":{"0%":{transform:`translateX(calc(0% - 48px))`},"100%":{transform:`translateX(calc(100% + 48px))`}}}),children:[(0,import_jsx_runtime$2.jsx)(Tumbleweeds,{doSpawn:I.length===0}),I.map(L=>(0,import_jsx_runtime$2.jsx)(Cow,{allowCustomPeerCowNames:F,cow:L,cowInventory:I,handleCowClick:R,playerId:z,isSelected:De===L.id},L.id))]}));function Consumer$6(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(CowPen,{...I,...L,...F})})}function TierPurchase({description:F,onBuyClick:I,maxedOutPlaceholder:L,money:R,purchasedTier:z,renderTierLabel:De,tiers:Oe,title:ke}){let[Ae,je]=(0,import_react$10.useState)(z),Me=[...Oe.entries()],Ne=Number(Ae),Pe=F=>F<=z,Fe=Pe(Me.slice(-1)[0][0]);if(Pe(Number(Ae))){let F=Ne+1,I=Oe.get(F);I&&R>=I.price&&je(`${F}`)}return(0,import_jsx_runtime$2.jsxs)(Card,{className:`TierPurchase`,children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{title:ke}),F&&(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Typography,{children:F})}),Fe&&L?(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Typography,{children:(0,import_jsx_runtime$2.jsx)(`strong`,{children:L})})}):(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,disabled:!(()=>{let F=Oe.get(Ne);return!!F&&!Pe(Ne)&&R>=F.price})(),onClick:()=>{(Oe.get(Ne)?.price??1/0)<=R&&I(Ne)},variant:`contained`,children:`Buy`}),(0,import_jsx_runtime$2.jsx)(Select,{variant:`standard`,sx:{flexGrow:1,m:0,ml:`1rem`,maxWidth:300},onChange:({target:{value:F}})=>{je(F)},value:Number(Ae)>0?Ae:``,children:Me.map(([F,I])=>(0,import_jsx_runtime$2.jsx)(MenuItem,{value:F,disabled:R<I.price||Pe(F),children:De(I)},F))})]})]})}function Consumer$5(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(TierPurchase,{...I,...L,...F})})}var TAB_QUERY_PARAM_NAME=`tab`,getTabIndexFromHash=F=>{let I=getHashQueryParams().get(TAB_QUERY_PARAM_NAME),L=F.indexOf(I??``);return L===-1?0:L},useTabQueryParam=F=>{let[I,L]=(0,import_react$10.useState)(()=>getTabIndexFromHash(F));return(0,import_react$10.useEffect)(()=>{L(getTabIndexFromHash(F))},[F.join(`|`)]),[I,I=>{L(I);let R=F[I];R&&setHashQueryParam(TAB_QUERY_PARAM_NAME,R)}]},TabPanel$2=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`shop-tabpanel-${R}`,"aria-labelledby":`shop-tab-${R}`,...z,children:L===R?I:null})},a11yProps$2=F=>({id:`shop-tab-${F}`,"aria-controls":`shop-tabpanel-${F}`}),getShopCategory=F=>F.type===itemType.CROP?`seeds`:F.type===itemType.TREE&&F.isPlantableTree?`saplings`:`fieldTools`,categorizeShopInventory=memoize(F=>F.reduce((F,I)=>(F[getShopCategory(I)].push(I),F),{seeds:[],saplings:[],fieldTools:[]})),Shop=({handleCombinePurchase:F,handleComposterPurchase:I,handleCowPenPurchase:L,handleCellarPurchase:R,handleFieldPurchase:z,handleForestPurchase:De,handleSmelterPurchase:Oe,handleStorageExpansionPurchase:ke,handleWoodChipperPurchase:Ae,inventoryLimit:je,levelEntitlements:Me,money:Ne,purchasedCombine:Pe,purchasedComposter:Fe,purchasedCowPen:Ie,purchasedCellar:Le,purchasedField:Re,purchasedForest:ze,purchasedSmelter:Be,purchasedWoodChipper:Ge,shopInventory:rt,toolLevels:it,valueAdjustments:at,storageUpgradeCost:ot=getCostOfNextStorageExpansion(je)})=>{let{seeds:st,saplings:ct,fieldTools:lt}=categorizeShopInventory(rt),ut=Me.stageFocusType[stageFocusType.FOREST],dt=ut&&ct.length>0,ft=dt?2:1,pt=dt?3:2,[mt,ht]=useTabQueryParam([`Seeds`,dt?`Saplings`:``,`Supplies`,`Upgrades`].filter(Boolean));return(0,import_jsx_runtime$2.jsxs)(Div,{className:`Shop`,sx:centerTabsSx,children:[(0,import_jsx_runtime$2.jsxs)(Tabs,{value:mt,onChange:(F,I)=>ht(I),"aria-label":`Shop tabs`,children:[(0,import_jsx_runtime$2.jsx)(Tab,{label:`Seeds`,...a11yProps$2(0)}),dt?(0,import_jsx_runtime$2.jsx)(Tab,{label:`Saplings`,...a11yProps$2(1)}):null,(0,import_jsx_runtime$2.jsx)(Tab,{label:`Supplies`,...a11yProps$2(ft)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Upgrades`,...a11yProps$2(pt)})]}),(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:0,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:st,isPurchaseView:!0,placeholder:`Search seeds...`})}),dt?(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:1,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:ct,isPurchaseView:!0,placeholder:`Search saplings...`})}):null,(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:ft,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:lt,isPurchaseView:!0,placeholder:`Search supplies...`})}),(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:pt,children:(0,import_jsx_runtime$2.jsxs)(`ul`,{className:`card-list`,children:[je>-1&&(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsxs)(Card,{children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:items[`inventory-box`],alt:`Inventory box`}),title:`Storage Unit`,subheader:(0,import_jsx_runtime$2.jsxs)(`div`,{children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Price: `,moneyString(ot)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Current inventory space:`,` `,integerString(je)]})]})}),(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Purchase a Storage Unit to increase your inventory capacity for `,100,` more items.`]})}),(0,import_jsx_runtime$2.jsx)(CardActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{disabled:Ne<ot,color:`primary`,onClick:ke,variant:`contained`,children:`Buy`})})]})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:z,maxedOutPlaceholder:`You've purchased the largest field available!`,purchasedTier:Re,renderTierLabel:({columns:F,price:I,rows:L})=>`${dollarString(I)}: ${F} x ${L}`,tiers:PURCHASEABLE_FIELD_SIZES,title:`Expand field`})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:L,maxedOutPlaceholder:`You've purchased the largest cow pen available!`,purchasedTier:Ie,renderTierLabel:({cows:F,price:I})=>`${dollarString(I)}: ${F} cow pen`,tiers:PURCHASEABLE_COW_PENS,title:`Buy cow pen`})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:R,maxedOutPlaceholder:`You've purchased the largest cellar available!`,purchasedTier:Le,renderTierLabel:({space:F,price:I})=>`${dollarString(I)}: Space for ${F} kegs`,tiers:PURCHASEABLE_CELLARS,title:`Buy cellar`})}),ut?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:De,maxedOutPlaceholder:`You've purchased the largest forest available!`,purchasedTier:ze,renderTierLabel:({columns:F,price:I,rows:L})=>`${dollarString(I)}: ${F} x ${L}`,tiers:PURCHASABLE_FOREST_SIZES,title:`Expand forest`})}):null,(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a combine to automatically harvest your mature crops at the start of every day.`,onBuyClick:F,maxedOutPlaceholder:`You've purchased the best combine harvester available!`,purchasedTier:Pe,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} combine harvester`,tiers:PURCHASEABLE_COMBINES,title:`Buy combine harvester`})}),it[toolType.SHOVEL]?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Smelter to convert ore into ingots and other useful items.`,onBuyClick:Oe,maxedOutPlaceholder:`You've already purchased the smelter!`,purchasedTier:Be,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Smelter`,tiers:PURCHASEABLE_SMELTERS,title:`Buy smelter`})}):null,(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Composter to turn weeds into fertilizer.`,onBuyClick:I,maxedOutPlaceholder:`You've already purchased the composter!`,purchasedTier:Fe,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Composter`,tiers:PURCHASEABLE_COMPOSTERS,title:`Buy composter`})}),ut?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Wood Chipper to turn wood into wood chips for making mulch.`,onBuyClick:Ae,maxedOutPlaceholder:`You've already purchased the wood chipper!`,purchasedTier:Ge,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Wood Chipper`,tiers:PURCHASEABLE_WOOD_CHIPPERS,title:`Buy wood chipper`})}):null]})})]})};function Consumer$4(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Shop,{...I,...L,...F})})}var TabPanel$1=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`workshop-tabpanel-${R}`,"aria-labelledby":`workshop-tab-${R}`,...z,children:L===R?I:null})},a11yProps$1=F=>({id:`workshop-tab-${F}`,"aria-controls":`workshop-tabpanel-${F}`});function IngredientsList({playerInventoryQuantities:F,recipe:{ingredients:I,name:L}}){return(0,import_jsx_runtime$2.jsxs)(`ul`,{className:`card-list`,title:`Ingredients for ${L}`,children:[(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(`h4`,{children:`Ingredients required:`})}),Object.keys(I).map(L=>(0,import_jsx_runtime$2.jsx)(`li`,{"data-testid":`ingredient`,children:(0,import_jsx_runtime$2.jsx)(P$1,{className:(0,import_classnames.default)((F[L]||0)>=I[L]?`in-stock`:`out-of-stock`),sx:{color:(F[L]||0)>=I[L]?void 0:colors.error},children:INGREDIENTS_LIST_ITEM`${I[L]}${itemsMap[L].name}${integerString(F[L]||0)}
371
+ `})})})]});function Consumer$7(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Home,{...I,...L,...F})})}var randomPosition=()=>10+random$1()*80,flipAnimationDuration=1e3,transitionAnimationDuration=3e3,blinkAnimationDuration=200,minBlinkAnimationInterval=2e3,blinkAnimationIntervalVariance=4e3,hugAnimationDuration=750,Cow=({allowCustomPeerCowNames:F,cow:I,cowInventory:L,handleCowClick:R,playerId:z,isSelected:De})=>{let[Oe,ke]=(0,import_react$10.useState)({normal:pixel_default,blinking:pixel_default}),[Ae,je]=(0,import_react$10.useState)(!1),[Me,Ne]=(0,import_react$10.useState)(!1),[Pe,Fe]=(0,import_react$10.useState)(RIGHT),[Ie,Le]=(0,import_react$10.useState)(0),[Re,ze]=(0,import_react$10.useState)(!1),[Be,Ge]=(0,import_react$10.useState)(()=>({x:randomPosition(),y:randomPosition()})),[rt]=(0,import_react$10.useState)(()=>new import_shifty.Tweenable),[it,at]=(0,import_react$10.useState)(I.happinessBoostsToday),ot=useIsMounted(),{x:st,y:ct}=Be,lt=(0,import_react$10.useCallback)(async(F,I)=>{let L=randomPosition(),R=L<F.x?LEFT:RIGHT;if(Fe(R),I!==R){let F=F=>{typeof F.rotate==`number`&&Le(F.rotate)};try{let I=flipAnimationDuration,L=`swingTo`;R===`left`?await rt.tween({from:{rotate:0},to:{rotate:180},easing:L,duration:I,render:F}):await rt.tween({from:{rotate:180},to:{rotate:0},easing:L,duration:I,render:F})}catch{return}}Ne(!0);try{let I=randomPosition();await rt.tween({from:{x:F.x,y:F.y},to:{x:L,y:I},duration:transitionAnimationDuration,render:F=>{typeof F.x==`number`&&typeof F.y==`number`&&Ge({x:F.x,y:F.y})},easing:`linear`})}catch{return}Ne(!1)},[rt]);(0,import_react$10.useEffect)(()=>{(async()=>{let[F,L]=await Promise.all([getCowImage(I),getCowImage(I,{isBlinking:!0})]);ot()!==!1&&ke({normal:F,blinking:L})})()},[]),(0,import_react$10.useEffect)(()=>{let F,I=()=>{F=setTimeout(()=>{ot()!==!1&&(je(!0),F=setTimeout(()=>{ot()!==!1&&(je(!1),I())},blinkAnimationDuration))},minBlinkAnimationInterval+random$1()*blinkAnimationIntervalVariance)};return I(),()=>{clearTimeout(F)}},[ot]),(0,import_react$10.useEffect)(()=>()=>{rt.cancel()},[rt]),(0,import_react$10.useEffect)(()=>{if(De||Me)return;let F=2e3*L.length,I=setTimeout(()=>{lt(Be,Pe)},random$1()*F);return()=>{clearTimeout(I)}},[De,Me,L.length,lt]),(0,import_react$10.useEffect)(()=>{let F=I.happinessBoostsToday>it;at(I.happinessBoostsToday),F&&!Re&&ze(!0)},[I.happinessBoostsToday,it,Re]),(0,import_react$10.useEffect)(()=>{if(!Re)return;let F=setTimeout(()=>{ze(!1)},hugAnimationDuration);return()=>{clearTimeout(F)}},[Re]);let ut=getCowDisplayName(I,z,F);return(0,import_jsx_runtime$2.jsxs)(`div`,{className:(0,import_classnames.default)(`cow`,{"is-transitioning":Me,"is-selected":De,"is-loaded":Oe.normal!==pixel_default}),onClick:()=>R(I),style:{left:`${st}%`,top:`${ct}%`},children:[De&&(0,import_jsx_runtime$2.jsxs)(`p`,{className:`visually_hidden`,children:[ut,` is selected`]}),(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`top`,title:(0,import_jsx_runtime$2.jsx)(Typography,{children:ut}),open:De,PopperProps:{disablePortal:!0},children:(0,import_jsx_runtime$2.jsxs)(`div`,{style:{transform:`rotateY(${Ie}deg)`},children:[(0,import_jsx_runtime$2.jsx)(`img`,{src:Ae&&Oe.blinking!==`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`?Oe.blinking:Oe.normal,alt:ut}),(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:(0,import_classnames.default)(`heart-icon`,`animation`,{"is-animating":Re}),fontSize:`inherit`})]})}),(0,import_jsx_runtime$2.jsx)(`ol`,{className:`happiness-boosts-today`,children:Array(I.happinessBoostsToday).fill(void 0).map((F,I)=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(HeartIcon,{className:`heart-icon`,fontSize:`inherit`})},I))})]})};function getAccordionActionsUtilityClass(F){return generateUtilityClass(`MuiAccordionActions`,F)}var accordionActionsClasses=generateUtilityClasses(`MuiAccordionActions`,[`root`,`spacing`]);init_extends(),init_objectWithoutPropertiesLoose();var _excluded$3=[`className`,`disableSpacing`],useUtilityClasses$3=F=>{let{classes:I,disableSpacing:L}=F;return composeClasses({root:[`root`,!L&&`spacing`]},getAccordionActionsUtilityClass,I)},AccordionActionsRoot=styled(`div`,{name:`MuiAccordionActions`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,!L.disableSpacing&&I.spacing]}})({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,variants:[{props:F=>!F.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),AccordionActions=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiAccordionActions`}),{className:R,disableSpacing:z=!1}=L,De=_objectWithoutPropertiesLoose$2(L,_excluded$3),Oe=_extends$3({},L,{disableSpacing:z}),ke=useUtilityClasses$3(Oe);return(0,import_jsx_runtime$2.jsx)(AccordionActionsRoot,_extends$3({className:clsx$1(ke.root,R),ref:I,ownerState:Oe},De))}),Cancel_default=createSvgIcon((0,import_jsx_runtime$2.jsx)(`path`,{d:`M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z`}),`Cancel`);function getChipUtilityClass(F){return generateUtilityClass(`MuiChip`,F)}var chipClasses=generateUtilityClasses(`MuiChip`,`root.sizeSmall.sizeMedium.colorError.colorInfo.colorPrimary.colorSecondary.colorSuccess.colorWarning.disabled.clickable.clickableColorPrimary.clickableColorSecondary.deletable.deletableColorPrimary.deletableColorSecondary.outlined.filled.outlinedPrimary.outlinedSecondary.filledPrimary.filledSecondary.avatar.avatarSmall.avatarMedium.avatarColorPrimary.avatarColorSecondary.icon.iconSmall.iconMedium.iconColorPrimary.iconColorSecondary.label.labelSmall.labelMedium.deleteIcon.deleteIconSmall.deleteIconMedium.deleteIconColorPrimary.deleteIconColorSecondary.deleteIconOutlinedColorPrimary.deleteIconOutlinedColorSecondary.deleteIconFilledColorPrimary.deleteIconFilledColorSecondary.focusVisible`.split(`.`));init_objectWithoutPropertiesLoose(),init_extends();var _excluded$2=[`avatar`,`className`,`clickable`,`color`,`component`,`deleteIcon`,`disabled`,`icon`,`label`,`onClick`,`onDelete`,`onKeyDown`,`onKeyUp`,`size`,`variant`,`tabIndex`,`skipFocusWhenDisabled`],useUtilityClasses$2=F=>{let{classes:I,disabled:L,size:R,color:z,iconColor:De,onDelete:Oe,clickable:ke,variant:Ae}=F;return composeClasses({root:[`root`,Ae,L&&`disabled`,`size${capitalize_default(R)}`,`color${capitalize_default(z)}`,ke&&`clickable`,ke&&`clickableColor${capitalize_default(z)}`,Oe&&`deletable`,Oe&&`deletableColor${capitalize_default(z)}`,`${Ae}${capitalize_default(z)}`],label:[`label`,`label${capitalize_default(R)}`],avatar:[`avatar`,`avatar${capitalize_default(R)}`,`avatarColor${capitalize_default(z)}`],icon:[`icon`,`icon${capitalize_default(R)}`,`iconColor${capitalize_default(De)}`],deleteIcon:[`deleteIcon`,`deleteIcon${capitalize_default(R)}`,`deleteIconColor${capitalize_default(z)}`,`deleteIcon${capitalize_default(Ae)}Color${capitalize_default(z)}`]},getChipUtilityClass,I)},ChipRoot=styled(`div`,{name:`MuiChip`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F,{color:R,iconColor:z,clickable:De,onDelete:Oe,size:ke,variant:Ae}=L;return[{[`& .${chipClasses.avatar}`]:I.avatar},{[`& .${chipClasses.avatar}`]:I[`avatar${capitalize_default(ke)}`]},{[`& .${chipClasses.avatar}`]:I[`avatarColor${capitalize_default(R)}`]},{[`& .${chipClasses.icon}`]:I.icon},{[`& .${chipClasses.icon}`]:I[`icon${capitalize_default(ke)}`]},{[`& .${chipClasses.icon}`]:I[`iconColor${capitalize_default(z)}`]},{[`& .${chipClasses.deleteIcon}`]:I.deleteIcon},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIcon${capitalize_default(ke)}`]},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIconColor${capitalize_default(R)}`]},{[`& .${chipClasses.deleteIcon}`]:I[`deleteIcon${capitalize_default(Ae)}Color${capitalize_default(R)}`]},I.root,I[`size${capitalize_default(ke)}`],I[`color${capitalize_default(R)}`],De&&I.clickable,De&&R!=="default"&&I[`clickableColor${capitalize_default(R)})`],Oe&&I.deletable,Oe&&R!=="default"&&I[`deletableColor${capitalize_default(R)}`],I[Ae],I[`${Ae}${capitalize_default(R)}`]]}})(({theme:F,ownerState:I})=>{let L=F.palette.mode===`light`?F.palette.grey[700]:F.palette.grey[300];return _extends$3({maxWidth:`100%`,fontFamily:F.typography.fontFamily,fontSize:F.typography.pxToRem(13),display:`inline-flex`,alignItems:`center`,justifyContent:`center`,height:32,color:(F.vars||F).palette.text.primary,backgroundColor:(F.vars||F).palette.action.selected,borderRadius:32/2,whiteSpace:`nowrap`,transition:F.transitions.create([`background-color`,`box-shadow`]),cursor:`unset`,outline:0,textDecoration:`none`,border:0,padding:0,verticalAlign:`middle`,boxSizing:`border-box`,[`&.${chipClasses.disabled}`]:{opacity:(F.vars||F).palette.action.disabledOpacity,pointerEvents:`none`},[`& .${chipClasses.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:F.vars?F.vars.palette.Chip.defaultAvatarColor:L,fontSize:F.typography.pxToRem(12)},[`& .${chipClasses.avatarColorPrimary}`]:{color:(F.vars||F).palette.primary.contrastText,backgroundColor:(F.vars||F).palette.primary.dark},[`& .${chipClasses.avatarColorSecondary}`]:{color:(F.vars||F).palette.secondary.contrastText,backgroundColor:(F.vars||F).palette.secondary.dark},[`& .${chipClasses.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:F.typography.pxToRem(10)},[`& .${chipClasses.icon}`]:_extends$3({marginLeft:5,marginRight:-6},I.size===`small`&&{fontSize:18,marginLeft:4,marginRight:-4},I.iconColor===I.color&&_extends$3({color:F.vars?F.vars.palette.Chip.defaultIconColor:L},I.color!=="default"&&{color:`inherit`})),[`& .${chipClasses.deleteIcon}`]:_extends$3({WebkitTapHighlightColor:`transparent`,color:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / 0.26)`:(0,import_colorManipulator.alpha)(F.palette.text.primary,.26),fontSize:22,cursor:`pointer`,margin:`0 5px 0 -6px`,"&:hover":{color:F.vars?`rgba(${F.vars.palette.text.primaryChannel} / 0.4)`:(0,import_colorManipulator.alpha)(F.palette.text.primary,.4)}},I.size===`small`&&{fontSize:16,marginRight:4,marginLeft:-4},I.color!=="default"&&{color:F.vars?`rgba(${F.vars.palette[I.color].contrastTextChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].contrastText,.7),"&:hover, &:active":{color:(F.vars||F).palette[I.color].contrastText}})},I.size===`small`&&{height:24},I.color!=="default"&&{backgroundColor:(F.vars||F).palette[I.color].main,color:(F.vars||F).palette[I.color].contrastText},I.onDelete&&{[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.focusOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.focusOpacity)}},I.onDelete&&I.color!=="default"&&{[`&.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette[I.color].dark}})},({theme:F,ownerState:I})=>_extends$3({},I.clickable&&{userSelect:`none`,WebkitTapHighlightColor:`transparent`,cursor:`pointer`,"&:hover":{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.hoverOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.hoverOpacity)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette.action.selectedChannel} / calc(${F.vars.palette.action.selectedOpacity} + ${F.vars.palette.action.focusOpacity}))`:(0,import_colorManipulator.alpha)(F.palette.action.selected,F.palette.action.selectedOpacity+F.palette.action.focusOpacity)},"&:active":{boxShadow:(F.vars||F).shadows[1]}},I.clickable&&I.color!=="default"&&{[`&:hover, &.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette[I.color].dark}}),({theme:F,ownerState:I})=>_extends$3({},I.variant===`outlined`&&{backgroundColor:`transparent`,border:F.vars?`1px solid ${F.vars.palette.Chip.defaultBorder}`:`1px solid ${F.palette.mode===`light`?F.palette.grey[400]:F.palette.grey[700]}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:(F.vars||F).palette.action.hover},[`&.${chipClasses.focusVisible}`]:{backgroundColor:(F.vars||F).palette.action.focus},[`& .${chipClasses.avatar}`]:{marginLeft:4},[`& .${chipClasses.avatarSmall}`]:{marginLeft:2},[`& .${chipClasses.icon}`]:{marginLeft:4},[`& .${chipClasses.iconSmall}`]:{marginLeft:2},[`& .${chipClasses.deleteIcon}`]:{marginRight:5},[`& .${chipClasses.deleteIconSmall}`]:{marginRight:3}},I.variant===`outlined`&&I.color!=="default"&&{color:(F.vars||F).palette[I.color].main,border:`1px solid ${F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,.7)}`,[`&.${chipClasses.clickable}:hover`]:{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.hoverOpacity)},[`&.${chipClasses.focusVisible}`]:{backgroundColor:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / ${F.vars.palette.action.focusOpacity})`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,F.palette.action.focusOpacity)},[`& .${chipClasses.deleteIcon}`]:{color:F.vars?`rgba(${F.vars.palette[I.color].mainChannel} / 0.7)`:(0,import_colorManipulator.alpha)(F.palette[I.color].main,.7),"&:hover, &:active":{color:(F.vars||F).palette[I.color].main}}})),ChipLabel=styled(`span`,{name:`MuiChip`,slot:`Label`,overridesResolver:(F,I)=>{let{ownerState:L}=F,{size:R}=L;return[I.label,I[`label${capitalize_default(R)}`]]}})(({ownerState:F})=>_extends$3({overflow:`hidden`,textOverflow:`ellipsis`,paddingLeft:12,paddingRight:12,whiteSpace:`nowrap`},F.variant===`outlined`&&{paddingLeft:11,paddingRight:11},F.size===`small`&&{paddingLeft:8,paddingRight:8},F.size===`small`&&F.variant===`outlined`&&{paddingLeft:7,paddingRight:7}));function isDeleteKeyboardEvent(F){return F.key===`Backspace`||F.key===`Delete`}var Chip=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiChip`}),{avatar:R,className:z,clickable:De,color:Oe=`default`,component:ke,deleteIcon:Ae,disabled:je=!1,icon:Me,label:Ne,onClick:Pe,onDelete:Fe,onKeyDown:Ie,onKeyUp:Le,size:Re=`medium`,variant:ze=`filled`,tabIndex:Be,skipFocusWhenDisabled:Ge=!1}=L,rt=_objectWithoutPropertiesLoose$2(L,_excluded$2),it=import_react$10.useRef(null),at=useForkRef_default(it,I),ot=F=>{F.stopPropagation(),Fe&&Fe(F)},st=F=>{F.currentTarget===F.target&&isDeleteKeyboardEvent(F)&&F.preventDefault(),Ie&&Ie(F)},ct=F=>{F.currentTarget===F.target&&(Fe&&isDeleteKeyboardEvent(F)?Fe(F):F.key===`Escape`&&it.current&&it.current.blur()),Le&&Le(F)},lt=De!==!1&&Pe?!0:De,ut=lt||Fe?ButtonBase:ke||`div`,dt=_extends$3({},L,{component:ut,disabled:je,size:Re,color:Oe,iconColor:import_react$10.isValidElement(Me)&&Me.props.color||Oe,onDelete:!!Fe,clickable:lt,variant:ze}),ft=useUtilityClasses$2(dt),pt=ut===ButtonBase?_extends$3({component:ke||`div`,focusVisibleClassName:ft.focusVisible},Fe&&{disableRipple:!0}):{},mt=null;Fe&&(mt=Ae&&import_react$10.isValidElement(Ae)?import_react$10.cloneElement(Ae,{className:clsx$1(Ae.props.className,ft.deleteIcon),onClick:ot}):(0,import_jsx_runtime$2.jsx)(Cancel_default,{className:clsx$1(ft.deleteIcon),onClick:ot}));let ht=null;R&&import_react$10.isValidElement(R)&&(ht=import_react$10.cloneElement(R,{className:clsx$1(ft.avatar,R.props.className)}));let gt=null;return Me&&import_react$10.isValidElement(Me)&&(gt=import_react$10.cloneElement(Me,{className:clsx$1(ft.icon,Me.props.className)})),(0,import_jsx_runtime$2.jsxs)(ChipRoot,_extends$3({as:ut,className:clsx$1(ft.root,z),disabled:lt&&je?!0:void 0,onClick:Pe,onKeyDown:st,onKeyUp:ct,ref:at,tabIndex:Ge&&je?-1:Be,ownerState:dt},pt,rt,{children:[ht||gt,(0,import_jsx_runtime$2.jsx)(ChipLabel,{className:clsx$1(ft.label),ownerState:dt,children:Ne}),mt]}))}),Container=createContainer({createStyledComponent:styled(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[`maxWidth${capitalize_default(String(L.maxWidth))}`],L.fixed&&I.fixed,L.disableGutters&&I.disableGutters]}}),useThemeProps:F=>useDefaultProps({props:F,name:`MuiContainer`})});init_extends();function useSnackbar(F={}){let{autoHideDuration:I=null,disableWindowBlurListener:L=!1,onClose:R,open:z,resumeHideDuration:De}=F,Oe=useTimeout();import_react$10.useEffect(()=>{if(!z)return;function F(F){F.defaultPrevented||(F.key===`Escape`||F.key===`Esc`)&&R?.(F,`escapeKeyDown`)}return document.addEventListener(`keydown`,F),()=>{document.removeEventListener(`keydown`,F)}},[z,R]);let ke=useEventCallback$1((F,I)=>{R?.(F,I)}),Ae=useEventCallback$1(F=>{!R||F==null||Oe.start(F,()=>{ke(null,`timeout`)})});import_react$10.useEffect(()=>(z&&Ae(I),Oe.clear),[z,I,Ae,Oe]);let je=F=>{R?.(F,`clickaway`)},Me=Oe.clear,Ne=import_react$10.useCallback(()=>{I!=null&&Ae(De??I*.5)},[I,De,Ae]),Pe=F=>I=>{let L=F.onBlur;L?.(I),Ne()},Fe=F=>I=>{let L=F.onFocus;L?.(I),Me()},Ie=F=>I=>{let L=F.onMouseEnter;L?.(I),Me()},Le=F=>I=>{let L=F.onMouseLeave;L?.(I),Ne()};return import_react$10.useEffect(()=>{if(!L&&z)return window.addEventListener(`focus`,Ne),window.addEventListener(`blur`,Me),()=>{window.removeEventListener(`focus`,Ne),window.removeEventListener(`blur`,Me)}},[L,z,Ne,Me]),{getRootProps:(I={})=>{let L=_extends$3({},extractEventHandlers(F),extractEventHandlers(I));return _extends$3({role:`presentation`},I,L,{onBlur:Pe(L),onFocus:Fe(L),onMouseEnter:Ie(L),onMouseLeave:Le(L)})},onClickAway:je}}function getSnackbarContentUtilityClass(F){return generateUtilityClass(`MuiSnackbarContent`,F)}var snackbarContentClasses=generateUtilityClasses(`MuiSnackbarContent`,[`root`,`message`,`action`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded$1=[`action`,`className`,`message`,`role`],useUtilityClasses$1=F=>{let{classes:I}=F;return composeClasses({root:[`root`],action:[`action`],message:[`message`]},getSnackbarContentUtilityClass,I)},SnackbarContentRoot=styled(Paper,{name:`MuiSnackbarContent`,slot:`Root`,overridesResolver:(F,I)=>I.root})(({theme:F})=>{let I=F.palette.mode===`light`?.8:.98,L=(0,import_colorManipulator.emphasize)(F.palette.background.default,I);return _extends$3({},F.typography.body2,{color:F.vars?F.vars.palette.SnackbarContent.color:F.palette.getContrastText(L),backgroundColor:F.vars?F.vars.palette.SnackbarContent.bg:L,display:`flex`,alignItems:`center`,flexWrap:`wrap`,padding:`6px 16px`,borderRadius:(F.vars||F).shape.borderRadius,flexGrow:1,[F.breakpoints.up(`sm`)]:{flexGrow:`initial`,minWidth:288}})}),SnackbarContentMessage=styled(`div`,{name:`MuiSnackbarContent`,slot:`Message`,overridesResolver:(F,I)=>I.message})({padding:`8px 0`}),SnackbarContentAction=styled(`div`,{name:`MuiSnackbarContent`,slot:`Action`,overridesResolver:(F,I)=>I.action})({display:`flex`,alignItems:`center`,marginLeft:`auto`,paddingLeft:16,marginRight:-8}),SnackbarContent=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSnackbarContent`}),{action:R,className:z,message:De,role:Oe=`alert`}=L,ke=_objectWithoutPropertiesLoose$2(L,_excluded$1),Ae=L,je=useUtilityClasses$1(Ae);return(0,import_jsx_runtime$2.jsxs)(SnackbarContentRoot,_extends$3({role:Oe,square:!0,elevation:6,className:clsx$1(je.root,z),ownerState:Ae,ref:I},ke,{children:[(0,import_jsx_runtime$2.jsx)(SnackbarContentMessage,{className:je.message,ownerState:Ae,children:De}),R?(0,import_jsx_runtime$2.jsx)(SnackbarContentAction,{className:je.action,ownerState:Ae,children:R}):null]}))});function getSnackbarUtilityClass(F){return generateUtilityClass(`MuiSnackbar`,F)}var snackbarClasses=generateUtilityClasses(`MuiSnackbar`,[`root`,`anchorOriginTopCenter`,`anchorOriginBottomCenter`,`anchorOriginTopRight`,`anchorOriginBottomRight`,`anchorOriginTopLeft`,`anchorOriginBottomLeft`]);init_objectWithoutPropertiesLoose(),init_extends();var _excluded=[`onEnter`,`onExited`],_excluded2=[`action`,`anchorOrigin`,`autoHideDuration`,`children`,`className`,`ClickAwayListenerProps`,`ContentProps`,`disableWindowBlurListener`,`message`,`onBlur`,`onClose`,`onFocus`,`onMouseEnter`,`onMouseLeave`,`open`,`resumeHideDuration`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],useUtilityClasses=F=>{let{classes:I,anchorOrigin:L}=F;return composeClasses({root:[`root`,`anchorOrigin${capitalize_default(L.vertical)}${capitalize_default(L.horizontal)}`]},getSnackbarUtilityClass,I)},SnackbarRoot=styled(`div`,{name:`MuiSnackbar`,slot:`Root`,overridesResolver:(F,I)=>{let{ownerState:L}=F;return[I.root,I[`anchorOrigin${capitalize_default(L.anchorOrigin.vertical)}${capitalize_default(L.anchorOrigin.horizontal)}`]]}})(({theme:F,ownerState:I})=>{let L={left:`50%`,right:`auto`,transform:`translateX(-50%)`};return _extends$3({zIndex:(F.vars||F).zIndex.snackbar,position:`fixed`,display:`flex`,left:8,right:8,justifyContent:`center`,alignItems:`center`},I.anchorOrigin.vertical===`top`?{top:8}:{bottom:8},I.anchorOrigin.horizontal===`left`&&{justifyContent:`flex-start`},I.anchorOrigin.horizontal===`right`&&{justifyContent:`flex-end`},{[F.breakpoints.up(`sm`)]:_extends$3({},I.anchorOrigin.vertical===`top`?{top:24}:{bottom:24},I.anchorOrigin.horizontal===`center`&&L,I.anchorOrigin.horizontal===`left`&&{left:24,right:`auto`},I.anchorOrigin.horizontal===`right`&&{right:24,left:`auto`})})}),Snackbar=import_react$10.forwardRef(function(F,I){let L=useDefaultProps({props:F,name:`MuiSnackbar`}),R=useTheme$1(),z={enter:R.transitions.duration.enteringScreen,exit:R.transitions.duration.leavingScreen},{action:De,anchorOrigin:{vertical:Oe,horizontal:ke}={vertical:`bottom`,horizontal:`left`},autoHideDuration:Ae=null,children:je,className:Me,ClickAwayListenerProps:Ne,ContentProps:Pe,disableWindowBlurListener:Fe=!1,message:Ie,open:Le,TransitionComponent:Re=Grow,transitionDuration:ze=z,TransitionProps:{onEnter:Be,onExited:Ge}={}}=L,rt=_objectWithoutPropertiesLoose$2(L.TransitionProps,_excluded),it=_objectWithoutPropertiesLoose$2(L,_excluded2),at=_extends$3({},L,{anchorOrigin:{vertical:Oe,horizontal:ke},autoHideDuration:Ae,disableWindowBlurListener:Fe,TransitionComponent:Re,transitionDuration:ze}),ot=useUtilityClasses(at),{getRootProps:st,onClickAway:ct}=useSnackbar(_extends$3({},at)),[lt,ut]=import_react$10.useState(!0),dt=useSlotProps({elementType:SnackbarRoot,getSlotProps:st,externalForwardedProps:it,ownerState:at,additionalProps:{ref:I},className:[ot.root,Me]});return!Le&&lt?null:(0,import_jsx_runtime$2.jsx)(ClickAwayListener,_extends$3({onClickAway:ct},Ne,{children:(0,import_jsx_runtime$2.jsx)(SnackbarRoot,_extends$3({},dt,{children:(0,import_jsx_runtime$2.jsx)(Re,_extends$3({appear:!0,in:Le,timeout:ze,direction:Oe===`top`?`down`:`up`,onEnter:(F,I)=>{ut(!1),Be&&Be(F,I)},onExited:F=>{ut(!0),Ge&&Ge(F)}},rt,{children:je||(0,import_jsx_runtime$2.jsx)(SnackbarContent,_extends$3({message:Ie,action:De},Pe))}))}))}))}),initialSpawnIntervalMs=3e3,finalSpawnIntervalMs=200,spawnIntervalDecrementAmountMs=100,tumbleweedSize=48,Tumbleweed=({onAnimationComplete:F})=>{let[I]=(0,import_react$10.useState)(randomNumberService.generateRandomNumber());return(0,import_jsx_runtime$2.jsx)(Box,{className:`Tumbleweed`,onAnimationEnd:F,sx:{position:`absolute`,left:-48,top:`${scaleNumber(I,0,1,0,100)}%`,width:`100%`},children:(0,import_jsx_runtime$2.jsx)(Box,{className:`bounce-container`,sx:{height:tumbleweedSize,width:tumbleweedSize},children:(0,import_jsx_runtime$2.jsx)(Box,{component:`img`,src:items.tumbleweed,sx:{height:tumbleweedSize,width:tumbleweedSize}})})})},useConcurrentTimeout=()=>{let F=(0,import_react$10.useRef)(new Set),I=(0,import_react$10.useCallback)((I,L)=>{let R=setTimeout(()=>{I(),F.current.delete(R)},L);F.current.add(R)},[]),L=(0,import_react$10.useCallback)(()=>{F.current.forEach(F=>clearTimeout(F)),F.current.clear()},[]);return(0,import_react$10.useEffect)(()=>{let I=F.current;return()=>{I.forEach(F=>clearTimeout(F)),I.clear()}},[]),{schedule:I,cancelAll:L}},Tumbleweeds=({doSpawn:F})=>{let[I,L]=(0,import_react$10.useState)([]),[R,z]=(0,import_react$10.useState)(initialSpawnIntervalMs),[De,Oe]=(0,import_react$10.useState)(0),[ke,Ae]=(0,import_react$10.useState)(0),{schedule:je,cancelAll:Me}=useConcurrentTimeout();(0,import_react$10.useEffect)(()=>{if(!F)return;let I=Math.max(0,R-(Date.now()-De)),L=setTimeout(()=>{Ae(F=>F+1)},I);return()=>clearTimeout(L)},[F,De,R]);let Ne=(0,import_react$10.useCallback)(()=>{L(F=>[...F,v4()])},[]),Pe=(0,import_react$10.useCallback)(()=>{let F=scaleNumber(randomNumberService.generateRandomNumber(),0,1,0,R);je(Ne,F)},[je,R,Ne]);(0,import_react$10.useEffect)(()=>{if(!F){z(initialSpawnIntervalMs),Me();return}if(R<=finalSpawnIntervalMs)return;let I=Date.now();I-De<R||(Pe(),Oe(I),z(F=>F-spawnIntervalDecrementAmountMs))},[Me,F,De,Pe,R,ke]);let Fe=(0,import_react$10.useCallback)(I=>{L(F=>F.filter(F=>F!==I)),F&&Pe()},[F,Pe]);return(0,import_jsx_runtime$2.jsx)(Box,{className:`Tumbleweeds`,sx:{position:`absolute`,top:0,bottom:0,left:0,right:0},children:I.map(F=>(0,import_jsx_runtime$2.jsx)(Tumbleweed,{onAnimationComplete:()=>Fe(F)},F))})},CowPen=({allowCustomPeerCowNames:F,cowInventory:I,handleCowPenUnmount:L,handleCowClick:R,playerId:z,selectedCowId:De})=>((0,import_react$10.useEffect)(()=>()=>{L()},[L]),(0,import_jsx_runtime$2.jsxs)(Div,{className:`CowPen fill`,sx:F=>({...fillSx,overflow:`hidden`,"& .cow":{opacity:0,position:`absolute`,zIndex:20,transition:F.transitions.create(`opacity`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut}),"&:hover":{cursor:`pointer`},"&::before":{background:`hsla(0, 0%, 30%, 0.5)`,borderRadius:`50%`,bottom:`5px`,content:`""`,height:`16px`,left:`16px`,position:`absolute`,width:`75px`,zIndex:-1},"&.is-loaded":{opacity:1},"&.is-selected":{zIndex:40,"& img":{filter:`drop-shadow(0 0 5px #fff)`}},"& img":{width:`100px`,transition:F.transitions.create(`filter`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut})},"& .heart-icon":{color:colors.heart,"&.animation":{opacity:0,position:`absolute`,right:`20px`,top:`10px`,transform:`translateY(0px) scale(1)`,"&.is-animating":{animationName:`hug-indicator`,animationDuration:`750ms`,animationFillMode:`forwards`,animationTimingFunction:`ease-out`,animationIterationCount:1}}}},"& .is-transitioning img":{animationName:`cow-bounce`,animationDuration:`500ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:`infinite`},"& .happiness-boosts-today":{bottom:`-12px`,display:`flex`,justifyContent:`space-evenly`,left:`10%`,position:`absolute`,width:`80%`,zIndex:-1},"& .Tumbleweeds .Tumbleweed":{animationName:`move-across-screen`,animationDuration:`5000ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:1,"& .bounce-container":{animationName:`tumbleweed-bounce`,animationDuration:`1000ms`,animationFillMode:`forwards`,animationTimingFunction:`linear`,animationIterationCount:`infinite`},"&::before":{background:`hsla(0, 0%, 30%, 0.5)`,borderRadius:`50%`,bottom:`-5px`,content:`""`,height:`16px`,left:`1px`,position:`absolute`,width:`48px`,zIndex:-1}},"@keyframes cow-bounce":{"0%, 100%":{transform:`translate(0px, 0px)`},"20%, 80%":{transform:`translate(0px, -32px)`},"40%, 60%":{transform:`translate(0px, -48px)`}},"@keyframes tumbleweed-bounce":{"0%, 100%":{transform:`translate(0px, 0px)`},"20%, 80%":{transform:`translate(0px, -24px)`},"40%, 60%":{transform:`translate(0px, -32px)`}},"@keyframes hug-indicator":{"0%":{opacity:0,transform:`translateY(0px) scale(1)`},"50%":{opacity:1,transform:`translateY(-80px) scale(2)`},"100%":{opacity:0,transform:`translateY(-80px) scale(2)`}},"@keyframes move-across-screen":{"0%":{transform:`translateX(calc(0% - 48px))`},"100%":{transform:`translateX(calc(100% + 48px))`}}}),children:[(0,import_jsx_runtime$2.jsx)(Tumbleweeds,{doSpawn:I.length===0}),I.map(L=>(0,import_jsx_runtime$2.jsx)(Cow,{allowCustomPeerCowNames:F,cow:L,cowInventory:I,handleCowClick:R,playerId:z,isSelected:De===L.id},L.id))]}));function Consumer$6(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(CowPen,{...I,...L,...F})})}function TierPurchase({description:F,onBuyClick:I,maxedOutPlaceholder:L,money:R,purchasedTier:z,renderTierLabel:De,tiers:Oe,title:ke}){let[Ae,je]=(0,import_react$10.useState)(z),Me=[...Oe.entries()],Ne=Number(Ae),Pe=F=>F<=z,Fe=Pe(Me.slice(-1)[0][0]);if(Pe(Number(Ae))){let F=Ne+1,I=Oe.get(F);I&&R>=I.price&&je(`${F}`)}return(0,import_jsx_runtime$2.jsxs)(Card,{className:`TierPurchase`,children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{title:ke}),F&&(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Typography,{children:F})}),Fe&&L?(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Typography,{children:(0,import_jsx_runtime$2.jsx)(`strong`,{children:L})})}):(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,disabled:!(()=>{let F=Oe.get(Ne);return!!F&&!Pe(Ne)&&R>=F.price})(),onClick:()=>{(Oe.get(Ne)?.price??1/0)<=R&&I(Ne)},variant:`contained`,children:`Buy`}),(0,import_jsx_runtime$2.jsx)(Select,{variant:`standard`,sx:{flexGrow:1,m:0,ml:`1rem`,maxWidth:300},onChange:({target:{value:F}})=>{je(F)},value:Number(Ae)>0?Ae:``,children:Me.map(([F,I])=>(0,import_jsx_runtime$2.jsx)(MenuItem,{value:F,disabled:R<I.price||Pe(F),children:De(I)},F))})]})]})}function Consumer$5(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(TierPurchase,{...I,...L,...F})})}var TAB_QUERY_PARAM_NAME=`tab`,getTabIndexFromHash=F=>{let I=getHashQueryParams().get(TAB_QUERY_PARAM_NAME),L=F.indexOf(I??``);return L===-1?0:L},useTabQueryParam=F=>{let[I,L]=(0,import_react$10.useState)(()=>getTabIndexFromHash(F));return(0,import_react$10.useEffect)(()=>{L(getTabIndexFromHash(F))},[F.join(`|`)]),[I,I=>{L(I);let R=F[I];R&&setHashQueryParam(TAB_QUERY_PARAM_NAME,R)}]},TabPanel$2=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`shop-tabpanel-${R}`,"aria-labelledby":`shop-tab-${R}`,...z,children:L===R?I:null})},a11yProps$2=F=>({id:`shop-tab-${F}`,"aria-controls":`shop-tabpanel-${F}`}),getShopCategory=F=>F.type===itemType.CROP?`seeds`:F.type===itemType.TREE&&F.isPlantableTree?`saplings`:`fieldTools`,categorizeShopInventory=memoize(F=>F.reduce((F,I)=>(F[getShopCategory(I)].push(I),F),{seeds:[],saplings:[],fieldTools:[]})),Shop=({handleCombinePurchase:F,handleComposterPurchase:I,handleCowPenPurchase:L,handleCellarPurchase:R,handleFieldPurchase:z,handleForestPurchase:De,handleSmelterPurchase:Oe,handleStorageExpansionPurchase:ke,handleWoodChipperPurchase:Ae,inventoryLimit:je,levelEntitlements:Me,money:Ne,purchasedCombine:Pe,purchasedComposter:Fe,purchasedCowPen:Ie,purchasedCellar:Le,purchasedField:Re,purchasedForest:ze,purchasedSmelter:Be,purchasedWoodChipper:Ge,shopInventory:rt,toolLevels:it,valueAdjustments:at,storageUpgradeCost:ot=getCostOfNextStorageExpansion(je)})=>{let{seeds:st,saplings:ct,fieldTools:lt}=categorizeShopInventory(rt),ut=Me.stageFocusType[stageFocusType.FOREST],dt=ut&&ct.length>0,ft=dt?2:1,pt=dt?3:2,[mt,ht]=useTabQueryParam([`Seeds`,dt?`Saplings`:``,`Supplies`,`Upgrades`].filter(Boolean));return(0,import_jsx_runtime$2.jsxs)(Div,{className:`Shop`,sx:centerTabsSx,children:[(0,import_jsx_runtime$2.jsxs)(Tabs,{value:mt,onChange:(F,I)=>ht(I),"aria-label":`Shop tabs`,children:[(0,import_jsx_runtime$2.jsx)(Tab,{label:`Seeds`,...a11yProps$2(0)}),dt?(0,import_jsx_runtime$2.jsx)(Tab,{label:`Saplings`,...a11yProps$2(1)}):null,(0,import_jsx_runtime$2.jsx)(Tab,{label:`Supplies`,...a11yProps$2(ft)}),(0,import_jsx_runtime$2.jsx)(Tab,{label:`Upgrades`,...a11yProps$2(pt)})]}),(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:0,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:st,isPurchaseView:!0,placeholder:`Search seeds...`})}),dt?(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:1,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:ct,isPurchaseView:!0,placeholder:`Search saplings...`})}):null,(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:ft,children:(0,import_jsx_runtime$2.jsx)(Consumer$28,{items:lt,isPurchaseView:!0,placeholder:`Search supplies...`})}),(0,import_jsx_runtime$2.jsx)(TabPanel$2,{value:mt,index:pt,children:(0,import_jsx_runtime$2.jsxs)(`ul`,{className:`card-list`,children:[je>-1&&(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsxs)(Card,{children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:items[`inventory-box`],alt:`Inventory box`}),title:`Storage Unit`,subheader:(0,import_jsx_runtime$2.jsxs)(`div`,{children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Price: `,moneyString(ot)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Current inventory space:`,` `,integerString(je)]})]})}),(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Purchase a Storage Unit to increase your inventory capacity for `,100,` more items.`]})}),(0,import_jsx_runtime$2.jsx)(CardActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{disabled:Ne<ot,color:`primary`,onClick:ke,variant:`contained`,children:`Buy`})})]})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:z,maxedOutPlaceholder:`You've purchased the largest field available!`,purchasedTier:Re,renderTierLabel:({columns:F,price:I,rows:L})=>`${dollarString(I)}: ${F} x ${L}`,tiers:PURCHASEABLE_FIELD_SIZES,title:`Expand field`})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:L,maxedOutPlaceholder:`You've purchased the largest cow pen available!`,purchasedTier:Ie,renderTierLabel:({cows:F,price:I})=>`${dollarString(I)}: ${F} cow pen`,tiers:PURCHASEABLE_COW_PENS,title:`Buy cow pen`})}),(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:R,maxedOutPlaceholder:`You've purchased the largest cellar available!`,purchasedTier:Le,renderTierLabel:({space:F,price:I})=>`${dollarString(I)}: Space for ${F} kegs`,tiers:PURCHASEABLE_CELLARS,title:`Buy cellar`})}),ut?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{onBuyClick:De,maxedOutPlaceholder:`You've purchased the largest forest available!`,purchasedTier:ze,renderTierLabel:({columns:F,price:I,rows:L})=>`${dollarString(I)}: ${F} x ${L}`,tiers:PURCHASABLE_FOREST_SIZES,title:`Expand forest`})}):null,(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a combine to automatically harvest your mature crops at the start of every day.`,onBuyClick:F,maxedOutPlaceholder:`You've purchased the best combine harvester available!`,purchasedTier:Pe,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} combine harvester`,tiers:PURCHASEABLE_COMBINES,title:`Buy combine harvester`})}),it[toolType.SHOVEL]?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Smelter to convert ore into ingots and other useful items.`,onBuyClick:Oe,maxedOutPlaceholder:`You've already purchased the smelter!`,purchasedTier:Be,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Smelter`,tiers:PURCHASEABLE_SMELTERS,title:`Buy smelter`})}):null,(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Composter to turn weeds into fertilizer.`,onBuyClick:I,maxedOutPlaceholder:`You've already purchased the composter!`,purchasedTier:Fe,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Composter`,tiers:PURCHASEABLE_COMPOSTERS,title:`Buy composter`})}),ut?(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$5,{description:`You can purchase a Wood Chipper to turn wood into wood chips for making mulch.`,onBuyClick:Ae,maxedOutPlaceholder:`You've already purchased the wood chipper!`,purchasedTier:Ge,renderTierLabel:({type:F,price:I})=>`${dollarString(I)}: ${F} Wood Chipper`,tiers:PURCHASEABLE_WOOD_CHIPPERS,title:`Buy wood chipper`})}):null]})})]})};function Consumer$4(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Shop,{...I,...L,...F})})}var TabPanel$1=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`workshop-tabpanel-${R}`,"aria-labelledby":`workshop-tab-${R}`,...z,children:L===R?I:null})},a11yProps$1=F=>({id:`workshop-tab-${F}`,"aria-controls":`workshop-tabpanel-${F}`});function IngredientsList({playerInventoryQuantities:F,recipe:{ingredients:I,name:L}}){return(0,import_jsx_runtime$2.jsxs)(`ul`,{className:`card-list`,title:`Ingredients for ${L}`,children:[(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(`h4`,{children:`Ingredients required:`})}),Object.keys(I).map(L=>(0,import_jsx_runtime$2.jsx)(`li`,{"data-testid":`ingredient`,children:(0,import_jsx_runtime$2.jsx)(P$1,{className:(0,import_classnames.default)((F[L]||0)>=I[L]?`in-stock`:`out-of-stock`),sx:{color:(F[L]||0)>=I[L]?void 0:colors.error},children:INGREDIENTS_LIST_ITEM`${I[L]}${itemsMap[L].name}${integerString(F[L]||0)}
372
372
  `})},L))]})}function totalIngredientsInRecipe(F,I=1){return I*Object.values(F.ingredients).reduce((F,I)=>F+I,0)}function UpgradePurchase({handleUpgradeTool:F,inventory:I,inventoryLimit:L,playerInventoryQuantities:R,upgrade:z}){let{id:De,name:Oe,description:ke}=z,Ae=totalIngredientsInRecipe(z),je=canMakeRecipe(z,I,1)&&doesInventorySpaceRemain({inventory:I,inventoryLimit:(L===-1?1/0:L)+Ae});return(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`Recipe`,{"can-be-made":je}),children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:craftedItems[De],alt:Oe}),title:Oe,subheader:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`p`,{children:ke}),(0,import_jsx_runtime$2.jsx)(IngredientsList,{playerInventoryQuantities:R,recipe:z})]})}),(0,import_jsx_runtime$2.jsx)(CardActions,{children:(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,onClick:()=>F(z),variant:`contained`,disabled:!je,children:`Upgrade Tool`})})]})}function Consumer$3(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(UpgradePurchase,{...I,...L,...F})})}var Recipe=({handleMakeRecipeClick:F,inventory:I,inventoryLimit:L,playerInventoryQuantities:R,recipe:z})=>{let{id:De,name:Oe,description:ke=``}=z,[Ae,je]=(0,import_react$10.useState)(1);(0,import_react$10.useEffect)(()=>{je(Math.min(maxYieldOfRecipe(z,I),Math.max(1,Ae)))},[I,z,Ae]);let Me=Ae*totalIngredientsInRecipe(z),Ne=Ae>0&&canMakeRecipe(z,I,Ae)&&doesInventorySpaceRemain({inventory:I,inventoryLimit:(L===-1?1/0:L)+Me}),Pe=()=>{Ne&&F(z,Ae)},Fe=maxYieldOfRecipe(z,I);return(0,import_jsx_runtime$2.jsxs)(Card,{className:(0,import_classnames.default)(`Recipe`,{"can-be-made":Ne}),sx:{position:`relative`,cursor:Ne?`pointer`:void 0,"& img":{width:`3em`},"& ul.card-list li":{margin:0,"& p":{margin:0}}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:craftedItems[De],alt:Oe}),title:Oe,subheader:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Sell price: `,dollarString(itemsMap[De].value)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`In Inventory: `,integerString(R[De])]}),(0,import_jsx_runtime$2.jsx)(IngredientsList,{playerInventoryQuantities:R,recipe:z})]})}),ke&&(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Typography,{children:ke})}),(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{className:`make-recipe`,color:`primary`,disabled:!Ne||!Ae,onClick:Pe,variant:`contained`,children:`Make`}),(0,import_jsx_runtime$2.jsx)(QuantityInput,{handleSubmit:Pe,handleUpdateNumber:je,maxQuantity:Fe,setQuantity:je,value:Ae})]})]})};function Consumer$2(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Recipe,{...I,...L,...F})})}function RecipeList({allRecipes:F,learnedRecipes:I}){let[L,R]=(0,import_react$10.useState)(``),z=L?I.filter(I=>F[I]?.name?.toLowerCase().includes(L.toLowerCase())):I,De=z.length,Oe=Object.keys(F).length;return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Learned Recipes (`,De,` / `,Oe,`)`]}),I.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search recipes...`,onSearch:R}),z.length>0&&(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:z.map(I=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$2,{recipe:F[I]})},I))})]})}function getUpgradesAvailable({learnedForgeRecipes:F,toolLevels:I}){let L=[],R=upgrades;for(let z of Object.keys(R)){let De=R[z][I[z]];if(De&&!De.isMaxLevel&&De.nextLevel){let I=R[z][De.nextLevel];if(!I)continue;let Oe=!0;if(I.ingredients)for(let L of Object.keys(I.ingredients))Oe&&=!!(!recipesMap[L]||F.includes(L));Oe&&L.push(I)}}return L}function ForgeTabPanel({currentTab:F,index:I,learnedForgeRecipes:L,toolLevels:R}){let z=getUpgradesAvailable({toolLevels:R,learnedForgeRecipes:L});return(0,import_jsx_runtime$2.jsxs)(TabPanel$1,{value:F,index:I,children:[(0,import_jsx_runtime$2.jsx)(RecipeList,{learnedRecipes:L,allRecipes:recipeCategories[recipeType.FORGE]}),z.length?(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsxs)(`ul`,{className:`card-list`,children:[(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(`h4`,{children:`Tool Upgrades`})}),z.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Consumer$3,{upgrade:F})},F.id))]})]}):null,(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`Forge recipes are learned by selling resources mined from the field.`})})})})})]})}function KitchenTabPanel({currentTab:F,index:I,learnedKitchenRecipes:L}){return(0,import_jsx_runtime$2.jsxs)(TabPanel$1,{value:F,index:I,children:[(0,import_jsx_runtime$2.jsx)(RecipeList,{learnedRecipes:L,allRecipes:recipeCategories[recipeType.KITCHEN]}),(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`Kitchen recipes are learned by selling crops and animal products. Sell as much as you can of a wide variety of items!`})})})})})]})}function RecyclingTabPanel({currentTab:F,index:I,learnedRecipes:L}){return(0,import_jsx_runtime$2.jsxs)(TabPanel$1,{value:F,index:I,children:[(0,import_jsx_runtime$2.jsx)(RecipeList,{learnedRecipes:L,allRecipes:recipeCategories[recipeType.RECYCLING]}),(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`Recyling recipes are learned by selling items foraged from the field.`})})})})})]})}function WoodChipperTabPanel({currentTab:F,index:I,learnedRecipes:L}){return(0,import_jsx_runtime$2.jsxs)(TabPanel$1,{value:F,index:I,children:[(0,import_jsx_runtime$2.jsx)(RecipeList,{learnedRecipes:L,allRecipes:recipeCategories[recipeType.WOOD_CHIPPER]}),(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`Wood Chipper recipes are learned by selling wood chopped from trees.`})})})})})]})}var Workshop=({learnedRecipes:F,purchasedComposter:I,purchasedSmelter:L,purchasedWoodChipper:R,toolLevels:z})=>{let De=Object.keys(F).filter(F=>recipesMap[F].recipeType===recipeType.KITCHEN),Oe=Object.keys(F).filter(F=>recipesMap[F].recipeType===recipeType.FORGE),ke=Object.keys(F).filter(F=>recipesMap[F].recipeType===recipeType.RECYCLING),Ae=Object.keys(F).filter(F=>recipesMap[F].recipeType===recipeType.WOOD_CHIPPER),je=L,Me=je?2:1,Ne=Me+ +!!I,[Pe,Fe]=useTabQueryParam([`Kitchen`,je?`Forge`:``,I?`Recycling`:``,R?`Wood Chipper`:``].filter(Boolean));return(0,import_jsx_runtime$2.jsxs)(Div,{className:`Workshop`,sx:centerTabsSx,children:[(0,import_jsx_runtime$2.jsxs)(Tabs,{value:Pe,onChange:(F,I)=>Fe(I),"aria-label":`Workshop tabs`,children:[(0,import_jsx_runtime$2.jsx)(Tab,{label:`Kitchen`,...a11yProps$1(0)}),je?(0,import_jsx_runtime$2.jsx)(Tab,{label:`Forge`,...a11yProps$1(1)}):null,I?(0,import_jsx_runtime$2.jsx)(Tab,{label:`Recycling`,...a11yProps$1(Me)}):null,R?(0,import_jsx_runtime$2.jsx)(Tab,{label:`Wood Chipper`,...a11yProps$1(Ne)}):null]}),(0,import_jsx_runtime$2.jsx)(KitchenTabPanel,{currentTab:Pe,index:0,learnedKitchenRecipes:De}),je?(0,import_jsx_runtime$2.jsx)(ForgeTabPanel,{currentTab:Pe,index:1,learnedForgeRecipes:Oe,toolLevels:z}):null,I?(0,import_jsx_runtime$2.jsx)(RecyclingTabPanel,{currentTab:Pe,index:Me,learnedRecipes:ke}):null,R?(0,import_jsx_runtime$2.jsx)(WoodChipperTabPanel,{currentTab:Pe,index:Ne,learnedRecipes:Ae}):null]})};function Consumer$1(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Workshop,{...I,...L,...F})})}var TabPanel=F=>{let{children:I,value:L,index:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(`section`,{role:`tabpanel`,hidden:L!==R,id:`cellar-tabpanel-${R}`,"aria-labelledby":`cellar-tab-${R}`,...z,children:L===R?I:null})},a11yProps=F=>({id:`cellar-tab-${F}`,"aria-controls":`cellar-tabpanel-${F}`});function Keg({keg:F}){let{handlers:{handleSellKegClick:I,handleThrowAwayKegClick:L},gameState:{completedAchievements:R}}=(0,import_react$10.useContext)(FarmhandContext),z=itemsMap[F.itemId];if(!z)throw Error(`Keg references unknown item id: ${F.itemId}`);let De=items[z.id],Oe=getKegDisplayName(z),ke=()=>{I(F)},Ae=()=>{L(F)},je=F.daysUntilMature<=0,Me=getKegValue(F)*getSalePriceMultiplier(R);wineService.isWineRecipe(z)&&(De=wines[z.variety]);let Ne=getKegSpoilageRate(F),Pe=Number((Ne*100).toPrecision(2));return(0,import_jsx_runtime$2.jsxs)(Card,{className:`Keg`,sx:{position:`relative`,"& .MuiCardHeader-avatar img":{width:`3em`,filter:`drop-shadow(1px 1px 2px rgba(255, 0, 131, 0.63))`}},children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{title:Oe,avatar:(0,import_jsx_runtime$2.jsx)(`img`,{src:De,alt:Oe}),subheader:(0,import_jsx_runtime$2.jsx)(import_jsx_runtime$2.Fragment,{children:je?(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Days since ready: `,Math.abs(F.daysUntilMature)]}),(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Current value:`,` `,(0,import_jsx_runtime$2.jsx)(AnimatedNumber,{number:Me,formatter:moneyString})]}),cellarService.doesKegSpoil(F)&&(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Potential for spoilage: `,Pe,`%`]})]}):(0,import_jsx_runtime$2.jsxs)(`p`,{children:[`Days until ready: `,F.daysUntilMature]})})}),(0,import_jsx_runtime$2.jsxs)(CardActions,{children:[(0,import_jsx_runtime$2.jsx)(Button,{className:`sell-keg`,color:`error`,onClick:ke,variant:`contained`,disabled:!je,children:`Sell`}),je?null:(0,import_jsx_runtime$2.jsx)(Button,{className:`throw-away-keg`,color:`error`,onClick:Ae,variant:`contained`,children:`Throw away`})]})]})}var CellarInventoryTabPanel=({index:F,currentTab:I})=>{let[L,R]=(0,import_react$10.useState)(``),{gameState:{cellarInventory:z,purchasedCellar:De}}=(0,import_react$10.useContext)(FarmhandContext),Oe=L.toLowerCase().split(` `).filter(F=>F.length>0),ke=z.filter(F=>{let I=itemsMap[F.itemId].name.toLowerCase(),L=`${FERMENTED_CROP_NAME}${I}`;return Oe.every(F=>L.includes(F)||I.includes(F))}),Ae=PURCHASEABLE_CELLARS.get(De);if(Ae===void 0)throw TypeError(`Invalid purchasedCellar value: ${De}`);return(0,import_jsx_runtime$2.jsxs)(TabPanel,{value:I,index:F,children:[(0,import_jsx_runtime$2.jsxs)(`h3`,{children:[`Capacity: `,integerString(z.length),` /`,` `,integerString(Ae.space)]}),z.length>0&&(0,import_jsx_runtime$2.jsx)(SearchBar,{placeholder:`Search kegs...`,onSearch:R}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:ke.map(F=>(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Keg,{keg:F})},F.id))}),(0,import_jsx_runtime$2.jsx)(Divider,{}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`This is your inventory of Cellar kegs.
373
373
 
374
374
  Keg contents take time to reach maturity before they can be sold. After they reach maturity, keg contents become higher in quality over time and their value grows.
@@ -409,5 +409,5 @@ Kegs that contain wine compound in value at a rate of ${WINE_INTEREST_RATE}% for
409
409
  `}),L}function dy(F){let I=0,L=F.charCodeAt(I);for(;L===9||L===32;)I++,L=F.charCodeAt(I);return F.slice(I)}function fy(F,I){let L=oy(F,I),R=L.one(F,void 0),z=Gv(L),De=Array.isArray(R)?{type:`root`,children:R}:R||{type:`root`,children:[]};return z&&(`children`in De,De.children.push({type:`text`,value:`
410
410
  `},z)),De}function py(F,I){return F&&`run`in F?async function(L,R){let z=fy(L,{file:R,...I});await F.run(z,R)}:function(L,R){return fy(L,{file:R,...F||I})}}function my(F){if(F)throw F}var hy=s(((F,I)=>{var L=Object.prototype.hasOwnProperty,R=Object.prototype.toString,z=Object.defineProperty,De=Object.getOwnPropertyDescriptor,Oe=function(F){return typeof Array.isArray==`function`?Array.isArray(F):R.call(F)===`[object Array]`},ke=function(F){if(!F||R.call(F)!==`[object Object]`)return!1;var I=L.call(F,`constructor`),z=F.constructor&&F.constructor.prototype&&L.call(F.constructor.prototype,`isPrototypeOf`);if(F.constructor&&!I&&!z)return!1;for(var De in F);return De===void 0||L.call(F,De)},Ae=function(F,I){z&&I.name===`__proto__`?z(F,I.name,{enumerable:!0,configurable:!0,value:I.newValue,writable:!0}):F[I.name]=I.newValue},je=function(F,I){if(I===`__proto__`){if(!L.call(F,I))return;if(De)return De(F,I).value}return F[I]};I.exports=function F(){var I,L,R,z,De,Me,Ne=arguments[0],Pe=1,Fe=arguments.length,Ie=!1;for(typeof Ne==`boolean`&&(Ie=Ne,Ne=arguments[1]||{},Pe=2),(Ne==null||typeof Ne!=`object`&&typeof Ne!=`function`)&&(Ne={});Pe<Fe;++Pe)if(I=arguments[Pe],I!=null)for(L in I)R=je(Ne,L),z=je(I,L),Ne!==z&&(Ie&&z&&(ke(z)||(De=Oe(z)))?(De?(De=!1,Me=R&&Oe(R)?R:[]):Me=R&&ke(R)?R:{},Ae(Ne,{name:L,newValue:F(Ie,Me,z)})):z!==void 0&&Ae(Ne,{name:L,newValue:z}));return Ne}}));function gy(F){if(typeof F!=`object`||!F)return!1;let I=Object.getPrototypeOf(F);return(I===null||I===Object.prototype||Object.getPrototypeOf(I)===null)&&!(Symbol.toStringTag in F)&&!(Symbol.iterator in F)}function _y(){let F=[],I={run:L,use:R};return I;function L(...I){let L=-1,R=I.pop();if(typeof R!=`function`)throw TypeError(`Expected function as last argument, not `+R);z(null,...I);function z(De,...Oe){let ke=F[++L],Ae=-1;if(De){R(De);return}for(;++Ae<I.length;)(Oe[Ae]===null||Oe[Ae]===void 0)&&(Oe[Ae]=I[Ae]);I=Oe,ke?vy(ke,z)(...Oe):R(null,...Oe)}}function R(L){if(typeof L!=`function`)throw TypeError("Expected `middelware` to be a function, not "+L);return F.push(L),I}}function vy(F,I){let L;return R;function R(...I){let R=F.length>I.length,Oe;R&&I.push(z);try{Oe=F.apply(this,I)}catch(F){let I=F;if(R&&L)throw I;return z(I)}R||(Oe&&Oe.then&&typeof Oe.then==`function`?Oe.then(De,z):Oe instanceof Error?z(Oe):De(Oe))}function z(F,...R){L||(L=!0,I(F,...R))}function De(F){z(null,F)}}var yy={basename:by,dirname:xy,extname:Sy,join:Cy,sep:`/`};function by(F,I){if(I!==void 0&&typeof I!=`string`)throw TypeError(`"ext" argument must be a string`);Ey(F);let L=0,R=-1,z=F.length,De;if(I===void 0||I.length===0||I.length>F.length){for(;z--;)if(F.codePointAt(z)===47){if(De){L=z+1;break}}else R<0&&(De=!0,R=z+1);return R<0?``:F.slice(L,R)}if(I===F)return``;let Oe=-1,ke=I.length-1;for(;z--;)if(F.codePointAt(z)===47){if(De){L=z+1;break}}else Oe<0&&(De=!0,Oe=z+1),ke>-1&&(F.codePointAt(z)===I.codePointAt(ke--)?ke<0&&(R=z):(ke=-1,R=Oe));return L===R?R=Oe:R<0&&(R=F.length),F.slice(L,R)}function xy(F){if(Ey(F),F.length===0)return`.`;let I=-1,L=F.length,R;for(;--L;)if(F.codePointAt(L)===47){if(R){I=L;break}}else R||=!0;return I<0?F.codePointAt(0)===47?`/`:`.`:I===1&&F.codePointAt(0)===47?`//`:F.slice(0,I)}function Sy(F){Ey(F);let I=F.length,L=-1,R=0,z=-1,De=0,Oe;for(;I--;){let ke=F.codePointAt(I);if(ke===47){if(Oe){R=I+1;break}continue}L<0&&(Oe=!0,L=I+1),ke===46?z<0?z=I:De!==1&&(De=1):z>-1&&(De=-1)}return z<0||L<0||De===0||De===1&&z===L-1&&z===R+1?``:F.slice(z,L)}function Cy(...F){let I=-1,L;for(;++I<F.length;)Ey(F[I]),F[I]&&(L=L===void 0?F[I]:L+`/`+F[I]);return L===void 0?`.`:wy(L)}function wy(F){Ey(F);let I=F.codePointAt(0)===47,L=Ty(F,!I);return L.length===0&&!I&&(L=`.`),L.length>0&&F.codePointAt(F.length-1)===47&&(L+=`/`),I?`/`+L:L}function Ty(F,I){let L=``,R=0,z=-1,De=0,Oe=-1,ke,Ae;for(;++Oe<=F.length;){if(Oe<F.length)ke=F.codePointAt(Oe);else if(ke===47)break;else ke=47;if(ke===47){if(!(z===Oe-1||De===1))if(z!==Oe-1&&De===2){if(L.length<2||R!==2||L.codePointAt(L.length-1)!==46||L.codePointAt(L.length-2)!==46){if(L.length>2){if(Ae=L.lastIndexOf(`/`),Ae!==L.length-1){Ae<0?(L=``,R=0):(L=L.slice(0,Ae),R=L.length-1-L.lastIndexOf(`/`)),z=Oe,De=0;continue}}else if(L.length>0){L=``,R=0,z=Oe,De=0;continue}}I&&(L=L.length>0?L+`/..`:`..`,R=2)}else L.length>0?L+=`/`+F.slice(z+1,Oe):L=F.slice(z+1,Oe),R=Oe-z-1;z=Oe,De=0}else ke===46&&De>-1?De++:De=-1}return L}function Ey(F){if(typeof F!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(F))}var Dy={cwd:Oy};function Oy(){return`/`}function ky(F){return!!(typeof F==`object`&&F&&`href`in F&&F.href&&`protocol`in F&&F.protocol&&F.auth===void 0)}function Ay(F){if(typeof F==`string`)F=new URL(F);else if(!ky(F)){let I=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+F+"`");throw I.code=`ERR_INVALID_ARG_TYPE`,I}if(F.protocol!==`file:`){let F=TypeError(`The URL must be of scheme file`);throw F.code=`ERR_INVALID_URL_SCHEME`,F}return jy(F)}function jy(F){if(F.hostname!==``){let F=TypeError(`File URL host must be "localhost" or empty on darwin`);throw F.code=`ERR_INVALID_FILE_URL_HOST`,F}let I=F.pathname,L=-1;for(;++L<I.length;)if(I.codePointAt(L)===37&&I.codePointAt(L+1)===50){let F=I.codePointAt(L+2);if(F===70||F===102){let F=TypeError(`File URL path must not include encoded / characters`);throw F.code=`ERR_INVALID_FILE_URL_PATH`,F}}return decodeURIComponent(I)}var My=[`history`,`path`,`basename`,`stem`,`extname`,`dirname`],Ny=class{constructor(F){let I;I=F?ky(F)?{path:F}:typeof F==`string`||Ly(F)?{value:F}:F:{},this.cwd=`cwd`in I?``:Dy.cwd(),this.data={},this.history=[],this.messages=[],this.value,this.map,this.result,this.stored;let L=-1;for(;++L<My.length;){let F=My[L];F in I&&I[F]!==void 0&&I[F]!==null&&(this[F]=F===`history`?[...I[F]]:I[F])}let R;for(R in I)My.includes(R)||(this[R]=I[R])}get basename(){return typeof this.path==`string`?yy.basename(this.path):void 0}set basename(F){Fy(F,`basename`),Py(F,`basename`),this.path=yy.join(this.dirname||``,F)}get dirname(){return typeof this.path==`string`?yy.dirname(this.path):void 0}set dirname(F){Iy(this.basename,`dirname`),this.path=yy.join(F||``,this.basename)}get extname(){return typeof this.path==`string`?yy.extname(this.path):void 0}set extname(F){if(Py(F,`extname`),Iy(this.dirname,`extname`),F){if(F.codePointAt(0)!==46)throw Error("`extname` must start with `.`");if(F.includes(`.`,1))throw Error("`extname` cannot contain multiple dots")}this.path=yy.join(this.dirname,this.stem+(F||``))}get path(){return this.history[this.history.length-1]}set path(F){ky(F)&&(F=Ay(F)),Fy(F,`path`),this.path!==F&&this.history.push(F)}get stem(){return typeof this.path==`string`?yy.basename(this.path,this.extname):void 0}set stem(F){Fy(F,`stem`),Py(F,`stem`),this.path=yy.join(this.dirname||``,F+(this.extname||``))}fail(F,I,L){let R=this.message(F,I,L);throw R.fatal=!0,R}info(F,I,L){let R=this.message(F,I,L);return R.fatal=void 0,R}message(F,I,L){let R=new Tm(F,I,L);return this.path&&(R.name=this.path+`:`+R.name,R.file=this.path),R.fatal=!1,this.messages.push(R),R}toString(F){return this.value===void 0?``:typeof this.value==`string`?this.value:new TextDecoder(F||void 0).decode(this.value)}};function Py(F,I){if(F&&F.includes(yy.sep))throw Error("`"+I+"` cannot be a path: did not expect `"+yy.sep+"`")}function Fy(F,I){if(!F)throw Error("`"+I+"` cannot be empty")}function Iy(F,I){if(!F)throw Error("Setting `"+I+"` requires `path` to be set too")}function Ly(F){return!!(F&&typeof F==`object`&&`byteLength`in F&&`byteOffset`in F)}var Ry=(function(F){let I=this.constructor.prototype,L=I[F],R=function(){return L.apply(R,arguments)};return Object.setPrototypeOf(R,I),R}),zy=u(hy(),1),By={}.hasOwnProperty,Vy=new class F extends Ry{constructor(){super(`copy`),this.Compiler=void 0,this.Parser=void 0,this.attachers=[],this.compiler=void 0,this.freezeIndex=-1,this.frozen=void 0,this.namespace={},this.parser=void 0,this.transformers=_y()}copy(){let I=new F,L=-1;for(;++L<this.attachers.length;){let F=this.attachers[L];I.use(...F)}return I.data((0,zy.default)(!0,{},this.namespace)),I}data(F,I){return typeof F==`string`?arguments.length===2?(Wy(`data`,this.frozen),this.namespace[F]=I,this):By.call(this.namespace,F)&&this.namespace[F]||void 0:F?(Wy(`data`,this.frozen),this.namespace=F,this):this.namespace}freeze(){if(this.frozen)return this;let F=this;for(;++this.freezeIndex<this.attachers.length;){let[I,...L]=this.attachers[this.freezeIndex];if(L[0]===!1)continue;L[0]===!0&&(L[0]=void 0);let R=I.call(F,...L);typeof R==`function`&&this.transformers.use(R)}return this.frozen=!0,this.freezeIndex=1/0,this}parse(F){this.freeze();let I=qy(F),L=this.parser||this.Parser;return Hy(`parse`,L),L(String(I),I)}process(F,I){let L=this;return this.freeze(),Hy(`process`,this.parser||this.Parser),Uy(`process`,this.compiler||this.Compiler),I?R(void 0,I):new Promise(R);function R(R,z){let De=qy(F),Oe=L.parse(De);L.run(Oe,De,function(F,I,R){if(F||!I||!R)return ke(F);let z=I,De=L.stringify(z,R);Yy(De)?R.value=De:R.result=De,ke(F,R)});function ke(F,L){F||!L?z(F):R?R(L):I(void 0,L)}}}processSync(F){let I=!1,L;return this.freeze(),Hy(`processSync`,this.parser||this.Parser),Uy(`processSync`,this.compiler||this.Compiler),this.process(F,R),Ky(`processSync`,`process`,I),L;function R(F,R){I=!0,my(F),L=R}}run(F,I,L){Gy(F),this.freeze();let R=this.transformers;return!L&&typeof I==`function`&&(L=I,I=void 0),L?z(void 0,L):new Promise(z);function z(z,De){let Oe=qy(I);R.run(F,Oe,ke);function ke(I,R,Oe){let ke=R||F;I?De(I):z?z(ke):L(void 0,ke,Oe)}}}runSync(F,I){let L=!1,R;return this.run(F,I,z),Ky(`runSync`,`run`,L),R;function z(F,I){my(F),R=I,L=!0}}stringify(F,I){this.freeze();let L=qy(I),R=this.compiler||this.Compiler;return Uy(`stringify`,R),Gy(F),R(F,L)}use(F,...I){let L=this.attachers,R=this.namespace;if(Wy(`use`,this.frozen),F!=null)if(typeof F==`function`)ke(F,I);else if(typeof F==`object`)Array.isArray(F)?Oe(F):De(F);else throw TypeError("Expected usable value, not `"+F+"`");return this;function z(F){if(typeof F==`function`)ke(F,[]);else if(typeof F==`object`)if(Array.isArray(F)){let[I,...L]=F;ke(I,L)}else De(F);else throw TypeError("Expected usable value, not `"+F+"`")}function De(F){if(!(`plugins`in F)&&!(`settings`in F))throw Error("Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither");Oe(F.plugins),F.settings&&(R.settings=(0,zy.default)(!0,R.settings,F.settings))}function Oe(F){let I=-1;if(F!=null)if(Array.isArray(F))for(;++I<F.length;){let L=F[I];z(L)}else throw TypeError("Expected a list of plugins, not `"+F+"`")}function ke(F,I){let R=-1,z=-1;for(;++R<L.length;)if(L[R][0]===F){z=R;break}if(z===-1)L.push([F,...I]);else if(I.length>0){let[R,...De]=I,Oe=L[z][1];gy(Oe)&&gy(R)&&(R=(0,zy.default)(!0,Oe,R)),L[z]=[F,R,...De]}}}}().freeze();function Hy(F,I){if(typeof I!=`function`)throw TypeError("Cannot `"+F+"` without `parser`")}function Uy(F,I){if(typeof I!=`function`)throw TypeError("Cannot `"+F+"` without `compiler`")}function Wy(F,I){if(I)throw Error("Cannot call `"+F+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Gy(F){if(!gy(F)||typeof F.type!=`string`)throw TypeError("Expected node, got `"+F+"`")}function Ky(F,I,L){if(!L)throw Error("`"+F+"` finished async. Use `"+I+"` instead")}function qy(F){return Jy(F)?F:new Ny(F)}function Jy(F){return!!(F&&typeof F==`object`&&`message`in F&&`messages`in F)}function Yy(F){return typeof F==`string`||Xy(F)}function Xy(F){return!!(F&&typeof F==`object`&&`byteLength`in F&&`byteOffset`in F)}var Zy=[],Qy={allowDangerousHtml:!0},$y=/^(https?|ircs?|mailto|xmpp)$/i,eb=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function tb(F){let I=nb(F),L=rb(F);return ib(I.runSync(I.parse(L),L),F)}function nb(F){let I=F.rehypePlugins||Zy,L=F.remarkPlugins||Zy,R=F.remarkRehypeOptions?{...F.remarkRehypeOptions,...Qy}:Qy;return Vy().use($_).use(L).use(py,R).use(I)}function rb(F){let I=F.children||``,L=new Ny;return typeof I==`string`?L.value=I:``+I,L}function ib(F,I){let L=I.allowedElements,R=I.allowElement,z=I.components,De=I.disallowedElements,Oe=I.skipHtml,ke=I.unwrapDisallowed,Ae=I.urlTransform||ab;for(let F of eb)Object.hasOwn(I,F.from)&&``+F.from+(F.to?"use `"+F.to+"` instead":`remove it`)+F.id;return ry(F,je),Mm(F,{Fragment:import_jsx_runtime$2.Fragment,components:z,ignoreInvalidStyle:!0,jsx:import_jsx_runtime$2.jsx,jsxs:import_jsx_runtime$2.jsxs,passKeys:!0,passNode:!0});function je(F,I,z){if(F.type===`raw`&&z&&typeof I==`number`)return Oe?z.children.splice(I,1):z.children[I]={type:`text`,value:F.value},I;if(F.type===`element`){let I;for(I in eh)if(Object.hasOwn(eh,I)&&Object.hasOwn(F.properties,I)){let L=F.properties[I],R=eh[I];(R===null||R.includes(F.tagName))&&(F.properties[I]=Ae(String(L||``),I,F))}}if(F.type===`element`){let Oe=L?!L.includes(F.tagName):De?De.includes(F.tagName):!1;if(!Oe&&R&&typeof I==`number`&&(Oe=!R(F,I,z)),Oe&&z&&typeof I==`number`)return ke&&F.children?z.children.splice(I,1,...F.children):z.children.splice(I,1),I}}}function ab(F){let I=F.indexOf(`:`),L=F.indexOf(`?`),R=F.indexOf(`#`),z=F.indexOf(`/`);return I===-1||z!==-1&&I>z||L!==-1&&I>L||R!==-1&&I>R||$y.test(F.slice(0,I))?F:``}var ob=({crop:F,playedCrop:I})=>I?(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Water cards attached: `,I.waterCards,`/`,F.waterToMature]}):(0,import_jsx_runtime$2.jsxs)(Typography,{children:[`Water needed to mature: `,F.waterToMature]}),sb=import_react$10.useLayoutEffect;function cb(){return typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:{}}function lb(){let F=cb();if(F.__xstate__)return F.__xstate__}var ub=F=>{if(typeof window>`u`)return;let I=lb();I&&I.register(F)},db$1=class{constructor(F){this._process=F,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(F){let I={value:F,next:null};if(this._current){this._last.next=I,this._last=I;return}this._current=I,this._last=I,this._active&&this.flush()}flush(){for(;this._current;){let F=this._current;this._process(F.value),this._current=F.next}this._last=null}},fb=``,pb=`#`,mb=`*`,hb=`xstate.init`,gb=`xstate.stop`;function _b(F,I){return{type:`xstate.after.${F}.${I}`}}function vb(F,I){return{type:`xstate.done.state.${F}`,output:I}}function yb(F,I){return{type:`xstate.done.actor.${F}`,output:I,actorId:F}}function bb(F,I){return{type:`xstate.error.actor.${F}`,error:I,actorId:F}}function xb(F){return{type:hb,input:F}}function Sb(F){setTimeout(()=>{throw F})}var Cb=typeof Symbol==`function`&&Symbol.observable||`@@observable`;function wb(F,I){let L=Eb(F),R=Eb(I);return typeof R==`string`?typeof L==`string`&&R===L:typeof L==`string`?L in R:Object.keys(L).every(F=>F in R&&wb(L[F],R[F]))}function Tb(F){if(Mb(F))return F;let I=[],L=``;for(let R=0;R<F.length;R++){switch(F.charCodeAt(R)){case 92:L+=F[R+1],R++;continue;case 46:I.push(L),L=``;continue}L+=F[R]}return I.push(L),I}function Eb(F){return eS(F)?F.value:typeof F==`string`?Db(Tb(F)):F}function Db(F){if(F.length===1)return F[0];let I={},L=I;for(let I=0;I<F.length-1;I++)if(I===F.length-2)L[F[I]]=F[I+1];else{let R=L;L={},R[F[I]]=L}return I}function Ob(F,I){let L={},R=Object.keys(F);for(let z=0;z<R.length;z++){let De=R[z];L[De]=I(F[De],De,F,z)}return L}function kb(F){return Mb(F)?F:[F]}function Ab(F){return F===void 0?[]:kb(F)}function jb(F,I,L,R){return typeof F==`function`?F({context:I,event:L,self:R}):F}function Mb(F){return Array.isArray(F)}function Nb(F){return F.type.startsWith(`xstate.error.actor`)}function Pb(F){return kb(F).map(F=>F===void 0||typeof F==`string`?{target:F}:F)}function Fb(F){if(!(F===void 0||F===fb))return Ab(F)}function Ib(F,I,L){let R=typeof F==`object`,z=R?F:void 0;return{next:(R?F.next:F)?.bind(z),error:(R?F.error:I)?.bind(z),complete:(R?F.complete:L)?.bind(z)}}function Lb(F,I){return`${I}.${F}`}function Rb(F,I){let L=I.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!L)return F.implementations.actors[I];let[,R,z]=L,De=F.getStateNodeById(z).config.invoke;return(Array.isArray(De)?De[R]:De).src}function zb(F,I){return`${F.sessionId}.${I}`}var Bb=0;function Vb(F,I){let L=new Map,R=new Map,z=new WeakMap,De=new Set,Oe={},{clock:ke,logger:Ae}=I,je={schedule:(F,I,L,R,z=Math.random().toString(36).slice(2))=>{let De={source:F,target:I,event:L,delay:R,id:z,startedAt:Date.now()},Ae=zb(F,z);Me._snapshot._scheduledEvents[Ae]=De,Oe[Ae]=ke.setTimeout(()=>{delete Oe[Ae],delete Me._snapshot._scheduledEvents[Ae],Me._relay(F,I,L)},R)},cancel:(F,I)=>{let L=zb(F,I),R=Oe[L];delete Oe[L],delete Me._snapshot._scheduledEvents[L],R!==void 0&&ke.clearTimeout(R)},cancelAll:F=>{for(let I in Me._snapshot._scheduledEvents){let L=Me._snapshot._scheduledEvents[I];L.source===F&&je.cancel(F,L.id)}}},Me={_snapshot:{_scheduledEvents:(I?.snapshot&&I.snapshot.scheduler)??{}},_bookId:()=>`x:${Bb++}`,_register:(F,I)=>(L.set(F,I),F),_unregister:F=>{L.delete(F.sessionId);let I=z.get(F);I!==void 0&&(R.delete(I),z.delete(F))},get:F=>R.get(F),_set:(F,I)=>{let L=R.get(F);if(L&&L!==I)throw Error(`Actor with system ID '${F}' already exists.`);R.set(F,I),z.set(I,F)},inspect:F=>{let I=Ib(F);return De.add(I),{unsubscribe(){De.delete(I)}}},_sendInspectionEvent:I=>{if(!De.size)return;let L={...I,rootId:F.sessionId};De.forEach(F=>F.next?.(L))},_relay:(F,I,L)=>{Me._sendInspectionEvent({type:`@xstate.event`,sourceRef:F,actorRef:I,event:L}),I._send(L)},scheduler:je,getSnapshot:()=>({_scheduledEvents:{...Me._snapshot._scheduledEvents}}),start:()=>{let F=Me._snapshot._scheduledEvents;Me._snapshot._scheduledEvents={};for(let I in F){let{source:L,target:R,event:z,delay:De,id:Oe}=F[I];je.schedule(L,R,z,De,Oe)}},_clock:ke,_logger:Ae};return Me}var Hb=!1,Ub=function(F){return F[F.NotStarted=0]=`NotStarted`,F[F.Running=1]=`Running`,F[F.Stopped=2]=`Stopped`,F}({}),Wb={clock:{setTimeout:(F,I)=>setTimeout(F,I),clearTimeout:F=>clearTimeout(F)},logger:console.log.bind(console),devTools:!1},Gb=class{constructor(F,I){this.logic=F,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new db$1(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=Ub.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this._systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];let L={...Wb,...I},{clock:R,logger:z,parent:De,syncSnapshot:Oe,id:ke,systemId:Ae,inspect:je}=L;this.system=De?De.system:Vb(this,{clock:R,logger:z}),je&&!De&&this.system.inspect(Ib(je)),this.sessionId=this.system._bookId(),this.id=ke??this.sessionId,this.logger=I?.logger??this.system._logger,this.clock=I?.clock??this.system._clock,this._parent=De,this._syncSnapshot=Oe,this.options=L,this.src=L.src??F,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:F=>{this._deferred.push(F)},system:this.system,stopChild:F=>{if(F._parent!==this)throw Error(`Cannot stop child actor ${F.id} of ${this.id} because it is not a child`);F._stop()},emit:F=>{let I=this.eventListeners.get(F.type),L=this.eventListeners.get(`*`);if(!I&&!L)return;let R=[...I?I.values():[],...L?L.values():[]];for(let I of R)I(F)},actionExecutor:F=>{let I=()=>{if(this._actorScope.system._sendInspectionEvent({type:`@xstate.action`,actorRef:this,action:{type:F.type,params:F.params}}),!F.exec)return;let I=Hb;try{Hb=!0,F.exec(F.info,F.params)}finally{Hb=I}};this._processingStatus===Ub.Running?I():this._deferred.push(I)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:`@xstate.actor`,actorRef:this}),Ae&&(this._systemId=Ae,this.system._set(Ae,this)),this._initState(I?.snapshot??I?.state),Ae&&this._snapshot.status!==`active`&&this.system._unregister(this)}_initState(F){try{this._snapshot=F?this.logic.restoreSnapshot?this.logic.restoreSnapshot(F,this._actorScope):F:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(F){this._snapshot={status:`error`,output:void 0,error:F}}}update(F,I){this._snapshot=F;let L;for(;L=this._deferred.shift();)try{L()}catch(I){this._deferred.length=0,this._snapshot={...F,status:`error`,error:I}}switch(this._snapshot.status){case`active`:for(let I of this.observers)try{I.next?.(F)}catch(F){Sb(F)}break;case`done`:for(let I of this.observers)try{I.next?.(F)}catch(F){Sb(F)}this._stopProcedure(),this._complete(),this._doneEvent=yb(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case`error`:this._error(this._snapshot.error);break}this.system._sendInspectionEvent({type:`@xstate.snapshot`,actorRef:this,event:I,snapshot:F})}subscribe(F,I,L){let R=Ib(F,I,L);if(this._processingStatus!==Ub.Stopped)this.observers.add(R);else switch(this._snapshot.status){case`done`:try{R.complete?.()}catch(F){Sb(F)}break;case`error`:{let F=this._snapshot.error;if(!R.error)Sb(F);else try{R.error(F)}catch(F){Sb(F)}break}}return{unsubscribe:()=>{this.observers.delete(R)}}}on(F,I){let L=this.eventListeners.get(F);L||(L=new Set,this.eventListeners.set(F,L));let R=I.bind(void 0);return L.add(R),{unsubscribe:()=>{L.delete(R)}}}start(){if(this._processingStatus===Ub.Running)return this;this._syncSnapshot&&this.subscribe({next:F=>{F.status===`active`&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:F})},error:()=>{}}),this.system._register(this.sessionId,this),this._systemId&&this.system._set(this._systemId,this),this._processingStatus=Ub.Running;let F=xb(this.options.input);switch(this.system._sendInspectionEvent({type:`@xstate.event`,sourceRef:this._parent,actorRef:this,event:F}),this._snapshot.status){case`done`:return this.update(this._snapshot,F),this;case`error`:return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(F){return this._snapshot={...this._snapshot,status:`error`,error:F},this._error(F),this}return this.update(this._snapshot,F),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(F){let I,L;try{I=this.logic.transition(this._snapshot,F,this._actorScope)}catch(F){L={err:F}}if(L){let{err:F}=L;this._snapshot={...this._snapshot,status:`error`,error:F},this._error(F);return}this.update(I,F),F.type===`xstate.stop`&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===Ub.Stopped?this:(this.mailbox.clear(),this._processingStatus===Ub.NotStarted?(this._processingStatus=Ub.Stopped,this):(this.mailbox.enqueue({type:gb}),this))}stop(){if(this._parent)throw Error(`A non-root actor cannot be stopped directly.`);return this._stop()}_complete(){for(let F of this.observers)try{F.complete?.()}catch(F){Sb(F)}this.observers.clear()}_reportError(F){if(!this.observers.size){this._parent||Sb(F);return}let I=!1;for(let L of this.observers){let R=L.error;I||=!R;try{R?.(F)}catch(F){Sb(F)}}this.observers.clear(),I&&Sb(F)}_error(F){this._stopProcedure(),this._reportError(F),this._parent&&this.system._relay(this,this._parent,bb(this.id,F))}_stopProcedure(){return this._processingStatus===Ub.Running?(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new db$1(this._process.bind(this)),this._processingStatus=Ub.Stopped,this.system._unregister(this),this):this}_send(F){this._processingStatus!==Ub.Stopped&&this.mailbox.enqueue(F)}send(F){this.system._relay(void 0,this,F)}attachDevTools(){let{devTools:F}=this.options;F&&(typeof F==`function`?F:ub)(this)}toJSON(){return{xstate$$type:1,id:this.id}}getPersistedSnapshot(F){return this.logic.getPersistedSnapshot(this._snapshot,F)}[Cb](){return this}getSnapshot(){return this._snapshot}};function Kb(F,...[I]){return new Gb(F,I)}function qb(F,I,L,R,{sendId:z}){return[I,{sendId:typeof z==`function`?z(L,R):z},void 0]}function Jb(F,I){F.defer(()=>{F.system.scheduler.cancel(F.self,I.sendId)})}function Yb(F){function I(F,I){}return I.type=`xstate.cancel`,I.sendId=F,I.resolve=qb,I.execute=Jb,I}function Xb(F,I,L,R,{id:z,systemId:De,src:Oe,input:ke,syncSnapshot:Ae}){let je=typeof Oe==`string`?Rb(I.machine,Oe):Oe,Me=typeof z==`function`?z(L):z,Ne,Pe;return je&&(Pe=typeof ke==`function`?ke({context:I.context,event:L.event,self:F.self}):ke,Ne=Kb(je,{id:Me,src:Oe,parent:F.self,syncSnapshot:Ae,systemId:De,input:Pe})),[sS(I,{children:{...I.children,[Me]:Ne}}),{id:z,systemId:De,actorRef:Ne,src:Oe,input:Pe},void 0]}function Zb(F,{actorRef:I}){I&&F.defer(()=>{I._processingStatus!==Ub.Stopped&&I.start()})}function Qb(...[F,{id:I,systemId:L,input:R,syncSnapshot:z=!1}={}]){function De(F,I){}return De.type=`xstate.spawnChild`,De.id=I,De.systemId=L,De.src=F,De.input=R,De.syncSnapshot=z,De.resolve=Xb,De.execute=Zb,De}function $b(F,I,L,R,{actorRef:z}){let De=typeof z==`function`?z(L,R):z,Oe=typeof De==`string`?I.children[De]:De,ke=I.children;return Oe&&(ke={...ke},delete ke[Oe.id]),[sS(I,{children:ke}),Oe,void 0]}function ex(F,I){if(I){if(F.system._unregister(I),I._processingStatus!==Ub.Running){F.stopChild(I);return}F.defer(()=>{F.stopChild(I)})}}function tx(F){function I(F,I){}return I.type=`xstate.stopChild`,I.actorRef=F,I.resolve=$b,I.execute=ex,I}function nx(F,I,L,R){let{machine:z}=R,De=typeof F==`function`,Oe=De?F:z.implementations.guards[typeof F==`string`?F:F.type];if(!De&&!Oe)throw Error(`Guard '${typeof F==`string`?F:F.type}' is not implemented.'.`);if(typeof Oe!=`function`)return nx(Oe,I,L,R);let ke={context:I,event:L},Ae=De||typeof F==`string`?void 0:`params`in F?typeof F.params==`function`?F.params({context:I,event:L}):F.params:void 0;return`check`in Oe?Oe.check(R,ke,Oe):Oe(ke,Ae)}var rx=F=>F.type===`atomic`||F.type===`final`;function ix(F){return Object.values(F.states).filter(F=>F.type!==`history`)}function ax(F,I){let L=[];if(I===F)return L;let R=F.parent;for(;R&&R!==I;)L.push(R),R=R.parent;return L}function ox(F){let I=new Set(F),L=cx(I);for(let F of I)if(F.type===`compound`&&(!L.get(F)||!L.get(F).length))bx(F).forEach(F=>I.add(F));else if(F.type===`parallel`){for(let L of ix(F))if(L.type!==`history`&&!I.has(L)){let F=bx(L);for(let L of F)I.add(L)}}for(let F of I){let L=F.parent;for(;L;)I.add(L),L=L.parent}return I}function sx(F,I){let L=I.get(F);if(!L)return{};if(F.type===`compound`){let F=L[0];if(F){if(rx(F))return F.key}else return{}}let R={};for(let F of L)R[F.key]=sx(F,I);return R}function cx(F){let I=new Map;for(let L of F)I.has(L)||I.set(L,[]),L.parent&&(I.has(L.parent)||I.set(L.parent,[]),I.get(L.parent).push(L));return I}function lx(F,I){return sx(F,cx(ox(I)))}function ux(F,I){return I.type===`compound`?ix(I).some(I=>I.type===`final`&&F.has(I)):I.type===`parallel`?ix(I).every(I=>ux(F,I)):I.type===`final`}var dx=F=>F[0]===pb;function fx(F,I){return F.transitions.get(I)||[...F.transitions.keys()].filter(F=>{if(F===mb)return!0;if(!F.endsWith(`.*`))return!1;let L=F.split(`.`),R=I.split(`.`);for(let F=0;F<L.length;F++){let I=L[F],z=R[F];if(I===`*`)return F===L.length-1;if(I!==z)return!1}return!0}).sort((F,I)=>I.length-F.length).flatMap(I=>F.transitions.get(I))}function px(F){let I=F.config.after;if(!I)return[];let L=I=>{let L=_b(I,F.id),R=L.type;return F.entry.push(fS(L,{id:R,delay:I})),F.exit.push(Yb(R)),R};return Object.keys(I).flatMap(F=>{let R=I[F],z=typeof R==`string`?{target:R}:R,De=Number.isNaN(+F)?F:+F,Oe=L(De);return Ab(z).map(F=>({...F,event:Oe,delay:De}))}).map(I=>{let{delay:L}=I;return{...mx(F,I.event,I),delay:L}})}function mx(F,I,L){let R=Fb(L.target),z=L.reenter??!1,De=_x(F,R),Oe={...L,actions:Ab(L.actions),guard:L.guard,target:De,source:F,reenter:z,eventType:I,toJSON:()=>({...Oe,source:`#${F.id}`,target:De?De.map(F=>`#${F.id}`):void 0})};return Oe}function hx(F){let I=new Map;if(F.config.on)for(let L of Object.keys(F.config.on)){if(L===``)throw Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');let R=F.config.on[L];I.set(L,Pb(R).map(I=>mx(F,L,I)))}if(F.config.onDone){let L=`xstate.done.state.${F.id}`;I.set(L,Pb(F.config.onDone).map(I=>mx(F,L,I)))}for(let L of F.invoke){if(L.onDone){let R=`xstate.done.actor.${L.id}`;I.set(R,Pb(L.onDone).map(I=>mx(F,R,I)))}if(L.onError){let R=`xstate.error.actor.${L.id}`;I.set(R,Pb(L.onError).map(I=>mx(F,R,I)))}if(L.onSnapshot){let R=`xstate.snapshot.${L.id}`;I.set(R,Pb(L.onSnapshot).map(I=>mx(F,R,I)))}}for(let L of F.after){let F=I.get(L.eventType);F||(F=[],I.set(L.eventType,F)),F.push(L)}return I}function gx(F,I){let L=typeof I==`string`?F.states[I]:I?F.states[I.target]:void 0;if(!L&&I)throw Error(`Initial state node "${I}" not found on parent state node #${F.id}`);let R={source:F,actions:!I||typeof I==`string`?[]:Ab(I.actions),eventType:null,reenter:!1,target:L?[L]:[],toJSON:()=>({...R,source:`#${F.id}`,target:L?[`#${L.id}`]:[]})};return R}function _x(F,I){if(I!==void 0)return I.map(I=>{if(typeof I!=`string`)return I;if(dx(I))return F.machine.getStateNodeById(I);let L=I[0]===`.`;if(L&&!F.parent)return Cx(F,I.slice(1));let R=L?F.key+I:I;if(F.parent)try{return Cx(F.parent,R)}catch(I){throw Error(`Invalid transition definition for state node '${F.id}':\n${I.message}`)}else throw Error(`Invalid target: "${I}" is not a valid target from the root node. Did you mean ".${I}"?`)})}function vx(F){let I=Fb(F.config.target);return I?{target:I.map(I=>typeof I==`string`?Cx(F.parent,I):I)}:F.parent.initial}function yx(F){return F.type===`history`}function bx(F){let I=xx(F);for(let L of I)for(let R of ax(L,F))I.add(R);return I}function xx(F){let I=new Set;function L(F){if(!I.has(F)){if(I.add(F),F.type===`compound`)L(F.initial.target[0]);else if(F.type===`parallel`)for(let I of ix(F))L(I)}}return L(F),I}function Sx(F,I){if(dx(I))return F.machine.getStateNodeById(I);if(!F.states)throw Error(`Unable to retrieve child state '${I}' from '${F.id}'; no child states exist.`);let L=F.states[I];if(!L)throw Error(`Child state '${I}' does not exist on '${F.id}'`);return L}function Cx(F,I){if(typeof I==`string`&&dx(I))try{return F.machine.getStateNodeById(I)}catch{}let L=Tb(I).slice(),R=F;for(;L.length;){let F=L.shift();if(!F.length)break;R=Sx(R,F)}return R}function wx(F,I){if(typeof I==`string`){let L=F.states[I];if(!L)throw Error(`State '${I}' does not exist on '${F.id}'`);return[F,L]}let L=Object.keys(I),R=L.map(I=>Sx(F,I)).filter(Boolean);return[F.machine.root,F].concat(R,L.reduce((L,R)=>{let z=Sx(F,R);if(!z)return L;let De=wx(z,I[R]);return L.concat(De)},[]))}function Tx(F,I,L,R){let z=Sx(F,I).next(L,R);return!z||!z.length?F.next(L,R):z}function Ex(F,I,L,R){let z=Object.keys(I),De=Ox(Sx(F,z[0]),I[z[0]],L,R);return!De||!De.length?F.next(L,R):De}function Dx(F,I,L,R){let z=[];for(let De of Object.keys(I)){let Oe=I[De];if(!Oe)continue;let ke=Ox(Sx(F,De),Oe,L,R);ke&&z.push(...ke)}return z.length?z:F.next(L,R)}function Ox(F,I,L,R){return typeof I==`string`?Tx(F,I,L,R):Object.keys(I).length===1?Ex(F,I,L,R):Dx(F,I,L,R)}function kx(F){return Object.keys(F.states).map(I=>F.states[I]).filter(F=>F.type===`history`)}function Ax(F,I){let L=F;for(;L.parent&&L.parent!==I;)L=L.parent;return L.parent===I}function jx(F,I){let L=new Set(F),R=new Set(I);for(let F of L)if(R.has(F))return!0;for(let F of R)if(L.has(F))return!0;return!1}function Mx(F,I,L){let R=new Set;for(let z of F){let F=!1,De=new Set;for(let Oe of R)if(jx(Ix([z],I,L),Ix([Oe],I,L)))if(Ax(z.source,Oe.source))De.add(Oe);else{F=!0;break}if(!F){for(let F of De)R.delete(F);R.add(z)}}return Array.from(R)}function Nx(F){let[I,...L]=F;for(let F of ax(I,void 0))if(L.every(I=>Ax(I,F)))return F}function Px(F,I){if(!F.target)return[];let L=new Set;for(let R of F.target)if(yx(R))if(I[R.id])for(let F of I[R.id])L.add(F);else for(let F of Px(vx(R),I))L.add(F);else L.add(R);return[...L]}function Fx(F,I){let L=Px(F,I);if(!L)return;if(!F.reenter&&L.every(I=>I===F.source||Ax(I,F.source)))return F.source;let R=Nx(L.concat(F.source));if(R)return R;if(!F.reenter)return F.source.machine.root}function Ix(F,I,L){let R=new Set;for(let z of F)if(z.target?.length){let F=Fx(z,L);z.reenter&&z.source===F&&R.add(F);for(let L of I)Ax(L,F)&&R.add(L)}return[...R]}function Lx(F,I){if(F.length!==I.size)return!1;for(let L of F)if(!I.has(L))return!1;return!0}function Rx(F,I,L,R,z,De){if(!F.length)return I;let Oe=new Set(I._nodes),ke=I.historyValue,Ae=Mx(F,Oe,ke),je=I;z||([je,ke]=Gx(je,R,L,Ae,Oe,ke,De,L.actionExecutor)),je=Jx(je,R,L,Ae.flatMap(F=>F.actions),De,void 0),je=Bx(je,R,L,Ae,Oe,De,ke,z);let Me=[...Oe];je.status===`done`&&(je=Jx(je,R,L,Me.sort((F,I)=>I.order-F.order).flatMap(F=>F.exit),De,void 0));try{return ke===I.historyValue&&Lx(I._nodes,Oe)?je:sS(je,{_nodes:Me,historyValue:ke})}catch(F){throw F}}function zx(F,I,L,R,z){if(R.output===void 0)return;let De=vb(z.id,z.output!==void 0&&z.parent?jb(z.output,F.context,I,L.self):void 0);return jb(R.output,F.context,De,L.self)}function Bx(F,I,L,R,z,De,Oe,ke){let Ae=F,je=new Set,Me=new Set;Vx(R,Oe,Me,je),ke&&Me.add(F.machine.root);let Ne=new Set;for(let F of[...je].sort((F,I)=>F.order-I.order)){z.add(F);let R=[];R.push(...F.entry);for(let I of F.invoke)R.push(Qb(I.src,{...I,syncSnapshot:!!I.onSnapshot}));if(Me.has(F)){let I=F.initial.actions;R.push(...I)}if(Ae=Jx(Ae,I,L,R,De,F.invoke.map(F=>F.id)),F.type===`final`){let R=F.parent,Oe=R?.type===`parallel`?R:R?.parent,ke=Oe||F;for(R?.type===`compound`&&De.push(vb(R.id,F.output===void 0?void 0:jb(F.output,Ae.context,I,L.self)));Oe?.type===`parallel`&&!Ne.has(Oe)&&ux(z,Oe);)Ne.add(Oe),De.push(vb(Oe.id)),ke=Oe,Oe=Oe.parent;if(Oe)continue;Ae=sS(Ae,{status:`done`,output:zx(Ae,I,L,Ae.machine.root,ke)})}}return Ae}function Vx(F,I,L,R){for(let z of F){let F=Fx(z,I);for(let De of z.target||[])!yx(De)&&(z.source!==De||z.source!==F||z.reenter)&&(R.add(De),L.add(De)),Hx(De,I,L,R);let De=Px(z,I);for(let Oe of De){let De=ax(Oe,F);F?.type===`parallel`&&De.push(F),Ux(R,I,L,De,!z.source.parent&&z.reenter?void 0:F)}}}function Hx(F,I,L,R){if(yx(F))if(I[F.id]){let z=I[F.id];for(let F of z)R.add(F),Hx(F,I,L,R);for(let De of z)Wx(De,F.parent,R,I,L)}else{let z=vx(F);for(let De of z.target)R.add(De),z===F.parent?.initial&&L.add(F.parent),Hx(De,I,L,R);for(let De of z.target)Wx(De,F.parent,R,I,L)}else if(F.type===`compound`){let[z]=F.initial.target;yx(z)||(R.add(z),L.add(z)),Hx(z,I,L,R),Wx(z,F,R,I,L)}else if(F.type===`parallel`)for(let z of ix(F).filter(F=>!yx(F)))[...R].some(F=>Ax(F,z))||(yx(z)||(R.add(z),L.add(z)),Hx(z,I,L,R))}function Ux(F,I,L,R,z){for(let De of R)if((!z||Ax(De,z))&&F.add(De),De.type===`parallel`)for(let R of ix(De).filter(F=>!yx(F)))[...F].some(F=>Ax(F,R))||(F.add(R),Hx(R,I,L,F))}function Wx(F,I,L,R,z){Ux(L,R,z,ax(F,I))}function Gx(F,I,L,R,z,De,Oe,ke){let Ae=F,je=Ix(R,z,De);je.sort((F,I)=>I.order-F.order);let Me;for(let F of je)for(let I of kx(F)){let L;L=I.history===`deep`?I=>rx(I)&&Ax(I,F):I=>I.parent===F,Me??={...De},Me[I.id]=Array.from(z).filter(L)}for(let F of je)Ae=Jx(Ae,I,L,[...F.exit,...F.invoke.map(F=>tx(F.id))],Oe,void 0),z.delete(F);return[Ae,Me||De]}function Kx(F,I){return F.implementations.actions[I]}function qx(F,I,L,R,z,De){let{machine:Oe}=F,ke=F;for(let F of R){let R=typeof F==`function`,Ae=R?F:Kx(Oe,typeof F==`string`?F:F.type),je={context:ke.context,event:I,self:L.self,system:L.system},Me=R||typeof F==`string`?void 0:`params`in F?typeof F.params==`function`?F.params({context:ke.context,event:I}):F.params:void 0;if(!Ae||!(`resolve`in Ae)){L.actionExecutor({type:typeof F==`string`?F:typeof F==`object`?F.type:F.name||`(anonymous)`,info:je,params:Me,exec:Ae});continue}let Ne=Ae,[Pe,Fe,Ie]=Ne.resolve(L,ke,je,Me,Ae,z);ke=Pe,`retryResolve`in Ne&&De?.push([Ne,Fe]),`execute`in Ne&&L.actionExecutor({type:Ne.type,info:je,params:Fe,exec:Ne.execute.bind(null,L,Fe)}),Ie&&(ke=qx(ke,I,L,Ie,z,De))}return ke}function Jx(F,I,L,R,z,De){let Oe=De?[]:void 0,ke=qx(F,I,L,R,{internalQueue:z,deferredActorIds:De},Oe);return Oe?.forEach(([F,I])=>{F.retryResolve(L,ke,I)}),ke}function Yx(F,I,L,R){let z=F,De=[];function Oe(F,I,R){L.system._sendInspectionEvent({type:`@xstate.microstep`,actorRef:L.self,event:I,snapshot:F,_transitions:R}),De.push(F)}if(I.type===`xstate.stop`)return z=sS(Xx(z,I,L),{status:`stopped`}),Oe(z,I,[]),{snapshot:z,microstates:De};let ke=I;if(ke.type!==hb){let I=ke,Ae=Nb(I),je=Zx(I,z);if(Ae&&!je.length)return z=sS(F,{status:`error`,error:I.error}),Oe(z,I,[]),{snapshot:z,microstates:De};z=Rx(je,F,L,ke,!1,R),Oe(z,I,je)}let Ae=!0;for(;z.status===`active`;){let F=Ae?Qx(z,ke):[],I=F.length?z:void 0;if(!F.length){if(!R.length)break;ke=R.shift(),F=Zx(ke,z)}z=Rx(F,z,L,ke,!1,R),Ae=z!==I,Oe(z,ke,F)}return z.status!==`active`&&Xx(z,ke,L),{snapshot:z,microstates:De}}function Xx(F,I,L){return Jx(F,I,L,Object.values(F.children).map(F=>tx(F)),[],void 0)}function Zx(F,I){return I.machine.getTransitionData(I,F)}function Qx(F,I){let L=new Set,R=F._nodes.filter(rx);for(let z of R)loop:for(let R of[z].concat(ax(z,void 0)))if(R.always){for(let z of R.always)if(z.guard===void 0||nx(z.guard,F.context,I,F)){L.add(z);break loop}}return Mx(Array.from(L),new Set(F._nodes),F.historyValue)}function $x(F,I){return lx(F,[...ox(wx(F,I))])}function eS(F){return!!F&&typeof F==`object`&&`machine`in F&&`value`in F}var tS=function(F){return wb(F,this.value)},nS=function(F){return this.tags.has(F)},rS=function(F){let I=this.machine.getTransitionData(this,F);return!!I?.length&&I.some(F=>F.target!==void 0||F.actions.length)},iS=function(){let{_nodes:F,tags:I,machine:L,getMeta:R,toJSON:z,can:De,hasTag:Oe,matches:ke,...Ae}=this;return{...Ae,tags:Array.from(I)}},aS=function(){return this._nodes.reduce((F,I)=>(I.meta!==void 0&&(F[I.id]=I.meta),F),{})};function oS(F,I){return{status:F.status,output:F.output,error:F.error,machine:I,context:F.context,_nodes:F._nodes,value:lx(I.root,F._nodes),tags:new Set(F._nodes.flatMap(F=>F.tags)),children:F.children,historyValue:F.historyValue||{},matches:tS,hasTag:nS,can:rS,getMeta:aS,toJSON:iS}}function sS(F,I={}){return oS({...F,...I},F.machine)}function cS(F,I){let{_nodes:L,tags:R,machine:z,children:De,context:Oe,can:ke,hasTag:Ae,matches:je,getMeta:Me,toJSON:Ne,...Pe}=F,Fe={};for(let F in De){let L=De[F];Fe[F]={snapshot:L.getPersistedSnapshot(I),src:L.src,systemId:L._systemId,syncSnapshot:L._syncSnapshot}}return{...Pe,context:lS(Oe),children:Fe}}function lS(F){let I;for(let L in F){let R=F[L];if(R&&typeof R==`object`)if(`sessionId`in R&&`send`in R&&`ref`in R)I??=Array.isArray(F)?F.slice():{...F},I[L]={xstate$$type:1,id:R.id};else{let z=lS(R);z!==R&&(I??=Array.isArray(F)?F.slice():{...F},I[L]=z)}}return I??F}function uS(F,I,L,R,{event:z,id:De,delay:Oe},{internalQueue:ke}){let Ae=I.machine.implementations.delays;if(typeof z==`string`)throw Error(`Only event objects may be used with raise; use raise({ type: "${z}" }) instead`);let je=typeof z==`function`?z(L,R):z,Me;if(typeof Oe==`string`){let F=Ae&&Ae[Oe];Me=typeof F==`function`?F(L,R):F}else Me=typeof Oe==`function`?Oe(L,R):Oe;return typeof Me!=`number`&&ke.push(je),[I,{event:je,id:De,delay:Me},void 0]}function dS(F,I){let{event:L,delay:R,id:z}=I;if(typeof R==`number`){F.defer(()=>{let I=F.self;F.system.scheduler.schedule(I,I,L,R,z)});return}}function fS(F,I){function L(F,I){}return L.type=`xstate.raise`,L.event=F,L.id=I?.id,L.delay=I?.delay,L.resolve=uS,L.execute=dS,L}function pS(F,{machine:I,context:L},R,z){let De=(De,Oe)=>{if(typeof De==`string`){let ke=Rb(I,De);if(!ke)throw Error(`Actor logic '${De}' not implemented in machine '${I.id}'`);let Ae=Kb(ke,{id:Oe?.id,parent:F.self,syncSnapshot:Oe?.syncSnapshot,input:typeof Oe?.input==`function`?Oe.input({context:L,event:R,self:F.self}):Oe?.input,src:De,systemId:Oe?.systemId});return z[Ae.id]=Ae,Ae}else return Kb(De,{id:Oe?.id,parent:F.self,syncSnapshot:Oe?.syncSnapshot,input:Oe?.input,src:De,systemId:Oe?.systemId})};return(I,L)=>{let R=De(I,L);return z[R.id]=R,F.defer(()=>{R._processingStatus!==Ub.Stopped&&R.start()}),R}}function mS(F,I,L,R,{assignment:z}){if(!I.context)throw Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");let De={},Oe={context:I.context,event:L.event,spawn:pS(F,I,L.event,De),self:F.self,system:F.system},ke={};if(typeof z==`function`)ke=z(Oe,R);else for(let F of Object.keys(z)){let I=z[F];ke[F]=typeof I==`function`?I(Oe,R):I}return[sS(I,{context:Object.assign({},I.context,ke),children:Object.keys(De).length?{...I.children,...De}:I.children}),void 0,void 0]}function hS(F){function I(F,I){}return I.type=`xstate.assign`,I.assignment=F,I.resolve=mS,I}function gS(F,I,L,R,{event:z}){return[I,{event:typeof z==`function`?z(L,R):z},void 0]}function _S(F,{event:I}){F.defer(()=>F.emit(I))}function vS(F){function I(F,I){}return I.type=`xstate.emit`,I.event=F,I.resolve=gS,I.execute=_S,I}var yS=function(F){return F.Parent=`#_parent`,F.Internal=`#_internal`,F}({});function bS(F,I,L,R,{to:z,event:De,id:Oe,delay:ke},Ae){let je=I.machine.implementations.delays;if(typeof De==`string`)throw Error(`Only event objects may be used with sendTo; use sendTo({ type: "${De}" }) instead`);let Me=typeof De==`function`?De(L,R):De,Ne;if(typeof ke==`string`){let F=je&&je[ke];Ne=typeof F==`function`?F(L,R):F}else Ne=typeof ke==`function`?ke(L,R):ke;let Pe=typeof z==`function`?z(L,R):z,Fe;if(typeof Pe==`string`){if(Fe=Pe===yS.Parent?F.self._parent:Pe===yS.Internal?F.self:Pe.startsWith(`#_`)?I.children[Pe.slice(2)]:Ae.deferredActorIds?.includes(Pe)?Pe:I.children[Pe],!Fe)throw Error(`Unable to send event to actor '${Pe}' from machine '${I.machine.id}'.`)}else Fe=Pe||F.self;return[I,{to:Fe,targetId:typeof Pe==`string`?Pe:void 0,event:Me,id:Oe,delay:Ne},void 0]}function xS(F,I,L){typeof L.to==`string`&&(L.to=I.children[L.to])}function SS(F,I){F.defer(()=>{let{to:L,event:R,delay:z,id:De}=I;if(typeof z==`number`){F.system.scheduler.schedule(F.self,L,R,z,De);return}F.system._relay(F.self,L,R.type===`xstate.error`?bb(F.self.id,R.data):R)})}function CS(F,I,L){function R(F,I){}return R.type=`xstate.sendTo`,R.to=F,R.event=I,R.id=L?.id,R.delay=L?.delay,R.resolve=bS,R.retryResolve=xS,R.execute=SS,R}function wS(F,I){return CS(yS.Parent,F,I)}function TS(F,I,L,R,{collect:z}){let De=[],Oe=function(F){De.push(F)};return Oe.assign=(...F)=>{De.push(hS(...F))},Oe.cancel=(...F)=>{De.push(Yb(...F))},Oe.raise=(...F)=>{De.push(fS(...F))},Oe.sendTo=(...F)=>{De.push(CS(...F))},Oe.sendParent=(...F)=>{De.push(wS(...F))},Oe.spawnChild=(...F)=>{De.push(Qb(...F))},Oe.stopChild=(...F)=>{De.push(tx(...F))},Oe.emit=(...F)=>{De.push(vS(...F))},z({context:L.context,event:L.event,enqueue:Oe,check:F=>nx(F,I.context,L.event,I),self:F.self,system:F.system},R),[I,void 0,De]}function $(F){function I(F,I){}return I.type=`xstate.enqueueActions`,I.collect=F,I.resolve=TS,I}function ES(F,I){let L=Ab(I);if(!L.includes(F.type)){let I=L.length===1?`type "${L[0]}"`:`one of types "${L.join(`", "`)}"`;throw Error(`Expected event ${JSON.stringify(F)} to have ${I}`)}}var DS=new WeakMap;function OS(F,I,L){let R=DS.get(F);return R?I in R||(R[I]=L()):(R={[I]:L()},DS.set(F,R)),R[I]}var kS={},AS=F=>typeof F==`string`?{type:F}:typeof F==`function`?`resolve`in F?{type:F.type}:{type:F.name}:F,jS=class F{constructor(I,L){if(this.config=I,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=L._parent,this.key=L._key,this.machine=L._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(`.`),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?`compound`:this.config.history?`history`:`atomic`),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?Ob(this.config.states,(I,L)=>new F(I,{_parent:this,_key:L,_machine:this.machine})):kS,this.type===`compound`&&!this.config.initial)throw Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=this.config.history===!0?`shallow`:this.config.history||!1,this.entry=Ab(this.config.entry).slice(),this.exit=Ab(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type===`final`||!this.parent?this.config.output:void 0,this.tags=Ab(I.tags).slice()}_initialize(){this.transitions=hx(this),this.config.always&&(this.always=Pb(this.config.always).map(F=>mx(this,``,F))),Object.keys(this.states).forEach(F=>{this.states[F]._initialize()})}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(AS),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map(F=>`#${F.id}`),source:`#${this.id}`,actions:this.initial.actions.map(AS),eventType:null})}:void 0,history:this.history,states:Ob(this.states,F=>F.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(F=>({...F,actions:F.actions.map(AS)})),entry:this.entry.map(AS),exit:this.exit.map(AS),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return OS(this,`invoke`,()=>Ab(this.config.invoke).map((F,I)=>{let{src:L,systemId:R}=F,z=F.id??Lb(this.id,I),De=typeof L==`string`?L:`xstate.invoke.${Lb(this.id,I)}`;return{...F,src:De,id:z,systemId:R,toJSON(){let{onDone:I,onError:L,...R}=F;return{...R,type:`xstate.invoke`,src:De,id:z}}}}))}get on(){return OS(this,`on`,()=>[...this.transitions].flatMap(([F,I])=>I.map(I=>[F,I])).reduce((F,[I,L])=>(F[I]=F[I]||[],F[I].push(L),F),{}))}get after(){return OS(this,`delayedTransitions`,()=>px(this))}get initial(){return OS(this,`initial`,()=>gx(this,this.config.initial))}next(F,I){let L=I.type,R=[],z,De=OS(this,`candidates-${L}`,()=>fx(this,L));for(let Oe of De){let{guard:De}=Oe,ke=F.context,Ae=!1;try{Ae=!De||nx(De,ke,I,F)}catch(F){let I=typeof De==`string`?De:typeof De==`object`?De.type:void 0;throw Error(`Unable to evaluate guard ${I?`'${I}' `:``}in transition for event '${L}' in state node '${this.id}':\n${F.message}`)}if(Ae){R.push(...Oe.actions),z=Oe;break}}return z?[z]:void 0}get events(){return OS(this,`events`,()=>{let{states:F}=this,I=new Set(this.ownEvents);if(F)for(let L of Object.keys(F)){let R=F[L];if(R.states)for(let F of R.events)I.add(`${F}`)}return Array.from(I)})}get ownEvents(){let F=new Set([...this.transitions.keys()].filter(F=>this.transitions.get(F).some(F=>!(!F.target&&!F.actions.length&&!F.reenter))));return Array.from(F)}},MS=class F{constructor(F,I){this.config=F,this.version=void 0,this.schemas=void 0,this.implementations=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.id=F.id||`(machine)`,this.implementations={actors:I?.actors??{},actions:I?.actions??{},delays:I?.delays??{},guards:I?.guards??{}},this.version=this.config.version,this.schemas=this.config.schemas,this.transition=this.transition.bind(this),this.getInitialSnapshot=this.getInitialSnapshot.bind(this),this.getPersistedSnapshot=this.getPersistedSnapshot.bind(this),this.restoreSnapshot=this.restoreSnapshot.bind(this),this.start=this.start.bind(this),this.root=new jS(F,{_key:this.id,_machine:this}),this.root._initialize(),this.states=this.root.states,this.events=this.root.events}provide(I){let{actions:L,guards:R,actors:z,delays:De}=this.implementations;return new F(this.config,{actions:{...L,...I.actions},guards:{...R,...I.guards},actors:{...z,...I.actors},delays:{...De,...I.delays}})}resolveState(F){let I=$x(this.root,F.value),L=ox(wx(this.root,I));return oS({_nodes:[...L],context:F.context||{},children:{},status:ux(L,this.root)?`done`:F.status||`active`,output:F.output,error:F.error,historyValue:F.historyValue},this)}transition(F,I,L){return Yx(F,I,L,[]).snapshot}microstep(F,I,L){return Yx(F,I,L,[]).microstates}getTransitionData(F,I){return Ox(this.root,F.value,F,I)||[]}getPreInitialState(F,I,L){let{context:R}=this.config,z=oS({context:typeof R!=`function`&&R?R:{},_nodes:[this.root],children:{},status:`active`},this);return typeof R==`function`?Jx(z,I,F,[hS(({spawn:F,event:I,self:L})=>R({spawn:F,input:I.input,self:L}))],L,void 0):z}getInitialSnapshot(F,I){let L=xb(I),R=[],z=this.getPreInitialState(F,L,R),{snapshot:De}=Yx(Rx([{target:[...xx(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],z,F,L,!0,R),L,F,R);return De}start(F){Object.values(F.children).forEach(F=>{F.getSnapshot().status===`active`&&F.start()})}getStateNodeById(F){let I=Tb(F),L=I.slice(1),R=dx(I[0])?I[0].slice(1):I[0],z=this.idMap.get(R);if(!z)throw Error(`Child state node '#${R}' does not exist on machine '${this.id}'`);return Cx(z,L)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(F,I){return cS(F,I)}restoreSnapshot(F,I){let L={},R=F.children;Object.keys(R).forEach(F=>{let z=R[F],De=z.snapshot,Oe=z.src,ke=typeof Oe==`string`?Rb(this,Oe):Oe;ke&&(L[F]=Kb(ke,{id:F,parent:I.self,syncSnapshot:z.syncSnapshot,snapshot:De,src:Oe,systemId:z.systemId}))});let z=oS({...F,children:L,_nodes:Array.from(ox(wx(this.root,F.value)))},this),De=new Set;function Oe(F,I){if(!De.has(F)){De.add(F);for(let L in F){let R=F[L];if(R&&typeof R==`object`){if(`xstate$$type`in R&&R.xstate$$type===1){F[L]=I[R.id];continue}Oe(R,I)}}}}return Oe(z.context,L),z}};function NS(F,I){return new MS(F,I)}function PS({schemas:F,actors:I,actions:L,guards:R,delays:z}){return{createMachine:De=>NS({...De,schemas:F},{actors:I,actions:L,guards:R,delays:z})}}var FS=(F,I)=>{I(F);let L=F.getSnapshot().children;L&&Object.values(L).forEach(F=>{FS(F,I)})};function IS(F){let I=[];FS(F,F=>{I.push([F,F.getSnapshot()]),F.observers=new Set});let L=F.system.getSnapshot?.();F.stop(),F.system._snapshot=L,I.forEach(([F,I])=>{F._processingStatus=0,F._snapshot=I})}function LS(F,...[I]){let[[L,R],z]=(0,import_react$10.useState)(()=>{let L=Kb(F,I);return[F.config,L]});if(F.config!==L){let L=Kb(F,{...I,snapshot:R.getPersistedSnapshot({__unsafeAllowInlineActors:!0})});z([F.config,L]),R=L}return sb(()=>{R.logic.implementations=F.implementations}),R}function RS(F,...[I,L]){let R=LS(F,I);return(0,import_react$10.useEffect)(()=>{if(!L)return;let F=R.subscribe(Ib(L));return()=>{F.unsubscribe()}},[L]),(0,import_react$10.useEffect)(()=>(R.start(),()=>{IS(R)}),[R]),R}function zS(F,I){return F===I}function BS(F,I,L=zS){let R=(0,import_react$10.useCallback)(I=>{if(!F)return()=>{};let{unsubscribe:L}=F.subscribe(I);return L},[F]),z=(0,import_react$10.useCallback)(()=>F?.getSnapshot(),[F]);return(0,import_with_selector.useSyncExternalStoreWithSelector)(R,z,z,I,L)}function VS(F,I){let L=import_react$10.createContext(null),R=L.Provider;function z({children:L,logic:z=F,machine:De,options:Oe}){if(De)throw Error(`The "machine" prop has been deprecated. Please use "logic" instead.`);let ke=RS(z,{...I,...Oe});return import_react$10.createElement(R,{value:ke,children:L})}z.displayName=`ActorProvider`;function De(){let F=import_react$10.useContext(L);if(!F)throw Error(`You used a hook from "${z.displayName}" but it's not inside a <${z.displayName}> component.`);return F}function Oe(F,I){return BS(De(),F,I)}return{Provider:z,useActorRef:De,useSelector:Oe}}var HS=()=>({botState:{cropCardIndicesToHarvest:[],cropsToPlayDuringTurn:0,fieldCropIndicesToWaterDuringTurn:[],toolCardsThatCanBePlayed:0},match:We.buildMatch({cardsToDrawAtTurnStart:1,eventCardsThatCanBePlayed:1,selectedWaterCardInHandIdx:-1,winner:null}),shell:{triggerNotification:()=>{}}}),US=new class{getNumberOfCropCardsToPlay(F,I,{minimumCropsToPlay:L=0}={}){let R=P.getPlayer(F,I),z=P.findCropIndexesInPlayerHand(F,I),De=Math.max(L,B$1.chooseIntegerBetween(0,z.length)),Oe=6-R.field.cards.filter(F=>!!F).length;return Math.min(Oe,De,z.length)}getNumberOfEventCardsToPlay(F,I){return+(P.findEventIndexesInPlayerHand(F,I).length>0)}getNumberOfToolCardsToPlay(F,I){let L=P.findToolIndexesInPlayerHand(F,I);return B$1.chooseIntegerBetween(0,L.length)}getEventCardIndexToPlay(F,I){let L=P.findEventIndexesInPlayerHand(F,I);return B$1.chooseElement(L)}getToolCardIndexToPlay(F,I){let L=P.findToolIndexesInPlayerHand(F,I);return B$1.chooseElement(L)}getCropCardIndicesToWater(F,I){let{field:{cards:L},hand:R}=P.getPlayer(F,I),z=[],{length:De}=R.filter(F=>p(F));for(let F=0;F<L.length&&z.length!==De;F++){let I=L[F];J$1(I)&&I.waterCards<I.instance.waterToMature&&I.wasWateredDuringTurn===!1&&(z=[...z,F])}return z}getCropCardIndicesToHarvest(F,I){let{field:{cards:L}}=P.getPlayer(F,I),R=[];for(let F=0;F<L.length;F++){let I=L[F];J$1(I)&&I.waterCards>=I.instance.waterToMature&&(R=[...R,F])}return R}getOpenFieldPosition(F,I){let{field:L}=P.getPlayer(F,I),{cards:R}=L,z=[];for(let F=0;F<Math.max(6,R.length);F++)R[F]===void 0&&(z=[...z,F]);return B$1.chooseElement(z)}},WS=(F,I,L)=>{let R=P.getPlayer(F,I),z=[...L,...R.cardsPlayedDuringTurn];return F=L$1(F,I,{cardsPlayedDuringTurn:z}),F},GS=(F,I)=>{let L=(I,L)=>{let R=P.getPlayer(F,I).hand[L];return N(R),WS(F,I,[R])};switch(I.type){case g.SELECT_CARD_POSITION:{let{currentPlayerId:R}=F;N(R),F=L(R,I.cardIdxInHand);break}case g.PLAY_EVENT:case g.PLAY_TOOL:case g.PLAY_WATER:{let{currentPlayerId:R}=F;N(R);let z=P.getPlayer(F,R).hand[I.cardIdxInHand];if(N(z),h(z)&&z.isPlantable)break;F=L(R,I.cardIdxInHand);break}default:}return F},KS={[v.CHOOSING_CARD_POSITION]:{on:{[g.SELECT_CARD_POSITION]:v.PLANTING_CARD,[g.OPERATION_ABORTED]:[{guard:y.IS_SETUP_PHASE,target:v.WAITING_FOR_PLAYER_SETUP_ACTION},{target:v.WAITING_FOR_PLAYER_TURN_ACTION}]},entry:$(({event:F,enqueue:I,context:{match:L}})=>{switch(F.type){case g.PLAY_PLANTABLE_TOOL:{let{currentPlayerId:R,sessionOwnerPlayerId:z}=L,{playerId:De,cardIdxInHand:Oe}=F;if(N(R),R!==z){let F=US.getOpenFieldPosition(L,R);N(F),I.raise({type:g.SELECT_CARD_POSITION,cardIdxInHand:Oe,fieldIdxToPlace:F,playerId:De})}break}}I.assign({match:L})}),exit:$(({event:F,enqueue:I,context:{match:L}})=>{switch(F.type){case g.SELECT_CARD_POSITION:L=GS(L,F);break}I.assign({match:L})})}},qS={[v.GAME_OVER]:{on:{[g.INIT]:{actions:$(({event:F,enqueue:I})=>{ES(F,g.INIT);let{playerSeeds:L,userPlayerId:R}=F,z=We.buildMatchForSession(L,R),De=HS();I.assign({...De,match:z}),I.raise({type:g.PROMPT_PLAYER_FOR_SETUP_ACTION})})},[g.PROMPT_PLAYER_FOR_SETUP_ACTION]:v.WAITING_FOR_PLAYER_SETUP_ACTION},entry:$(({event:F,enqueue:I,context:{match:L}})=>{ES(F,g.PLAYER_RAN_OUT_OF_FUNDS);let R=Object.keys(L.table.players).find(I=>I!==F.playerId);if(R===void 0)throw new j(`Winner could not be determined`);I.assign({match:{...L,winner:R}})})}},JS=F=>{let I=P.playerIds(F),L=P.nextPlayerIndex(F);return F=F$1(F,{currentPlayerId:I[L]}),F},YS=new class{removeAt(F,I){if(I>=F.length)throw Error(`removeAt: Index ${I} out of bounds`);return F.filter((F,L)=>L!==I)}replaceAt(F,I,L){let R=F.slice(0,I),z=F.slice(I+1);return[...Array.from({length:I},(F,I)=>R[I]),L,...z]}},XS=(F,I,L,R)=>{let{field:z}=P.getPlayer(F,I),{cards:De}=z;if(P.fullPlots(F,I).length>=6)throw new se(I);if(R===-1)throw new oe(`fieldIdxToPlace must not be -1`);return De=YS.replaceAt(De,R,L),F=R$1(F,I,{cards:De}),F},ZS=(F,I,L,R)=>{let{hand:z}=P.getPlayer(F,I),De=z[L];if(!De)throw new M(L,I);let Oe=YS.removeAt(z,L),ke;if(q$1(De))ke={instance:De,wasWateredDuringTurn:!1,waterCards:0};else if(h(De))ke={instance:De};else throw new ce(`${De.id} is not a plantable card.`);return F=XS(F,I,ke,R),F=L$1(F,I,{hand:Oe}),F},QS={[v.PERFORMING_BOT_SETUP_ACTION]:{on:{[g.START_TURN]:{target:v.WAITING_FOR_PLAYER_TURN_ACTION,guard:y.IS_SETUP_PHASE},[g.PROMPT_BOT_FOR_SETUP_ACTION]:{actions:$(({event:F,context:{match:I,botState:L,botState:{cropsToPlayDuringTurn:R}},enqueue:z})=>{ES(F,g.PROMPT_BOT_FOR_SETUP_ACTION);let{currentPlayerId:De}=I;if(N(De),P.getPlayer(I,De).field.cards.length>0&&R===0)z.raise({type:g.START_TURN});else{R===0&&(R=US.getNumberOfCropCardsToPlay(I,De,{minimumCropsToPlay:1}));let F=P.findCropIndexesInPlayerHand(I,De),L=B$1.chooseElement(F);if(L===void 0)throw new j(`Expected crops in hand but none were found for bot player ${De}`);z.raise({type:g.PLAY_CROP,playerId:De,cardIdxInHand:L},{delay:750})}z.assign({match:I,botState:{...L,cropsToPlayDuringTurn:R}})})},[g.PLAY_CROP]:{actions:$(({event:F,context:{match:I},enqueue:L})=>{ES(F,g.PLAY_CROP);let{cardIdxInHand:R}=F,{currentPlayerId:z}=I;N(z),I=GS(I,F);let De=US.getOpenFieldPosition(I,z);if(De===void 0)throw new oe(`${g.PLAY_CROP} event occurred for a full field`);L.raise({type:g.SELECT_CARD_POSITION,playerId:z,cardIdxInHand:R,fieldIdxToPlace:De}),L.assign({match:I})})},[g.SELECT_CARD_POSITION]:{actions:$(({event:F,context:{match:I,botState:L,botState:{cropsToPlayDuringTurn:R}},enqueue:z})=>{ES(F,g.SELECT_CARD_POSITION);let{cardIdxInHand:De,playerId:Oe,fieldIdxToPlace:ke}=F,{currentPlayerId:Ae}=I;N(Ae),I=GS(I,F),I=ZS(I,Oe,De,ke),R--,z.raise({type:g.PROMPT_BOT_FOR_SETUP_ACTION}),z.assign({match:I,botState:{...L,cropsToPlayDuringTurn:R}})})}},entry:$(({context:{match:F},enqueue:I})=>{let{currentPlayerId:L}=F;N(L),F=JS(F),I.raise({type:g.PROMPT_BOT_FOR_SETUP_ACTION}),I.assign({match:F})})}},$S=new class{constructor(){this.getCropBaseValue=F=>F.waterToMature*2,this.getCropSaleValue=(F,I)=>{let L=this.getCropBaseValue(I);return I.id===F.buffedCrop?.crop.id&&(L*=F.buffedCrop.multiplier),I.id===F.nerfedCrop?.crop.id&&(L*=F.nerfedCrop.multiplier),L=Math.floor(L),Math.min(L,F.table.communityFund)}}},eC=(F,I)=>{let{communityFund:L}=F.table,R=Math.max(0,L+I);return F=I$1(F,{communityFund:R}),F},tC=(F,I,L)=>{let{funds:R}=P.getPlayer(F,I),z=Math.max(0,R+L);return F=L$1(F,I,{funds:z}),F},nC=(F,I,L)=>{let R=[L,...P.getPlayer(F,I).discardPile];return F=L$1(F,I,{discardPile:R}),F},rC=(F,I,L)=>{let{field:R}=P.getPlayer(F,I),z=R.cards[L];if(!z)throw new M(L,I);let{cards:De}=R;return De=YS.replaceAt(De,L,void 0),F=R$1(F,I,{cards:De}),F=nC(F,I,z.instance),F},iC=(F,I,L)=>{let R=P.getPlayedCardFromField(F,I,L);ge(R);let z=$S.getCropSaleValue(F,R.instance);return F=tC(F,I,z),F=eC(F,-z),F=rC(F,I,L),F},aC=(F,I,L)=>{let{hand:R}=P.getPlayer(F,I),z=R[L];if(!z)throw new M(L,I);let De=YS.removeAt(R,L);return F=L$1(F,I,{hand:De}),F=nC(F,I,z),F},oC=u(s(((F,I)=>{var L=NaN,R=`[object Symbol]`,z=/^\s+|\s+$/g,De=/^[-+]0x[0-9a-f]+$/i,Oe=/^0b[01]+$/i,ke=/^0o[0-7]+$/i,Ae=parseInt,je=Object.prototype.toString;function Me(F,I,L){return F===F&&(L!==void 0&&(F=F<=L?F:L),I!==void 0&&(F=F>=I?F:I)),F}function Ne(F){var I=typeof F;return!!F&&(I==`object`||I==`function`)}function Pe(F){return!!F&&typeof F==`object`}function Fe(F){return typeof F==`symbol`||Pe(F)&&je.call(F)==`[object Symbol]`}function Ie(F){if(typeof F==`number`)return F;if(Fe(F))return L;if(Ne(F)){var I=typeof F.valueOf==`function`?F.valueOf():F;F=Ne(I)?I+``:I}if(typeof F!=`string`)return F===0?F:+F;F=F.replace(z,``);var R=Oe.test(F);return R||ke.test(F)?Ae(F.slice(2),R?2:8):De.test(F)?L:+F}function Le(F,I,L){return L===void 0&&(L=I,I=void 0),L!==void 0&&(L=Ie(L),L=L===L?L:0),I!==void 0&&(I=Ie(I),I=I===I?I:0),Me(Ie(F),I,L)}I.exports=Le}))()),sC=(F,I,L)=>{let{funds:R}=P.getPlayer(F,L),{communityFund:z}=F.table,De=(0,oC.default)(I,-z,R);return F=tC(F,L,-De),F=eC(F,De),F},cC=F=>{let I=Object.values(F.table.players).reduce((F,I)=>[...F,...I.deck,...I.hand,...I.discardPile,...I.field.cards.filter(F=>F!==void 0).map(F=>F.instance)],[]),L=new Set(I.filter(q$1).map(F=>F.id)),R=Object.values(ie).filter(F=>L.has(F.id)),[z,De]=B$1.shuffle(R);return F=F$1(F,{buffedCrop:z?{crop:z,multiplier:2}:null,nerfedCrop:De?{crop:De,multiplier:.5}:null}),F},lC=(F,I,L=1)=>{if(F=F$1(F,{turn:F.turn+1}),F=L$1(F,I,{cardsPlayedDuringTurn:[]}),F=sC(F,5,I),P.getPlayer(F,I).funds===0)throw new ae(I);F=V$1(F,I,L);let R=P.getPlayer(F,I).field.cards;for(let L=0;L<R.length;L++){let z=R[L];J$1(z)&&(F=De$1(F,I,L,{wasWateredDuringTurn:!1}))}return F=cC(F),F},uC=F=>I=>{try{return F(I)}catch(F){if(F instanceof ae){let{enqueue:L}=I;L.raise({type:g.PLAYER_RAN_OUT_OF_FUNDS,playerId:F.playerId})}else throw console.error(F),new j(`Unexpected bot logic error`)}},dC={[v.PERFORMING_BOT_TURN_ACTION]:{initial:_.INITIALIZING,exit:$(({event:F,context:{botState:I,match:L},enqueue:R})=>{L=GS(L,F);let{currentBotTurnPhase:z}=I;switch(F.type){case g.SELECT_CARD_POSITION:z=_.PLAYING_CROPS;break;case g.PLAY_EVENT:z=_.PLAYING_EVENTS;break;case g.PLAY_TOOL:z=_.PLAYING_TOOLS;break;default:}R.assign({match:L,botState:{...I,currentBotTurnPhase:z}})}),on:{[g.PLAYER_RAN_OUT_OF_FUNDS]:v.GAME_OVER,[g.SELECT_CARD_POSITION]:v.PLANTING_CARD,[g.PLAY_EVENT]:v.PLAYING_EVENT,[g.PLAY_TOOL]:v.PLAYING_TOOL,[g.START_TURN]:v.WAITING_FOR_PLAYER_TURN_ACTION},states:{[_.INITIALIZING]:{on:{[g.BOT_TURN_INITIALIZED]:[{guard:y.IS_BOT_PHASE_PLAYING_EVENTS,target:_.PLAYING_EVENTS},{guard:y.IS_BOT_PHASE_PLAYING_TOOLS,target:_.PLAYING_TOOLS},{target:_.PLAYING_CROPS}]},entry:$(uC(({event:F,context:I,context:{botState:L,match:R},enqueue:z})=>{switch(F.type){case g.START_TURN:{let F=R;R=JS(R);let{currentPlayerId:z}=R;N(z);let De=F.table.players[z];if(De)for(let F of De.cardsPlayedDuringTurn)h(F)&&F.onStartFollowingTurn&&(R=F.onStartFollowingTurn({...I,match:R}).match);R=lC(R,z,R.cardsToDrawAtTurnStart),I=SC.applyDailyEffects({...I,match:R}),R=I.match,R={...R,eventCardsThatCanBePlayed:US.getNumberOfEventCardsToPlay(R,z)},L={...L,cropsToPlayDuringTurn:US.getNumberOfCropCardsToPlay(R,z),currentBotTurnPhase:void 0,toolCardsThatCanBePlayed:US.getNumberOfToolCardsToPlay(R,z)};break}default:}z.assign({botState:L,match:R}),z.raise({type:g.BOT_TURN_INITIALIZED})}))},[_.PLAYING_CROPS]:{on:{[g.PLAY_CROP]:_.PLACING_CROP,[g.BOT_TURN_PHASE_COMPLETE]:_.WATERING_CROPS},entry:$(uC(({context:{botState:{cropsToPlayDuringTurn:F},match:I},enqueue:L})=>{if(F>0){let{currentPlayerId:F}=I;N(F);let R=P.findCropIndexesInPlayerHand(I,F),z=B$1.chooseElement(R);if(z===void 0)throw new j(`areCropsToPlay is true but there are no crops in the hand of bot player ${F}`);L.raise({type:g.PLAY_CROP,playerId:F,cardIdxInHand:z},{delay:750})}else L.raise({type:g.BOT_TURN_PHASE_COMPLETE})}))},[_.PLACING_CROP]:{on:{[g.BOT_TURN_PHASE_COMPLETE]:_.PLAYING_CROPS},entry:$(uC(({context:{botState:F,match:I},enqueue:L})=>{let{cropsToPlayDuringTurn:R}=F;if(R>0){let{currentPlayerId:F}=I;N(F);let R=P.findCropIndexesInPlayerHand(I,F),z=B$1.chooseElement(R);if(z===void 0)throw new j(`areCropsToPlay is true but there are no crops in the hand of bot player ${F}`);let De=US.getOpenFieldPosition(I,F);if(De===void 0)throw new oe(`${g.BOT_TURN_PHASE_COMPLETE} event occurred for a full field`);L.raise({type:g.SELECT_CARD_POSITION,playerId:F,cardIdxInHand:z,fieldIdxToPlace:De},{delay:750})}else L.raise({type:g.BOT_TURN_PHASE_COMPLETE})}))},[_.WATERING_CROPS]:{on:{[g.PLAY_WATER]:_.WATERING_CROP,[g.BOT_TURN_PHASE_COMPLETE]:_.PLAYING_EVENTS},entry:$(uC(({context:{botState:F,match:I},enqueue:L})=>{let{currentPlayerId:R}=I;N(R);let z=US.getCropCardIndicesToWater(I,R);if(z.length>0){let F=P.findWaterIndexesInPlayerHand(I,R);F[0]!==void 0&&L.raise({type:g.PLAY_WATER,cardIdxInHand:F[0],playerId:R},{delay:750})}else L.raise({type:g.BOT_TURN_PHASE_COMPLETE});L.assign({botState:{...F,fieldCropIndicesToWaterDuringTurn:z}})}))},[_.WATERING_CROP]:{on:{[g.BOT_TURN_PHASE_COMPLETE]:_.WATERING_CROPS},entry:$(({event:F,context:{match:I,botState:{fieldCropIndicesToWaterDuringTurn:L},shell:{triggerNotification:R}},enqueue:z})=>{I=GS(I,F);let{currentPlayerId:De}=I;N(De);let Oe=P.getPlayer(I,De),ke=Oe.hand.findIndex(F=>p(F)),[Ae]=L;N(Ae,`fieldCropIndicesToWaterDuringTurn is empty in ${_.WATERING_CROP}`);let je=Oe.field.cards[Ae];ge(je);let Me={...je,wasWateredDuringTurn:!0,waterCards:je.waterCards+1};I=De$1(I,De,Ae,Me),I=aC(I,De,ke),R({type:b.CROP_WATERED,payload:{cropWatered:je.instance}}),z.raise({type:g.BOT_TURN_PHASE_COMPLETE}),z.assign({match:I})})},[_.PLAYING_EVENTS]:{on:{[g.BOT_TURN_PHASE_COMPLETE]:_.PLAYING_TOOLS},entry:$(uC(({context:{match:F},enqueue:I})=>{if(F.eventCardsThatCanBePlayed>0){let{currentPlayerId:L}=F;N(L);let R=US.getEventCardIndexToPlay(F,L);if(R===void 0)throw new j(`areEventCardsToPlay is true but there are no events in the hand of bot player ${L}`);I.raise({type:g.PLAY_EVENT,cardIdxInHand:R,playerId:L},{delay:750})}else I.raise({type:g.BOT_TURN_PHASE_COMPLETE})}))},[_.PLAYING_TOOLS]:{on:{[g.BOT_TURN_PHASE_COMPLETE]:_.HARVESTING_CROPS},entry:$(uC(({context:{botState:F,match:I},enqueue:L})=>{if(F.toolCardsThatCanBePlayed>0){let{currentPlayerId:F}=I;N(F);let R=US.getToolCardIndexToPlay(I,F);if(R===void 0)throw new j(`areToolsToPlay is true but there are no tools in the hand of bot player ${F}`);let z=I.table.players[F]?.hand[R];N(z,`toolCardInstance is undefined`),de(z.id);let De=W$1[z.id],Oe=De.isPlantable&&P.fullPlots(I,F).length<6;if(!De.isPlantable||Oe){L.raise({type:g.PLAY_TOOL,cardIdxInHand:R,playerId:F},{delay:750});return}}L.raise({type:g.BOT_TURN_PHASE_COMPLETE})}))},[_.HARVESTING_CROPS]:{on:{[g.HARVEST_CROP]:_.HARVESTING_CROP,[g.BOT_TURN_PHASE_COMPLETE]:_.DONE},entry:$(uC(({context:{botState:F,match:I},enqueue:L})=>{let{currentPlayerId:R}=I;N(R);let z=US.getCropCardIndicesToHarvest(I,R);z.length>0?z[0]!==void 0&&L.raise({type:g.HARVEST_CROP,playerId:R,cropIdxInFieldToHarvest:z[0]},{delay:750}):L.raise({type:g.BOT_TURN_PHASE_COMPLETE}),L.assign({botState:{...F,cropCardIndicesToHarvest:z}})}))},[_.HARVESTING_CROP]:{on:{[g.BOT_TURN_PHASE_COMPLETE]:_.HARVESTING_CROPS},entry:$(({context:{match:F,botState:{cropCardIndicesToHarvest:[I]},shell:{triggerNotification:L}},enqueue:R})=>{let{currentPlayerId:z}=F;if(N(z),I!==void 0){let R=P.getPlayer(F,z).field.cards[I];ge(R),F=iC(F,z,I),L({type:b.CROP_HARVESTED,payload:{cropHarvested:R.instance}})}R.raise({type:g.BOT_TURN_PHASE_COMPLETE}),R.assign({match:F})})},[_.DONE]:{entry:$(({enqueue:F})=>{F.raise({type:g.START_TURN})}),type:`final`}}}},fC={[v.PLANTING_CARD]:{on:{[g.PROMPT_PLAYER_FOR_TURN_ACTION]:[{guard:y.IS_SETUP_PHASE,target:v.WAITING_FOR_PLAYER_SETUP_ACTION},{target:v.WAITING_FOR_PLAYER_TURN_ACTION}],[g.PROMPT_BOT_FOR_TURN_ACTION]:v.PERFORMING_BOT_TURN_ACTION,[g.OPERATION_ABORTED]:v.WAITING_FOR_PLAYER_TURN_ACTION},entry:$(({event:F,context:{botState:I,botState:{cropsToPlayDuringTurn:L,toolCardsThatCanBePlayed:R},match:z,shell:{triggerNotification:De}},enqueue:Oe})=>{ES(F,g.SELECT_CARD_POSITION);let{playerId:ke,cardIdxInHand:Ae,fieldIdxToPlace:je}=F;try{let F=P.getCardInstanceFromHand(z,ke,Ae);z=ZS(z,ke,Ae,je);let{currentPlayerId:I,sessionOwnerPlayerId:Me}=z;if(I===Me)h(F)&&De({type:b.TOOL_CARD_PLAYED,payload:{toolCard:F}}),Oe.raise({type:g.PROMPT_PLAYER_FOR_TURN_ACTION});else{switch(F.type){case f.CROP:L>0&&L--;break;case f.TOOL:R>0&&R--}Oe.raise({type:g.PROMPT_BOT_FOR_TURN_ACTION})}}catch(F){console.error(F),Oe.raise({type:g.OPERATION_ABORTED});return}Oe.assign({match:z,botState:{...I,cropsToPlayDuringTurn:L,toolCardsThatCanBePlayed:R}})}),exit:$(({event:F,context:I,enqueue:L})=>{let{match:R}=I;switch(F.type){case g.OPERATION_ABORTED:R={...R,selectedWaterCardInHandIdx:-1};break;default:}L.assign({match:R})})}},pC={[v.PLAYER_WATERING_CROP]:{on:{[g.SELECT_CROP_TO_WATER]:{target:v.WAITING_FOR_PLAYER_TURN_ACTION,guard:y.IS_SELECTED_IDX_VALID},[g.OPERATION_ABORTED]:v.WAITING_FOR_PLAYER_TURN_ACTION},entry:$(({event:F,context:{match:I},enqueue:L})=>{switch(F.type){case g.PLAY_WATER:{let{cardIdxInHand:L}=F;I={...I,selectedWaterCardInHandIdx:L};break}default:}L.assign({match:I})}),exit:$(({event:F,context:{match:I,shell:{triggerNotification:L}},enqueue:R})=>{let{selectedWaterCardInHandIdx:z}=I;switch(F.type){case g.SELECT_CROP_TO_WATER:{let{playerId:R,waterCardInHandIdx:De,cropIdxInFieldToWater:Oe}=F,ke=P.getPlayer(I,R).field.cards[Oe];ge(ke);let Ae={...ke,wasWateredDuringTurn:!0,waterCards:ke.waterCards+1};I=De$1(I,R,Oe,Ae),I=aC(I,R,De),z=-1,L({type:b.CROP_WATERED,payload:{cropWatered:ke.instance}});break}case g.OPERATION_ABORTED:z=-1;break;default:}R.assign({match:{...I,selectedWaterCardInHandIdx:z}})})}},mC={[v.PLAYING_EVENT]:{on:{[g.PROMPT_PLAYER_FOR_TURN_ACTION]:v.WAITING_FOR_PLAYER_TURN_ACTION,[g.PROMPT_BOT_FOR_TURN_ACTION]:v.PERFORMING_BOT_TURN_ACTION},entry:$(({event:F,context:I,context:{match:L,shell:{triggerNotification:R}},enqueue:z})=>{ES(F,g.PLAY_EVENT);let{currentPlayerId:De,sessionOwnerPlayerId:Oe}=L,{playerId:ke,cardIdxInHand:Ae}=F,je=P.getCardInstanceFromHand(L,ke,Ae);fe(je),N(De),R({type:b.EVENT_CARD_PLAYED,payload:{eventCard:je}}),L=je.applyEffect(I).match,L=aC(L,De,Ae),De===Oe?z.raise({type:g.PROMPT_PLAYER_FOR_TURN_ACTION}):z.raise({type:g.PROMPT_BOT_FOR_TURN_ACTION}),L={...L,eventCardsThatCanBePlayed:L.eventCardsThatCanBePlayed-1},z.assign({...I,match:L})})}},hC={[v.PLAYING_TOOL]:{on:{[g.PROMPT_PLAYER_FOR_TURN_ACTION]:v.WAITING_FOR_PLAYER_TURN_ACTION,[g.PROMPT_BOT_FOR_TURN_ACTION]:v.PERFORMING_BOT_TURN_ACTION,[g.PLAY_PLANTABLE_TOOL]:v.CHOOSING_CARD_POSITION},entry:$(({event:F,context:I,context:{botState:L,match:R,shell:{triggerNotification:z}},enqueue:De})=>{ES(F,g.PLAY_TOOL);let{currentPlayerId:Oe,sessionOwnerPlayerId:ke}=R,{playerId:Ae,cardIdxInHand:je}=F,Me=P.getCardInstanceFromHand(R,Ae,je);pe(Me),N(Oe),(!Me.isPlantable||Oe!==ke)&&z({type:b.TOOL_CARD_PLAYED,payload:{toolCard:Me}}),R=Me.applyEffect?.(I).match??R,Me.isPlantable?De.raise({type:g.PLAY_PLANTABLE_TOOL,cardIdxInHand:je,playerId:Oe}):(R=aC(R,Oe,je),Oe===ke?De.raise({type:g.PROMPT_PLAYER_FOR_TURN_ACTION}):(De.raise({type:g.PROMPT_BOT_FOR_TURN_ACTION}),L={...L,toolCardsThatCanBePlayed:L.toolCardsThatCanBePlayed-1})),De.assign({match:R,botState:L})})}},gC={[v.UNINITIALIZED]:{on:{[g.INIT]:{actions:$(({event:F,enqueue:I})=>{ES(F,g.INIT);let{playerSeeds:L,userPlayerId:R}=F,z=We.buildMatchForSession(L,R);I.assign({match:z}),I.raise({type:g.PROMPT_PLAYER_FOR_SETUP_ACTION})})},[g.RESUME]:{actions:$(({event:F,enqueue:I})=>{ES(F,g.RESUME);let{match:L,botState:R,matchState:z,userPlayerId:De}=F;I.assign({match:{...L,sessionOwnerPlayerId:De},botState:R}),z===v.WAITING_FOR_PLAYER_SETUP_ACTION?I.raise({type:g.PROMPT_PLAYER_FOR_SETUP_ACTION}):I.raise({type:g.PROMPT_PLAYER_FOR_TURN_ACTION})})},[g.PROMPT_PLAYER_FOR_SETUP_ACTION]:v.WAITING_FOR_PLAYER_SETUP_ACTION,[g.PROMPT_PLAYER_FOR_TURN_ACTION]:v.WAITING_FOR_PLAYER_TURN_ACTION}}},_C={[v.WAITING_FOR_PLAYER_SETUP_ACTION]:{on:{[g.PROMPT_BOT_FOR_SETUP_ACTION]:v.PERFORMING_BOT_SETUP_ACTION,[g.PLAY_CROP]:v.CHOOSING_CARD_POSITION}}},vC=(F,I,L=1/0)=>{let R=P.getPlayer(F,I).cardsPlayedDuringTurn.slice(L);return F=L$1(F,I,{cardsPlayedDuringTurn:R}),F},yC={[v.WAITING_FOR_PLAYER_TURN_ACTION]:{on:{[g.PLAYER_RAN_OUT_OF_FUNDS]:v.GAME_OVER,[g.PLAY_CROP]:v.CHOOSING_CARD_POSITION,[g.PLAY_EVENT]:v.PLAYING_EVENT,[g.PLAY_WATER]:v.PLAYER_WATERING_CROP,[g.PLAY_TOOL]:v.PLAYING_TOOL,[g.START_TURN]:v.PERFORMING_BOT_TURN_ACTION,[g.HARVEST_CROP]:{actions:$(({event:F,enqueue:I,context:{match:L,shell:{triggerNotification:R}}})=>{let{playerId:z,cropIdxInFieldToHarvest:De}=F,Oe=P.getPlayedCardFromField(L,z,De);ge(Oe),L=iC(L,z,De),R({type:b.CROP_HARVESTED,payload:{cropHarvested:Oe.instance}}),I.assign({match:L})})},[g.DISCARD_CARD_FROM_FIELD]:{actions:$(({event:F,enqueue:I,context:{match:L,shell:{triggerNotification:R}}})=>{let{playerId:z,cardIdxInField:De}=F,Oe=P.getPlayedCardFromField(L,z,De);L=rC(L,z,De),R({type:b.CARD_DISCARDED,payload:{cardDiscarded:Oe.instance}}),I.assign({match:L})})}},entry:$(({event:F,context:I,context:{match:L},enqueue:R})=>{try{switch(F.type){case g.START_TURN:{L={...L,cardsToDrawAtTurnStart:1};let F=L;L=JS(L);let{currentPlayerId:R}=L;N(R);let z=P.getPlayer(F,R);for(let F of z.cardsPlayedDuringTurn)h(F)&&F.onStartFollowingTurn&&(L=F.onStartFollowingTurn({...I,match:L}).match);L={...L,eventCardsThatCanBePlayed:1},L=lC(L,R,L.cardsToDrawAtTurnStart),I=SC.applyDailyEffects({...I,match:L}),L=I.match;break}case g.OPERATION_ABORTED:{let{currentPlayerId:F}=L;N(F),L=vC(L,F,1);break}default:}}catch(F){if(F instanceof ae){let{currentPlayerId:F}=L;N(F),R.raise({type:g.PLAYER_RAN_OUT_OF_FUNDS,playerId:F})}else console.error(F)}R.assign({...I,match:L})}),exit:$(({event:F,context:{match:I},enqueue:L})=>{I=GS(I,F),L.assign({match:I})})}},bC={initial:v.UNINITIALIZED,on:{[g.DANGEROUSLY_SET_CONTEXT]:{actions:$(({event:F,enqueue:I})=>{ES(F,g.DANGEROUSLY_SET_CONTEXT);let{type:L,...R}=F;I.assign(R)})},[g.SET_SHELL]:{actions:$(({event:F,enqueue:I})=>{ES(F,g.SET_SHELL);let{shell:L}=F;I.assign({shell:L})})}},states:{...gC,...qS,...KS,...QS,...dC,...fC,...pC,...mC,...hC,..._C,...yC}},{createMachine:xC}=PS({types:{context:{},events:{}},guards:{[y.IS_BOT_PHASE_PLAYING_EVENTS]:({context:{botState:{currentBotTurnPhase:F}}})=>F===_.PLAYING_EVENTS,[y.IS_BOT_PHASE_PLAYING_TOOLS]:({context:{botState:{currentBotTurnPhase:F}}})=>F===_.PLAYING_TOOLS,[y.IS_SELECTED_IDX_VALID]:({event:F,context:{match:I}})=>{let{currentPlayerId:L}=I;switch(N(L),F.type){case g.SELECT_CROP_TO_WATER:{let{cards:R}=P.getPlayer(I,L).field;return R[F.cropIdxInFieldToWater]!==void 0}default:}return!0},[y.IS_SETUP_PHASE]:({context:{match:F}})=>F.turn===0}}),SC=new class{constructor(){this.createMatchStateMachine=()=>xC({context:HS(),...bC}),this.startMatch=()=>Kb(this.createMatchStateMachine()).start(),this.applyDailyEffects=F=>{let{match:I}=F,{currentPlayerId:L}=I;N(L);let R=I.table.players[L];N(R);for(let L=0;L<R.field.cards.length;L++){let z=R.field.cards[L];z&&h(z.instance)&&z.instance.applyDailyEffect&&(F=z.instance.applyDailyEffect({...F,match:I},L),I=F.match)}return F}}},CC=VS(SC.createMatchStateMachine()),wC=()=>{let{match:F,matchState:I}=CC.useSelector(({context:{match:F},value:I})=>({match:F,matchState:I})),L=I,R=null;if(ze$1(I))if(v.PERFORMING_BOT_TURN_ACTION in I){L=v.PERFORMING_BOT_TURN_ACTION;let F=I[v.PERFORMING_BOT_TURN_ACTION];N(F),he(F),R=F}else throw TypeError(`Unexpected matchState shape`);if(typeof L!=`string`)throw TypeError(`Actor state is not a string`);return me(L),{match:F,matchState:L,botTurnActionState:R}},TC=F=>{let{cardInstance:I,cardIdxInHand:L,cropIdxInFieldToWater:R,cropIdxInFieldToHarvest:z,cardIdxInField:De,playerId:Oe,onBeforePlay:ke,canBeWatered:Ae=!1,canBeHarvested:je=!1,isFocused:Me=!1,isInField:Ne=!1}=F,{useActorRef:Pe}=CC,Fe=Pe(),{match:Ie,matchState:Le}=wC(),{setIsHandInViewport:Re,setSelectedHandCardIdx:ze}=(0,import_react$10.useContext)(Ep),{eventCardsThatCanBePlayed:Be,selectedWaterCardInHandIdx:Ge}=Ie,rt=Be>0,it=async()=>{let F=Pe$1(I);switch(F||ze(-1),ke&&await ke(),N(L,`cardIdxInHand is not a valid hand index`),I.type){case f.CROP:Fe.send({type:g.PLAY_CROP,cardIdxInHand:L,playerId:Oe}),Re(!1);break;case f.WATER:Fe.send({type:g.PLAY_WATER,cardIdxInHand:L,playerId:Oe}),Re(!1);break;case f.EVENT:Fe.send({type:g.PLAY_EVENT,cardIdxInHand:L,playerId:Oe});break;case f.TOOL:Fe.send({type:g.PLAY_TOOL,cardIdxInHand:L,playerId:Oe}),F&&Re(!1);break;default:}},at=()=>{N(R,`cropIdxInFieldToWater is not a valid field index`),Fe.send({type:g.SELECT_CROP_TO_WATER,playerId:Oe,cropIdxInFieldToWater:R,waterCardInHandIdx:Ge})},ot=()=>{N(z,`cropIdxInFieldToHarvest is not a valid field index`),Fe.send({type:g.HARVEST_CROP,playerId:Oe,cropIdxInFieldToHarvest:z})},st=()=>{N(De,`cardIdxInField is not a valid field index`),Fe.send({type:g.DISCARD_CARD_FROM_FIELD,playerId:Oe,cardIdxInField:De})},ct=Oe===Ie.sessionOwnerPlayerId,lt=!1,ut=!1,dt=!1,ft=!1,pt=!1,mt=!1;switch(I.type){case f.CROP:mt=I.id===Ie.buffedCrop?.crop.id,ct&&Me&&!Ne&&[v.WAITING_FOR_PLAYER_TURN_ACTION,v.WAITING_FOR_PLAYER_SETUP_ACTION].includes(Le)&&(lt=!0,P.getPlayer(Ie,Oe).field.cards.filter(F=>F!==void 0).length>=6&&(ut=!0)),ct&&Me&&Ne&&Ae&&[v.PLAYER_WATERING_CROP].includes(Le)&&(dt=!0),ct&&Me&&Ne&&je&&[v.WAITING_FOR_PLAYER_TURN_ACTION].includes(Le)&&(ft=!0);break;case f.EVENT:ct&&Me&&rt&&Le===v.WAITING_FOR_PLAYER_TURN_ACTION&&(lt=!0);break;case f.TOOL:ct&&Me&&!Ne&&Le===v.WAITING_FOR_PLAYER_TURN_ACTION&&(lt=!0),ct&&Ne&&Me&&(pt=!0);break;case f.WATER:ct&&Me&&Le===v.WAITING_FOR_PLAYER_TURN_ACTION&&(lt=!0);break;default:}let ht=Ne&&Ae&&Le===v.PLAYER_WATERING_CROP&&Ie.currentPlayerId===Oe&&q$1(I),gt=Ne&&je&&q$1(I)&&Le!==v.PLAYER_WATERING_CROP,vt=``;return ct&&(ht?vt=`Needs water`:gt&&(vt=`Ready to be harvested`)),{isBuffedCrop:mt,showPlayCardButton:lt,playButtonDisabled:ut,showWaterCropButton:dt,showHarvestCropButton:ft,showWaterableState:ht,showHarvestableState:gt,showDiscardButton:pt,tooltipTitle:vt,onPlayCard:it,onWaterCrop:at,onHarvestCrop:ot,onDiscardCard:st,isSessionOwnersCard:ct}},EC=F=>q$1(F.cardInstance),DC=F=>p(F.cardInstance),OC=F=>m(F.cardInstance),kC=F=>h(F.cardInstance),AC=(0,import_react$10.forwardRef)(function({playedCrop:F,...I},L){let R=TC({playedCrop:F,...I}),{canBeHarvested:z,canBeWatered:De,isFocused:Oe,isInField:ke,onBeforePlay:Ae,...je}=I;return(0,import_jsx_runtime$2.jsx)(Sp,{...je,...R,ref:L,children:Ne$1(I.cardInstance)?(0,import_jsx_runtime$2.jsx)(ob,{crop:I.cardInstance,playedCrop:F}):null})}),jC=(0,import_react$10.forwardRef)(function(F,I){let L=TC(F),{canBeHarvested:R,canBeWatered:z,isFocused:De,isInField:Oe,onBeforePlay:ke,...Ae}=F;return(0,import_jsx_runtime$2.jsx)(Sp,{...Ae,...L,ref:I})}),MC=(0,import_react$10.forwardRef)(function(F,I){let L=TC(F),{canBeHarvested:R,canBeWatered:z,isFocused:De,isInField:Oe,onBeforePlay:ke,...Ae}=F;return(0,import_jsx_runtime$2.jsx)(Sp,{...Ae,...L,ref:I,children:(0,import_jsx_runtime$2.jsx)(tb,{children:F.cardInstance.description})})}),NC=(0,import_react$10.forwardRef)(function(F,I){let L=TC(F),{canBeHarvested:R,canBeWatered:z,isFocused:De,isInField:Oe,onBeforePlay:ke,...Ae}=F;return(0,import_jsx_runtime$2.jsx)(Sp,{...Ae,...L,ref:I,children:(0,import_jsx_runtime$2.jsx)(tb,{children:F.cardInstance.description})})}),PC=(0,import_react$10.forwardRef)(function(F,I){if(EC(F))return(0,import_jsx_runtime$2.jsx)(AC,{...F,ref:I});if(DC(F))return(0,import_jsx_runtime$2.jsx)(jC,{...F,ref:I});if(OC(F))return(0,import_jsx_runtime$2.jsx)(MC,{...F,ref:I});if(kC(F))return(0,import_jsx_runtime$2.jsx)(NC,{...F,ref:I});throw new ue(`Unexpected CardType`)}),FC=({playedCard:F})=>{let I=F.instance,L=0,R=!1,z=!1;return Fe$1(F)||h(I)||(L=Math.max(F.waterCards,I.waterToMature),R=F.wasWateredDuringTurn===!1,z=F.waterCards>=I.waterToMature),{canBeWatered:R,canBeHarvested:z,waterIconsToRender:L}},IC=.25,LC=`PlayedCard`,RC=({isInBackground:F,playedCard:I,cardProps:{ref:L,...R},...z})=>{let De=useTheme$1(),{size:Oe=B.MEDIUM}=R,{canBeWatered:ke,canBeHarvested:Ae,waterIconsToRender:je}=FC({playedCard:I}),Me=J$1(I)?Array.from({length:je},(L,R)=>F?0:R<I.waterCards?1:IC):[];return(0,import_jsx_runtime$2.jsxs)(Box,{className:LC,maxWidth:V[Oe].width,...z,children:[(0,import_jsx_runtime$2.jsx)(PC,{size:Oe,canBeWatered:ke,canBeHarvested:Ae,...R}),J$1(I)&&(Oe===B.COMPACT?(0,import_jsx_runtime$2.jsx)(Box,{display:`flex`,gap:De.spacing(.25),pt:.5,"aria-label":`Water card indicator`,position:`relative`,zIndex:-1,children:Me.map((F,I)=>(0,import_jsx_runtime$2.jsx)(Box,{sx:{flex:1,height:`4px`,background:`#0072ff`,opacity:F,transition:De.transitions.create([`opacity`])}},I))}):(0,import_jsx_runtime$2.jsx)(Grid,{container:!0,spacing:1,pt:2.5,width:V[Oe].width,ml:De.spacing(-.5),justifyContent:`flex-start`,position:`relative`,zIndex:-1,children:Me.map((F,I)=>(0,import_jsx_runtime$2.jsx)(Grid,{item:!0,sx:{pt:`${De.spacing(0)} !important`},children:(0,import_jsx_runtime$2.jsx)(up,{src:An.water,alt:`Water card indicator`,sx:{imageRendering:`pixelated`,opacity:F,transition:De.transitions.create([`opacity`])}})},I))}))]})},zC=({cardSize:F=B.SMALL,playerId:I,fieldIdx:L})=>{let R=useTheme$1(),{useActorRef:z}=CC,De=z(),{matchState:Oe,match:{currentPlayerId:ke,sessionOwnerPlayerId:Ae}}=wC(),{selectedHandCardIdx:je}=(0,import_react$10.useContext)(Ep),Me=ke===Ae&&ke===I&&Oe===v.CHOOSING_CARD_POSITION;return(0,import_jsx_runtime$2.jsx)(Box,{height:V[F].height,width:V[F].width,onClick:()=>{Me&&De.send({type:g.SELECT_CARD_POSITION,playerId:I,cardIdxInHand:je,fieldIdxToPlace:L})},sx:{flexShrink:0,mx:`auto`,outlineStyle:`solid`,outlineWidth:Nn(1),outlineColor:Me?R.palette.primary.light:cn(R.palette.divider),borderRadius:`${R.shape.borderRadius}px`,transition:R.transitions.create([`background`,`transform`]),boxShadow:Me?`0 0 12px 4px ${R.palette.primary.light}`:`none`,alignContent:`center`,...Me&&{cursor:`pointer`,":hover":{transform:`scale(1.2)`,background:R.palette.mode===`light`?darken$7(R.palette.primary.light,.1):lighten$7(R.palette.primary.light,.5),"> p":{opacity:1}}}},children:Me&&(0,import_jsx_runtime$2.jsx)(Typography,{variant:`caption`,component:`p`,sx:{color:R.palette.primary.contrastText,fontWeight:R.typography.fontWeightBold,opacity:0,textAlign:`center`,textTransform:`uppercase`,transition:R.transitions.create([`opacity`])},children:`Place card`})})},BC=B.MEDIUM,VC=1.25,HC=`Selected field card`,UC=`Unselected field card`,WC=({playerId:F,match:I,cardSize:L=B.SMALL,onSelectedCardIdxChange:R,...z})=>{let De=P.getPlayer(I,F),Oe=F===I.sessionOwnerPlayerId,{isNarrowViewport:ke,fieldContainerRef:Ae}=(0,import_react$10.useContext)(Ep),je=(0,import_react$10.useRef)(null),Me=Cp(je,Oe?Ae:void 0),Ne=useTheme$1(),[Pe,Fe]=(0,import_react$10.useState)(-1),[Ie,Le]=(0,import_react$10.useState)(``),{width:Re,height:ze}=Mt({debounceDelay:1}),Be=Re/2,Ge=ze/2,rt=()=>{Fe(-1),R?.(-1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()},it=At(()=>{rt()},void 0,{leading:!0});(0,import_react$10.useEffect)(()=>(window.addEventListener(`resize`,it),()=>{window.removeEventListener(`resize`,it)}),[it]),(0,import_react$10.useEffect)(()=>{Fe(-1),R?.(-1)},[De.field,R]);let at=(F,I)=>{let{target:z}=F;if(!z.classList.contains(`PlayedCard`))return;let De=z.getBoundingClientRect();if(L===B.COMPACT){let F=V[BC].width,I=V[BC].height;Le(`translateX(calc(${Be}px - ${De.left}px - (${F} / 2))) translateY(calc(${Ge}px - ${De.top}px - (${I} / 2)))`)}else Le(`translateX(${Be-(De.left+De.width/2)}px) translateY(${Ge-(De.top+De.height/2)}px) scale(${VC})`);Fe(I),R?.(I)},ot=F=>{switch(F.key){case`Escape`:rt();break}},st=F=>{je.current&&!je.current.contains(F.relatedTarget)&&rt()},ct=[,,,,,,].fill(void 0).map((F,I)=>De.field.cards[I]),lt=Oe?ct:[...ct].reverse();return(0,import_jsx_runtime$2.jsx)(Box,{...z,"data-testid":`field_${F}`,ref:Me,onKeyDown:ot,onBlur:st,children:(0,import_jsx_runtime$2.jsx)(Box,{display:`flex`,flexWrap:`nowrap`,overflow:`visible`,gap:L===B.COMPACT?Ne.spacing(.5):Ne.spacing(2),alignItems:Oe?`flex-start`:`flex-end`,justifyContent:L===B.COMPACT?`flex-start`:`center`,children:lt.map((I,R)=>{let z=Oe?R:5-R;if(!Ie$1(I))return(0,import_jsx_runtime$2.jsx)(zC,{cardSize:L,playerId:F,fieldIdx:z},R);let{instance:Ae}=I,je=Pe===z,Me=Pe!==-1&&!je,Fe=je&&L===B.COMPACT;return(0,import_jsx_runtime$2.jsx)(RC,{"aria-label":je?HC:UC,tabIndex:0,cardProps:{cardInstance:Ae,cardIdxInField:z,cropIdxInFieldToWater:z,cropIdxInFieldToHarvest:z,isInField:!0,isFocused:je,playerId:De.id,size:Fe?BC:L,stackActionButtonsBelowCard:ke,...je&&{elevation:10},paperProps:{...je&&{elevation:10}}},playedCard:I,isInBackground:Me,onFocus:F=>at(F,z),sx:{flexShrink:0,mx:`auto`,position:`relative`,zIndex:0,transition:Ne.transitions.create([`transform`]),outline:`none`,transformStyle:`preserve-3d`,...!Oe&&{transform:`rotate(180deg)`},...!je&&{cursor:`pointer`},...je&&{transform:Ie,zIndex:20},...L===B.COMPACT&&{width:V[L].width,height:V[L].height}}},Ae.instanceId)})})})},GC=B.MEDIUM,KC=({match:F,handleClickTopCard:I,isTopCardSelected:L,playerId:R,deckThicknessPx:z=30,cardSize:De=GC,sx:Oe=[],...ke})=>{let{containerRef:Ae,selectedCardSxProps:je}=Tp({cardSize:De}),Me=useTheme$1(),Ne=P.getPlayer(F,R),Pe=R===F.sessionOwnerPlayerId;return(0,import_jsx_runtime$2.jsx)(Box,{"data-testid":`deck_${R}`,height:V[De].height,width:V[De].width,position:`relative`,ref:Ae,sx:[{...!Pe&&{transform:`rotate(180deg)`}},...Tt(Oe)?Oe:[Oe]],...ke,children:Ne.deck.map((F,R)=>{let Oe=z/Ne.deck.length*R,ke=R===Ne.deck.length-1;return(0,import_jsx_runtime$2.jsx)(PC,{cardInstance:F,playerId:Ne.id,position:`absolute`,isFlipped:!(ke&&L),size:De,sx:{transform:`translateX(${Oe}px) translateY(${Oe/2}px)`,transition:Me.transitions.create([`transform`]),...ke&&L&&je},...ke&&{onClick:I}},F.instanceId)})})},qC=B.SMALL,JC=({playerId:F,match:I,cardSize:L=qC,discardPileThicknessPx:R=30,...z})=>{let De=useTheme$1(),Oe=P.getPlayer(I,F),ke=F===I.sessionOwnerPlayerId;return(0,import_jsx_runtime$2.jsx)(Box,{"data-testid":`discard-pile_${F}`,height:V[L].height,width:V[L].width,position:`relative`,sx:{transformStyle:`preserve-3d`,outlineStyle:`solid`,outlineWidth:Nn(1),outlineColor:cn(De.palette.divider),borderRadius:`${De.shape.borderRadius}px`,...!ke&&{transform:`rotate(180deg)`}},...z,children:[...Oe.discardPile].reverse().map((I,z)=>{let ke=R/Oe.discardPile.length*z;return(0,import_jsx_runtime$2.jsx)(Tooltip,{title:I.name,placement:`top`,children:(0,import_jsx_runtime$2.jsx)(PC,{cardInstance:I,size:L,playerId:F,position:`absolute`,sx:{transform:`translateX(${ke}px)`,transition:De.transitions.create([`transform`])}})},I.instanceId)})})},YC=()=>{let F=(0,import_react$10.useRef)(new Map);return(0,import_react$10.useEffect)(()=>{let{current:I}=F;return()=>{I.forEach(F=>{F()})}},[]),{setRejectingTimeout:I=>new Promise((L,R)=>{let z=setTimeout(()=>{F.current.delete(z),L()},I);F.current.set(z,R)})}},XC=new class{constructor(){this.scaleNumber=(F,I,L,R,z)=>(F-I)*(z-R)/(L-I)+R}},ZC=1,QC=.65,$C=B.MEDIUM,ew=F=>F>60?3:F>30?5:F>20?10:F>10?15:F>5?30:50,tw=({playerId:F,match:I,cardSize:L=B.LARGE,sx:R=[],...z})=>{let{blockingOperation:De,isHandInViewport:Oe,setIsHandInViewport:ke,isNarrowViewport:Ae,selectedHandCardIdx:je,setSelectedHandCardIdx:Me,isHandCardSelected:Ne,isHandCardSelectionLocked:Pe,handContainerRef:Fe}=(0,import_react$10.useContext)(Ep),{setRejectingTimeout:Ie}=YC(),{containerRef:Le,selectedCardSxProps:Re,selectedCardTransform:ze}=Tp({cardSize:$C}),Be=P.getPlayer(I,F),Ge=useTheme$1(),rt=(0,import_react$10.useRef)(null);(0,import_react$10.useEffect)(()=>{Oe&&Ne&&!Pe&&rt.current?.focus()},[Oe,rt,Ne,Pe]);let it=(0,import_react$10.useCallback)(()=>{Me(-1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()},[Me]);(0,import_react$10.useEffect)(()=>{it(),ke(!0)},[Be.hand,ke,it]);let at=F=>{Pe||Me(F)},ot=F=>{if(!Pe)switch(F.key){case`Escape`:it();break}},st=F=>{!Pe&&Le.current&&!Le.current.contains(F.relatedTarget)&&it()},ct=parseFloat(V[L].width)/parseFloat(V[$C].width),lt=ew(Be.hand.length)*ct,{width:ut}=Le.current?.getBoundingClientRect()??{width:0},dt=Cp(Le,Fe),ft=async()=>{await De(async()=>{await Ie(Ge.transitions.duration.shortest)})};return(0,import_jsx_runtime$2.jsx)(Box,{...z,"data-testid":`hand_${F}`,ref:dt,sx:[{position:`relative`,minHeight:V[L].height,pointerEvents:Oe?void 0:`none`},...Tt(R)?R:[R]],onKeyDown:ot,onBlur:st,children:Be.hand.map((I,R)=>{let z=lt*Be.hand.length,De=XC.scaleNumber(R/Be.hand.length,0,1,-z,z),ke=ut/2+De,Me=je===R&&Oe,Pe=Ne&&Oe,Fe=``;Me||(Fe=`translateX(${`calc(-50% + ${lt}px + ${ke}px)`}) translateY(${Pe?`calc(${V[L].height} / 2)`:`0rem`}) rotate(-5deg) scale(${Pe?QC:ZC}) rotateY(25deg)`);let Ie=`translateY(${Oe?0:V[L].height})`;return(0,import_jsx_runtime$2.jsx)(PC,{disableEnterAnimation:!0,cardInstance:I,cardIdxInHand:R,playerId:F,size:Me?$C:L,paperProps:{...Me&&{elevation:10}},sx:{position:`absolute`,transition:Ge.transitions.create([`transform`]),cursor:`pointer`,...Me&&Re,transform:`${Me?ze:Fe} ${Ie}`},onBeforePlay:ft,onFocus:()=>at(R),tabIndex:Oe?0:-1,isFocused:Me,stackActionButtonsBelowCard:Ae,ref:Me?rt:void 0},I.instanceId)})})},nw=-8,rw=(F,I)=>`calc(${hn} + max(0px, calc((${F}px - ${hn} - ${I}) / 2)))`,iw=({match:F,...I})=>{let L=useTheme$1(),{setSelectedFieldCardIdx:R,isNarrowViewport:z}=(0,import_react$10.useContext)(Ep),{sessionOwnerPlayerId:De}=F,Oe=P.getOpponentPlayerIds(F),ke=!z,Ae=ke?B.MEDIUM:B.COMPACT,je=ke?B.SMALL:B.COMPACT,Me=L.spacing(nw*(parseFloat(V[Ae].height)/parseFloat(V[B.MEDIUM].height))),Ne=(0,import_react$10.useRef)(null),Pe=(0,import_react$10.useRef)(null),[Fe,Ie]=(0,import_react$10.useState)(null),{height:Le}=Mt({debounceDelay:1});(0,import_react$10.useLayoutEffect)(()=>{let F=Pe.current;F&&Ie(F.getBoundingClientRect().bottom)},[Le,ke]),(0,import_react$10.useLayoutEffect)(()=>{let F=Ne.current,I=Pe.current;if(!F||!I||typeof ResizeObserver>`u`)return;let L=new ResizeObserver(()=>{Ie(I.getBoundingClientRect().bottom)});return L.observe(F),()=>{L.disconnect()}},[]);let Re=Fe===null?Me:rw(Le-Fe,V[Ae].height),ze=ke?Me:Re;return(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsxs)(Grid,{gap:4,container:!0,...I,ref:Ne,"data-testid":`table_${F.sessionOwnerPlayerId}`,children:[(0,import_jsx_runtime$2.jsx)(Grid,{item:!0,xs:12,children:Oe.map(I=>(0,import_jsx_runtime$2.jsx)(WC,{match:F,playerId:I,cardSize:je},I))}),(0,import_jsx_runtime$2.jsx)(Grid,{item:!0,xs:12,children:(0,import_jsx_runtime$2.jsxs)(Box,{display:`flex`,justifyContent:`space-between`,alignContent:`center`,px:1,children:[(0,import_jsx_runtime$2.jsx)(KC,{match:F,playerId:De,cardSize:je}),(0,import_jsx_runtime$2.jsx)(JC,{match:F,playerId:De,cardSize:je})]})}),(0,import_jsx_runtime$2.jsx)(Grid,{item:!0,xs:12,ref:Pe,children:(0,import_jsx_runtime$2.jsx)(WC,{match:F,playerId:De,cardSize:je,onSelectedCardIdxChange:R})})]}),(0,import_jsx_runtime$2.jsx)(Box,{position:`fixed`,left:`50%`,right:`50%`,bottom:ze,children:(0,import_jsx_runtime$2.jsx)(tw,{match:F,playerId:De,cardSize:Ae})})]})},aw=new Intl.NumberFormat(void 0,{style:`decimal`,useGrouping:!0}).format.bind(null),ow=F=>aw(F),sw=10,cw=({match:F,useGenericPlayerLabels:I=!1})=>{let L=useTheme$1(),R=CC.useActorRef(),{setIsHandInViewport:z}=(0,import_react$10.useContext)(Ep),{matchState:De,botTurnActionState:Oe,match:{currentPlayerId:ke,sessionOwnerPlayerId:Ae}}=wC(),je=I?on:Ct(ke??``),Me=()=>{R.send({type:g.PROMPT_BOT_FOR_SETUP_ACTION})},Ne=()=>{R.send({type:g.START_TURN})},Pe=()=>{R.send({type:g.OPERATION_ABORTED}),z(!0)},Fe=()=>{R.send({type:g.OPERATION_ABORTED}),z(!0)},Ie=null,Le=ke?P.getPlayer(F,ke):null,Re=``;switch(De){case v.CHOOSING_CARD_POSITION:Re=`Select a position in the field`,Le?.id===F.sessionOwnerPlayerId&&(Ie=(0,import_jsx_runtime$2.jsx)(Button,{onClick:Fe,color:`warning`,children:`Cancel placement`}));break;case v.WAITING_FOR_PLAYER_SETUP_ACTION:Re=`Set up your Field`,Le&&Le.field.cards.length>0&&(Ie=(0,import_jsx_runtime$2.jsx)(Button,{onClick:Me,children:`Complete setup`}));break;case v.WAITING_FOR_PLAYER_TURN_ACTION:Re=`Your turn`,Le&&Le.id===F.sessionOwnerPlayerId&&(Ie=(0,import_jsx_runtime$2.jsx)(Button,{onClick:Ne,children:`End turn`}));break;case v.PLAYER_WATERING_CROP:Re=`Select a crop to water`,Le&&Le.id===F.sessionOwnerPlayerId&&(Ie=(0,import_jsx_runtime$2.jsx)(Button,{onClick:Pe,color:`warning`,children:`Cancel watering`}));break;case v.PERFORMING_BOT_TURN_ACTION:switch(Re=`${je}'s turn`,Oe){case _.PLAYING_CROPS:case _.PLACING_CROP:Re=`${je} is planting crops`;break;case _.WATERING_CROPS:case _.WATERING_CROP:Re=`${je} is watering crops`;break;case _.HARVESTING_CROPS:case _.HARVESTING_CROP:Re=`${je} is harvesting crops`;break;case _.PLAYING_EVENTS:Re=`${je} is playing Event cards`;break;case _.PLAYING_TOOLS:Re=`${je} is playing Tool cards`;break;default:}break;case v.PERFORMING_BOT_SETUP_ACTION:Re=`${je} is setting their field up`;break;default:}let{[Ae]:ze,...Be}=F.table.players;if(!ze)throw new j(`Session owner player not found`);let Ge=ze.funds,rt=Object.keys(Be)[0],it=rt?P.getPlayer(F,rt)?.funds:0,at=I?on:Ct(rt??``),ot=F=>({...Kn({outline:Un(L)}),backgroundColor:L.palette.background.paper,color:F!==void 0&&F<=sw?L.palette.error.dark:L.palette.text.primary,cursor:`help`,justifyContent:`center`,"& .MuiChip-icon":{color:`inherit`,fontSize:L.typography.body1.fontSize,ml:.5,mr:.5},"& .MuiChip-label":{fontSize:L.typography.body1.fontSize,pl:0,pr:.5,textAlign:`center`}});return(0,import_jsx_runtime$2.jsxs)(Stack,{spacing:1,children:[(0,import_jsx_runtime$2.jsxs)(Stack,{direction:`row`,justifyContent:`space-between`,gap:`0.25rem`,flexWrap:`wrap`,children:[(0,import_jsx_runtime$2.jsx)(Tooltip,{title:`Your funds`,children:(0,import_jsx_runtime$2.jsx)(Chip,{icon:(0,import_jsx_runtime$2.jsx)(Kt,{}),label:ow(Ge),sx:ot(Ge)})}),F.buffedCrop&&(0,import_jsx_runtime$2.jsx)(Tooltip,{title:`Sell ${F.buffedCrop.crop.name} cards now for ${F.buffedCrop.multiplier}x value`,children:(0,import_jsx_runtime$2.jsx)(Stack,{direction:`row`,alignItems:`center`,children:(0,import_jsx_runtime$2.jsx)(Chip,{color:`success`,icon:(0,import_jsx_runtime$2.jsx)(Ut,{}),label:(0,import_jsx_runtime$2.jsx)(up,{src:dp(F.buffedCrop.crop),sx:{imageRendering:`pixelated`,filter:`drop-shadow(0 0 5px ${L.palette.common.white})`}}),sx:{...Kn({outline:L.palette.success.dark}),backgroundColor:L.palette.success.light}})})}),(0,import_jsx_runtime$2.jsx)(Tooltip,{title:`Community funds`,children:(0,import_jsx_runtime$2.jsx)(Chip,{icon:(0,import_jsx_runtime$2.jsx)(qt,{}),label:ow(F.table.communityFund),sx:ot()})}),F.nerfedCrop&&(0,import_jsx_runtime$2.jsx)(Tooltip,{title:`${F.nerfedCrop.crop.name} cards now sell for ${F.nerfedCrop.multiplier}x value`,children:(0,import_jsx_runtime$2.jsx)(Stack,{direction:`row`,alignItems:`center`,children:(0,import_jsx_runtime$2.jsx)(Chip,{sx:{flexDirection:`row-reverse`,"& .MuiSvgIcon-root":{ml:-.75,mr:.75},"& .MuiChip-label":{pr:1},...Kn({outline:L.palette.error.dark}),backgroundColor:L.palette.error.light},color:`error`,icon:(0,import_jsx_runtime$2.jsx)(Ht,{}),label:(0,import_jsx_runtime$2.jsx)(up,{src:dp(F.nerfedCrop.crop),sx:{imageRendering:`pixelated`,filter:`drop-shadow(0 0 5px ${L.palette.common.black})`}})})})}),(0,import_jsx_runtime$2.jsx)(Tooltip,{title:`${at}'s funds`,children:(0,import_jsx_runtime$2.jsx)(Chip,{icon:(0,import_jsx_runtime$2.jsx)(Kt,{}),label:it===void 0?``:ow(it),sx:ot(it)})})]}),(0,import_jsx_runtime$2.jsxs)(Accordion,{sx:{width:1,mb:2,borderRadius:`${L.shape.borderRadius}px`,"&.Mui-expanded":{mt:1}},expanded:Ie!==null,children:[(0,import_jsx_runtime$2.jsx)(AccordionSummary,{sx:{"&:hover:not(.Mui-disabled)":{cursor:`default`},"& .MuiAccordionSummary-content":{justifyContent:`center`}},children:(0,import_jsx_runtime$2.jsx)(Typography,{variant:`h6`,component:`h1`,textAlign:`center`,fontWeight:`normal`,children:Re})}),(0,import_jsx_runtime$2.jsx)(AccordionActions,{sx:{justifyContent:`center`},children:Ie})]})]})},lw=new URLSearchParams(window.location.search).has(`debug`),uw=()=>useMediaQuery(useTheme$1().breakpoints.down(`md`)),dw=({actorRef:F,match:I,useGenericPlayerLabels:L=!1})=>{let{showNotification:R}=an(),z=(0,import_react$10.useCallback)((F,I)=>{lw&&console.debug(`Notification: ${(0,import_build.default)(F)}`),R(F,I)},[R]),De=I.currentPlayerId===I.sessionOwnerPlayerId;return(0,import_react$10.useEffect)(()=>{let R=L?on:Ct(I.currentPlayerId??``);F.send({type:g.SET_SHELL,shell:{triggerNotification:({type:F,payload:I})=>{switch(F){case b.CARDS_DRAWN:{let{howMany:F,playerId:R}=I;if(De)z(F===1?`You drew 1 card`:`You drew ${F} cards`,`success`);else{let I=L?on:Ct(R);z(F===1?`${I} drew 1 card`:`${I} drew ${F} cards`,`warning`)}break}case b.CROP_HARVESTED:{let{cropHarvested:{name:F}}=I;De?z(`You harvested and sold a ${F}`,`success`):z(`${R} harvested and sold a ${F}`,`warning`);break}case b.CARD_DISCARDED:{let{cardDiscarded:{name:F}}=I;z(De?`You discarded ${F}`:`${R} discarded ${F}`,`info`);break}case b.CROP_WATERED:{let{cropWatered:{name:F}}=I;z(De?`You watered your ${F}`:`${R} watered their ${F}`,`info`);break}case b.EVENT_CARD_PLAYED:{let{eventCard:F}=I;z(De?`You played ${F.name}`:`${R} played ${F.name}`,`info`);break}case b.TOOL_CARD_PLAYED:{let{toolCard:F}=I;z(De?`You played ${F.name}`:`${R} played ${F.name}`,`info`);break}case b.ALL_CROPS_WATERED:z(`Watered all crops`,`info`);break;default:}}}})},[F,I.currentPlayerId,De,z,L]),{showNotification:z}},fw=({playerSeeds:F,userPlayerId:I,onMatchEnd:L,onCheckpoint:R,initialMatch:z,useGenericPlayerLabels:De})=>{let Oe=CC.useActorRef(),{match:ke,matchState:Ae}=wC(),je=CC.useSelector(({context:F})=>F.botState),[Me,Ne]=(0,import_react$10.useState)(!0),Pe=uw();(0,import_react$10.useEffect)(()=>{lw&&Oe.subscribe(F=>{typeof F.value==`string`&&console.debug(`State: ${F.value}`,F.context)})},[Oe]);let[Fe,Ie]=(0,import_react$10.useState)(!1);(0,import_react$10.useEffect)(()=>{Ae===v.UNINITIALIZED&&(z?Oe.send({type:g.RESUME,matchState:z.matchState,match:z.match,botState:z.botState,userPlayerId:I}):Oe.send({type:g.INIT,playerSeeds:F,userPlayerId:I}))},[Ae,F,I,z,Oe]),(0,import_react$10.useEffect)(()=>{(Ae===v.WAITING_FOR_PLAYER_SETUP_ACTION||Ae===v.WAITING_FOR_PLAYER_TURN_ACTION)&&R?.({matchState:Ae,match:ke,botState:je})},[Ae]);let Le=(0,import_react$10.useRef)(!1);(0,import_react$10.useEffect)(()=>{Ae===v.GAME_OVER?Le.current||(Le.current=!0,L?.(ke.winner)):Le.current=!1},[Ae,ke.winner,L]);let Re=(0,import_react$10.useCallback)(async F=>{try{Ie(!0),await F()}catch{}finally{Ie(!1)}},[Ie]),{showNotification:ze}=dw({actorRef:Oe,match:ke,useGenericPlayerLabels:De}),[Be,Ge]=(0,import_react$10.useState)(-1),rt=(0,import_react$10.useCallback)((...F)=>{if(ke.currentPlayerId===ke.sessionOwnerPlayerId)return Ge(...F)},[ke]),[it,at]=(0,import_react$10.useState)(-1),ot=Be!==-1,st=it!==-1,ct=Ae===v.CHOOSING_CARD_POSITION,lt=(0,import_react$10.useRef)(null),ut=(0,import_react$10.useRef)(null),dt=(0,import_react$10.useMemo)(()=>({blockingOperation:Re,isHandInViewport:Me,setIsHandInViewport:Ne,isNarrowViewport:Pe,showNotification:ze,selectedHandCardIdx:Be,setSelectedHandCardIdx:rt,selectedFieldCardIdx:it,setSelectedFieldCardIdx:at,isHandCardSelected:ot,isFieldCardSelected:st,isHandCardSelectionLocked:ct,handContainerRef:lt,fieldContainerRef:ut}),[Re,Me,Ne,Pe,ze,Be,rt,it,at,ot,st,ct,lt,ut]),ft=ke.sessionOwnerPlayerId===ke.currentPlayerId,pt=Fe||!ft,mt=()=>{Ne(F=>!F)},ht=()=>{Oe.send({type:g.INIT,playerSeeds:F,userPlayerId:I})},gt=[v.PLAYER_WATERING_CROP].includes(Ae),vt=Me||gt,yt=Ae===v.GAME_OVER;return{match:ke,botState:je,handleHandVisibilityToggle:mt,handleClickPlayAgain:ht,isHandDisabled:gt,isInputBlocked:pt,isSelectingFieldPosition:[v.CHOOSING_CARD_POSITION,v.PLAYER_WATERING_CROP].includes(Ae),shellContextValue:dt,showGameOver:yt,showHand:vt}},pw=({playerSeeds:F,userPlayerId:I,fullHeight:L=!1,sx:R=[],onMatchEnd:z,onCheckpoint:De,renderStatusBarContent:Oe,renderGameOverContent:ke,hideDefaultGameOverActions:Ae=!1,initialMatch:je,useGenericPlayerLabels:Me=!1,hideScrollbar:Ne=!1,...Pe})=>{let Fe=useTheme$1(),{match:Ie,handleHandVisibilityToggle:Le,handleClickPlayAgain:Re,isHandDisabled:ze,isInputBlocked:Be,isSelectingFieldPosition:Ge,shellContextValue:rt,showGameOver:it,showHand:at}=fw({playerSeeds:F,userPlayerId:I,onMatchEnd:z,onCheckpoint:De,initialMatch:je,useGenericPlayerLabels:Me}),{winner:ot}=Ie,{selectedHandCardIdx:st,isNarrowViewport:ct,isHandCardSelected:lt,isFieldCardSelected:ut,handContainerRef:dt,fieldContainerRef:ft}=rt,pt=(lt||ut)&&!Ge,mt=(F,I,L)=>{F.length!==0&&F[(I+L+F.length)%F.length]?.focus()},ht=F=>{if(lt){mt(dt.current?[...dt.current.querySelectorAll(`.${fp}`)]:[],st,F);return}if(ut){let I=ft.current?[...ft.current.querySelectorAll(`.${LC}`)]:[],L=I.findIndex(F=>F.getAttribute(`aria-label`)===HC);if(L===-1)return;mt(I,L,F)}},gt=F=>{F.preventDefault()},vt=pn(Fe.spacing(ct?2:3));return(0,import_jsx_runtime$2.jsx)(Ep.Provider,{value:rt,children:(0,import_jsx_runtime$2.jsxs)(Container,{maxWidth:!1,disableGutters:!0,"data-testid":`match`,sx:[{backgroundColor:`#ffba4d`,backgroundImage:`url(${jn.brownDotBackground})`,backgroundSize:Fe.spacing(10),imageRendering:`pixelated`,color:Fe.palette.common.white,display:`flex`,flexDirection:`column`,overflow:`hidden`,transform:`translateZ(0)`,...Be&&{"*":{pointerEvents:`none`}},height:L?`100vh`:void 0},...Tt(R)?R:[R]],...Pe,children:[(0,import_jsx_runtime$2.jsxs)(Box,{sx:{flex:1,minHeight:0,overflowX:`hidden`,overflowY:`auto`,p:vt,pb:`calc(${vt} + ${hn} + ${ct?V[B.COMPACT].height:`0px`})`,maskImage:[`linear-gradient(to right, transparent, #000 ${vt}, #000 calc(100% - ${vt}), transparent)`,`linear-gradient(to bottom, transparent, #000 ${vt}, #000)`].join(`, `),maskComposite:`intersect`,WebkitMaskComposite:`source-in`,...Ne&&{scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}},children:[(0,import_jsx_runtime$2.jsx)(cw,{match:Ie,useGenericPlayerLabels:Me}),Oe?.(),(0,import_jsx_runtime$2.jsx)(iw,{sx:{pt:4},match:Ie})]}),ct?(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(Fade,{in:pt,unmountOnExit:!0,children:(0,import_jsx_runtime$2.jsx)(Fab,{color:`secondary`,"aria-label":`Previous card`,onPointerDown:gt,onClick:()=>ht(-1),sx:{position:`fixed`,top:`50%`,left:Fe.spacing(2),transform:`translateY(-50%)`},children:(0,import_jsx_runtime$2.jsx)(Wt,{})})}),(0,import_jsx_runtime$2.jsx)(Fade,{in:pt,unmountOnExit:!0,children:(0,import_jsx_runtime$2.jsx)(Fab,{color:`secondary`,"aria-label":`Next card`,onPointerDown:gt,onClick:()=>ht(1),sx:{position:`fixed`,top:`50%`,right:Fe.spacing(2),transform:`translateY(-50%)`},children:(0,import_jsx_runtime$2.jsx)(Gt,{})})})]}):(0,import_jsx_runtime$2.jsx)(Tooltip,{title:at?`Hide Hand`:`Show Hand`,children:(0,import_jsx_runtime$2.jsx)(Fab,{color:`secondary`,disabled:Be||ze,onClick:Le,sx:{position:`fixed`,bottom:dn(ln,Fe.spacing(2)),left:dn(un,Fe.spacing(2))},children:(0,import_jsx_runtime$2.jsx)(Ht,{sx:{transform:`rotate(${at?0:180}deg)`,transition:Fe.transitions.create([`transform`])}})})}),(0,import_jsx_runtime$2.jsxs)(Dialog,{open:it,children:[(0,import_jsx_runtime$2.jsx)(DialogTitle,{children:`Game Over`}),(0,import_jsx_runtime$2.jsxs)(DialogContent,{children:[`Winner:`,` `,(0,import_jsx_runtime$2.jsx)(`strong`,{children:ot?Me?ot===Ie.sessionOwnerPlayerId?`You`:on:Ct(ot):`No one`}),ke?.(ot)]}),(0,import_jsx_runtime$2.jsx)(DialogActions,{children:!Ae&&(0,import_jsx_runtime$2.jsx)(Button,{onClick:Re,children:`Play again`})})]})]})})},mw=({...F})=>(0,import_jsx_runtime$2.jsx)(CC.Provider,{children:(0,import_jsx_runtime$2.jsx)(ThemeProvider,{theme:_r,children:(0,import_jsx_runtime$2.jsx)(rn,{children:(0,import_jsx_runtime$2.jsx)(pw,{...F})})})}),name=`@jeremyckahn/farmhand-shuffle`,version=`0.1.0`,description=`A card game for farmers`,main=`./dist-lib/index.mjs`,module$1=`./dist-lib/index.mjs`,types=`./dist-lib/index.d.ts`,exports$1={".":{types:`./dist-lib/index.d.ts`,import:`./dist-lib/index.mjs`},"./testing":{types:`./dist-lib/testing.d.ts`,import:`./dist-lib/testing.mjs`},"./package.json":`./package.json`},files=[`dist-lib`],scripts={test:`vitest --run`,"test:watch":`vitest --watch`,start:`vite serve`,"start:storybook":`storybook dev -p 3000 --no-open`,build:`vite build`,"build:lib":`vite build --config vite.lib.config.mts`,"build:storybook":`storybook build`,"fix:lint":`eslint src --fix`,"fix:style":`prettier --write "src/**/*.ts" "src/**/*.tsx"`,check:`npm test -- --coverage && npm run check:lint && npm run check:types`,"check:lint":`eslint src --max-warnings=0`,"check:types":`tsc`,prepare:`husky install || echo 'husky: not a git checkout, skipping' && npm run build:lib`,prepublishOnly:`npm run build:lib`,gitingest:`command -v gitingest >/dev/null 2>&1 || { echo "gitingest not found. Please install it: https://github.com/cyclotruc/gitingest"; exit 1; } && gitingest`,"gitingest:app":`npm run gitingest -- --exclude-pattern="coverage,storybook-static,.vercel,*.piskel,*.test.*,*.stories.*,.github,.storybook"`,"gitingest:app-and-tests":`npm run gitingest -- --exclude-pattern="coverage,storybook-static,.vercel,*.piskel,*.stories.*,.github,.storybook"`},repository={type:`git`,url:`git+ssh://git@github.com/jeremyckahn/farmhand-shuffle.git`},author=`Jeremy Kahn`,license=`GPL-2.0-or-later`,bugs={url:`https://github.com/jeremyckahn/farmhand-shuffle/issues`},homepage=`https://github.com/jeremyckahn/farmhand-shuffle#readme`,devDependencies={"@babel/core":`^7.23.6`,"@babel/plugin-proposal-private-property-in-object":`^7.21.11`,"@babel/preset-env":`^7.23.6`,"@babel/preset-react":`^7.23.3`,"@babel/preset-typescript":`^7.23.3`,"@emotion/react":`^11.11.1`,"@emotion/styled":`^11.11.0`,"@eslint/compat":`^2.0.0`,"@eslint/eslintrc":`^3.3.1`,"@eslint/js":`^9.39.1`,"@mui/material":`^5.14.18`,"@storybook/addon-docs":`^10.0.7`,"@storybook/addon-links":`^10.0.7`,"@storybook/addon-onboarding":`^10.0.7`,"@storybook/addon-themes":`^10.0.7`,"@storybook/react-vite":`^10.4.6`,"@storybook/testing-library":`^0.2.2`,"@stylistic/eslint-plugin":`^5.6.1`,"@testing-library/dom":`^9.3.3`,"@testing-library/jest-dom":`^6.1.6`,"@testing-library/react":`^14.1.2`,"@testing-library/user-event":`^14.5.1`,"@types/localforage":`^0.0.33`,"@types/lodash.clamp":`^4.0.7`,"@types/lodash.clonedeep":`^4.5.9`,"@types/react":`^18.2.18`,"@types/react-dom":`^18.2.7`,"@types/seedrandom":`^3.0.8`,"@types/uuid":`^9.0.2`,"@vitejs/plugin-react":`^5.2.0`,"@vitest/coverage-v8":`^4.1.8`,eslint:`^9.39.1`,"eslint-plugin-functional":`^9.0.2`,"eslint-plugin-import":`^2.32.0`,"eslint-plugin-react":`^7.37.5`,"eslint-plugin-react-hooks":`^7.0.1`,"eslint-plugin-storybook":`^10.0.7`,globals:`^16.5.0`,husky:`^8.0.3`,jsdom:`^27.4.0`,prettier:`^2.8.8`,"pretty-quick":`^3.1.3`,process:`^0.11.10`,react:`^18.2.0`,"react-dom":`^18.2.0`,storybook:`^10.2.13`,typescript:`^5.9.3`,"typescript-eslint":`^8.46.4`,vite:`^8.0.16`,"vite-plugin-dts":`^5.0.3`,vitest:`^4.1.8`,"vitest-mock-extended":`^2.0.2`},peerDependencies={"@emotion/react":`^11.11.1`,"@emotion/styled":`^11.11.0`,"@mui/material":`^5.14.18`,react:`^17.0.2 || ^18.2.0`,"react-dom":`^17.0.2 || ^18.2.0`},browserslist=`> 0.5%, last 2 versions, not dead`,engines={node:`>=22.18.0`},dependencies={"@fontsource/jersey-10":`^5.3.0`,"@fontsource/jersey-20":`^5.3.0`,"@fontsource/jersey-25":`^5.3.0`,"@fontsource/material-icons":`^5.0.7`,"@xstate/react":`^5.0.2`,"fun-animal-names":`^0.1.1`,localforage:`^1.10.0`,"lodash.clamp":`^4.0.3`,"lodash.clonedeep":`^4.5.0`,motion:`^11.11.14`,"react-markdown":`^10.1.0`,"react-node-to-string":`^0.1.2`,"react-router-dom":`^7.18.2`,"react-use":`^17.6.1`,seedrandom:`^3.0.5`,"usehooks-ts":`^2.16.0`,uuid:`^14.0.0`,xstate:`^5.19.1`},package_default={name,version,description,main,module:module$1,types,exports:exports$1,files,scripts,repository,author,license,bugs,homepage,devDependencies,peerDependencies,browserslist,engines,dependencies},FARMHAND_SHUFFLE_LIBRARY_VERSION=package_default.version,BOT_PLAYER_ID=FARMHAND_SHUFFLE_BOT_PLAYER_ID;v.WAITING_FOR_PLAYER_SETUP_ACTION,v.WAITING_FOR_PLAYER_TURN_ACTION;var WagerNumberFormat=(0,import_react$10.forwardRef)((F,I)=>{let{max:L,onChange:R,...z}=F;return(0,import_jsx_runtime$2.jsx)(NumberFormat,{fixedDecimalScale:!0,thousandSeparator:!0,getInputRef:I,...z,allowNegative:!1,decimalScale:2,prefix:`$`,isAllowed:({floatValue:F=0})=>F<=L,onValueChange:({floatValue:F=0})=>R(F)})}),ShuffleResultSummary=({winnerId:F,userPlayerId:I,wager:L,winStreak:R,onPlayAgain:z,onLeave:De})=>{let Oe=F===null,ke=!Oe&&F===I;return(0,import_jsx_runtime$2.jsxs)(Div,{sx:{marginTop:`1em`,textAlign:`center`},children:[(0,import_jsx_runtime$2.jsx)(P$1,{sx:{fontWeight:`bold`},children:L===0?`No wager was placed.`:Oe?`It's a draw — your ${moneyString(L)} wager was refunded.`:ke?`You won ${moneyString(L*2)}!`:`You lost your ${moneyString(L)} wager.`}),ke&&R>1&&(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`Current win streak: `,R]}),(0,import_jsx_runtime$2.jsxs)(Div,{sx:{marginTop:`1em`},children:[(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,variant:`contained`,onClick:z,sx:{marginRight:`1em`},children:`Play again`}),(0,import_jsx_runtime$2.jsx)(Button,{color:`inherit`,onClick:De,children:`Leave`})]})]})},FarmhandShuffleView=()=>{let{gameState:{farmhandShuffle:F,money:I,playerId:L},handlers:R}=(0,import_react$10.useContext)(FarmhandContext),z=L,[De,Oe]=(0,import_react$10.useState)(F.isMatchInProgress?`playing`:`wager`),[ke,Ae]=(0,import_react$10.useState)(0),je=(0,import_react$10.useRef)(F.wager);F.isMatchInProgress&&(je.current=F.wager);let Me=(0,import_react$10.useMemo)(()=>[{id:z,deck:Xe()},{id:BOT_PLAYER_ID,deck:Xe()}],[z]),Ne=(0,import_react$10.useMemo)(()=>{let{serializedMatch:I}=F;if(I){if(I.libraryVersion!==FARMHAND_SHUFFLE_LIBRARY_VERSION)return`error`;try{return{matchState:I.matchState,match:nt(I.match),botState:I.botState}}catch{return`error`}}},[De]);(0,import_react$10.useEffect)(()=>{Ne===`error`&&(R.handleRefundUnresumableFarmhandShuffleMatch(),Oe(`wager`))},[Ne]);let Pe=()=>{R.handlePlaceFarmhandShuffleWager(ke),Oe(`playing`)},Fe=(0,import_react$10.useRef)(!1),Ie=F=>{Fe.current=!0,R.handleSettleFarmhandShuffleMatch(F,z)};(0,import_react$10.useEffect)(()=>{if(!(F.isMatchInProgress||De!==`playing`)){if(Fe.current){Fe.current=!1;return}Oe(`wager`),Ae(0)}},[F.isMatchInProgress]);let Le=({matchState:F,match:I,botState:L})=>{R.handleSaveFarmhandShuffleMatch({libraryVersion:FARMHAND_SHUFFLE_LIBRARY_VERSION,matchState:F,match:tt(I),botState:L,userPlayerId:z,opponentPlayerId:BOT_PLAYER_ID})},Re=()=>{Ae(je.current),Oe(`wager`)},ze=()=>{Ae(0),Oe(`wager`)};return(0,import_jsx_runtime$2.jsxs)(Div,{className:`FarmhandShuffleView`,sx:{height:`100%`,display:`flex`,flexDirection:`column`,...De===`wager`&&{overflowX:`hidden`,overflowY:`auto`,padding:`0.5rem 0.5rem 8em`,scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`}}},children:[De===`wager`&&(0,import_jsx_runtime$2.jsx)(H2,{sx:{"&&":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,marginTop:`4.75rem`,flexShrink:0,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`}}},children:`Farmhand Shuffle`}),De===`wager`&&(0,import_jsx_runtime$2.jsxs)(Div,{sx:{maxWidth:`30em`,width:`calc(100% - 2em)`,flexShrink:0,margin:`0 auto 2em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{marginTop:`4.75em`},[`@media (min-width: ${breakpoints.sm}px)`]:{marginTop:`4.625em`},padding:`0.5em`,background:`rgba(255, 255, 255, 0.5)`,borderRadius:`0.5em`,"& > * + *":{marginTop:`1em`},"& .card-list":{marginBottom:0},"& .card-list > li:last-child":{marginBottom:0}},children:[(0,import_jsx_runtime$2.jsxs)(Card,{children:[(0,import_jsx_runtime$2.jsx)(CardHeader,{subheader:`Wager money on a match. Winning gets you double your money back!`}),(0,import_jsx_runtime$2.jsxs)(CardContent,{children:[(0,import_jsx_runtime$2.jsxs)(P$1,{children:[`You have `,moneyString(I),`.`]}),(0,import_jsx_runtime$2.jsx)(TextField,{variant:`standard`,label:`Wager`,value:ke,inputProps:{max:I,min:0,pattern:`[0-9]*`},onChange:F=>{Ae(Number(F))},InputProps:{inputComponent:WagerNumberFormat}}),(0,import_jsx_runtime$2.jsx)(Div,{sx:{marginTop:`1em`},children:(0,import_jsx_runtime$2.jsx)(Button,{color:`primary`,variant:`contained`,disabled:ke<0||ke>I,onClick:Pe,children:`Start Match`})})]})]}),(0,import_jsx_runtime$2.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime$2.jsx)(`li`,{children:(0,import_jsx_runtime$2.jsx)(Card,{children:(0,import_jsx_runtime$2.jsx)(CardContent,{children:(0,import_jsx_runtime$2.jsx)(Markdown,{children:`Farmhand Shuffle is a card game for farmers! Just like the Field, the goal is to plant, water, and harvest crops for a profit. Some crop values rise and fall depending on the turn, so try to time your harvest to make the most of it.
411
411
 
412
- In Farmhand Shuffle you play against a bot opponent and pay money into a Community Fund at the start of every turn. Whoever avoids bankruptcy the longest wins!`})})})})})]}),De===`playing`&&Ne!==`error`&&(0,import_jsx_runtime$2.jsx)(mw,{playerSeeds:Me,userPlayerId:z,initialMatch:Ne,onMatchEnd:Ie,onCheckpoint:Le,hideDefaultGameOverActions:!0,useGenericPlayerLabels:!0,hideScrollbar:!0,sx:{height:`100%`,backgroundColor:`transparent`,backgroundImage:`none`,color:`black`,"--farmhand-shuffle-placeholder-outline-color":`rgba(0, 0, 0, 0.35)`,"--farmhand-shuffle-content-padding":`0.5rem`,"--farmhand-shuffle-bottom-inset":`0px`,"@media (max-width: 899.95px)":{"--farmhand-shuffle-bottom-inset":`7.5em`},"--farmhand-shuffle-hand-toggle-bottom":`1.4375rem`,"--farmhand-shuffle-hand-toggle-left":`1.4375rem`},renderGameOverContent:I=>(0,import_jsx_runtime$2.jsx)(ShuffleResultSummary,{winnerId:I,userPlayerId:z,wager:je.current,winStreak:F.currentWinStreak,onPlayAgain:Re,onLeave:ze})})]})},brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,hay_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACYElEQVRoQ8VYwVEDQQwjbxqgBWqiHTqhDOpg+PKkAd5kNjPL7Dm2Jdkbwi+czyvZss53p4+3l9+Hwt/j0/Phrp/vz0KW/i0nhoAFO47NAHvx6B6Gysy7nk0RYJIzMSoxpst/BNTkDGA1hgE8c85Y2IGImAcOzYEngZEn+r93ho2FBJQqsl1c4xDp9fxxn43fSkAhuyv29PX+erBRpiKKVm0F52/vnEpnrjrg6XEH4MhGPVmsc5ERHte2SkghqgxuJrcWAQWwtT9GqpkLzWsSgQrgCvDMuiUX6gDO2o6eLUp3wiHu7i5KFTuWSksIWdwtuoXOvLjQfA4obWMSe1bY6WrUUXeZU8io7d/dqVBC7F6jEmCHmy0iPQPWDi0Q9sBIWlV5yQSUiv9HF6+WObR7ME/HSg5GWl6X0w5k+wrrREh6inQ8PJSEVLCKzLKZyDbYec2VEPPFwcawJHdtoZO424Hu8HlkqsA9LHf7rKIYAGsE1Ayoml7jd26eXt4WAQROcRi2SFaKlI1GyZWnLwtQjUu/zO0E2DWGiFhLQspQomKwLuVKiPVwtb2VeJVI6ZUSeTMDHBUNXZ9nQAmpFcnARzJCYDMMkIBdxpCWma1yjVHyeUQvBHZIwgJHVWVkxhRDfqW0SZUKKqDZd2daQtHhle5lyx67A1FDzA4wqixbTZTHu059F7olgGh2WGmWVonOgLL3snHtGWCcomqb1sK97XYLgVstamjXGjIrE2BbvILYPUsjX7oLqZamusgOQlQH7vHm5ekfzkDH9ysPtAEIFQfZ6eG7EApWJYKG0KuoesYZ+5TyAAnuGB8AAAAASUVORK5CYIIA`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:F,field:I,isMenuOpen:L=!0,stageFocus:R,useAlternateEndDayButtonPosition:z=!1,viewTitle:De})=>{let Oe=(0,import_react$10.useRef)(null);(0,import_react$10.useEffect)(()=>{if(Oe.current){let F=Oe.current,{style:I}=F;F.scrollTop=0,I.overflow=`hidden`,setTimeout(()=>I.overflow=``,0)}},[R]);let ke={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default,[stageFocusType.FARMHAND_SHUFFLE]:hay_bg_default}[R],Ae=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(R);return(0,import_jsx_runtime$2.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":R,role:`main`,ref:Oe,sx:I=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:I.transitions.create(`margin-left`,{duration:I.transitions.duration.enteringScreen,easing:I.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...ke?{backgroundImage:`url(${ke})`}:{},...Ae?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(F)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...R===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`},...R===stageFocusType.FARMHAND_SHUFFLE&&{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...z?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...L?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *:not(.stage-background)":{opacity:1,transition:I.transitions.create(`opacity`,{duration:I.transitions.duration.enteringScreen,easing:I.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:I.transitions.create(`margin-left`,{duration:I.transitions.duration.leavingScreen,easing:I.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}},...R===stageFocusType.FARMHAND_SHUFFLE?{overflow:`hidden`,padding:0}:{}}),children:[(0,import_jsx_runtime$2.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime$2.jsx)(`h2`,{className:`view-title`,children:De}),R===stageFocusType.HOME&&(0,import_jsx_runtime$2.jsx)(Consumer$7,{}),R===stageFocusType.FIELD&&(0,import_jsx_runtime$2.jsx)(Consumer$10,{columns:I[0].length,rows:I.length}),R===stageFocusType.FOREST&&(0,import_jsx_runtime$2.jsx)(Forest,{}),R===stageFocusType.SHOP&&(0,import_jsx_runtime$2.jsx)(Consumer$4,{}),R===stageFocusType.COW_PEN&&(0,import_jsx_runtime$2.jsx)(Consumer$6,{}),R===stageFocusType.WORKSHOP&&(0,import_jsx_runtime$2.jsx)(Consumer$1,{}),R===stageFocusType.CELLAR&&(0,import_jsx_runtime$2.jsx)(Cellar,{}),R===stageFocusType.FARMHAND_SHUFFLE&&(0,import_jsx_runtime$2.jsx)(FarmhandShuffleView,{}),R!==stageFocusType.FARMHAND_SHUFFLE&&(0,import_jsx_runtime$2.jsx)(`div`,{className:`spacer`})]})};function Consumer(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Stage,{...I,...L,...F})})}var scriptRel=`modulepreload`,assetsURL=function(F,I){return new URL(F,I).href},seen={},__vitePreload=function(F,I,L){let R=Promise.resolve();if(I&&I.length>0){let F=document.getElementsByTagName(`link`),z=document.querySelector(`meta[property=csp-nonce]`),De=z?.nonce||z?.getAttribute(`nonce`);function Oe(F){return Promise.all(F.map(F=>Promise.resolve(F).then(F=>({status:`fulfilled`,value:F}),F=>({status:`rejected`,reason:F}))))}function ke(F){return import.meta.resolve?import.meta.resolve(F):new URL(F,import.meta.url).href}R=Oe(I.map(I=>{if(I=assetsURL(I,L),I=ke(I),I in seen)return;seen[I]=!0;let R=I.endsWith(`.css`);for(let L=F.length-1;L>=0;L--){let z=F[L];if(z.href===I&&(!R||z.rel===`stylesheet`))return}let z=document.createElement(`link`);if(z.rel=R?`stylesheet`:scriptRel,R||(z.as=`script`),z.crossOrigin=``,z.href=I,De&&z.setAttribute(`nonce`,De),document.head.appendChild(z),R)return new Promise((F,L)=>{z.addEventListener(`load`,F),z.addEventListener(`error`,()=>L(Error(`Unable to preload CSS for ${I}`)))})}))}function z(F){let I=new Event(`vite:preloadError`,{cancelable:!0});if(I.payload=F,window.dispatchEvent(I),!I.defaultPrevented)throw F}return R.then(I=>{for(let F of I||[])F.status===`rejected`&&z(F.reason);return F().catch(z)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(F={}){let{immediate:I=!1,onNeedReload:L,onNeedRefresh:R,onOfflineReady:z,onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}=F,Ae,je,Me,Ne=async(F=!0)=>{await je,auto||Me?.()};async function Pe(){if(`serviceWorker`in navigator){if(Ae=await __vitePreload(async()=>{let{Workbox:F}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:F}},[],import.meta.url).then(({Workbox:F})=>new F(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(F=>{ke?.(F)}),!Ae)return;if(Me=()=>{Ae?.messageSkipWaiting()},!autoDestroy)if(auto)Ae.addEventListener(`activated`,F=>{(F.isUpdate||F.isExternal)&&(L?L():window.location.reload())}),Ae.addEventListener(`installed`,F=>{F.isUpdate||z?.()});else{let F=!1,I=()=>{F=!0,Ae?.addEventListener(`controlling`,F=>{F.isUpdate&&(L?L():window.location.reload())}),R?.()};Ae.addEventListener(`installed`,L=>{L.isUpdate===void 0?L.isExternal===void 0?!F&&z?.():L.isExternal?I():!F&&z?.():L.isUpdate||z?.()}),Ae.addEventListener(`waiting`,I)}Ae.register({immediate:I}).then(F=>{Oe?Oe(`./service-worker.js`,F):De?.(F)}).catch(F=>{ke?.(F)})}}return je=Pe(),Ne}function useRegisterSW(F={}){let{immediate:I=!0,onNeedReload:L,onNeedRefresh:R,onOfflineReady:z,onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}=F,[Ae,je]=(0,import_react$10.useState)(!1),[Me,Ne]=(0,import_react$10.useState)(!1),[Pe]=(0,import_react$10.useState)(()=>registerSW({immediate:I,onNeedReload:L,onOfflineReady(){Ne(!0),z?.()},onNeedRefresh(){je(!0),R?.()},onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}));return{needRefresh:[Ae,je],offlineReady:[Me,Ne],updateServiceWorker:Pe}}var RELOAD_FALLBACK_DELAY=1e3,UpdateNotifier=()=>{let{gameState:{hasBooted:F},handlers:{handleGameUpdateAvailable:I}}=(0,import_react$10.useContext)(FarmhandContext),{needRefresh:[L],updateServiceWorker:R}=useRegisterSW(),z=(0,import_react$10.useRef)(!1);return(0,import_react$10.useEffect)(()=>{!L||!F||z.current||(z.current=!0,I(async()=>{await R(!0),setTimeout(()=>window.location.reload(),RELOAD_FALLBACK_DELAY)}),window.addEventListener(`beforeunload`,()=>{R(!0)}))},[L,F,I,R]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(F=``,I={}){let L=new URLSearchParams;return Object.keys(I).forEach(F=>L.append(encodeURIComponent(F),encodeURIComponent(I[F]))),(await fetch(`${F}?${L}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(F=``,I={}){return(await fetch(F,{...commonFetchConfig,method:`POST`,body:JSON.stringify(I)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(F=>inventory.filter(({id:I})=>!(unlockableItems.hasOwnProperty(I)&&!F.items.hasOwnProperty(I)))),getPeerMetadata=F=>{let I=PEER_METADATA_STATE_KEYS.reduce((I,L)=>(I[L]=F[L],I),{});return Object.assign(I,{cowOfferedForTrade:F.cowInventory.find(({id:I})=>I===F.cowIdOfferedForTrade)}),I},getViewList=({isFarmhandShuffleUnlocked:F,isForestUnlocked:I,purchasedCellar:L,purchasedCowPen:R,showHomeScreen:z})=>{let{CELLAR:De,COW_PEN:Oe,HOME:ke,WORKSHOP:Ae,FOREST:je,FARMHAND_SHUFFLE:Me}=stageFocusType,Ne=[...STANDARD_VIEW_LIST];return z&&Ne.unshift(ke),I&&Ne.push(je),R&&Ne.push(Oe),Ne.push(Ae),L&&Ne.push(De),F&&Ne.push(Me),Ne},getValidatedStageFocusFromHash=F=>{let I=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!I)return;let L=getLevelEntitlements(levelAchieved(F.experience)),R=L.stageFocusType[stageFocusType.FOREST],z=L.stageFocusType[stageFocusType.FARMHAND_SHUFFLE];return getViewList({isFarmhandShuffleUnlocked:z,isForestUnlocked:R,purchasedCellar:F.purchasedCellar,purchasedCowPen:F.purchasedCowPen,showHomeScreen:F.showHomeScreen}).find(F=>F===I)},sleep=F=>new Promise(I=>setTimeout(I,F)),getItemById=F=>{let I=itemsMap[F];if(!I)throw Error(`Unknown item id: ${F}`);return I},{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((F,I)=>F.map(({quantity:F,id:L})=>{let R=getItemById(L);return{quantity:F,...R,value:getItemCurrentValue(R,I)}}));static getFieldToolInventory=memoize(F=>F.filter(({id:F})=>{let I=getItemById(F);return typeof I.enablesFieldMode==`string`&&I.enablesFieldMode!==PLANT&&I.type!==MULCH}).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getPlantableCropInventory=memoize(F=>F.filter(({id:F})=>getItemById(F).isPlantableCrop).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getMulchInventory=memoize(F=>F.filter(({id:F})=>itemsMap[F]?.type===MULCH).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getPlantableTreeInventory=memoize(F=>F.filter(({id:F})=>itemsMap[F]?.isPlantableTree).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static applyPriceEvents=(F,I,L)=>{let R={...F};return Object.keys(I).forEach(F=>{R[F]=.5}),Object.keys(L).forEach(F=>{R[F]=1.5}),R}},itemIds=Object.keys(itemsMap),getInventoryQuantities=F=>{let I={};for(let F of itemIds)I[F]=0;for(let{id:L,quantity:R}of F)I[L]=R;return I},useFarmhandNavigation=(F,I)=>({openDialogView:(0,import_react$10.useCallback)(I=>{F(F=>({...F,currentDialogView:I,isDialogViewOpen:!0}))},[F]),closeDialogView:(0,import_react$10.useCallback)(()=>{F(F=>({...F,isDialogViewOpen:!1}))},[F]),focusNextView:(0,import_react$10.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&F(F=>{let L=I.indexOf(F.stageFocus);return{...F,stageFocus:I[(L+1)%I.length]}})},[F,I]),focusPreviousView:(0,import_react$10.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&F(F=>{let L=I.indexOf(F.stageFocus),R=L===0?I.length-1:(L-1)%I.length;return{...F,stageFocus:I[R]}})},[F,I])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(F,I)=>Array(F).fill(void 0).map(I),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=F=>alloc(F,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=F=>(F!==null&&clearTimeout(F),null),mkErr=F=>Error(`${libName}: ${F}`),toErrorMessage=(F,I)=>F instanceof Error&&F.message?F.message:typeof F==`string`&&F?F:toJson(F??I),toError=(F,I)=>F instanceof Error?F:mkErr(toErrorMessage(F,I)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=F=>encoder.encode(F),decodeBytes=F=>decoder.decode(F),toHex=F=>F.reduce((F,I)=>F+I.toString(16).padStart(2,`0`),``),topicPath=(...F)=>F.join(`@`),shuffle=(F,I)=>{let L=[...F],R=()=>{let F=sin(I++)*1e4;return F-floor(F)},z=L.length;for(;z;){let F=floor(R()*z--),I=L[z];L[z]=L[F],L[F]=I}return L},getRelays=(F,I,L,R=!1)=>F.relayConfig?.urls||(R?shuffle(I,strToNum(F.appId)):I).slice(0,F.relayConfig?.redundancy??L),toJson=JSON.stringify,fromJson=F=>{try{return JSON.parse(F)}catch{throw mkErr(`failed to parse JSON: ${F}`)}},strToNum=(F,I=2**53-1)=>F.split(``).reduce((F,I)=>F+I.charCodeAt(0),0)%I,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(F=>{resolver=F}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(F,I)=>{let L={},R=()=>{let z=new WebSocket(F);z.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(R);return}socketRetryPeriods[F]??=defaultRetryMs,setTimeout(R,socketRetryPeriods[F]),socketRetryPeriods[F]*=2},z.onmessage=F=>I(String(F.data)),L.socket=z,L.url=z.url,L.ready=new Promise(I=>z.onopen=()=>{I(L),socketRetryPeriods[F]=defaultRetryMs}),L.send=F=>{z.readyState===1&&z.send(F)}};return R(),L},createRelayManager=F=>{let I={},L=new WeakMap,R=F=>{let I=L.get(F);if(!I)throw mkErr(`relay bookkeeping missing registration for relay client`);return I};return{register:(F,R)=>(I[F]=R,L.set(R,F),R),keyOf:R,scoped:()=>{let F={},I=I=>F[I]??={};return{forKey:I,forRelay:F=>I(R(F))}},getSockets:()=>fromEntries(entries(I).flatMap(([I,L])=>{let R=F(L);return R?[[I,R]]:[]}))}},watchOnline=()=>{if(isBrowser){let F=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:F.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:F.signal}),()=>F.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=F=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(F)))),unpack=F=>{let I=atob(F);return new Uint8Array(I.length).map((F,L)=>I.charCodeAt(L)).buffer},hashWith=async(F,I)=>new Uint8Array(await crypto.subtle.digest(F,encodeBytes(I))),sha1=async F=>strToSha1[F]??=Array.from(await hashWith(`SHA-1`,F)).map(F=>F.toString(36)).join(``),genKey=async(F,I,L)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${F}:${I}:${L}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(F,I)=>toHex(await hashWith(`SHA-256`,`${libName}:${F}:${I}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(F,I)=>{let L=crypto.getRandomValues(new Uint8Array(16));return L.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:L},await F,encodeBytes(I)))},decrypt=async(F,I)=>{let[L,R]=I.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(L?.split(ivJoinChar).map(Number)??[])},await F,unpack(R??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(F){this.makeOffer=F}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(F=>this.push(F)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(F=>F.isDead?(this.pooled.delete(F),!1):!0)},offerTtl)}push(F){F.isDead||this.pooled.has(F)||this.leased.has(F)||(this.pool.push(F),this.pooled.add(F))}shift(F){let I=[];for(;I.length<F&&this.pool.length>0;){let F=this.pool.shift();if(!F)break;this.pooled.delete(F),I.push(F)}return I}claimLeased(F){let I=this.leased.get(F);I&&(resetTimer(I),this.leased.delete(F))}recycle(F){if(!(F.isDead||this.recycling.has(F))){if(F.connection.remoteDescription){F.destroy();return}if(!this.active){F.destroy();return}this.recycling.add(F),F.setHandlers({connect:noOp,close:noOp,error:noOp}),F.getOffer(!0).then(I=>{if(!I||I.type!==`offer`||F.isDead||!this.active){F.destroy();return}this.push(F)}).catch(()=>F.destroy()).finally(()=>this.recycling.delete(F))}}reclaimLeased(F){let I=this.leased.get(F);I&&(resetTimer(I),this.leased.delete(F),this.recycle(F))}lease(F){this.claimLeased(F),this.leased.set(F,setTimeout(()=>{this.leased.delete(F),this.recycle(F)},offerLeaseTtlMs))}checkout(F,I,L){let R=this.shift(F),z=Math.max(0,F-R.length);z>0&&R.push(...alloc(z,this.makeOffer));let De=async(F,R=!1)=>{try{let R=await L(F);return I?(this.lease(F),{peer:F,offer:R,claim:()=>this.claimLeased(F),reclaim:()=>this.reclaimLeased(F)}):{peer:F,offer:R}}catch(I){if(this.claimLeased(F),this.pooled.delete(F),F.destroy(),!R)return De(this.makeOffer(),!0);throw I}};return all(R.map(F=>De(F)))}getOffers(F,I){return this.checkout(F,!0,I)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(F=>F.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((F,I)=>{resetTimer(F),I.destroy()}),this.leased.clear(),this.recycling.forEach(F=>F.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(F,I,L)=>{let R=R=>hashWith(`SHA-256`,`${R}:${F}:${I}:${L}`).then(toHex),z=async(I,L,z)=>{if(!F)return;if(z){let F=genId(36);await I({__trystero_pw:`challenge`,c:F});let{data:z}=await L();if(!z||typeof z!=`object`||z.__trystero_pw!==`response`||typeof z.h!=`string`)throw overlapRoomPasswordErr;let De=await R(F);if(z.h!==De)throw overlapRoomPasswordErr;return}let{data:De}=await L();if(!De||typeof De!=`object`||De.__trystero_pw!==`challenge`||typeof De.c!=`string`)throw overlapRoomPasswordErr;await I({__trystero_pw:`response`,h:await R(De.c)})};return{run:z,compose:I=>F||I?async(F,L,R,De)=>{await z(L,R,De),await I?.(F,L,R,De)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=F=>F.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(F,{trickleIce:I,rtcConfig:L,rtcPolyfill:R,turnConfig:z,_test_only_mdnsHostFallbackToLoopback:De})=>{let Oe=new(R??RTCPeerConnection)({iceServers:defaultIceServers.concat(z??[]),...L}),ke={},Ae=[],je=[],Me=I!==!1,Ne=[],Pe=[],Fe=!1,Ie=!1,Le=null,Re=null,ze=!1,Be=()=>Re=resetTimer(Re),Ge=()=>{ze||(ze=!0,Be(),ke.close?.())},rt=F=>{ke.signal?ke.signal(F):Ae.push(F)},it=F=>{let I=ke.signal;ke.signal=L=>{I?.(L),F(L)},Ae.length>0&&Ae.splice(0).forEach(F=>ke.signal?.(F))},at=F=>De?rewriteMdnsCandidatesToLoopback(F):F,ot=F=>{if(!De||typeof F.candidate!=`string`)return F;let I=rewriteMdnsCandidatesToLoopback(F.candidate);return I===F.candidate?F:{...F,candidate:I}},st=F=>({type:F.localDescription?.type??offerType,sdp:at(F.localDescription?.sdp??``)}),ct=()=>{let F=Oe.remoteDescription?.sdp;return F?F.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},lt=()=>(Oe.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,ut=F=>{if(!Oe.remoteDescription)return!1;let I=lt();if(typeof F.sdpMLineIndex==`number`&&I>0&&F.sdpMLineIndex>=I)return!1;let L=ct();return!(L&&F.usernameFragment&&F.usernameFragment!==L)},dt=async F=>{try{return await Oe.addIceCandidate(F),!0}catch(I){if(I instanceof Error&&outOfRangePattern.test(I.message)&&typeof F.sdpMLineIndex==`number`)return!1;throw I}},ft=async()=>{if(!Oe.remoteDescription||Ne.length===0)return;let F=Ne.splice(0),I=[];for(let L of F){if(!ut(L)){I.push(L);continue}await dt(L)||I.push(L)}I.length>0&&Ne.push(...I)},pt=async F=>{if(ut(F)){await dt(F)||Ne.push(F);return}Ne.push(F)},mt=F=>{F.binaryType=`arraybuffer`,F.bufferedAmountLowThreshold=65535,F.onmessage=F=>{let I=F.data;ke.data?ke.data(I):je.push(I)},F.onopen=()=>ke.connect?.(),F.onclose=Ge,F.onerror=({error:F})=>ke.error?.(toError(F,`data channel error`))},ht=async F=>{let I=null;try{await Promise.race([new Promise(I=>{let L=()=>{F.iceGatheringState===`complete`&&(F.removeEventListener(iceStateEvent,L),I())};F.addEventListener(iceStateEvent,L),L()}),new Promise(F=>{I=setTimeout(F,iceTimeout)})])}finally{resetTimer(I)}return st(F)},gt=async()=>{let F=Me?st(Oe):await ht(Oe);return rt(F),F};F?(Le=Oe.createDataChannel(`data`),mt(Le)):Oe.ondatachannel=({channel:F})=>{Le=F,mt(F)};let vt=async(F=!1)=>{if(Oe.connectionState!==`closed`)try{return Fe=!0,F&&(Oe.signalingState!==`stable`&&Oe.signalingState!==`closed`&&Oe.localDescription?.type===offerType&&await Oe.setLocalDescription({type:`rollback`}),typeof Oe.restartIce==`function`&&Oe.restartIce()),await Oe.setLocalDescription(F?await Oe.createOffer({iceRestart:!0}):void 0),await gt()}catch(F){ke.error?.(toError(F,`failed to create local offer`))}finally{Fe=!1}};Oe.onnegotiationneeded=async()=>vt(!1),Oe.onicecandidate=({candidate:F})=>{if(!Me||!F)return;let I=ot(typeof F.toJSON==`function`?F.toJSON():{candidate:F.candidate,sdpMid:F.sdpMid,sdpMLineIndex:F.sdpMLineIndex,usernameFragment:F.usernameFragment});rt({type:candidateType,sdp:JSON.stringify(I)})},Oe.onconnectionstatechange=()=>{if(Oe.connectionState===`connected`||Oe.connectionState===`connecting`){Be();return}if(Oe.connectionState===`disconnected`){Re||=setTimeout(()=>{Re=null,Oe.connectionState===`disconnected`&&Ge()},disconnectedCloseDelayMs);return}(Oe.connectionState===`failed`||Oe.connectionState===`closed`)&&Ge()},Oe.ontrack=F=>{let I=F.streams[0];if(I){if(!ke.track&&!ke.stream){Pe.push({track:F.track,stream:I});return}ke.track?.(F.track,I),ke.stream?.(I)}},Oe.onremovestream=F=>ke.stream?.(F.stream);let yt=F?new Promise(F=>it(I=>{I.type===offerType&&F(I)})):Promise.resolve();return F&&queueMicrotask(()=>{!Fe&&Oe.signalingState===`stable`&&!Oe.localDescription&&Oe.connectionState!==`closed`&&Oe.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:Oe,get channel(){return Le},get isDead(){return Oe.connectionState===`closed`},getOffer:async(I=!1)=>{if(F)return I?vt(!0):Oe.localDescription?.type===offerType?Me?st(Oe):ht(Oe):yt},async signal(I){if(I.type===`candidate`){try{let F=JSON.parse(I.sdp);F&&typeof F==`object`&&await pt(ot(F))}catch(F){ke.error?.(toError(F,`failed to parse remote candidate`))}return}if(!(Le?.readyState===`open`&&!I.sdp?.includes(`a=rtpmap`)))try{let L={...I,sdp:at(I.sdp)};if(I.type===offerType){if(Fe||Oe.signalingState!==`stable`&&!Ie){if(F)return;await all([Oe.setLocalDescription({type:`rollback`}),Oe.setRemoteDescription(L)])}else await Oe.setRemoteDescription(L);return await ft(),await Oe.setLocalDescription(),await gt()}if(I.type===answerType){Ie=!0;try{await Oe.setRemoteDescription(L),await ft()}finally{Ie=!1}}}catch(F){ke.error?.(toError(F,`failed to apply remote signal`))}},sendData:F=>Le?.send(F),destroy:()=>{Be(),Le?.close(),Oe.close(),Fe=!1,Ie=!1,Ge()},setHandlers:F=>{let{signal:I,...L}=F;Object.assign(ke,L),ke.data&&je.length>0&&je.splice(0).forEach(F=>ke.data?.(F)),I&&it(I),(ke.track||ke.stream)&&Pe.length>0&&Pe.splice(0).forEach(({track:F,stream:I})=>{ke.track?.(F,I),ke.stream?.(I)})},offerPromise:yt,addStream:F=>F.getTracks().forEach(I=>Oe.addTrack(I,F)),removeStream:F=>Oe.getSenders().filter(I=>I.track&&F.getTracks().includes(I.track)).forEach(F=>Oe.removeTrack(F)),addTrack:(F,I)=>Oe.addTrack(F,I),removeTrack:F=>{let I=Oe.getSenders().find(I=>I.track===F);I&&Oe.removeTrack(I)},replaceTrack:(F,I)=>{let L=Oe.getSenders().find(I=>I.track===F);if(L)return L.replaceTrack(I)}}},defaultIceServers=[...alloc(3,(F,I)=>`stun:stun${I||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(F=>({urls:F})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=F=>`@_`+F,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(F=>F()),registerBeforeUnloadCleanup=F=>(beforeUnloadRoomCleanups.add(F),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(F),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=F=>F instanceof ArrayBuffer?new Uint8Array(F):new Uint8Array(F.buffer,F.byteOffset,F.byteLength),toHandshakeErrorMessage=F=>{let I=toErrorMessage(F,`unknown error`);return I.startsWith(`handshake `)?I:`handshake failed: ${I}`},waitForBufferedAmountLow=(F,I=backpressureWaitTimeoutMs)=>F.readyState!==`open`||F.bufferedAmount<=F.bufferedAmountLowThreshold?Promise.resolve(F.readyState===`open`):new Promise(L=>{let R=!1,z=null,De=I=>{R||(R=!0,F.removeEventListener(buffLowEvent,Oe),F.removeEventListener(channelCloseEvent,ke),F.removeEventListener(channelErrorEvent,ke),resetTimer(z),L(I))},Oe=()=>De(!0),ke=()=>De(!1);if(F.addEventListener(buffLowEvent,Oe),F.addEventListener(channelCloseEvent,ke),F.addEventListener(channelErrorEvent,ke),z=setTimeout(()=>De(!1),I),F.readyState!==`open`){De(!1);return}F.bufferedAmount<=F.bufferedAmountLowThreshold&&De(!0)}),room_default=(F,I,L,{onPeerHandshake:R,onHandshakeError:z,handshakeTimeoutMs:De=defaultHandshakeTimeoutMs}={})=>{let Oe={},ke={},Ae={},je={},Me={},Ne={},Pe={},Fe={},Ie={},Le={},Re=new WeakMap,ze=new WeakMap,Be={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},Ge=noOp,rt=(F,I,{includePending:L=!1}={})=>(F?Array.isArray(F)?F:[F]:keys(L?Oe:ke)).flatMap(F=>{let R=L?Oe[F]:ke[F];return R?[Promise.resolve(I(F,R))]:(console.warn(`${libName}: no peer with id ${F} found`),[])}),it=(F,I,L,R,z,De={})=>{let Oe={k:I,...De,...L===void 0?{}:{m:L}};return rt(F,async(F,I)=>{await R(Oe,F),z(I)})},at=F=>I=>{let L=F.get(I);return L||(L=genId(20),F.set(I,L)),L},ot=at(Re),st=at(ze),ct=F=>Oe[F]??null,lt=(F,I,L,R)=>{ke[F]&&(ct(F)?.__trysteroSetRemoteStreamByKey?.(I,L),typeof L.id==`string`&&ct(F)?.__trysteroSetRemoteStreamById?.(L.id,L),Be.onPeerStream(L,F,R))},ut=(F,I,L,R,z)=>{ke[F]&&(ct(F)?.__trysteroSetRemoteTrackByKey?.(I,L,R),typeof R.id==`string`&&ct(F)?.__trysteroSetRemoteStreamById?.(R.id,R),typeof L.id==`string`&&ct(F)?.__trysteroSetRemoteTrackById?.(L.id,L,R),Be.onPeerTrack(L,R,F,z))},dt=(F,I=mkErr(`peer disconnected`))=>{let L=Ae[F],R=toError(I,`peer disconnected`);L&&(resetTimer(L.handshakeTimer),L.pendingHandshakePayloads.length=0,L.handshakeWaiters.splice(0).forEach(F=>F.reject(R)),delete Ae[F]),delete Oe[F],delete ke[F],delete Ne[F],Fe[F]?.splice(0).forEach(F=>F.reject(R)),delete Fe[F],delete Ie[F],delete Le[F]},ft=(F,L,R)=>{let z=Oe[F];if(!z||L&&z!==L)return;let De=!!ke[F];dt(F,R),z.destroy(),De&&Be.onPeerLeave(F),I(F)},pt=(F,I={})=>{let L=Me[F];if(je[F]&&L){let R=je[F].options;if(R.sendToPending!==!!I.sendToPending||R.receiveWhilePending!==!!I.receiveWhilePending)throw mkErr(`action type "${F}" cannot be redefined`);return L}if(!F)throw mkErr(`action type argument is required`);let R=encodeBytes(F);if(R.byteLength>typeByteLimit)throw mkErr(`action type string "${F}" (${R.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let z={sendToPending:!!I.sendToPending,receiveWhilePending:!!I.receiveWhilePending},De=new Uint8Array(typeByteLimit);De.set(R);let Ae=0;return je[F]={onComplete:noOp,onProgress:noOp,setOnComplete:I=>{je[F].onComplete=I;let L=Pe[F];L?.length&&(delete Pe[F],L.forEach(({payload:F,peerId:L,metadata:R})=>I(F,L,R)))},setOnProgress:I=>{je[F].onProgress=I},send:async(F,I,L,R)=>{let je=typeof F;if(je===`undefined`)throw mkErr(`action data cannot be undefined`);let Me=je!==`string`,Ne=F instanceof Blob,Pe=Ne||F instanceof ArrayBuffer||F instanceof TypedArray,Fe=L!==void 0,Ie=Pe?toByteArray(Ne?await F.arrayBuffer():F):encodeBytes(Me?toJson(F):F),Le=Fe?encodeBytes(toJson(L)):null,Re=Math.ceil(Ie.byteLength/chunkSize)+ +!!Fe||1,ze=alloc(Re,(F,I)=>{let L=I===Re-1,R=!!(Fe&&I===0),z=new Uint8Array(payloadIndex+(R?Le?.byteLength??0:L?Ie.byteLength-chunkSize*(Re-(Fe?2:1)):chunkSize));return z.set(De),z.set([Ae>>8,Ae&oneByteMax],nonceIndex),z.set([Number(L)|Number(R)<<1|Number(Pe)<<2|Number(Me)<<3],tagIndex),z.set([Math.round((I+1)/Re*oneByteMax)],progressIndex),z.set(Fe?R?Le??new Uint8Array:Ie.subarray((I-1)*chunkSize,I*chunkSize):Ie.subarray(I*chunkSize,(I+1)*chunkSize),payloadIndex),z});return Ae=Ae+1&twoByteMax,await all(rt(I,async(F,I)=>{let{channel:De}=I,Ae=0;for(;Ae<Re;){let je=ze[Ae];if(!je||De&&De.bufferedAmount>De.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(De))break;let Me=z.sendToPending?Oe[F]:ke[F];if(!Me||Me!==I)break;I.sendData(je),Ae++;let Ne=je[progressIndex]??oneByteMax;R?.(Ne/oneByteMax,F,L)}},{includePending:z.sendToPending})),[]},options:z},Me[F]=[je[F].send,je[F].setOnComplete,je[F].setOnProgress]},mt=F=>pt(F),ht=(F,I)=>{let L=Ae[F];if(!L)return;let R=new Uint8Array(I),z=decodeBytes(R.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),De=je[z];if(!L.isActive&&!De?.options.receiveWhilePending)return;let Oe=(R[nonceIndex]??0)<<8|(R[33]??0),ke=R[tagIndex]??0,Me=R[progressIndex]??0,Fe=R.subarray(payloadIndex),Ie=!!(ke&1),Le=!!(ke&2),Re=!!(ke&4),ze=!!(ke&8);Ne[F]??={},Ne[F][z]??={};let Be=Ne[F][z][Oe]??={chunks:[]};if(Le?Be.meta=fromJson(decodeBytes(Fe)):Be.chunks.push(Fe),De?.onProgress(Me/oneByteMax,F,Be.meta),!Ie)return;let Ge=new Uint8Array(Be.chunks.reduce((F,I)=>F+I.byteLength,0));if(Be.chunks.reduce((F,I)=>(Ge.set(I,F),F+I.byteLength),0),delete Ne[F][z][Oe],Re)De?De.onComplete(Ge,F,Be.meta):(Pe[z]??=[]).push({payload:Ge,peerId:F,...Be.meta===void 0?{}:{metadata:Be.meta}});else{let I=decodeBytes(Ge),L=ze?fromJson(I):I;De?De.onComplete(L,F,Be.meta):(Pe[z]??=[]).push({payload:L,peerId:F,...Be.meta===void 0?{}:{metadata:Be.meta}})}},gt=async()=>{await xw(``),await new Promise(F=>setTimeout(F,99)),entries(Oe).forEach(([F,I])=>{I.destroy(),dt(F,mkErr(`room left`))}),Ge(),L()},[vt,yt]=pt(internalNs(`ping`)),[yr,br]=pt(internalNs(`pong`)),[hw,gw]=pt(internalNs(`signal`)),[_w,vw]=pt(internalNs(`stream`)),[yw,bw]=pt(internalNs(`track`)),[xw,Sw]=pt(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[Cw,ww]=pt(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[Tw,Ew]=pt(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),Dw=(F,I)=>{let L=Ae[F];!L||I&&L.peer!==I||L.isActive||!L.didLocalHandshakePass||!L.didReceiveRemoteReady||(L.isActive=!0,ke[F]=L.peer,L.handshakeTimer=resetTimer(L.handshakeTimer),Be.onPeerJoin(F))},Ow=(F,I,L)=>{let R=Ae[F];if(!R||R.peer!==I)return;let De=toHandshakeErrorMessage(L);z?.(F,De),ft(F,I,mkErr(De))},kw=(F,I)=>{let L=Ae[F];!L||L.peer!==I||L.isActive||(L.didLocalHandshakePass=!0,Tw(``,F).catch(L=>Ow(F,I,mkErr(`failed sending handshake readiness: ${toErrorMessage(L,`unknown send failure`)}`))),Dw(F,I))},Aw=(F,I)=>{let L=Ae[F];if(!L||L.peer!==I)return;L.handshakeTimer=setTimeout(()=>Ow(F,I,mkErr(`handshake timed out after ${De}ms`)),De);let z=async(I,L)=>{await Cw(I,F,L)},Oe=()=>new Promise((L,R)=>{let z=Ae[F];if(!z||z.peer!==I){R(mkErr(`peer disconnected during handshake`));return}let De=z.pendingHandshakePayloads.shift();if(De){L(De);return}z.handshakeWaiters.push({resolve:L,reject:F=>R(F)})}),ke=selfId<F;Promise.resolve(R?.(F,z,Oe,ke)).then(()=>kw(F,I)).catch(L=>Ow(F,I,toError(L,`handshake failed`)))},jw=F=>F&&typeof F==`object`&&!Array.isArray(F)&&typeof F.k==`string`?{key:F.k,...typeof F.s==`string`?{streamId:F.s}:{},...typeof F.t==`string`?{trackId:F.t}:{},...Object.hasOwn(F,`m`)?{metadata:F.m}:{}}:null;return yt((F,I)=>yr(``,I)),br((F,I)=>{let L=Fe[I];(L?.shift())?.resolve(),L&&!L.length&&delete Fe[I]}),gw((F,I)=>{ke[I]&&Oe[I]?.signal(F)}),vw((F,I)=>{if(!ke[I])return;let L=jw(F);if(!L)return;let R=ct(I),z=R?.__trysteroGetRemoteStreamByKey?.(L.key)??(L.streamId?R?.__trysteroGetRemoteStreamById?.(L.streamId):void 0);if(z){lt(I,L.key,z,L.metadata);return}(Ie[I]??=[]).push(L)}),bw((F,I)=>{if(!ke[I])return;let L=jw(F);if(!L)return;let R=ct(I),z=R?.__trysteroGetRemoteTrackByKey?.(L.key)??(L.trackId?R?.__trysteroGetRemoteTrackById?.(L.trackId):void 0);if(z){ut(I,L.key,z.track,z.stream,L.metadata);return}(Le[I]??=[]).push(L)}),Sw((F,I)=>ft(I,void 0,mkErr(`peer left room`))),ww((F,I,L)=>{let R=Ae[I];if(!R||R.isActive)return;let z=L===void 0?{data:F}:{data:F,metadata:L},De=R.handshakeWaiters.shift();if(De){De.resolve(z);return}R.pendingHandshakePayloads.push(z)}),Ew((F,I)=>{let L=Ae[I];!L||L.isActive||(L.didReceiveRemoteReady=!0,Dw(I))}),F((F,I)=>{let L=Oe[I];if(L){if(L===F)return;L.destroy(),dt(I,mkErr(`peer replaced`))}Oe[I]=F,Ae[I]={peer:F,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},F.setHandlers({data:F=>ht(I,F),stream:F=>{if(!ke[I])return;let L=Ie[I]?.shift();L&&lt(I,L.key,F,L.metadata)},track:(F,L)=>{if(!ke[I])return;let R=Le[I]?.shift();R&&ut(I,R.key,F,L,R.metadata)},signal:F=>{ke[I]&&hw(F,I)},close:()=>ft(I,F,mkErr(`peer disconnected`)),error:L=>{console.error(`${libName} peer error:`,L),ft(I,F,L)}}),Aw(I,F)}),isBrowser&&(Ge=registerBeforeUnloadCleanup(()=>gt().catch(noOp))),{makeAction:mt,leave:gt,ping:async F=>{if(!ke[F])throw mkErr(`no active peer with id ${F}`);let I=Date.now();return await new Promise((I,L)=>{let R=Fe[F]??=[],z=()=>{let I=Fe[F];if(!I)return;let L=I.indexOf(De);L>-1&&I.splice(L,1),I.length||delete Fe[F]},De={resolve:()=>{z(),I()},reject:F=>{z(),L(F)}};R.push(De),vt(``,F).catch(F=>De.reject(toError(F,`peer disconnected`)))}),Date.now()-I},getPeers:()=>fromEntries(entries(ke).map(([F,I])=>[F,I.connection])),addStream:(F,I,L)=>it(I,ot(F),L,_w,I=>I.addStream(F),{s:F.id}),removeStream:(F,I)=>{rt(I,(I,L)=>L.removeStream(F))},addTrack:(F,I,L,R)=>it(L,st(F),R,yw,L=>L.addTrack(F,I),{s:I.id,t:F.id}),removeTrack:(F,I)=>{rt(I,(I,L)=>L.removeTrack(F))},replaceTrack:(F,I,L,R)=>it(L,st(I),R,yw,L=>L.replaceTrack(F,I),{t:F.id}),onPeerJoin:F=>{Be.onPeerJoin=F,keys(ke).forEach(I=>F(I))},onPeerLeave:F=>Be.onPeerLeave=F,onPeerStream:F=>Be.onPeerStream=F,onPeerTrack:F=>Be.onPeerTrack=F}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(F,I)=>{let L=encodeBytes(F),R=new Uint8Array(3+L.byteLength+I.byteLength);return R[0]=roomFrameVersion,R[1]=L.byteLength>>>8&255,R[2]=L.byteLength&255,R.set(L,3),R.set(I,3+L.byteLength),R},wrapRoomPresenceFrame=(F,I)=>{let L=encodeBytes(F),R=new Uint8Array(4+L.byteLength);return R[0]=roomPresenceFrameVersion,R[1]=Number(I),R[2]=L.byteLength>>>8&255,R[3]=L.byteLength&255,R.set(L,4),R},unwrapFrame=F=>{let I=new Uint8Array(F);if(I.byteLength<3)return null;if(I[0]===roomFrameVersion){let F=(I[1]??0)<<8|(I[2]??0),L=3+F;return F<=0||I.byteLength<L?null:{type:`room`,roomToken:decodeBytes(I.subarray(3,L)),payload:I.subarray(L).slice().buffer}}if(I[0]!==roomPresenceFrameVersion||I.byteLength<4)return null;let L=(I[2]??0)<<8|(I[3]??0),R=4+L;return L<=0||I.byteLength<R?null:{type:`presence`,roomToken:decodeBytes(I.subarray(4,R)),isPresent:I[1]===1}},isPeerUnderlyingStale=F=>{let{connection:I,channel:L}=F;return F.isDead||I.connectionState===`closed`||I.connectionState===`failed`||I.iceConnectionState===`closed`||I.iceConnectionState===`failed`||L?.readyState===`closing`||L?.readyState===`closed`},getConnectedPeerHealth=F=>{if(isPeerUnderlyingStale(F))return`stale`;let{channel:I}=F;return!I||I.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(F){return this.byApp[F]??={}}get(F,I){return this.byApp[F]?.[I]}isPeerStale(F){return isPeerUnderlyingStale(F)}getHealth(F){return this.isPeerStale(F)?`stale`:`live`}setRoomPresenceHandler(F,I){return this.roomPresenceHandlers[F]=I,()=>{this.roomPresenceHandlers[F]===I&&delete this.roomPresenceHandlers[F]}}sendRoomPresence(F,I,L){F.isClosing||F.peer.isDead||F.peer.sendData(wrapRoomPresenceFrame(I,L))}clear(F,I,{destroyPeer:L}){let R=this.byApp[F],z=R?.[I];if(!z||z.isClosing)return;z.idleTimer=resetTimer(z.idleTimer),z.isClosing=!0,L&&!z.peer.isDead&&z.peer.destroy();let De=values(z.bindings);z.bindings={},z.bindingsByToken={},z.controlRoomId=null,delete R[I],De.forEach(F=>{F.handlers.close?.(),F.pendingData.length=0,F.pendingSendData.length=0,F.pendingTracks.length=0}),z.remoteStreamsByKey.clear(),z.remoteStreamsById.clear(),z.remoteTracksByKey.clear(),z.remoteTracksById.clear(),z.pendingDataByToken.clear(),z.remoteRoomTokens.clear(),keys(R).length===0&&delete this.byApp[F]}register(F,I,L,R){let z=this.getMap(F),De=z[I];if(De){if(De.idleTimer=resetTimer(De.idleTimer),De.peer===L)return De;this.clear(F,I,{destroyPeer:!0})}let Oe={appId:F,peerId:I,peer:L,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:R,isClosing:!1};return L.setHandlers({data:F=>this.dispatchData(Oe,F),signal:F=>this.dispatchSignal(Oe,F),close:()=>this.clear(F,I,{destroyPeer:!1}),error:L=>{console.error(`${libName} peer error:`,L),this.clear(F,I,{destroyPeer:!1})},track:(F,I)=>this.dispatchTrack(Oe,F,I)}),z[I]=Oe,Oe}bind(F,I,L,{onDetach:R}){let z=L.bindings[F];if(z)return L.idleTimer=resetTimer(L.idleTimer),{proxy:z.proxy,isNew:!1};let De={roomId:F,roomToken:null,roomTokenPromise:I,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},Oe=()=>{L.bindings[F]&&(this.pruneRoomOwnership(L,F),delete L.bindings[F],De.roomToken&&L.bindingsByToken[De.roomToken]===De&&delete L.bindingsByToken[De.roomToken],L.controlRoomId===F&&(L.controlRoomId=keys(L.bindings)[0]??null),R(),this.scheduleIdleTimer(L))},ke={created:L.peer.created,get connection(){return L.peer.connection},get channel(){return L.peer.channel},get isDead(){return L.peer.isDead},getOffer:F=>L.peer.getOffer(F),signal:F=>L.peer.signal(F),sendData:F=>{if(!De.roomToken){De.pendingSendData.push(F);return}L.peer.sendData(wrapRoomFrame(De.roomToken,F))},destroy:()=>Oe(),setHandlers:F=>{let{signal:I,...L}=F;Object.assign(De.handlers,L),I&&(De.handlers.signal=I),this.flushBindingQueues(De)},offerPromise:L.peer.offerPromise,addStream:I=>{let R=L.streamOwners.get(I)??new Set,z=R.size===0;R.add(F),L.streamOwners.set(I,R),z&&L.peer.addStream(I)},removeStream:I=>{let R=L.streamOwners.get(I);R&&(R.delete(F),R.size===0&&(L.streamOwners.delete(I),L.peer.removeStream(I)))},addTrack:(I,R)=>{let z=L.trackOwners.get(I)??{stream:R,rooms:new Set},De=z.rooms.size===0;return z.stream=R,z.rooms.add(F),L.trackOwners.set(I,z),De?L.peer.addTrack(I,R):L.peer.connection.getSenders().find(F=>F.track===I)??L.peer.addTrack(I,R)},removeTrack:I=>{let R=L.trackOwners.get(I);R&&(R.rooms.delete(F),R.rooms.size===0&&(L.trackOwners.delete(I),L.peer.removeTrack(I)))},replaceTrack:(F,I)=>{let R=L.trackOwners.get(F);if(R){L.trackOwners.delete(F);let z=L.trackOwners.get(I)??{stream:R.stream,rooms:new Set};R.rooms.forEach(F=>z.rooms.add(F)),L.trackOwners.set(I,z)}return L.peer.replaceTrack(F,I)},__trysteroGetRemoteStreamByKey:F=>L.remoteStreamsByKey.get(F),__trysteroSetRemoteStreamByKey:(F,I)=>void L.remoteStreamsByKey.set(F,I),__trysteroGetRemoteStreamById:F=>L.remoteStreamsById.get(F),__trysteroSetRemoteStreamById:(F,I)=>void L.remoteStreamsById.set(F,I),__trysteroGetRemoteTrackByKey:F=>L.remoteTracksByKey.get(F),__trysteroSetRemoteTrackByKey:(F,I,R)=>void L.remoteTracksByKey.set(F,{track:I,stream:R}),__trysteroGetRemoteTrackById:F=>L.remoteTracksById.get(F),__trysteroSetRemoteTrackById:(F,I,R)=>void L.remoteTracksById.set(F,{track:I,stream:R})};return De.proxy=ke,De.detach=Oe,L.bindings[F]=De,L.controlRoomId??=F,L.idleTimer=resetTimer(L.idleTimer),I.then(I=>{if(L.isClosing||L.bindings[F]!==De)return;De.roomToken=I,L.bindingsByToken[I]=De;let R=L.pendingDataByToken.get(I);R?.length&&(De.pendingData.push(...R),L.pendingDataByToken.delete(I)),De.pendingSendData.splice(0).forEach(F=>L.peer.sendData(wrapRoomFrame(I,F))),this.flushBindingQueues(De)}),{proxy:ke,isNew:!0}}pruneRoomOwnership(F,I){F.streamOwners.forEach((L,R)=>{L.delete(I),L.size===0&&(F.streamOwners.delete(R),F.peer.removeStream(R))}),F.trackOwners.forEach((L,R)=>{L.rooms.delete(I),L.rooms.size===0&&(F.trackOwners.delete(R),F.peer.removeTrack(R))})}scheduleIdleTimer(F){F.isClosing||keys(F.bindings).length>0||(F.idleTimer=resetTimer(F.idleTimer),F.idleTimer=setTimeout(()=>{let I=this.byApp[F.appId]?.[F.peerId];!I||keys(I.bindings).length>0||this.clear(F.appId,F.peerId,{destroyPeer:!0})},F.idleMs))}getSignalBinding(F){if(F.controlRoomId){let I=F.bindings[F.controlRoomId];if(I?.handlers.signal)return I}let I=values(F.bindings).find(F=>!!F.handlers.signal);return I?(F.controlRoomId=I.roomId,I):null}flushBindingQueues(F){let{handlers:I}=F;I.data&&F.pendingData.length>0&&F.pendingData.splice(0).forEach(F=>I.data?.(F)),(I.track||I.stream)&&F.pendingTracks.length&&F.pendingTracks.splice(0).forEach(({track:F,stream:L})=>{I.track?.(F,L),I.stream?.(L)})}dispatchData(F,I){let L=unwrapFrame(I);if(!L)return;if(L.type===`presence`){L.isPresent?F.remoteRoomTokens.add(L.roomToken):F.remoteRoomTokens.delete(L.roomToken),this.roomPresenceHandlers[F.appId]?.(F.peerId,L.roomToken,L.isPresent);return}let R=F.bindingsByToken[L.roomToken];if(!R){let I=F.pendingDataByToken.get(L.roomToken)??[];I.push(L.payload),F.pendingDataByToken.set(L.roomToken,I);return}R.handlers.data?R.handlers.data(L.payload):R.pendingData.push(L.payload)}dispatchSignal(F,I){this.getSignalBinding(F)?.handlers.signal?.(I)}dispatchTrack(F,I,L){values(F.bindings).forEach(F=>{if(F.handlers.track||F.handlers.stream){F.handlers.track?.(I,L),F.handlers.stream?.(L);return}F.pendingTracks.push({track:I,stream:L})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(F,I,L,R,z,De)=>{F.toCipher(I).then(I=>{F.isLeaving()||!De()||R(L,toJson(z(I.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(F,I)=>F[I]??=makeState(),updateStatus=F=>{F.connectedPeer?F.status=`connected`:F.answeringPeer?F.status=`answering`:F.offerPeer||F.offerRelays.some(Boolean)?F.status=`offering`:F.status=`idle`},clearAnswering=(F,I)=>{F.answeringPeer===I&&(F.answeringExpiryTimer=resetTimer(F.answeringExpiryTimer),F.answeringPeer=null,updateStatus(F))},clearConnectedPeer=(F,I,L)=>{F.connectedPeer&&(F.connectedPeer.isDead||F.connectedPeer.destroy(),F.connectedPeer=null,F.connectedPeerUnhealthySinceMs=null,updateStatus(F))},clearOfferRelay=(F,I)=>{F.offerRelayTimers[I]=resetTimer(F.offerRelayTimers[I]),F.offerRelays[I]&&(F.offerRelays[I]=void 0,updateStatus(F))},clearOfferRelayIfPlaceholder=(F,I)=>{F?.offerRelays[I]===offerRelayPlaceholder&&clearOfferRelay(F,I)},hasRemoteDescription=F=>{if(F.isDead||F.connection.connectionState===`closed`)return!0;try{return!!F.connection.remoteDescription}catch{return!0}},resetOfferState=(F,I)=>{let L=F.offerAnswered;F.offerExpiryTimer=resetTimer(F.offerExpiryTimer),F.offerInitPromise=null,F.offerRelays.forEach((I,L)=>clearOfferRelay(F,L)),F.offerRelays=[],F.offerSignalRelays=[],F.offerRelayTimers=[],F.offerSignalBacklog=[],F.offerPeer&&F.offerPeer!==F.connectedPeer&&(L||hasRemoteDescription(F.offerPeer)?F.offerPeer.isDead||F.offerPeer.destroy():I.recycle(F.offerPeer)),F.offerPeer=null,F.offerId=null,F.offerSdp=null,F.offerAnswered=!1,updateStatus(F)},scheduleAnsweringExpiry=(F,I,L,R)=>{resetTimer(I.answeringExpiryTimer),I.answeringExpiryTimer=setTimeout(()=>{let I=F.peerStates[L];!I||I.connectedPeer||I.answeringPeer!==R||(R.destroy(),clearAnswering(I,R))},answeringTtlMs)},flushBufferedCandidates=async(F,I,L)=>{let R=L?[L,legacyCandidateKey]:[legacyCandidateKey];for(let L of R){let R=F.pendingCandidates[L];if(R?.length){delete F.pendingCandidates[L];for(let F of R)await I.signal(F)}}},scheduleOfferExpiry=(F,I,L,R=offerTtl)=>{resetTimer(I.offerExpiryTimer);let z=I.offerId;I.offerExpiryTimer=setTimeout(()=>{let I=F.peerStates[L];!I||I.connectedPeer||I.offerId!==z||resetOfferState(I,F.offerPool)},R)},ensureOffer=(F,I,L,R)=>I.offerPeer&&I.offerId&&I.offerSdp?Promise.resolve({peer:I.offerPeer,offer:I.offerSdp,offerId:I.offerId}):(I.offerInitPromise||=(async()=>{let z=(await F.offerPool.checkout(1,!1,F.encryptOffer))[0];if(!z)throw mkErr(`failed to allocate offer peer`);let{peer:De,offer:Oe}=z;I.offerPeer=De,I.offerId=genId(offerIdSize),I.offerSdp=Oe,I.offerAnswered=!1,I.offerSignalBacklog=[],updateStatus(I);let ke=()=>{I.offerPeer===De&&!I.connectedPeer&&resetOfferState(I,F.offerPool),F.disconnectPeer(De,L)};return De.setHandlers({connect:()=>F.connectPeer(De,L,R),signal:F=>{I.offerPeer===De&&(I.offerSignalBacklog.push(F),I.offerSignalRelays.forEach(I=>I?.(F)))},close:ke,error:ke}),scheduleOfferExpiry(F,I,L),{peer:De,offer:Oe,offerId:I.offerId}})().finally(()=>I.offerInitPromise=null),I.offerInitPromise),handleAnnouncement=async(F,I,L,R,z)=>{if(R){F.attachSharedPeerToRoom(L,R);return}let De=F.peerStates[L];if(!De||De.connectedPeer||De.answeringPeer||De.offerAnswered){clearOfferRelayIfPlaceholder(De,I);return}if(De.offerRelays[I]!==offerRelayPlaceholder)return;let[Oe,ke]=await all([sha1(topicPath(F.rootTopicPlaintext,L)),ensureOffer(F,De,L,I)]);if(F.isLeaving())return;if(De.connectedPeer||De.answeringPeer||De.offerAnswered||De.offerRelays[I]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(De,I);return}De.offerRelayTimers[I]=resetTimer(De.offerRelayTimers[I]),De.offerRelays[I]=!0,updateStatus(De),De.offerRelayTimers[I]=setTimeout(()=>prunePendingOffer(F,L,I),(F.announceIntervals[I]??F.announceIntervalMs)*.9);let Ae=!1;De.offerSignalRelays[I]=I=>{Ae&&(F.isLeaving()||De.connectedPeer||De.offerPeer!==ke.peer||De.offerId!==ke.offerId||I.type!==`candidate`||publishCipheredSignalingMessage(F,I,Oe,z,F=>({peerId:selfId,offerId:ke.offerId,candidate:F}),()=>!De.connectedPeer&&De.offerPeer===ke.peer&&De.offerId===ke.offerId))},z(Oe,toJson({peerId:selfId,offerId:ke.offerId,offer:ke.offer})),Ae=!0,De.offerSignalBacklog.forEach(F=>De.offerSignalRelays[I]?.(F))},handleOffer=async(F,I,L,R,z,De,Oe)=>{let ke=getState(F.peerStates,L);if(ke.answeringPeer||ke.offerAnswered)return;let Ae=!!(ke.offerPeer||ke.offerRelays.some(Boolean));if((Ae||De)&&selfId<L)return;Ae&&resetOfferState(ke,F.offerPool);let je=F.initPeer(!1,F.config);ke.answeringPeer=je,scheduleAnsweringExpiry(F,ke,L,je),updateStatus(ke);let Me=()=>{clearAnswering(ke,je),F.disconnectPeer(je,L)};je.setHandlers({connect:()=>F.connectPeer(je,L,I),close:Me,error:Me});let Ne;try{Ne=await F.toPlain({type:`offer`,sdp:R})}catch{clearAnswering(ke,je),F.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:F.appId,peerId:L,roomId:F.roomId});return}if(je.isDead){clearAnswering(ke,je);return}let Pe=await sha1(topicPath(F.rootTopicPlaintext,L));F.isLeaving()||(je.setHandlers({signal:I=>{F.isLeaving()||ke.answeringPeer!==je||je.isDead||I.type!==`answer`&&I.type!==`candidate`||publishCipheredSignalingMessage(F,I,Pe,Oe,F=>{let L={peerId:selfId};return I.type===`answer`?L.answer=F:L.candidate=F,z&&(L.offerId=z),L},()=>ke.answeringPeer===je&&!je.isDead)}}),await je.signal(Ne),await flushBufferedCandidates(ke,je,z))},handleCandidate=async(F,I,L,R,z)=>{let De;try{De=await F.toPlain({type:candidateType,sdp:L})}catch{return}let Oe=getState(F.peerStates,I),ke=R&&Oe?.offerPeer&&Oe.offerId===R?Oe.offerPeer:null,Ae=Oe?.answeringPeer??null,je=!R&&Oe?.offerPeer?Oe.offerPeer:null,Me=z&&!z.isDead?z:ke??Ae??je;if(!Me||Me.isDead){let F=R??legacyCandidateKey;(Oe.pendingCandidates[F]??=[]).push(De);return}Me.signal(De)},handleAnswer=async(F,I,L,R,z,De)=>{let Oe;try{Oe=await F.toPlain({type:`answer`,sdp:R})}catch{F.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:F.appId,peerId:L,roomId:F.roomId});return}if(De)F.offerPool.claimLeased(De),De.setHandlers({connect:()=>F.connectPeer(De,L,I),close:()=>F.disconnectPeer(De,L)}),De.signal(Oe);else{let I=F.peerStates[L];if(!I||!I.offerPeer||I.offerAnswered||z&&I.offerId&&z!==I.offerId||I.offerPeer.isDead)return;I.offerAnswered=!0,scheduleOfferExpiry(F,I,L,offerPostAnswerTtlMs),I.offerPeer.signal(Oe)}},prunePendingOffer=(F,I,L)=>{let R=F.peerStates[I];!R||R.connectedPeer||R.offerRelays[L]&&clearOfferRelay(R,L)},createSignalHandler=F=>I=>async(L,R,z)=>{if(F.isLeaving())return;let De=typeof R==`string`?fromJson(R):R,Oe=typeof De.peerId==`string`?De.peerId:``,ke=De.offer,Ae=De.answer,je=De.candidate,Me=De.offerId,Ne=De.peer,Pe=De.hasOutgoingOffer===!0;if(Oe===selfId)return;let Fe=F.peerStates[Oe],Ie=Fe?.connectedPeer;if(Ie&&Fe){let F=getConnectedPeerHealth(Ie);if(F===`live`){Fe.connectedPeerUnhealthySinceMs=null;return}if(F===`stale`)clearConnectedPeer(Fe,Oe,`message-from-stale-peer`);else{let F=Date.now(),I=Fe.connectedPeerUnhealthySinceMs??F;if(Fe.connectedPeerUnhealthySinceMs=I,F-I<disconnectedPeerGraceMs)return;clearConnectedPeer(Fe,Oe,`message-from-prolonged-disconnect`)}}let Le=F.sharedPeers.get(F.appId,Oe);Le&&F.sharedPeers.getHealth(Le.peer)===`stale`&&(F.sharedPeers.clear(F.appId,Oe,{destroyPeer:!0}),Le=void 0);let Re=!!(Oe&&!ke&&!Ae&&!je),[ze,Be]=await all([F.rootTopicP,F.selfTopicP]);if(!F.isLeaving()&&!(L!==ze&&L!==Be)){if(Re&&!Le){let L=getState(F.peerStates,Oe),R=selfId<Oe;if(L.answeringPeer||L.connectedPeer||L.offerAnswered)return;if(!R&&!L.offerPeer){let I=await sha1(topicPath(F.rootTopicPlaintext,Oe));!F.isLeaving()&&!L.connectedPeer&&z(I,toJson({peerId:selfId}));return}if(L.offerRelays[I])return;L.offerRelays[I]=offerRelayPlaceholder,updateStatus(L)}if(Le&&(ke||Ae||je)){if(Le.bindings[F.roomId])return;F.attachSharedPeerToRoom(Oe,Le);return}if(Re)return handleAnnouncement(F,I,Oe,Le,z);if(ke)return handleOffer(F,I,Oe,ke,Me,Pe,z);if(je)return handleCandidate(F,Oe,je,Me,Ne);if(Ae)return handleAnswer(F,I,Oe,Ae,Me,Ne)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:F,subscribe:I,announce:L})=>{let R={},z={},De={},Oe={},ke=new SharedPeerManager,Ae=()=>values(R).some(F=>keys(F).length>0),je=F=>z[F]??={},Me=F=>De[F]??={},Ne=(F,I,L)=>{ke.getHealth(F.peer)===`live`&&ke.sendRoomPresence(F,I,L)},Pe=(F,I)=>{entries(z[F]??{}).forEach(([L,R])=>{let{roomToken:De,roomTokenPromise:Oe}=R;if(De){Ne(I,De,!0);return}Oe.then(De=>{z[F]?.[L]===R&&R.roomToken===De&&(ke.get(F,I.peerId)!==I||I.isClosing||Ne(I,De,!0))})})},Fe=(F,I,L)=>values(ke.getMap(F)).forEach(F=>Ne(F,I,L)),Ie=F=>{Oe[F]||(Oe[F]=ke.setRoomPresenceHandler(F,(I,L,R)=>{if(!R)return;let Oe=ke.get(F,I),Ae=De[F]?.[L];!Oe||!Ae||z[F]?.[Ae]?.attachSharedPeerToRoom(I,Oe)}))},Le=F=>{R[F]&&keys(R[F]).length>0||(Oe[F]?.(),delete Oe[F],delete z[F],delete De[F])},Re=!1,ze=[],Be=null,Ge=noOp;return(Oe,Ne,rt)=>{if(!Oe)throw mkErr(`requires a config map as the first argument`);if(rt&&typeof rt!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:it}=Oe,at=rt?.onJoinError,ot=rt?.onPeerHandshake,st=rt?.handshakeTimeoutMs;if(!it)throw mkErr(`config map is missing appId field`);if(!Ne)throw mkErr(`roomId argument required`);if(st!==void 0&&(!Number.isFinite(st)||st<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(R[it]?.[Ne])return R[it][Ne];Ie(it);let ct=topicPath(libName,it,Ne),lt=sha1(ct),ut=sha1(topicPath(ct,selfId)),dt=genKey(Oe.password??``,it,Ne),ft=deriveRoomNamespace(it,Ne),pt=Oe._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,mt=!1,ht=F=>async I=>({type:I.type,sdp:await F(dt,I.sdp)}),gt=ht(decrypt),vt=ht(encrypt),yt=ke.getMap(it);Be||=new OfferPool(()=>peer_default(!0,Oe));let yr=Be,br=async F=>{let I=await F.getOffer(Date.now()-F.created>offerTtl);if(!I||I.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await vt(I)).sdp},hw=(F,I)=>{let L=getState(gw.peerStates,F);L.answeringExpiryTimer=resetTimer(L.answeringExpiryTimer),L.answeringPeer=null;let{proxy:R,isNew:z}=ke.bind(Ne,ft,I,{onDetach:()=>{let L=gw.peerStates[F];L?.connectedPeer===I.peer&&(L.connectedPeer=null,L.connectedPeerUnhealthySinceMs=null,updateStatus(L))}});L.connectedPeer=I.peer,L.connectedPeerUnhealthySinceMs=null,updateStatus(L),z&&xw(R,F),resetOfferState(L,yr)},gw={appId:it,roomId:Ne,config:Oe,peerStates:{},rootTopicPlaintext:ct,rootTopicP:lt,selfTopicP:ut,toPlain:gt,toCipher:vt,isLeaving:()=>mt,onJoinError:at,sharedPeers:ke,offerPool:yr,encryptOffer:br,initPeer:peer_default,connectPeer:(F,I,L)=>{if(mt){F.destroy();return}let R=getState(gw.peerStates,I);if(R.connectedPeer){let L=yt[I];if(L&&R.connectedPeer===L.peer&&L.bindings[Ne])return;R.connectedPeer!==F&&!F.isDead&&F.destroy();return}let z=yt[I];if(z&&ke.getHealth(z.peer)===`stale`&&(ke.clear(it,I,{destroyPeer:!0}),z=void 0),z&&z.peer!==F){F.isDead||F.destroy(),hw(I,z);return}let De=!z;z||=ke.register(it,I,F,pt),hw(I,z),De&&Pe(it,z)},disconnectPeer:(F,I)=>{if(mt)return;let L=gw.peerStates[I];L?.connectedPeer===F&&clearConnectedPeer(L,I,`close-event`)},attachSharedPeerToRoom:hw,announceIntervals:[],announceIntervalMs},_w=createSignalHandler(gw);if(!Re){let I=F(Oe);yr.warmup(),ze=(Array.isArray(I)?I:[I]).map(F=>Promise.resolve(F)),Re=!0,Ge=Oe.relayConfig?.manualReconnection?noOp:watchOnline()}gw.announceIntervals=ze.map(()=>announceIntervalMs);let vw=ze.map(()=>0),yw=[],bw=ze.map(async(F,L)=>I(await F,await lt,await ut,_w(L),F=>yr.getOffers(F,br)));all([lt,ut]).then(([F,I])=>{if(mt)return;let R=async(z,De)=>{if(mt)return;let Oe=await L(z,F,I);if(mt)return;typeof Oe==`number`&&(gw.announceIntervals[De]=Oe);let ke=vw[De]??0;vw[De]=ke+1;let Ae=gw.announceIntervals[De]??announceIntervalMs,je=announceWarmupIntervalsMs[ke];yw[De]=setTimeout(()=>{R(z,De)},typeof je==`number`?Math.min(Ae,je):Ae)};bw.forEach(async(F,I)=>{if(await F,mt)return;let L=await ze[I];L&&!mt&&R(L,I)})});let xw=noOp,{compose:Sw}=createPasswordHandshake(Oe.password??``,it,Ne),Cw=Sw(ot),ww={...Cw?{onPeerHandshake:Cw}:{},...st===void 0?{}:{handshakeTimeoutMs:st},onHandshakeError:(F,I)=>at?.({error:I.replace(/^handshake failed: /,``),appId:it,peerId:F,roomId:Ne})};R[it]??={};let Tw=je(it),Ew=room_default(F=>xw=F,F=>{if(mt)return;let I=gw.peerStates[F];I?.connectedPeer&&(I.connectedPeer=null,updateStatus(I))},()=>{mt=!0,xw=noOp;let F=z[it]?.[Ne];F?.roomToken&&(Fe(it,F.roomToken,!1),delete De[it]?.[F.roomToken],De[it]&&!keys(De[it]).length&&delete De[it]),z[it]&&(delete z[it][Ne],keys(z[it]).length||delete z[it]),entries(gw.peerStates).forEach(([F,I])=>{if(I.answeringExpiryTimer=resetTimer(I.answeringExpiryTimer),I.connectedPeer&&!I.connectedPeer.isDead){let L=yt[F];(!L||L.peer!==I.connectedPeer)&&I.connectedPeer.destroy()}I.answeringPeer&&!I.answeringPeer.isDead&&I.answeringPeer.destroy(),resetOfferState(I,yr),I.connectedPeer=null,I.answeringPeer=null,updateStatus(I)}),R[it]&&(delete R[it][Ne],keys(R[it]).length===0&&delete R[it]),yw.forEach(resetTimer),bw.forEach(async F=>{(await F)()}),!Ae()&&(Re=!1,yr.destroy(),Be=null,Ge(),Le(it))},ww),Dw={roomToken:null,roomTokenPromise:ft,attachSharedPeerToRoom:hw};return Tw[Ne]=Dw,ft.then(F=>{mt||z[it]?.[Ne]!==Dw||(Dw.roomToken=F,Me(it)[F]=Ne,values(yt).forEach(I=>{I.remoteRoomTokens.has(F)&&hw(I.peerId,I)}),Fe(it,F,!0))}),R[it][Ne]=Ew}},relayManager=createRelayManager(F=>F.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async F=>{if(topicToInfoHash[F])return topicToInfoHash[F];let I=(await sha1(F)).slice(0,hashLimit);return topicToInfoHash[F]=I,infoHashToTopic[I]=F,I},send=async(F,I,L)=>F.send(toJson({action:trackerAction,info_hash:await getInfoHash(I),peer_id:selfId,...L})),warn=(F,I,L=!1)=>console.warn(`${libName}: torrent tracker ${L?`failure`:`warning`} from ${F} - ${I}`),getRoomOutstandingOffers=F=>roomOutstandingOffers[F]??={},deleteRoomOfferBookkeeping=F=>{delete roomOutstandingOffers[F],delete roomOfferGenerationPromises[F]},claimOutstandingOffer=(F,I)=>{let L=roomOutstandingOffers[F],R=L?.[I];if(R)return delete L[I],R.claim?.(),!keys(L).length&&!roomSubscriberCounts[F]&&deleteRoomOfferBookkeeping(F),R},reclaimOutstandingOffer=(F,I)=>{let L=roomOutstandingOffers[F],R=L?.[I];R&&(delete L[I],R.reclaim?.(),!keys(L).length&&!roomSubscriberCounts[F]&&deleteRoomOfferBookkeeping(F))},reclaimAllOutstandingOffers=F=>{keys(getRoomOutstandingOffers(F)).forEach(I=>reclaimOutstandingOffer(F,I)),deleteRoomOfferBookkeeping(F)},pruneOutstandingOffers=F=>{let I=Date.now();entries(getRoomOutstandingOffers(F)).forEach(([L,R])=>{I-R.createdAt>offerRetentionMs&&reclaimOutstandingOffer(F,L)})},ensureOutstandingOffers=async(F,I)=>{for(;roomOfferGenerationPromises[F];)await roomOfferGenerationPromises[F];let L=(async()=>{pruneOutstandingOffers(F);let L=getRoomOutstandingOffers(F),R=keys(L).length,z=Math.max(0,offerPoolSize-R);z>0&&(await I(z)).forEach(F=>{L[genId(hashLimit)]={...F,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[F]===L&&delete roomOfferGenerationPromises[F]});return roomOfferGenerationPromises[F]=L,await L,getRoomOutstandingOffers(F)},joinRoomStrategy=strategy_default({init:F=>getRelays(F,defaultRelayUrls,defaultRedundancy).map(F=>{let I=relayManager.register(F,makeSocket(F,L=>{let R=fromJson(L),z=R[`failure reason`],De=R[`warning message`],{interval:Oe}=R,ke=R.info_hash?infoHashToTopic[R.info_hash]:void 0;if(z){warn(I.url,z,!0);return}if(De&&warn(I.url,De),Oe&&Oe*1e3>(trackerAnnounceMs[I.url]??defaultAnnounceMs)&&ke&&announceFns.forKey(F)[ke]){let L=Math.min(Oe*1e3,maxAnnounceMs),R=announceIntervals.forKey(F),z=announceFns.forKey(F);R[ke]&&clearInterval(R[ke]),trackerAnnounceMs[I.url]=L;let De=z[ke];De&&(R[ke]=setInterval(()=>{De()},L))}if((R.offer||R.answer)&&ke&&R.offer_id){if(R.peer_id===selfId)return;let I=`${ke}:${R.offer?`offer`:`answer`}:${R.offer_id}:${R.peer_id??``}`,L=Date.now(),z=handledSignals[I];if(typeof z==`number`&&L-z<signalDedupeWindowMs)return;handledSignals[I]=L,entries(handledSignals).forEach(([F,I])=>{L-I>signalDedupeWindowMs*6&&delete handledSignals[F]}),msgHandlers.forKey(F)[ke]?.(R)}}));return I.ready}),subscribe:(F,I,L,R,z)=>{let De=msgHandlers.forRelay(F),Oe=announceFns.forRelay(F),ke=announceIntervals.forRelay(F),Ae=subscriptionTokens.forRelay(F),je=Symbol(I);Ae[I]=je,roomSubscriberCounts[I]=(roomSubscriberCounts[I]??0)+1;let Me=L=>{if(L.offer&&L.peer_id&&L.offer_id)R(I,{offer:L.offer.sdp,peerId:L.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(I)).length>0},(R,z)=>void send(F,I,{answer:{type:`answer`,sdp:fromJson(z).answer},offer_id:L.offer_id,to_peer_id:L.peer_id}));else if(L.answer&&L.offer_id&&L.peer_id){let F=claimOutstandingOffer(I,L.offer_id);F&&R(I,{answer:L.answer.sdp,peerId:L.peer_id,peer:F.peer},()=>{})}};De[I]=Me;let Ne=async()=>{Ae[I]===je&&send(F,I,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(I,z)).map(([F,{offer:I}])=>({offer_id:F,offer:{type:`offer`,sdp:I}}))})};return trackerAnnounceMs[F.url]=defaultAnnounceMs,Oe[I]=Ne,ke[I]=setInterval(Ne,trackerAnnounceMs[F.url]),Ne(),()=>{if(roomSubscriberCounts[I]=Math.max(0,(roomSubscriberCounts[I]??1)-1),roomSubscriberCounts[I]||delete roomSubscriberCounts[I],Ae[I]!==je){roomSubscriberCounts[I]||reclaimAllOutstandingOffers(I);return}let F=ke[I];F&&(clearInterval(F),delete ke[I]),De[I]===Me&&delete De[I],Oe[I]===Ne&&delete Oe[I],delete Ae[I],roomSubscriberCounts[I]||reclaimAllOutstandingOffers(I)}},announce:F=>trackerAnnounceMs[F.url]}),joinRoom=(F,I,L)=>joinRoomStrategy({...F,trickleIce:F.trickleIce??!1},I,L),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(F=>`wss://`+F),require_lodash_throttle=__commonJSMin(((F,I)=>{var L=`Expected a function`,R=NaN,z=`[object Symbol]`,De=/^\s+|\s+$/g,Oe=/^[-+]0x[0-9a-f]+$/i,ke=/^0b[01]+$/i,Ae=/^0o[0-7]+$/i,je=parseInt,Me={}.Object===Object&&{},Ne=typeof self==`object`&&self&&self.Object===Object&&self,Pe=Me||Ne||Function(`return this`)(),Fe=Object.prototype.toString,Ie=Math.max,Le=Math.min,Re=function(){return Pe.Date.now()};function ze(F,I,R){var z,De,Oe,ke,Ae,je,Me=0,Ne=!1,Pe=!1,Fe=!0;if(typeof F!=`function`)throw TypeError(L);I=at(I)||0,Ge(R)&&(Ne=!!R.leading,Pe=`maxWait`in R,Oe=Pe?Ie(at(R.maxWait)||0,I):Oe,Fe=`trailing`in R?!!R.trailing:Fe);function ze(I){var L=z,R=De;return z=De=void 0,Me=I,ke=F.apply(R,L),ke}function Be(F){return Me=F,Ae=setTimeout(ot,I),Ne?ze(F):ke}function rt(F){var L=F-je,R=F-Me,z=I-L;return Pe?Le(z,Oe-R):z}function it(F){var L=F-je,R=F-Me;return je===void 0||L>=I||L<0||Pe&&R>=Oe}function ot(){var F=Re();if(it(F))return st(F);Ae=setTimeout(ot,rt(F))}function st(F){return Ae=void 0,Fe&&z?ze(F):(z=De=void 0,ke)}function ct(){Ae!==void 0&&clearTimeout(Ae),Me=0,z=je=De=Ae=void 0}function lt(){return Ae===void 0?ke:st(Re())}function ut(){var F=Re(),L=it(F);if(z=arguments,De=this,je=F,L){if(Ae===void 0)return Be(je);if(Pe)return Ae=setTimeout(ot,I),ze(je)}return Ae===void 0&&(Ae=setTimeout(ot,I)),ke}return ut.cancel=ct,ut.flush=lt,ut}function Be(F,I,R){var z=!0,De=!0;if(typeof F!=`function`)throw TypeError(L);return Ge(R)&&(z=`leading`in R?!!R.leading:z,De=`trailing`in R?!!R.trailing:De),ze(F,I,{leading:z,maxWait:I,trailing:De})}function Ge(F){var I=typeof F;return!!F&&(I==`object`||I==`function`)}function rt(F){return!!F&&typeof F==`object`}function it(F){return typeof F==`symbol`||rt(F)&&Fe.call(F)==`[object Symbol]`}function at(F){if(typeof F==`number`)return F;if(it(F))return R;if(Ge(F)){var I=typeof F.valueOf==`function`?F.valueOf():F;F=Ge(I)?I+``:I}if(typeof F!=`string`)return F===0?F:+F;F=F.replace(De,``);var L=ke.test(F);return L||Ae.test(F)?je(F.slice(2),L?2:8):Oe.test(F)?R:+F}I.exports=Be})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.24.2`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:`6x4LaeUz+EVcw7zh`,VITE_TURN_USERNAME:`02e7e9daca7857e8d1faccf1`}).reduce((F,I)=>{let L=I.match(/VITE_ENABLE_(.*)/);return L&&(F[L[1]]=!0),F},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let F of searchParams.keys()){let I=F.match(/enable_(.*)/);I&&(features[I[1]]=!0)}var turnUsername=`02e7e9daca7857e8d1faccf1`,turnCredential=`6x4LaeUz+EVcw7zh`,rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`},{urls:`turn:a.relay.metered.ca:80`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:80?transport=tcp`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:443`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:443?transport=tcp`,username:turnUsername,credential:turnCredential}]},handlePeerMetadataRequest=(F,I,L)=>{F.updatePeer(F,I,L)},handleCowTradeRequest=async(F,{cowOffered:I,cowRequested:L},R)=>{let z=!1;F.setState(F=>{let{allowCustomPeerCowNames:De,cowIdOfferedForTrade:Oe,cowsTraded:ke,cowInventory:Ae,playerId:je,isAwaitingCowTradeRequest:Me,peers:Ne,sendCowAccept:Pe,sendCowReject:Fe}=F;if(!Pe||!Fe)return console.error(`Peer connection not set up correctly`),null;let Ie=Ae.find(({id:F})=>F===Oe);if(Me||L.id!==Oe||!Ie)return Fe({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},R),null;let Le={...I,timesTraded:I.originalOwnerId===je?I.timesTraded:I.timesTraded+1},[,Re]=Object.entries(Ne).find(([,F])=>F?.playerId===Le.ownerId)??[];return Re?(F=changeCowAutomaticHugState(F,Ie,!1),F=removeCowFromInventory(F,Ie),F=addCowToInventory(F,{...Le,ownerId:je}),F=showNotification(F,COW_TRADED_NOTIFICATION(``,Ie,I,je,De),`success`),Pe({...Ie,isUsingHuggingMachine:!1},R),z=!0,{...F,cowIdOfferedForTrade:Le.id,cowsTraded:Le.originalOwnerId===je?ke:ke+1,isAwaitingCowTradeRequest:!0,selectedCowId:Le.id,peers:{...Ne,[R]:{...Re,cowOfferedForTrade:{...Ie,ownerId:Re.playerId}}}}):(console.error(`No data for peer ${Le.ownerId}`),null)},async()=>{z&&(await sleep(750),await F.persistState(),F.showNotification(PROGRESS_SAVED_MESSAGE,`info`),F.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(F,I,L)=>{let R=!1;F.setState(F=>{let{allowCustomPeerCowNames:z,cowIdOfferedForTrade:De,cowInventory:Oe,cowsTraded:ke,cowTradeTimeoutId:Ae,playerId:je,peers:Me}=F,Ne=Oe.find(({id:F})=>F===De);if(!Ne)return console.error(`handleCowTradeRequestAccept: cow with ID ${De} is no longer available`),F=showNotification(F,UNKNOWN_COW_TRADE_FAILURE,`error`),{...F,isAwaitingCowTradeRequest:!1};let[,Pe]=Object.entries(Me).find(([,F])=>{let{playerId:L}=F;return L===I.ownerId})||[],Fe=I.originalOwnerId===je,Ie={...I,timesTraded:Fe?I.timesTraded:I.timesTraded+1};return F=removeCowFromInventory(F,Ne),F=addCowToInventory(F,{...Ie,ownerId:je}),F=showNotification(F,COW_TRADED_NOTIFICATION(``,Ne,Ie,je,z),`success`),Fe||(F=addExperience(F,EXPERIENCE_VALUES.COW_TRADED)),Ae&&clearTimeout(Ae),R=!0,{...F,cowsTraded:Ie.originalOwnerId===je?ke:ke+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:Ie.id,selectedCowId:Ie.id,peers:{...Me,[L]:{...Pe,cowOfferedForTrade:{...Ne,ownerId:Pe.playerId}}}}},async()=>{R&&(await F.persistState(),F.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(F,{reason:I})=>{let{cowTradeTimeoutId:L}=F.state;typeof L==`number`&&clearTimeout(L),F.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),F.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(F,I,L,R,z,De,Oe,ke)=>{let{hasBooted:Ae,isOnline:je,room:Me,redirect:Ne,heartbeatTimeoutId:Pe,peerRoom:Fe,sendPeerMetadata:Ie}=F,Le=(0,import_react$10.useCallback)(F=>(0,import_lodash_throttle.default)((...L)=>{F(...L),I(F=>({...F,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[I]),Re=(0,import_react$10.useCallback)(()=>{typeof R.current?.state?.cowTradeTimeoutId==`number`&&(L.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),I(F=>({...F,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[I,L,R]),ze=(0,import_react$10.useCallback)(z=>{let{cowIdOfferedForTrade:De,cowInventory:Oe,peers:ke,sendCowTradeRequest:Ae}=R.current?.state??F;if(!Ae)return;let{ownerId:je}=z,[Me]=Object.entries(ke).find(([,F])=>F?.playerId===je)??[];if(!Me){console.error(`Owner not found for cow ${JSON.stringify(z)}`);return}if(Oe.find(({id:F})=>F===z.id)){console.error(`Cow ID ${z.id} is already in inventory`),L.current.showNotification(COW_ALREADY_OWNED,`error`);return}let Ne=Oe.find(({id:F})=>F===De);if(!Ne){console.error(`Cow ID ${De} not found`);return}let Pe=setTimeout(Re,COW_TRADE_TIMEOUT);Ae({cowOffered:{...Ne,isUsingHuggingMachine:!1},cowRequested:z},Me),I(F=>({...F,cowTradeTimeoutId:Pe,isAwaitingCowTradeRequest:!0}))},[I,Re,L,R]),Be=(0,import_react$10.useCallback)(()=>{I(F=>(clearTimeout(F.heartbeatTimeoutId??-1),F));let F=import_window.default.setTimeout(()=>{I(F=>({...F,money:moneyTotal(F.money,F.activePlayers??0)})),Be()},HEARTBEAT_INTERVAL_PERIOD);I(I=>({...I,heartbeatTimeoutId:F}))},[I]),Ge=(0,import_react$10.useCallback)(async()=>{let{isOnline:F,priceCrashes:z,priceSurges:De,room:Oe,playerId:ke,peerRoom:Ae}=R.current.state;if(F){L.current.showNotification(CONNECTING_TO_SERVER,`info`);try{I(F=>({...F,isAwaitingNetworkRequest:!0,peers:{}})),Ae?.leave();let{valueAdjustments:F}=await getData(endpoints.getMarketData,{farmId:ke,room:Oe});Be(),I(I=>({...I,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},Oe),valueAdjustments:FarmhandService.applyPriceEvents(F,z,De)})),L.current.showNotification(CONNECTED_TO_ROOM(``,Oe),`success`)}catch(F){L.current.showNotification(SERVER_ERROR,`error`),console.error(F),I(F=>({...F,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}I(F=>({...F,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[Be,L,R,I]),rt=(0,import_react$10.useCallback)((F,I)=>{L.current.prependPendingPeerMessage(F,I)},[L]);return(0,import_react$10.useEffect)(()=>{if(!Ae||!z)return;let F=decodeURIComponent(De),Re=Oe.startsWith(`/online`),ze=!!Ne&&Ne!==z.redirect;if(!ze&&(Re!==je||F!==Me)?I(I=>({...I,isOnline:Re,redirect:``,room:F})):Ne&&!ze&&Re===je&&F===Me&&I(F=>({...F,redirect:``})),(je!==z.isOnline||Me!==z.room)&&(je&&Ge(),!je&&typeof Pe==`number`&&(clearTimeout(Pe),I(F=>({...F,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),je===!1&&z.isOnline===!0&&L.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),Fe!==z.peerRoom)if(Fe){Fe.onPeerJoin(F=>L.current.addPeer(F)),Fe.onPeerLeave(F=>L.current.removePeer(F));let[F,z]=Fe.makeAction(`peerMetadata`);z((...F)=>handlePeerMetadataRequest(R.current,F[0],F[1]));let[De,Oe]=Fe.makeAction(`cowTrade`);Oe((...F)=>handleCowTradeRequest(R.current,F[0],F[1]));let[Ae,je]=Fe.makeAction(`cowAccept`);je((...F)=>handleCowTradeRequestAccept(R.current,F[0],F[1]));let[Me,Ne]=Fe.makeAction(`cowReject`);Ne((...F)=>handleCowTradeRequestReject(R.current,F[0])),I(I=>({...I,getCowAccept:je,getCowReject:Ne,getCowTradeRequest:Oe,getPeerMetadata:z,pendingPeerMessages:[],sendCowAccept:Ae,sendCowReject:Me,sendCowTradeRequest:De,sendPeerMetadata:Le(F)})),F(ke)}else z.peerRoom?.leave(),I(F=>({...F,peers:{},sendPeerMetadata:null}));Ie?.(ke)},[Ae,je,Me,Ne,Pe,Fe,Ie,z,De,Oe,Ge,Le,ke,L,R,I]),{syncToRoom:Ge,scheduleHeartbeat:Be,wrapSendPeerMetadata:Le,tradeForPeerCow:ze,handleCowTradeTimeout:Re,messagePeers:rt}},computeMarketPositions=(F,I,L)=>L.reduce((L,{id:R,quantity:z})=>{let De=F[R]||0,Oe=I[R]||0;return itemsMap[R].doesPriceFluctuate&&De!==z&&(z<De||z<Oe?L[R]=-1:(z>De||z>Oe)&&(L[R]=1)),L},{}),useFarmhandDayAdvancement=(F,I,L,R,z)=>{let De=(0,import_react$10.useCallback)(async()=>{await L.localforage?.clear(),R.current.showNotification(DATA_DELETED)},[L.localforage,R]),Oe=(0,import_react$10.useCallback)((F,I={})=>L.localforage?.setItem(`state`,reduceByPersistedKeys({...F,...I})),[L.localforage]),ke=(0,import_react$10.useCallback)(async()=>{let L=[],R=null;I(F=>({...F,isAwaitingNetworkRequest:!0}));let z;if(F.current.isOnline){let{inventory:De,room:Oe,todaysPurchases:ke,todaysStartingInventory:Ae}=F.current,je=computeMarketPositions(Ae,ke,De);try{z=(await postData(endpoints.postDayResults,{positions:je,room:Oe})).valueAdjustments,Object.keys(je).length&&(L.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,je),severity:`info`}),R=POSITIONS_POSTED_NOTIFICATION(``,``,je))}catch(F){L.push({message:SERVER_ERROR,severity:`error`}),I(F=>({...F,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(F)}}return{broadcastedPositionMessage:R,serverMessages:L,serverValueAdjustments:z}},[F,I]);return{clearPersistedData:De,persistState:Oe,updateServerForNextDay:ke,incrementDay:(0,import_react$10.useCallback)(async(L=!1)=>{if(F.current.isWaitingForDayToCompleteIncrementing&&!L)return;L||I(F=>({...F,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:R,serverMessages:De,serverValueAdjustments:Oe}=await ke();I(F=>{let I=computeStateForNextDay(F,L),ke=[...De,...I.newDayNotifications];return I.valueAdjustments=FarmhandService.applyPriceEvents(Oe??I.valueAdjustments,I.priceCrashes,I.priceSurges),I.isAwaitingNetworkRequest=!1,I.isWaitingForDayToCompleteIncrementing=!0,I.newDayNotifications=[],I.todaysNotifications=[],z.current={state:I,pendingNotifications:ke,broadcastedPositionMessage:R,isFirstDay:L},I})},[F,ke,I,z])}},useFarmhandNotifications=(F,I)=>({showInventoryFullNotifications:(0,import_react$10.useCallback)((F,L)=>{inventorySpaceRemaining(F)>0&&inventorySpaceRemaining(L)<=0&&I.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[I]),showRecipeLearnedNotifications:(0,import_react$10.useCallback)(({learnedRecipes:L})=>{let R=[];Object.keys(F.learnedRecipes).forEach(F=>{L.hasOwnProperty(F)||R.push(recipesMap[F])}),R.length>1?I.current.showNotification(RECIPES_LEARNED(``,R)):R.length===1&&I.current.showNotification(RECIPE_LEARNED(``,R[0]))},[F.learnedRecipes,I])}),FarmhandReducers=class F extends import_react$10.Component{addCowToInventory(...F){throw Error(`Unimplemented`)}addPeer(...F){throw Error(`Unimplemented`)}adjustLoan(...F){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...F){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...F){throw Error(`Unimplemented`)}changeCowName(...F){throw Error(`Unimplemented`)}clearPlot(...F){throw Error(`Unimplemented`)}chopForestPlot(...F){throw Error(`Unimplemented`)}computeStateForNextDay(...F){throw Error(`Unimplemented`)}fertilizePlot(...F){throw Error(`Unimplemented`)}forRange(...F){throw Error(`Unimplemented`)}harvestForestPlot(...F){throw Error(`Unimplemented`)}harvestPlot(...F){throw Error(`Unimplemented`)}hugCow(...F){throw Error(`Unimplemented`)}makeRecipe(...F){throw Error(`Unimplemented`)}makeFermentationRecipe(...F){throw Error(`Unimplemented`)}makeWine(...F){throw Error(`Unimplemented`)}modifyCow(...F){throw Error(`Unimplemented`)}mulchForestPlot(...F){throw Error(`Unimplemented`)}offerCow(...F){throw Error(`Unimplemented`)}placeFarmhandShuffleWager(...F){throw Error(`Unimplemented`)}plantInPlot(...F){throw Error(`Unimplemented`)}plantTreeInPlot(...F){throw Error(`Unimplemented`)}prependPendingPeerMessage(...F){throw Error(`Unimplemented`)}purchaseCombine(...F){throw Error(`Unimplemented`)}purchaseComposter(...F){throw Error(`Unimplemented`)}purchaseCow(...F){throw Error(`Unimplemented`)}purchaseCowPen(...F){throw Error(`Unimplemented`)}purchaseCellar(...F){throw Error(`Unimplemented`)}purchaseField(...F){throw Error(`Unimplemented`)}purchaseForest(...F){throw Error(`Unimplemented`)}purchaseItem(...F){throw Error(`Unimplemented`)}purchaseSmelter(...F){throw Error(`Unimplemented`)}purchaseStorageExpansion(...F){throw Error(`Unimplemented`)}purchaseWoodChipper(...F){throw Error(`Unimplemented`)}removeCowFromInventory(...F){throw Error(`Unimplemented`)}removeKegFromCellar(...F){throw Error(`Unimplemented`)}removePeer(...F){throw Error(`Unimplemented`)}refundUnresumableFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}saveFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}selectCow(...F){throw Error(`Unimplemented`)}sellCow(...F){throw Error(`Unimplemented`)}sellItem(...F){throw Error(`Unimplemented`)}sellKeg(...F){throw Error(`Unimplemented`)}settleFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}setLightningRod(...F){throw Error(`Unimplemented`)}setScarecrow(...F){throw Error(`Unimplemented`)}setSprinkler(...F){throw Error(`Unimplemented`)}showNotification(...F){throw Error(`Unimplemented`)}updatePeer(...F){throw Error(`Unimplemented`)}upgradeTool(...F){throw Error(`Unimplemented`)}waterAllPlots(...F){throw Error(`Unimplemented`)}waterField(...F){throw Error(`Unimplemented`)}waterPlot(...F){throw Error(`Unimplemented`)}withdrawCow(...F){throw Error(`Unimplemented`)}constructor(I){super(I);let L=Object.getOwnPropertyNames(F.prototype).filter(F=>F!==`constructor`);for(let F of L){let I=reducers_exports[F];I&&(this[F]=(...F)=>{this.setState(L=>I(L,...F))})}}},useFarmhandReducers=F=>(0,import_react$10.useMemo)(()=>{let I={};Object.assign(I,reducers_exports);let L=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(F=>F!==`constructor`);for(let R of L){let L=reducers_exports[R];typeof L==`function`&&(I[R]=(...I)=>{F(F=>{let R=L(F,...I);return!R||R===F?F:{...R}})})}return I},[F]),usePrevious=F=>{let I=(0,import_react$10.useRef)();return(0,import_react$10.useEffect)(()=>{I.current=F},[F]),I.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=F=>{let{features:I,match:{path:L=``,params:{room:R}={}}={}}=F,z=(0,import_react$10.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,farmhandShuffle:{isMatchInProgress:!1,wager:0,serializedMatch:null,totalMatchesPlayed:0,totalWins:0,totalLosses:0,currentWinStreak:0,longestWinStreak:0},field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$2,getCowReject:noop$2,getCowTradeRequest:noop$2,getPeerMetadata:noop$2,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:L.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],notificationDuration:NOTIFICATION_DURATION_DEFAULT,peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(F.match?.params?.room||`global`),sendCowAccept:noop$2,sendCowReject:noop$2,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$2,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.24.2`}),[L,F.match?.params?.room]),[De,Oe]=(0,import_react$10.useState)(z),ke=(0,import_react$10.useRef)(De);ke.current=De;let Ae=R===void 0?De.room:R,je=(0,import_react$10.useRef)(null),Me=(0,import_react$10.useRef)(!1),Ne=useFarmhandReducers(Oe),Pe=(0,import_react$10.useRef)(Ne);Pe.current=Ne;let Fe=usePrevious(De),Ie=STAGE_TITLE_MAP[De.stageFocus],Le=FarmhandService.getFieldToolInventory(De.inventory),Re=FarmhandService.computePlayerInventory(De.inventory,De.valueAdjustments),ze=FarmhandService.getPlantableCropInventory(De.inventory),Be=FarmhandService.getPlantableTreeInventory(De.inventory),Ge=FarmhandService.getMulchInventory(De.inventory),rt=(0,import_react$10.useMemo)(()=>getLevelEntitlements(levelAchieved(De.experience)),[De.experience]),it=(0,import_react$10.useMemo)(()=>getAvailableShopInventory(rt),[rt]),at=rt.stageFocusType[stageFocusType.FOREST],ot=rt.stageFocusType[stageFocusType.FARMHAND_SHUFFLE],st=De.isOnline&&De.room!==`global`,ct=(0,import_react$10.useMemo)(()=>getViewList({isFarmhandShuffleUnlocked:ot,isForestUnlocked:at,purchasedCellar:De.purchasedCellar,purchasedCowPen:De.purchasedCowPen,showHomeScreen:De.showHomeScreen}),[De.showHomeScreen,ot,at,De.purchasedCowPen,De.purchasedCellar]),lt=(0,import_react$10.useMemo)(()=>getPeerMetadata(De),[De]),ut=De.isAwaitingNetworkRequest||De.isAwaitingCowTradeRequest||De.isWaitingForDayToCompleteIncrementing,dt=(0,import_react$10.useRef)(null),{openDialogView:ft,closeDialogView:pt,focusNextView:mt,focusPreviousView:ht}=useFarmhandNavigation(Oe,ct),gt=(0,import_react$10.useRef)(!0),vt=(0,import_react$10.useRef)(!1);(0,import_react$10.useEffect)(()=>{if(De.hasBooted){if(vt.current){vt.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus);return}if(gt.current){gt.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus,`push`),removeHashQueryParam(`tab`)}},[De.stageFocus,De.hasBooted]),(0,import_react$10.useEffect)(()=>{let F=()=>{let F=getValidatedStageFocusFromHash(ke.current)??stageFocusType.HOME;F!==ke.current.stageFocus&&(vt.current=!0,Oe(I=>({...I,stageFocus:F})))};return import_window.default.addEventListener(`popstate`,F),()=>import_window.default.removeEventListener(`popstate`,F)},[]);let{syncToRoom:yt,scheduleHeartbeat:yr,tradeForPeerCow:br,handleCowTradeTimeout:hw,messagePeers:gw}=useFarmhandNetwork(De,Oe,Pe,dt,Fe,Ae,L,lt),{clearPersistedData:_w,persistState:vw,updateServerForNextDay:yw,incrementDay:bw}=useFarmhandDayAdvancement(ke,Oe,F,Pe,je),{showInventoryFullNotifications:xw,showRecipeLearnedNotifications:Sw}=useFarmhandNotifications(De,Pe);dt.current=(0,import_react$10.useMemo)(()=>({queueRandomNumbers:(F,I)=>randomNumberService.queueRandomNumbers(F,I),state:De,props:F,viewTitle:Ie,fieldToolInventory:Le,mulchInventory:Ge,playerInventory:Re,plantableCropInventory:ze,plantableTreeInventory:Be,viewList:ct,levelEntitlements:rt,shopInventory:it,peerMetadata:lt,isInputBlocked:ut,isChatAvailable:st,isFarmhandShuffleUnlocked:ot,isForestUnlocked:at,setState:(F,I)=>{Oe(L=>{let R=typeof F==`function`?F(L):F;if(R==null)return L;let z={...L,...R};return I&&setTimeout(I,0),z})},...Pe.current,purchaseItem:(F,I)=>Pe.current.purchaseItem(F,I),sellItem:(F,I)=>Pe.current.sellItem(F,I),showNotification:(F,I,L,R)=>Pe.current.showNotification(F,I,L,R),prependPendingPeerMessage:(F,I)=>Pe.current.prependPendingPeerMessage(F,I),forRange:(F,I,L,R,z)=>Pe.current.forRange(F,I,L,R,z),createInitialState:z,getData,postData,tradeForPeerCow:br,handleCowTradeTimeout:hw,clearPersistedData:_w,syncToRoom:yt,scheduleHeartbeat:yr,showInventoryFullNotifications:xw,showRecipeLearnedNotifications:Sw,persistState:(F={})=>vw(dt.current?.state??De,F),updateServerForNextDay:yw,incrementDay:bw,openDialogView:ft,closeDialogView:pt,focusNextView:mt,focusPreviousView:ht,messagePeers:gw}),[De,F,Ie,Le,Ge,Re,ze,Be,ct,rt,it,lt,ut,st,ot,at,br,hw,_w,yt,yr,xw,Sw,vw,yw,bw,ft,pt,mt,ht,gw,z]);let Cw=(0,import_react$10.useMemo)(()=>{let F={debounced:{}};return Object.keys(ui_events_default).forEach(I=>{let L=I;F[L]=(...F)=>ui_events_default[L].apply(dt.current,F),F.debounced[L]=(0,import_lodash_debounce.default)(F[L],50)}),F},[]),ww=(0,import_react$10.useMemo)(()=>{let F={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((I,L)=>{F[`numberKey${L+1}`]=String(L+1)}),F},[]),Tw=(0,import_react$10.useMemo)(()=>{let F={incrementDay:()=>{De.stageFocus===stageFocusType.FARMHAND_SHUFFLE&&De.farmhandShuffle.isMatchInProgress||bw()},nextView:mt,openAccounting:()=>ft(dialogView.ACCOUNTING),openAchievements:()=>ft(dialogView.ACHIEVEMENTS),openLog:()=>ft(dialogView.FARMERS_LOG),openPriceEvents:()=>ft(dialogView.PRICE_EVENTS),openStats:()=>ft(dialogView.STATS),openSettings:()=>ft(dialogView.SETTINGS),openKeybindings:()=>ft(dialogView.KEYBINDINGS),previousView:ht,selectHoe:()=>Cw.handleFieldModeSelect(CLEANUP),selectScythe:()=>Cw.handleFieldModeSelect(HARVEST),selectWateringCan:()=>Cw.handleFieldModeSelect(WATER),selectShovel:()=>{De.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&Cw.handleFieldModeSelect(MINE)},toggleMenu:()=>Cw.handleMenuToggle()};return nullArray(9).forEach((I,L)=>{F[`numberKey${L+1}`]=()=>{let F=ct[L];typeof F==`string`&&Oe(I=>({...I,stageFocus:stageFocusType[F]}))}}),F},[bw,mt,ft,ht,Cw,De.farmhandShuffle.isMatchInProgress,De.stageFocus,De.toolLevels,ct,_w]);(0,import_react$10.useEffect)(()=>{if(Me.current)return;Me.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>dt.current,configurable:!0});let I=!0;return(async()=>{let L=await F.localforage?.getItem(`state`);if(I){if(L){let F=transformStateDataForImport({...z(),...L}),{isCombineEnabled:I,newDayNotifications:R}=F,De=getValidatedStageFocusFromHash(F);Oe(I=>({...I,...F,...De&&{stageFocus:De},newDayNotifications:[],hasBooted:!0})),R.forEach(({message:F,severity:I})=>{setTimeout(()=>Pe.current.showNotification(F,I),0)}),I&&Pe.current.forRange(harvestPlot,1/0,0,0)}else{await bw(!0),Oe(F=>({...F,historicalValueAdjustments:[]})),Pe.current.showNotification(LOAN_INCREASED(``,500),`info`);let F=getValidatedStageFocusFromHash(ke.current);Oe(I=>({...I,...F&&{stageFocus:F},hasBooted:!0}))}yt()}})(),()=>{I=!1}},[z,bw,F.localforage,yt]);let Ew=(0,import_react$10.useRef)(import_window.default.innerWidth);(0,import_react$10.useEffect)(()=>{let F=()=>{let{innerWidth:F}=import_window.default,I=F!==Ew.current;Ew.current=F,I&&Oe(F=>{let I=!doesMenuObstructStage();return F.isMenuOpen===I?F:{...F,isMenuOpen:I}})};return import_window.default.addEventListener(`resize`,F),()=>import_window.default.removeEventListener(`resize`,F)},[]),(0,import_react$10.useEffect)(()=>{if(!De.hasBooted||!je.current)return;let I=!0,{state:L,pendingNotifications:R,broadcastedPositionMessage:z,isFirstDay:ke}=je.current;return je.current=null,(async()=>{try{if(await F.localforage?.setItem(`state`,reduceByPersistedKeys({...L,...ke&&{historicalValueAdjustments:[]},newDayNotifications:R})),!I)return;if([...R].concat(ke?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:F,severity:I})=>setTimeout(()=>Pe.current.showNotification(F,I),0)),L.isCombineEnabled){if(L.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!I)return;Pe.current.forRange(harvestPlot,1/0,0,0)}}catch(F){console.error(F),I&&Pe.current.showNotification(JSON.stringify(F),`error`)}finally{I&&(Oe(F=>({...F,isWaitingForDayToCompleteIncrementing:!1})),z&&Pe.current.prependPendingPeerMessage(z))}})(),()=>{I=!1}},[De.dayCount,De.hasBooted,F.localforage,Oe]),(0,import_react$10.useEffect)(()=>()=>{ke.current.heartbeatTimeoutId&&clearTimeout(ke.current.heartbeatTimeoutId),ke.current.peerRoom?.leave()},[]),(0,import_react$10.useEffect)(()=>{!De.hasBooted||!Fe||(updateAchievements(De,Fe)!==De&&Oe(F=>{let I=updateAchievements(F,Fe);return I===F?F:I}),De.stageFocus===stageFocusType.COW_PEN&&Fe.stageFocus!==stageFocusType.COW_PEN&&Oe(F=>({...F,selectedCowId:``})),De.stageFocus!==Fe.stageFocus&&De.isMenuOpen&&Oe(F=>{let I=!doesMenuObstructStage();return F.isMenuOpen===I?F:{...F,isMenuOpen:I}}),De.money<Fe.money&&Oe(F=>({...F,todaysLosses:moneyTotal(F.todaysLosses,De.money-Fe.money)})),xw(Fe,De),Fe.hasBooted&&Sw(Fe))},[De,Fe,xw,Sw]);let Dw=De.redirect;return{gameState:{...De,blockInput:ut,features:I??{},fieldToolInventory:Le,mulchInventory:Ge,isChatAvailable:st,levelEntitlements:rt,plantableCropInventory:ze,plantableTreeInventory:Be,playerInventory:Re,playerInventoryQuantities:getInventoryQuantities(De.inventory),shopInventory:it,viewList:ct,viewTitle:Ie},handlers:Cw,isInputBlocked:ut,keyMap:ww,keyHandlers:Tw,redirect:Dw,state:De,viewList:ct,focusPreviousView:ht,focusNextView:mt,isChatAvailable:st}},emptyObject=Object.freeze({}),defaultFeatures={},defaultLocalforage=import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),defaultMatch={path:``,params:{}},Farmhand=({features:F=defaultFeatures,localforage:I=defaultLocalforage,match:L=defaultMatch,...R})=>{let{gameState:z,handlers:De,isInputBlocked:Oe,keyMap:ke,keyHandlers:Ae,redirect:je,state:Me,viewList:Ne,focusPreviousView:Pe,focusNextView:Fe,isChatAvailable:Ie}=useFarmhand({...R,features:F,localforage:I,match:L}),Le=Me.stageFocus===stageFocusType.FARMHAND_SHUFFLE&&z.farmhandShuffle.isMatchInProgress;return(0,import_jsx_runtime$2.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:Oe?emptyObject:ke,handlers:Oe?emptyObject:Ae,children:(0,import_jsx_runtime$2.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime$2.jsx)(CssBaseline,{}),(0,import_jsx_runtime$2.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[je&&(0,import_jsx_runtime$2.jsx)(Redirect,{to:je}),(0,import_jsx_runtime$2.jsxs)(FarmhandContext.Provider,{value:{gameState:z,handlers:De},children:[(0,import_jsx_runtime$2.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,Me.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":Me.useAlternateEndDayButtonPosition,"block-input":Oe,"has-booted":Me.hasBooted}),sx:F=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!Me.hasBooted,transform:Me.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...Oe&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:F.transitions.create(`left`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut}),width:0,zIndex:Z_INDEX.END_DAY_BUTTON,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...Me.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...Me.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:F.transitions.create(`transform`,{duration:F.transitions.duration.shorter}),transform:Me.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime$2.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime$2.jsx)(Consumer$30,{}),(0,import_jsx_runtime$2.jsxs)(Drawer,{className:`sidebar-wrapper`,open:z.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime$2.jsx)(Consumer$14,{}),(0,import_jsx_runtime$2.jsx)(Consumer$24,{}),(0,import_jsx_runtime$2.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime$2.jsx)(Consumer,{}),(0,import_jsx_runtime$2.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime$2.jsx)(MobileStepper,{variant:`dots`,steps:Ne.length,position:`static`,activeStep:Ne.indexOf(Me.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime$2.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:Pe,children:(0,import_jsx_runtime$2.jsx)(KeyboardArrowLeftIcon,{})}),(0,import_jsx_runtime$2.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":Me.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>De.handleMenuToggle(),children:(0,import_jsx_runtime$2.jsx)(MenuIcon,{})}),(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:Fe,children:(0,import_jsx_runtime$2.jsx)(KeyboardArrowRightIcon,{})})]})]}),!Le&&(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime$2.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:De.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime$2.jsx)(HotelIcon,{})})})]}),Ie?(0,import_jsx_runtime$2.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime$2.jsx)(NotificationSystem_default,{})]})]})]})})},FarmhandRoute=F=>(0,import_jsx_runtime$2.jsx)(Farmhand,{...F,features});(0,import_client.createRoot)(document.getElementById(`root`)).render((0,import_jsx_runtime$2.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime$2.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}));
413
- //# sourceMappingURL=index-C9kG86vs.js.map
412
+ In Farmhand Shuffle you play against a bot opponent and pay money into a Community Fund at the start of every turn. Whoever avoids bankruptcy the longest wins!`})})})})})]}),De===`playing`&&Ne!==`error`&&(0,import_jsx_runtime$2.jsx)(mw,{playerSeeds:Me,userPlayerId:z,initialMatch:Ne,onMatchEnd:Ie,onCheckpoint:Le,hideDefaultGameOverActions:!0,useGenericPlayerLabels:!0,hideScrollbar:!0,sx:{height:`100%`,backgroundColor:`transparent`,backgroundImage:`none`,color:`black`,"--farmhand-shuffle-placeholder-outline-color":`rgba(0, 0, 0, 0.35)`,"--farmhand-shuffle-content-padding":`0.5rem`,"--farmhand-shuffle-bottom-inset":`0px`,"@media (max-width: 899.95px)":{"--farmhand-shuffle-bottom-inset":`7.5em`},"--farmhand-shuffle-hand-toggle-bottom":`1.4375rem`,"--farmhand-shuffle-hand-toggle-left":`1.4375rem`},renderGameOverContent:I=>(0,import_jsx_runtime$2.jsx)(ShuffleResultSummary,{winnerId:I,userPlayerId:z,wager:je.current,winStreak:F.currentWinStreak,onPlayAgain:Re,onLeave:ze})})]})},brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,hay_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACYElEQVRoQ8VYwVEDQQwjbxqgBWqiHTqhDOpg+PKkAd5kNjPL7Dm2Jdkbwi+czyvZss53p4+3l9+Hwt/j0/Phrp/vz0KW/i0nhoAFO47NAHvx6B6Gysy7nk0RYJIzMSoxpst/BNTkDGA1hgE8c85Y2IGImAcOzYEngZEn+r93ho2FBJQqsl1c4xDp9fxxn43fSkAhuyv29PX+erBRpiKKVm0F52/vnEpnrjrg6XEH4MhGPVmsc5ERHte2SkghqgxuJrcWAQWwtT9GqpkLzWsSgQrgCvDMuiUX6gDO2o6eLUp3wiHu7i5KFTuWSksIWdwtuoXOvLjQfA4obWMSe1bY6WrUUXeZU8io7d/dqVBC7F6jEmCHmy0iPQPWDi0Q9sBIWlV5yQSUiv9HF6+WObR7ME/HSg5GWl6X0w5k+wrrREh6inQ8PJSEVLCKzLKZyDbYec2VEPPFwcawJHdtoZO424Hu8HlkqsA9LHf7rKIYAGsE1Ayoml7jd26eXt4WAQROcRi2SFaKlI1GyZWnLwtQjUu/zO0E2DWGiFhLQspQomKwLuVKiPVwtb2VeJVI6ZUSeTMDHBUNXZ9nQAmpFcnARzJCYDMMkIBdxpCWma1yjVHyeUQvBHZIwgJHVWVkxhRDfqW0SZUKKqDZd2daQtHhle5lyx67A1FDzA4wqixbTZTHu059F7olgGh2WGmWVonOgLL3snHtGWCcomqb1sK97XYLgVstamjXGjIrE2BbvILYPUsjX7oLqZamusgOQlQH7vHm5ekfzkDH9ysPtAEIFQfZ6eG7EApWJYKG0KuoesYZ+5TyAAnuGB8AAAAASUVORK5CYIIA`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:F,field:I,isMenuOpen:L=!0,stageFocus:R,useAlternateEndDayButtonPosition:z=!1,viewTitle:De})=>{let Oe=(0,import_react$10.useRef)(null);(0,import_react$10.useEffect)(()=>{if(Oe.current){let F=Oe.current,{style:I}=F;F.scrollTop=0,I.overflow=`hidden`,setTimeout(()=>I.overflow=``,0)}},[R]);let ke={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default,[stageFocusType.FARMHAND_SHUFFLE]:hay_bg_default}[R],Ae=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(R);return(0,import_jsx_runtime$2.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":R,role:`main`,ref:Oe,sx:I=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:I.transitions.create(`margin-left`,{duration:I.transitions.duration.enteringScreen,easing:I.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...ke?{backgroundImage:`url(${ke})`}:{},...Ae?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(F)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...R===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`},...R===stageFocusType.FARMHAND_SHUFFLE&&{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...z?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...L?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *:not(.stage-background)":{opacity:1,transition:I.transitions.create(`opacity`,{duration:I.transitions.duration.enteringScreen,easing:I.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:I.transitions.create(`margin-left`,{duration:I.transitions.duration.leavingScreen,easing:I.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}},...R===stageFocusType.FARMHAND_SHUFFLE?{overflow:`hidden`,padding:0}:{}}),children:[(0,import_jsx_runtime$2.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime$2.jsx)(`h2`,{className:`view-title`,children:De}),R===stageFocusType.HOME&&(0,import_jsx_runtime$2.jsx)(Consumer$7,{}),R===stageFocusType.FIELD&&(0,import_jsx_runtime$2.jsx)(Consumer$10,{columns:I[0].length,rows:I.length}),R===stageFocusType.FOREST&&(0,import_jsx_runtime$2.jsx)(Forest,{}),R===stageFocusType.SHOP&&(0,import_jsx_runtime$2.jsx)(Consumer$4,{}),R===stageFocusType.COW_PEN&&(0,import_jsx_runtime$2.jsx)(Consumer$6,{}),R===stageFocusType.WORKSHOP&&(0,import_jsx_runtime$2.jsx)(Consumer$1,{}),R===stageFocusType.CELLAR&&(0,import_jsx_runtime$2.jsx)(Cellar,{}),R===stageFocusType.FARMHAND_SHUFFLE&&(0,import_jsx_runtime$2.jsx)(FarmhandShuffleView,{}),R!==stageFocusType.FARMHAND_SHUFFLE&&(0,import_jsx_runtime$2.jsx)(`div`,{className:`spacer`})]})};function Consumer(F){return(0,import_jsx_runtime$2.jsx)(FarmhandContext.Consumer,{children:({gameState:I,handlers:L})=>(0,import_jsx_runtime$2.jsx)(Stage,{...I,...L,...F})})}var scriptRel=`modulepreload`,assetsURL=function(F,I){return new URL(F,I).href},seen={},__vitePreload=function(F,I,L){let R=Promise.resolve();if(I&&I.length>0){let F=document.getElementsByTagName(`link`),z=document.querySelector(`meta[property=csp-nonce]`),De=z?.nonce||z?.getAttribute(`nonce`);function Oe(F){return Promise.all(F.map(F=>Promise.resolve(F).then(F=>({status:`fulfilled`,value:F}),F=>({status:`rejected`,reason:F}))))}function ke(F){return import.meta.resolve?import.meta.resolve(F):new URL(F,import.meta.url).href}R=Oe(I.map(I=>{if(I=assetsURL(I,L),I=ke(I),I in seen)return;seen[I]=!0;let R=I.endsWith(`.css`);for(let L=F.length-1;L>=0;L--){let z=F[L];if(z.href===I&&(!R||z.rel===`stylesheet`))return}let z=document.createElement(`link`);if(z.rel=R?`stylesheet`:scriptRel,R||(z.as=`script`),z.crossOrigin=``,z.href=I,De&&z.setAttribute(`nonce`,De),document.head.appendChild(z),R)return new Promise((F,L)=>{z.addEventListener(`load`,F),z.addEventListener(`error`,()=>L(Error(`Unable to preload CSS for ${I}`)))})}))}function z(F){let I=new Event(`vite:preloadError`,{cancelable:!0});if(I.payload=F,window.dispatchEvent(I),!I.defaultPrevented)throw F}return R.then(I=>{for(let F of I||[])F.status===`rejected`&&z(F.reason);return F().catch(z)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(F={}){let{immediate:I=!1,onNeedReload:L,onNeedRefresh:R,onOfflineReady:z,onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}=F,Ae,je,Me,Ne=async(F=!0)=>{await je,auto||Me?.()};async function Pe(){if(`serviceWorker`in navigator){if(Ae=await __vitePreload(async()=>{let{Workbox:F}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:F}},[],import.meta.url).then(({Workbox:F})=>new F(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(F=>{ke?.(F)}),!Ae)return;if(Me=()=>{Ae?.messageSkipWaiting()},!autoDestroy)if(auto)Ae.addEventListener(`activated`,F=>{(F.isUpdate||F.isExternal)&&(L?L():window.location.reload())}),Ae.addEventListener(`installed`,F=>{F.isUpdate||z?.()});else{let F=!1,I=()=>{F=!0,Ae?.addEventListener(`controlling`,F=>{F.isUpdate&&(L?L():window.location.reload())}),R?.()};Ae.addEventListener(`installed`,L=>{L.isUpdate===void 0?L.isExternal===void 0?!F&&z?.():L.isExternal?I():!F&&z?.():L.isUpdate||z?.()}),Ae.addEventListener(`waiting`,I)}Ae.register({immediate:I}).then(F=>{Oe?Oe(`./service-worker.js`,F):De?.(F)}).catch(F=>{ke?.(F)})}}return je=Pe(),Ne}function useRegisterSW(F={}){let{immediate:I=!0,onNeedReload:L,onNeedRefresh:R,onOfflineReady:z,onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}=F,[Ae,je]=(0,import_react$10.useState)(!1),[Me,Ne]=(0,import_react$10.useState)(!1),[Pe]=(0,import_react$10.useState)(()=>registerSW({immediate:I,onNeedReload:L,onOfflineReady(){Ne(!0),z?.()},onNeedRefresh(){je(!0),R?.()},onRegistered:De,onRegisteredSW:Oe,onRegisterError:ke}));return{needRefresh:[Ae,je],offlineReady:[Me,Ne],updateServiceWorker:Pe}}var RELOAD_FALLBACK_DELAY=1e3,UpdateNotifier=()=>{let{gameState:{hasBooted:F},handlers:{handleGameUpdateAvailable:I}}=(0,import_react$10.useContext)(FarmhandContext),{needRefresh:[L],updateServiceWorker:R}=useRegisterSW(),z=(0,import_react$10.useRef)(!1);return(0,import_react$10.useEffect)(()=>{!L||!F||z.current||(z.current=!0,I(async()=>{await R(!0),setTimeout(()=>window.location.reload(),RELOAD_FALLBACK_DELAY)}),window.addEventListener(`beforeunload`,()=>{R(!0)}))},[L,F,I,R]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(F=``,I={}){let L=new URLSearchParams;return Object.keys(I).forEach(F=>L.append(encodeURIComponent(F),encodeURIComponent(I[F]))),(await fetch(`${F}?${L}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(F=``,I={}){return(await fetch(F,{...commonFetchConfig,method:`POST`,body:JSON.stringify(I)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(F=>inventory.filter(({id:I})=>!(unlockableItems.hasOwnProperty(I)&&!F.items.hasOwnProperty(I)))),getPeerMetadata=F=>{let I=PEER_METADATA_STATE_KEYS.reduce((I,L)=>(I[L]=F[L],I),{});return Object.assign(I,{cowOfferedForTrade:F.cowInventory.find(({id:I})=>I===F.cowIdOfferedForTrade)}),I},getViewList=({isFarmhandShuffleUnlocked:F,isForestUnlocked:I,purchasedCellar:L,purchasedCowPen:R,showHomeScreen:z})=>{let{CELLAR:De,COW_PEN:Oe,HOME:ke,WORKSHOP:Ae,FOREST:je,FARMHAND_SHUFFLE:Me}=stageFocusType,Ne=[...STANDARD_VIEW_LIST];return z&&Ne.unshift(ke),I&&Ne.push(je),R&&Ne.push(Oe),Ne.push(Ae),L&&Ne.push(De),F&&Ne.push(Me),Ne},getValidatedStageFocusFromHash=F=>{let I=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!I)return;let L=getLevelEntitlements(levelAchieved(F.experience)),R=L.stageFocusType[stageFocusType.FOREST],z=L.stageFocusType[stageFocusType.FARMHAND_SHUFFLE];return getViewList({isFarmhandShuffleUnlocked:z,isForestUnlocked:R,purchasedCellar:F.purchasedCellar,purchasedCowPen:F.purchasedCowPen,showHomeScreen:F.showHomeScreen}).find(F=>F===I)},sleep=F=>new Promise(I=>setTimeout(I,F)),getItemById=F=>{let I=itemsMap[F];if(!I)throw Error(`Unknown item id: ${F}`);return I},{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((F,I)=>F.map(({quantity:F,id:L})=>{let R=getItemById(L);return{quantity:F,...R,value:getItemCurrentValue(R,I)}}));static getFieldToolInventory=memoize(F=>F.filter(({id:F})=>{let I=getItemById(F);return typeof I.enablesFieldMode==`string`&&I.enablesFieldMode!==PLANT&&I.type!==MULCH}).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getPlantableCropInventory=memoize(F=>F.filter(({id:F})=>getItemById(F).isPlantableCrop).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getMulchInventory=memoize(F=>F.filter(({id:F})=>itemsMap[F]?.type===MULCH).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static getPlantableTreeInventory=memoize(F=>F.filter(({id:F})=>itemsMap[F]?.isPlantableTree).map(({id:F,quantity:I})=>({...itemsMap[F],quantity:I})));static applyPriceEvents=(F,I,L)=>{let R={...F};return Object.keys(I).forEach(F=>{R[F]=.5}),Object.keys(L).forEach(F=>{R[F]=1.5}),R}},itemIds=Object.keys(itemsMap),getInventoryQuantities=F=>{let I={};for(let F of itemIds)I[F]=0;for(let{id:L,quantity:R}of F)I[L]=R;return I},useFarmhandNavigation=(F,I)=>({openDialogView:(0,import_react$10.useCallback)(I=>{F(F=>({...F,currentDialogView:I,isDialogViewOpen:!0}))},[F]),closeDialogView:(0,import_react$10.useCallback)(()=>{F(F=>({...F,isDialogViewOpen:!1}))},[F]),focusNextView:(0,import_react$10.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&F(F=>{let L=I.indexOf(F.stageFocus);return{...F,stageFocus:I[(L+1)%I.length]}})},[F,I]),focusPreviousView:(0,import_react$10.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&F(F=>{let L=I.indexOf(F.stageFocus),R=L===0?I.length-1:(L-1)%I.length;return{...F,stageFocus:I[R]}})},[F,I])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(F,I)=>Array(F).fill(void 0).map(I),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=F=>alloc(F,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=F=>(F!==null&&clearTimeout(F),null),mkErr=F=>Error(`${libName}: ${F}`),toErrorMessage=(F,I)=>F instanceof Error&&F.message?F.message:typeof F==`string`&&F?F:toJson(F??I),toError=(F,I)=>F instanceof Error?F:mkErr(toErrorMessage(F,I)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=F=>encoder.encode(F),decodeBytes=F=>decoder.decode(F),toHex=F=>F.reduce((F,I)=>F+I.toString(16).padStart(2,`0`),``),topicPath=(...F)=>F.join(`@`),shuffle=(F,I)=>{let L=[...F],R=()=>{let F=sin(I++)*1e4;return F-floor(F)},z=L.length;for(;z;){let F=floor(R()*z--),I=L[z];L[z]=L[F],L[F]=I}return L},getRelays=(F,I,L,R=!1)=>F.relayConfig?.urls||(R?shuffle(I,strToNum(F.appId)):I).slice(0,F.relayConfig?.redundancy??L),toJson=JSON.stringify,fromJson=F=>{try{return JSON.parse(F)}catch{throw mkErr(`failed to parse JSON: ${F}`)}},strToNum=(F,I=2**53-1)=>F.split(``).reduce((F,I)=>F+I.charCodeAt(0),0)%I,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(F=>{resolver=F}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(F,I)=>{let L={},R=()=>{let z=new WebSocket(F);z.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(R);return}socketRetryPeriods[F]??=defaultRetryMs,setTimeout(R,socketRetryPeriods[F]),socketRetryPeriods[F]*=2},z.onmessage=F=>I(String(F.data)),L.socket=z,L.url=z.url,L.ready=new Promise(I=>z.onopen=()=>{I(L),socketRetryPeriods[F]=defaultRetryMs}),L.send=F=>{z.readyState===1&&z.send(F)}};return R(),L},createRelayManager=F=>{let I={},L=new WeakMap,R=F=>{let I=L.get(F);if(!I)throw mkErr(`relay bookkeeping missing registration for relay client`);return I};return{register:(F,R)=>(I[F]=R,L.set(R,F),R),keyOf:R,scoped:()=>{let F={},I=I=>F[I]??={};return{forKey:I,forRelay:F=>I(R(F))}},getSockets:()=>fromEntries(entries(I).flatMap(([I,L])=>{let R=F(L);return R?[[I,R]]:[]}))}},watchOnline=()=>{if(isBrowser){let F=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:F.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:F.signal}),()=>F.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=F=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(F)))),unpack=F=>{let I=atob(F);return new Uint8Array(I.length).map((F,L)=>I.charCodeAt(L)).buffer},hashWith=async(F,I)=>new Uint8Array(await crypto.subtle.digest(F,encodeBytes(I))),sha1=async F=>strToSha1[F]??=Array.from(await hashWith(`SHA-1`,F)).map(F=>F.toString(36)).join(``),genKey=async(F,I,L)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${F}:${I}:${L}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(F,I)=>toHex(await hashWith(`SHA-256`,`${libName}:${F}:${I}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(F,I)=>{let L=crypto.getRandomValues(new Uint8Array(16));return L.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:L},await F,encodeBytes(I)))},decrypt=async(F,I)=>{let[L,R]=I.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(L?.split(ivJoinChar).map(Number)??[])},await F,unpack(R??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(F){this.makeOffer=F}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(F=>this.push(F)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(F=>F.isDead?(this.pooled.delete(F),!1):!0)},offerTtl)}push(F){F.isDead||this.pooled.has(F)||this.leased.has(F)||(this.pool.push(F),this.pooled.add(F))}shift(F){let I=[];for(;I.length<F&&this.pool.length>0;){let F=this.pool.shift();if(!F)break;this.pooled.delete(F),I.push(F)}return I}claimLeased(F){let I=this.leased.get(F);I&&(resetTimer(I),this.leased.delete(F))}recycle(F){if(!(F.isDead||this.recycling.has(F))){if(F.connection.remoteDescription){F.destroy();return}if(!this.active){F.destroy();return}this.recycling.add(F),F.setHandlers({connect:noOp,close:noOp,error:noOp}),F.getOffer(!0).then(I=>{if(!I||I.type!==`offer`||F.isDead||!this.active){F.destroy();return}this.push(F)}).catch(()=>F.destroy()).finally(()=>this.recycling.delete(F))}}reclaimLeased(F){let I=this.leased.get(F);I&&(resetTimer(I),this.leased.delete(F),this.recycle(F))}lease(F){this.claimLeased(F),this.leased.set(F,setTimeout(()=>{this.leased.delete(F),this.recycle(F)},offerLeaseTtlMs))}checkout(F,I,L){let R=this.shift(F),z=Math.max(0,F-R.length);z>0&&R.push(...alloc(z,this.makeOffer));let De=async(F,R=!1)=>{try{let R=await L(F);return I?(this.lease(F),{peer:F,offer:R,claim:()=>this.claimLeased(F),reclaim:()=>this.reclaimLeased(F)}):{peer:F,offer:R}}catch(I){if(this.claimLeased(F),this.pooled.delete(F),F.destroy(),!R)return De(this.makeOffer(),!0);throw I}};return all(R.map(F=>De(F)))}getOffers(F,I){return this.checkout(F,!0,I)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(F=>F.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((F,I)=>{resetTimer(F),I.destroy()}),this.leased.clear(),this.recycling.forEach(F=>F.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(F,I,L)=>{let R=R=>hashWith(`SHA-256`,`${R}:${F}:${I}:${L}`).then(toHex),z=async(I,L,z)=>{if(!F)return;if(z){let F=genId(36);await I({__trystero_pw:`challenge`,c:F});let{data:z}=await L();if(!z||typeof z!=`object`||z.__trystero_pw!==`response`||typeof z.h!=`string`)throw overlapRoomPasswordErr;let De=await R(F);if(z.h!==De)throw overlapRoomPasswordErr;return}let{data:De}=await L();if(!De||typeof De!=`object`||De.__trystero_pw!==`challenge`||typeof De.c!=`string`)throw overlapRoomPasswordErr;await I({__trystero_pw:`response`,h:await R(De.c)})};return{run:z,compose:I=>F||I?async(F,L,R,De)=>{await z(L,R,De),await I?.(F,L,R,De)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=F=>F.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(F,{trickleIce:I,rtcConfig:L,rtcPolyfill:R,turnConfig:z,_test_only_mdnsHostFallbackToLoopback:De})=>{let Oe=new(R??RTCPeerConnection)({iceServers:defaultIceServers.concat(z??[]),...L}),ke={},Ae=[],je=[],Me=I!==!1,Ne=[],Pe=[],Fe=!1,Ie=!1,Le=null,Re=null,ze=!1,Be=()=>Re=resetTimer(Re),Ge=()=>{ze||(ze=!0,Be(),ke.close?.())},rt=F=>{ke.signal?ke.signal(F):Ae.push(F)},it=F=>{let I=ke.signal;ke.signal=L=>{I?.(L),F(L)},Ae.length>0&&Ae.splice(0).forEach(F=>ke.signal?.(F))},at=F=>De?rewriteMdnsCandidatesToLoopback(F):F,ot=F=>{if(!De||typeof F.candidate!=`string`)return F;let I=rewriteMdnsCandidatesToLoopback(F.candidate);return I===F.candidate?F:{...F,candidate:I}},st=F=>({type:F.localDescription?.type??offerType,sdp:at(F.localDescription?.sdp??``)}),ct=()=>{let F=Oe.remoteDescription?.sdp;return F?F.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},lt=()=>(Oe.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,ut=F=>{if(!Oe.remoteDescription)return!1;let I=lt();if(typeof F.sdpMLineIndex==`number`&&I>0&&F.sdpMLineIndex>=I)return!1;let L=ct();return!(L&&F.usernameFragment&&F.usernameFragment!==L)},dt=async F=>{try{return await Oe.addIceCandidate(F),!0}catch(I){if(I instanceof Error&&outOfRangePattern.test(I.message)&&typeof F.sdpMLineIndex==`number`)return!1;throw I}},ft=async()=>{if(!Oe.remoteDescription||Ne.length===0)return;let F=Ne.splice(0),I=[];for(let L of F){if(!ut(L)){I.push(L);continue}await dt(L)||I.push(L)}I.length>0&&Ne.push(...I)},pt=async F=>{if(ut(F)){await dt(F)||Ne.push(F);return}Ne.push(F)},mt=F=>{F.binaryType=`arraybuffer`,F.bufferedAmountLowThreshold=65535,F.onmessage=F=>{let I=F.data;ke.data?ke.data(I):je.push(I)},F.onopen=()=>ke.connect?.(),F.onclose=Ge,F.onerror=({error:F})=>ke.error?.(toError(F,`data channel error`))},ht=async F=>{let I=null;try{await Promise.race([new Promise(I=>{let L=()=>{F.iceGatheringState===`complete`&&(F.removeEventListener(iceStateEvent,L),I())};F.addEventListener(iceStateEvent,L),L()}),new Promise(F=>{I=setTimeout(F,iceTimeout)})])}finally{resetTimer(I)}return st(F)},gt=async()=>{let F=Me?st(Oe):await ht(Oe);return rt(F),F};F?(Le=Oe.createDataChannel(`data`),mt(Le)):Oe.ondatachannel=({channel:F})=>{Le=F,mt(F)};let vt=async(F=!1)=>{if(Oe.connectionState!==`closed`)try{return Fe=!0,F&&(Oe.signalingState!==`stable`&&Oe.signalingState!==`closed`&&Oe.localDescription?.type===offerType&&await Oe.setLocalDescription({type:`rollback`}),typeof Oe.restartIce==`function`&&Oe.restartIce()),await Oe.setLocalDescription(F?await Oe.createOffer({iceRestart:!0}):void 0),await gt()}catch(F){ke.error?.(toError(F,`failed to create local offer`))}finally{Fe=!1}};Oe.onnegotiationneeded=async()=>vt(!1),Oe.onicecandidate=({candidate:F})=>{if(!Me||!F)return;let I=ot(typeof F.toJSON==`function`?F.toJSON():{candidate:F.candidate,sdpMid:F.sdpMid,sdpMLineIndex:F.sdpMLineIndex,usernameFragment:F.usernameFragment});rt({type:candidateType,sdp:JSON.stringify(I)})},Oe.onconnectionstatechange=()=>{if(Oe.connectionState===`connected`||Oe.connectionState===`connecting`){Be();return}if(Oe.connectionState===`disconnected`){Re||=setTimeout(()=>{Re=null,Oe.connectionState===`disconnected`&&Ge()},disconnectedCloseDelayMs);return}(Oe.connectionState===`failed`||Oe.connectionState===`closed`)&&Ge()},Oe.ontrack=F=>{let I=F.streams[0];if(I){if(!ke.track&&!ke.stream){Pe.push({track:F.track,stream:I});return}ke.track?.(F.track,I),ke.stream?.(I)}},Oe.onremovestream=F=>ke.stream?.(F.stream);let yt=F?new Promise(F=>it(I=>{I.type===offerType&&F(I)})):Promise.resolve();return F&&queueMicrotask(()=>{!Fe&&Oe.signalingState===`stable`&&!Oe.localDescription&&Oe.connectionState!==`closed`&&Oe.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:Oe,get channel(){return Le},get isDead(){return Oe.connectionState===`closed`},getOffer:async(I=!1)=>{if(F)return I?vt(!0):Oe.localDescription?.type===offerType?Me?st(Oe):ht(Oe):yt},async signal(I){if(I.type===`candidate`){try{let F=JSON.parse(I.sdp);F&&typeof F==`object`&&await pt(ot(F))}catch(F){ke.error?.(toError(F,`failed to parse remote candidate`))}return}if(!(Le?.readyState===`open`&&!I.sdp?.includes(`a=rtpmap`)))try{let L={...I,sdp:at(I.sdp)};if(I.type===offerType){if(Fe||Oe.signalingState!==`stable`&&!Ie){if(F)return;await all([Oe.setLocalDescription({type:`rollback`}),Oe.setRemoteDescription(L)])}else await Oe.setRemoteDescription(L);return await ft(),await Oe.setLocalDescription(),await gt()}if(I.type===answerType){Ie=!0;try{await Oe.setRemoteDescription(L),await ft()}finally{Ie=!1}}}catch(F){ke.error?.(toError(F,`failed to apply remote signal`))}},sendData:F=>Le?.send(F),destroy:()=>{Be(),Le?.close(),Oe.close(),Fe=!1,Ie=!1,Ge()},setHandlers:F=>{let{signal:I,...L}=F;Object.assign(ke,L),ke.data&&je.length>0&&je.splice(0).forEach(F=>ke.data?.(F)),I&&it(I),(ke.track||ke.stream)&&Pe.length>0&&Pe.splice(0).forEach(({track:F,stream:I})=>{ke.track?.(F,I),ke.stream?.(I)})},offerPromise:yt,addStream:F=>F.getTracks().forEach(I=>Oe.addTrack(I,F)),removeStream:F=>Oe.getSenders().filter(I=>I.track&&F.getTracks().includes(I.track)).forEach(F=>Oe.removeTrack(F)),addTrack:(F,I)=>Oe.addTrack(F,I),removeTrack:F=>{let I=Oe.getSenders().find(I=>I.track===F);I&&Oe.removeTrack(I)},replaceTrack:(F,I)=>{let L=Oe.getSenders().find(I=>I.track===F);if(L)return L.replaceTrack(I)}}},defaultIceServers=[...alloc(3,(F,I)=>`stun:stun${I||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(F=>({urls:F})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=F=>`@_`+F,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(F=>F()),registerBeforeUnloadCleanup=F=>(beforeUnloadRoomCleanups.add(F),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(F),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=F=>F instanceof ArrayBuffer?new Uint8Array(F):new Uint8Array(F.buffer,F.byteOffset,F.byteLength),toHandshakeErrorMessage=F=>{let I=toErrorMessage(F,`unknown error`);return I.startsWith(`handshake `)?I:`handshake failed: ${I}`},waitForBufferedAmountLow=(F,I=backpressureWaitTimeoutMs)=>F.readyState!==`open`||F.bufferedAmount<=F.bufferedAmountLowThreshold?Promise.resolve(F.readyState===`open`):new Promise(L=>{let R=!1,z=null,De=I=>{R||(R=!0,F.removeEventListener(buffLowEvent,Oe),F.removeEventListener(channelCloseEvent,ke),F.removeEventListener(channelErrorEvent,ke),resetTimer(z),L(I))},Oe=()=>De(!0),ke=()=>De(!1);if(F.addEventListener(buffLowEvent,Oe),F.addEventListener(channelCloseEvent,ke),F.addEventListener(channelErrorEvent,ke),z=setTimeout(()=>De(!1),I),F.readyState!==`open`){De(!1);return}F.bufferedAmount<=F.bufferedAmountLowThreshold&&De(!0)}),room_default=(F,I,L,{onPeerHandshake:R,onHandshakeError:z,handshakeTimeoutMs:De=defaultHandshakeTimeoutMs}={})=>{let Oe={},ke={},Ae={},je={},Me={},Ne={},Pe={},Fe={},Ie={},Le={},Re=new WeakMap,ze=new WeakMap,Be={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},Ge=noOp,rt=(F,I,{includePending:L=!1}={})=>(F?Array.isArray(F)?F:[F]:keys(L?Oe:ke)).flatMap(F=>{let R=L?Oe[F]:ke[F];return R?[Promise.resolve(I(F,R))]:(console.warn(`${libName}: no peer with id ${F} found`),[])}),it=(F,I,L,R,z,De={})=>{let Oe={k:I,...De,...L===void 0?{}:{m:L}};return rt(F,async(F,I)=>{await R(Oe,F),z(I)})},at=F=>I=>{let L=F.get(I);return L||(L=genId(20),F.set(I,L)),L},ot=at(Re),st=at(ze),ct=F=>Oe[F]??null,lt=(F,I,L,R)=>{ke[F]&&(ct(F)?.__trysteroSetRemoteStreamByKey?.(I,L),typeof L.id==`string`&&ct(F)?.__trysteroSetRemoteStreamById?.(L.id,L),Be.onPeerStream(L,F,R))},ut=(F,I,L,R,z)=>{ke[F]&&(ct(F)?.__trysteroSetRemoteTrackByKey?.(I,L,R),typeof R.id==`string`&&ct(F)?.__trysteroSetRemoteStreamById?.(R.id,R),typeof L.id==`string`&&ct(F)?.__trysteroSetRemoteTrackById?.(L.id,L,R),Be.onPeerTrack(L,R,F,z))},dt=(F,I=mkErr(`peer disconnected`))=>{let L=Ae[F],R=toError(I,`peer disconnected`);L&&(resetTimer(L.handshakeTimer),L.pendingHandshakePayloads.length=0,L.handshakeWaiters.splice(0).forEach(F=>F.reject(R)),delete Ae[F]),delete Oe[F],delete ke[F],delete Ne[F],Fe[F]?.splice(0).forEach(F=>F.reject(R)),delete Fe[F],delete Ie[F],delete Le[F]},ft=(F,L,R)=>{let z=Oe[F];if(!z||L&&z!==L)return;let De=!!ke[F];dt(F,R),z.destroy(),De&&Be.onPeerLeave(F),I(F)},pt=(F,I={})=>{let L=Me[F];if(je[F]&&L){let R=je[F].options;if(R.sendToPending!==!!I.sendToPending||R.receiveWhilePending!==!!I.receiveWhilePending)throw mkErr(`action type "${F}" cannot be redefined`);return L}if(!F)throw mkErr(`action type argument is required`);let R=encodeBytes(F);if(R.byteLength>typeByteLimit)throw mkErr(`action type string "${F}" (${R.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let z={sendToPending:!!I.sendToPending,receiveWhilePending:!!I.receiveWhilePending},De=new Uint8Array(typeByteLimit);De.set(R);let Ae=0;return je[F]={onComplete:noOp,onProgress:noOp,setOnComplete:I=>{je[F].onComplete=I;let L=Pe[F];L?.length&&(delete Pe[F],L.forEach(({payload:F,peerId:L,metadata:R})=>I(F,L,R)))},setOnProgress:I=>{je[F].onProgress=I},send:async(F,I,L,R)=>{let je=typeof F;if(je===`undefined`)throw mkErr(`action data cannot be undefined`);let Me=je!==`string`,Ne=F instanceof Blob,Pe=Ne||F instanceof ArrayBuffer||F instanceof TypedArray,Fe=L!==void 0,Ie=Pe?toByteArray(Ne?await F.arrayBuffer():F):encodeBytes(Me?toJson(F):F),Le=Fe?encodeBytes(toJson(L)):null,Re=Math.ceil(Ie.byteLength/chunkSize)+ +!!Fe||1,ze=alloc(Re,(F,I)=>{let L=I===Re-1,R=!!(Fe&&I===0),z=new Uint8Array(payloadIndex+(R?Le?.byteLength??0:L?Ie.byteLength-chunkSize*(Re-(Fe?2:1)):chunkSize));return z.set(De),z.set([Ae>>8,Ae&oneByteMax],nonceIndex),z.set([Number(L)|Number(R)<<1|Number(Pe)<<2|Number(Me)<<3],tagIndex),z.set([Math.round((I+1)/Re*oneByteMax)],progressIndex),z.set(Fe?R?Le??new Uint8Array:Ie.subarray((I-1)*chunkSize,I*chunkSize):Ie.subarray(I*chunkSize,(I+1)*chunkSize),payloadIndex),z});return Ae=Ae+1&twoByteMax,await all(rt(I,async(F,I)=>{let{channel:De}=I,Ae=0;for(;Ae<Re;){let je=ze[Ae];if(!je||De&&De.bufferedAmount>De.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(De))break;let Me=z.sendToPending?Oe[F]:ke[F];if(!Me||Me!==I)break;I.sendData(je),Ae++;let Ne=je[progressIndex]??oneByteMax;R?.(Ne/oneByteMax,F,L)}},{includePending:z.sendToPending})),[]},options:z},Me[F]=[je[F].send,je[F].setOnComplete,je[F].setOnProgress]},mt=F=>pt(F),ht=(F,I)=>{let L=Ae[F];if(!L)return;let R=new Uint8Array(I),z=decodeBytes(R.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),De=je[z];if(!L.isActive&&!De?.options.receiveWhilePending)return;let Oe=(R[nonceIndex]??0)<<8|(R[33]??0),ke=R[tagIndex]??0,Me=R[progressIndex]??0,Fe=R.subarray(payloadIndex),Ie=!!(ke&1),Le=!!(ke&2),Re=!!(ke&4),ze=!!(ke&8);Ne[F]??={},Ne[F][z]??={};let Be=Ne[F][z][Oe]??={chunks:[]};if(Le?Be.meta=fromJson(decodeBytes(Fe)):Be.chunks.push(Fe),De?.onProgress(Me/oneByteMax,F,Be.meta),!Ie)return;let Ge=new Uint8Array(Be.chunks.reduce((F,I)=>F+I.byteLength,0));if(Be.chunks.reduce((F,I)=>(Ge.set(I,F),F+I.byteLength),0),delete Ne[F][z][Oe],Re)De?De.onComplete(Ge,F,Be.meta):(Pe[z]??=[]).push({payload:Ge,peerId:F,...Be.meta===void 0?{}:{metadata:Be.meta}});else{let I=decodeBytes(Ge),L=ze?fromJson(I):I;De?De.onComplete(L,F,Be.meta):(Pe[z]??=[]).push({payload:L,peerId:F,...Be.meta===void 0?{}:{metadata:Be.meta}})}},gt=async()=>{await xw(``),await new Promise(F=>setTimeout(F,99)),entries(Oe).forEach(([F,I])=>{I.destroy(),dt(F,mkErr(`room left`))}),Ge(),L()},[vt,yt]=pt(internalNs(`ping`)),[yr,br]=pt(internalNs(`pong`)),[hw,gw]=pt(internalNs(`signal`)),[_w,vw]=pt(internalNs(`stream`)),[yw,bw]=pt(internalNs(`track`)),[xw,Sw]=pt(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[Cw,ww]=pt(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[Tw,Ew]=pt(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),Dw=(F,I)=>{let L=Ae[F];!L||I&&L.peer!==I||L.isActive||!L.didLocalHandshakePass||!L.didReceiveRemoteReady||(L.isActive=!0,ke[F]=L.peer,L.handshakeTimer=resetTimer(L.handshakeTimer),Be.onPeerJoin(F))},Ow=(F,I,L)=>{let R=Ae[F];if(!R||R.peer!==I)return;let De=toHandshakeErrorMessage(L);z?.(F,De),ft(F,I,mkErr(De))},kw=(F,I)=>{let L=Ae[F];!L||L.peer!==I||L.isActive||(L.didLocalHandshakePass=!0,Tw(``,F).catch(L=>Ow(F,I,mkErr(`failed sending handshake readiness: ${toErrorMessage(L,`unknown send failure`)}`))),Dw(F,I))},Aw=(F,I)=>{let L=Ae[F];if(!L||L.peer!==I)return;L.handshakeTimer=setTimeout(()=>Ow(F,I,mkErr(`handshake timed out after ${De}ms`)),De);let z=async(I,L)=>{await Cw(I,F,L)},Oe=()=>new Promise((L,R)=>{let z=Ae[F];if(!z||z.peer!==I){R(mkErr(`peer disconnected during handshake`));return}let De=z.pendingHandshakePayloads.shift();if(De){L(De);return}z.handshakeWaiters.push({resolve:L,reject:F=>R(F)})}),ke=selfId<F;Promise.resolve(R?.(F,z,Oe,ke)).then(()=>kw(F,I)).catch(L=>Ow(F,I,toError(L,`handshake failed`)))},jw=F=>F&&typeof F==`object`&&!Array.isArray(F)&&typeof F.k==`string`?{key:F.k,...typeof F.s==`string`?{streamId:F.s}:{},...typeof F.t==`string`?{trackId:F.t}:{},...Object.hasOwn(F,`m`)?{metadata:F.m}:{}}:null;return yt((F,I)=>yr(``,I)),br((F,I)=>{let L=Fe[I];(L?.shift())?.resolve(),L&&!L.length&&delete Fe[I]}),gw((F,I)=>{ke[I]&&Oe[I]?.signal(F)}),vw((F,I)=>{if(!ke[I])return;let L=jw(F);if(!L)return;let R=ct(I),z=R?.__trysteroGetRemoteStreamByKey?.(L.key)??(L.streamId?R?.__trysteroGetRemoteStreamById?.(L.streamId):void 0);if(z){lt(I,L.key,z,L.metadata);return}(Ie[I]??=[]).push(L)}),bw((F,I)=>{if(!ke[I])return;let L=jw(F);if(!L)return;let R=ct(I),z=R?.__trysteroGetRemoteTrackByKey?.(L.key)??(L.trackId?R?.__trysteroGetRemoteTrackById?.(L.trackId):void 0);if(z){ut(I,L.key,z.track,z.stream,L.metadata);return}(Le[I]??=[]).push(L)}),Sw((F,I)=>ft(I,void 0,mkErr(`peer left room`))),ww((F,I,L)=>{let R=Ae[I];if(!R||R.isActive)return;let z=L===void 0?{data:F}:{data:F,metadata:L},De=R.handshakeWaiters.shift();if(De){De.resolve(z);return}R.pendingHandshakePayloads.push(z)}),Ew((F,I)=>{let L=Ae[I];!L||L.isActive||(L.didReceiveRemoteReady=!0,Dw(I))}),F((F,I)=>{let L=Oe[I];if(L){if(L===F)return;L.destroy(),dt(I,mkErr(`peer replaced`))}Oe[I]=F,Ae[I]={peer:F,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},F.setHandlers({data:F=>ht(I,F),stream:F=>{if(!ke[I])return;let L=Ie[I]?.shift();L&&lt(I,L.key,F,L.metadata)},track:(F,L)=>{if(!ke[I])return;let R=Le[I]?.shift();R&&ut(I,R.key,F,L,R.metadata)},signal:F=>{ke[I]&&hw(F,I)},close:()=>ft(I,F,mkErr(`peer disconnected`)),error:L=>{console.error(`${libName} peer error:`,L),ft(I,F,L)}}),Aw(I,F)}),isBrowser&&(Ge=registerBeforeUnloadCleanup(()=>gt().catch(noOp))),{makeAction:mt,leave:gt,ping:async F=>{if(!ke[F])throw mkErr(`no active peer with id ${F}`);let I=Date.now();return await new Promise((I,L)=>{let R=Fe[F]??=[],z=()=>{let I=Fe[F];if(!I)return;let L=I.indexOf(De);L>-1&&I.splice(L,1),I.length||delete Fe[F]},De={resolve:()=>{z(),I()},reject:F=>{z(),L(F)}};R.push(De),vt(``,F).catch(F=>De.reject(toError(F,`peer disconnected`)))}),Date.now()-I},getPeers:()=>fromEntries(entries(ke).map(([F,I])=>[F,I.connection])),addStream:(F,I,L)=>it(I,ot(F),L,_w,I=>I.addStream(F),{s:F.id}),removeStream:(F,I)=>{rt(I,(I,L)=>L.removeStream(F))},addTrack:(F,I,L,R)=>it(L,st(F),R,yw,L=>L.addTrack(F,I),{s:I.id,t:F.id}),removeTrack:(F,I)=>{rt(I,(I,L)=>L.removeTrack(F))},replaceTrack:(F,I,L,R)=>it(L,st(I),R,yw,L=>L.replaceTrack(F,I),{t:F.id}),onPeerJoin:F=>{Be.onPeerJoin=F,keys(ke).forEach(I=>F(I))},onPeerLeave:F=>Be.onPeerLeave=F,onPeerStream:F=>Be.onPeerStream=F,onPeerTrack:F=>Be.onPeerTrack=F}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(F,I)=>{let L=encodeBytes(F),R=new Uint8Array(3+L.byteLength+I.byteLength);return R[0]=roomFrameVersion,R[1]=L.byteLength>>>8&255,R[2]=L.byteLength&255,R.set(L,3),R.set(I,3+L.byteLength),R},wrapRoomPresenceFrame=(F,I)=>{let L=encodeBytes(F),R=new Uint8Array(4+L.byteLength);return R[0]=roomPresenceFrameVersion,R[1]=Number(I),R[2]=L.byteLength>>>8&255,R[3]=L.byteLength&255,R.set(L,4),R},unwrapFrame=F=>{let I=new Uint8Array(F);if(I.byteLength<3)return null;if(I[0]===roomFrameVersion){let F=(I[1]??0)<<8|(I[2]??0),L=3+F;return F<=0||I.byteLength<L?null:{type:`room`,roomToken:decodeBytes(I.subarray(3,L)),payload:I.subarray(L).slice().buffer}}if(I[0]!==roomPresenceFrameVersion||I.byteLength<4)return null;let L=(I[2]??0)<<8|(I[3]??0),R=4+L;return L<=0||I.byteLength<R?null:{type:`presence`,roomToken:decodeBytes(I.subarray(4,R)),isPresent:I[1]===1}},isPeerUnderlyingStale=F=>{let{connection:I,channel:L}=F;return F.isDead||I.connectionState===`closed`||I.connectionState===`failed`||I.iceConnectionState===`closed`||I.iceConnectionState===`failed`||L?.readyState===`closing`||L?.readyState===`closed`},getConnectedPeerHealth=F=>{if(isPeerUnderlyingStale(F))return`stale`;let{channel:I}=F;return!I||I.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(F){return this.byApp[F]??={}}get(F,I){return this.byApp[F]?.[I]}isPeerStale(F){return isPeerUnderlyingStale(F)}getHealth(F){return this.isPeerStale(F)?`stale`:`live`}setRoomPresenceHandler(F,I){return this.roomPresenceHandlers[F]=I,()=>{this.roomPresenceHandlers[F]===I&&delete this.roomPresenceHandlers[F]}}sendRoomPresence(F,I,L){F.isClosing||F.peer.isDead||F.peer.sendData(wrapRoomPresenceFrame(I,L))}clear(F,I,{destroyPeer:L}){let R=this.byApp[F],z=R?.[I];if(!z||z.isClosing)return;z.idleTimer=resetTimer(z.idleTimer),z.isClosing=!0,L&&!z.peer.isDead&&z.peer.destroy();let De=values(z.bindings);z.bindings={},z.bindingsByToken={},z.controlRoomId=null,delete R[I],De.forEach(F=>{F.handlers.close?.(),F.pendingData.length=0,F.pendingSendData.length=0,F.pendingTracks.length=0}),z.remoteStreamsByKey.clear(),z.remoteStreamsById.clear(),z.remoteTracksByKey.clear(),z.remoteTracksById.clear(),z.pendingDataByToken.clear(),z.remoteRoomTokens.clear(),keys(R).length===0&&delete this.byApp[F]}register(F,I,L,R){let z=this.getMap(F),De=z[I];if(De){if(De.idleTimer=resetTimer(De.idleTimer),De.peer===L)return De;this.clear(F,I,{destroyPeer:!0})}let Oe={appId:F,peerId:I,peer:L,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:R,isClosing:!1};return L.setHandlers({data:F=>this.dispatchData(Oe,F),signal:F=>this.dispatchSignal(Oe,F),close:()=>this.clear(F,I,{destroyPeer:!1}),error:L=>{console.error(`${libName} peer error:`,L),this.clear(F,I,{destroyPeer:!1})},track:(F,I)=>this.dispatchTrack(Oe,F,I)}),z[I]=Oe,Oe}bind(F,I,L,{onDetach:R}){let z=L.bindings[F];if(z)return L.idleTimer=resetTimer(L.idleTimer),{proxy:z.proxy,isNew:!1};let De={roomId:F,roomToken:null,roomTokenPromise:I,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},Oe=()=>{L.bindings[F]&&(this.pruneRoomOwnership(L,F),delete L.bindings[F],De.roomToken&&L.bindingsByToken[De.roomToken]===De&&delete L.bindingsByToken[De.roomToken],L.controlRoomId===F&&(L.controlRoomId=keys(L.bindings)[0]??null),R(),this.scheduleIdleTimer(L))},ke={created:L.peer.created,get connection(){return L.peer.connection},get channel(){return L.peer.channel},get isDead(){return L.peer.isDead},getOffer:F=>L.peer.getOffer(F),signal:F=>L.peer.signal(F),sendData:F=>{if(!De.roomToken){De.pendingSendData.push(F);return}L.peer.sendData(wrapRoomFrame(De.roomToken,F))},destroy:()=>Oe(),setHandlers:F=>{let{signal:I,...L}=F;Object.assign(De.handlers,L),I&&(De.handlers.signal=I),this.flushBindingQueues(De)},offerPromise:L.peer.offerPromise,addStream:I=>{let R=L.streamOwners.get(I)??new Set,z=R.size===0;R.add(F),L.streamOwners.set(I,R),z&&L.peer.addStream(I)},removeStream:I=>{let R=L.streamOwners.get(I);R&&(R.delete(F),R.size===0&&(L.streamOwners.delete(I),L.peer.removeStream(I)))},addTrack:(I,R)=>{let z=L.trackOwners.get(I)??{stream:R,rooms:new Set},De=z.rooms.size===0;return z.stream=R,z.rooms.add(F),L.trackOwners.set(I,z),De?L.peer.addTrack(I,R):L.peer.connection.getSenders().find(F=>F.track===I)??L.peer.addTrack(I,R)},removeTrack:I=>{let R=L.trackOwners.get(I);R&&(R.rooms.delete(F),R.rooms.size===0&&(L.trackOwners.delete(I),L.peer.removeTrack(I)))},replaceTrack:(F,I)=>{let R=L.trackOwners.get(F);if(R){L.trackOwners.delete(F);let z=L.trackOwners.get(I)??{stream:R.stream,rooms:new Set};R.rooms.forEach(F=>z.rooms.add(F)),L.trackOwners.set(I,z)}return L.peer.replaceTrack(F,I)},__trysteroGetRemoteStreamByKey:F=>L.remoteStreamsByKey.get(F),__trysteroSetRemoteStreamByKey:(F,I)=>void L.remoteStreamsByKey.set(F,I),__trysteroGetRemoteStreamById:F=>L.remoteStreamsById.get(F),__trysteroSetRemoteStreamById:(F,I)=>void L.remoteStreamsById.set(F,I),__trysteroGetRemoteTrackByKey:F=>L.remoteTracksByKey.get(F),__trysteroSetRemoteTrackByKey:(F,I,R)=>void L.remoteTracksByKey.set(F,{track:I,stream:R}),__trysteroGetRemoteTrackById:F=>L.remoteTracksById.get(F),__trysteroSetRemoteTrackById:(F,I,R)=>void L.remoteTracksById.set(F,{track:I,stream:R})};return De.proxy=ke,De.detach=Oe,L.bindings[F]=De,L.controlRoomId??=F,L.idleTimer=resetTimer(L.idleTimer),I.then(I=>{if(L.isClosing||L.bindings[F]!==De)return;De.roomToken=I,L.bindingsByToken[I]=De;let R=L.pendingDataByToken.get(I);R?.length&&(De.pendingData.push(...R),L.pendingDataByToken.delete(I)),De.pendingSendData.splice(0).forEach(F=>L.peer.sendData(wrapRoomFrame(I,F))),this.flushBindingQueues(De)}),{proxy:ke,isNew:!0}}pruneRoomOwnership(F,I){F.streamOwners.forEach((L,R)=>{L.delete(I),L.size===0&&(F.streamOwners.delete(R),F.peer.removeStream(R))}),F.trackOwners.forEach((L,R)=>{L.rooms.delete(I),L.rooms.size===0&&(F.trackOwners.delete(R),F.peer.removeTrack(R))})}scheduleIdleTimer(F){F.isClosing||keys(F.bindings).length>0||(F.idleTimer=resetTimer(F.idleTimer),F.idleTimer=setTimeout(()=>{let I=this.byApp[F.appId]?.[F.peerId];!I||keys(I.bindings).length>0||this.clear(F.appId,F.peerId,{destroyPeer:!0})},F.idleMs))}getSignalBinding(F){if(F.controlRoomId){let I=F.bindings[F.controlRoomId];if(I?.handlers.signal)return I}let I=values(F.bindings).find(F=>!!F.handlers.signal);return I?(F.controlRoomId=I.roomId,I):null}flushBindingQueues(F){let{handlers:I}=F;I.data&&F.pendingData.length>0&&F.pendingData.splice(0).forEach(F=>I.data?.(F)),(I.track||I.stream)&&F.pendingTracks.length&&F.pendingTracks.splice(0).forEach(({track:F,stream:L})=>{I.track?.(F,L),I.stream?.(L)})}dispatchData(F,I){let L=unwrapFrame(I);if(!L)return;if(L.type===`presence`){L.isPresent?F.remoteRoomTokens.add(L.roomToken):F.remoteRoomTokens.delete(L.roomToken),this.roomPresenceHandlers[F.appId]?.(F.peerId,L.roomToken,L.isPresent);return}let R=F.bindingsByToken[L.roomToken];if(!R){let I=F.pendingDataByToken.get(L.roomToken)??[];I.push(L.payload),F.pendingDataByToken.set(L.roomToken,I);return}R.handlers.data?R.handlers.data(L.payload):R.pendingData.push(L.payload)}dispatchSignal(F,I){this.getSignalBinding(F)?.handlers.signal?.(I)}dispatchTrack(F,I,L){values(F.bindings).forEach(F=>{if(F.handlers.track||F.handlers.stream){F.handlers.track?.(I,L),F.handlers.stream?.(L);return}F.pendingTracks.push({track:I,stream:L})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(F,I,L,R,z,De)=>{F.toCipher(I).then(I=>{F.isLeaving()||!De()||R(L,toJson(z(I.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(F,I)=>F[I]??=makeState(),updateStatus=F=>{F.connectedPeer?F.status=`connected`:F.answeringPeer?F.status=`answering`:F.offerPeer||F.offerRelays.some(Boolean)?F.status=`offering`:F.status=`idle`},clearAnswering=(F,I)=>{F.answeringPeer===I&&(F.answeringExpiryTimer=resetTimer(F.answeringExpiryTimer),F.answeringPeer=null,updateStatus(F))},clearConnectedPeer=(F,I,L)=>{F.connectedPeer&&(F.connectedPeer.isDead||F.connectedPeer.destroy(),F.connectedPeer=null,F.connectedPeerUnhealthySinceMs=null,updateStatus(F))},clearOfferRelay=(F,I)=>{F.offerRelayTimers[I]=resetTimer(F.offerRelayTimers[I]),F.offerRelays[I]&&(F.offerRelays[I]=void 0,updateStatus(F))},clearOfferRelayIfPlaceholder=(F,I)=>{F?.offerRelays[I]===offerRelayPlaceholder&&clearOfferRelay(F,I)},hasRemoteDescription=F=>{if(F.isDead||F.connection.connectionState===`closed`)return!0;try{return!!F.connection.remoteDescription}catch{return!0}},resetOfferState=(F,I)=>{let L=F.offerAnswered;F.offerExpiryTimer=resetTimer(F.offerExpiryTimer),F.offerInitPromise=null,F.offerRelays.forEach((I,L)=>clearOfferRelay(F,L)),F.offerRelays=[],F.offerSignalRelays=[],F.offerRelayTimers=[],F.offerSignalBacklog=[],F.offerPeer&&F.offerPeer!==F.connectedPeer&&(L||hasRemoteDescription(F.offerPeer)?F.offerPeer.isDead||F.offerPeer.destroy():I.recycle(F.offerPeer)),F.offerPeer=null,F.offerId=null,F.offerSdp=null,F.offerAnswered=!1,updateStatus(F)},scheduleAnsweringExpiry=(F,I,L,R)=>{resetTimer(I.answeringExpiryTimer),I.answeringExpiryTimer=setTimeout(()=>{let I=F.peerStates[L];!I||I.connectedPeer||I.answeringPeer!==R||(R.destroy(),clearAnswering(I,R))},answeringTtlMs)},flushBufferedCandidates=async(F,I,L)=>{let R=L?[L,legacyCandidateKey]:[legacyCandidateKey];for(let L of R){let R=F.pendingCandidates[L];if(R?.length){delete F.pendingCandidates[L];for(let F of R)await I.signal(F)}}},scheduleOfferExpiry=(F,I,L,R=offerTtl)=>{resetTimer(I.offerExpiryTimer);let z=I.offerId;I.offerExpiryTimer=setTimeout(()=>{let I=F.peerStates[L];!I||I.connectedPeer||I.offerId!==z||resetOfferState(I,F.offerPool)},R)},ensureOffer=(F,I,L,R)=>I.offerPeer&&I.offerId&&I.offerSdp?Promise.resolve({peer:I.offerPeer,offer:I.offerSdp,offerId:I.offerId}):(I.offerInitPromise||=(async()=>{let z=(await F.offerPool.checkout(1,!1,F.encryptOffer))[0];if(!z)throw mkErr(`failed to allocate offer peer`);let{peer:De,offer:Oe}=z;I.offerPeer=De,I.offerId=genId(offerIdSize),I.offerSdp=Oe,I.offerAnswered=!1,I.offerSignalBacklog=[],updateStatus(I);let ke=()=>{I.offerPeer===De&&!I.connectedPeer&&resetOfferState(I,F.offerPool),F.disconnectPeer(De,L)};return De.setHandlers({connect:()=>F.connectPeer(De,L,R),signal:F=>{I.offerPeer===De&&(I.offerSignalBacklog.push(F),I.offerSignalRelays.forEach(I=>I?.(F)))},close:ke,error:ke}),scheduleOfferExpiry(F,I,L),{peer:De,offer:Oe,offerId:I.offerId}})().finally(()=>I.offerInitPromise=null),I.offerInitPromise),handleAnnouncement=async(F,I,L,R,z)=>{if(R){F.attachSharedPeerToRoom(L,R);return}let De=F.peerStates[L];if(!De||De.connectedPeer||De.answeringPeer||De.offerAnswered){clearOfferRelayIfPlaceholder(De,I);return}if(De.offerRelays[I]!==offerRelayPlaceholder)return;let[Oe,ke]=await all([sha1(topicPath(F.rootTopicPlaintext,L)),ensureOffer(F,De,L,I)]);if(F.isLeaving())return;if(De.connectedPeer||De.answeringPeer||De.offerAnswered||De.offerRelays[I]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(De,I);return}De.offerRelayTimers[I]=resetTimer(De.offerRelayTimers[I]),De.offerRelays[I]=!0,updateStatus(De),De.offerRelayTimers[I]=setTimeout(()=>prunePendingOffer(F,L,I),(F.announceIntervals[I]??F.announceIntervalMs)*.9);let Ae=!1;De.offerSignalRelays[I]=I=>{Ae&&(F.isLeaving()||De.connectedPeer||De.offerPeer!==ke.peer||De.offerId!==ke.offerId||I.type!==`candidate`||publishCipheredSignalingMessage(F,I,Oe,z,F=>({peerId:selfId,offerId:ke.offerId,candidate:F}),()=>!De.connectedPeer&&De.offerPeer===ke.peer&&De.offerId===ke.offerId))},z(Oe,toJson({peerId:selfId,offerId:ke.offerId,offer:ke.offer})),Ae=!0,De.offerSignalBacklog.forEach(F=>De.offerSignalRelays[I]?.(F))},handleOffer=async(F,I,L,R,z,De,Oe)=>{let ke=getState(F.peerStates,L);if(ke.answeringPeer||ke.offerAnswered)return;let Ae=!!(ke.offerPeer||ke.offerRelays.some(Boolean));if((Ae||De)&&selfId<L)return;Ae&&resetOfferState(ke,F.offerPool);let je=F.initPeer(!1,F.config);ke.answeringPeer=je,scheduleAnsweringExpiry(F,ke,L,je),updateStatus(ke);let Me=()=>{clearAnswering(ke,je),F.disconnectPeer(je,L)};je.setHandlers({connect:()=>F.connectPeer(je,L,I),close:Me,error:Me});let Ne;try{Ne=await F.toPlain({type:`offer`,sdp:R})}catch{clearAnswering(ke,je),F.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:F.appId,peerId:L,roomId:F.roomId});return}if(je.isDead){clearAnswering(ke,je);return}let Pe=await sha1(topicPath(F.rootTopicPlaintext,L));F.isLeaving()||(je.setHandlers({signal:I=>{F.isLeaving()||ke.answeringPeer!==je||je.isDead||I.type!==`answer`&&I.type!==`candidate`||publishCipheredSignalingMessage(F,I,Pe,Oe,F=>{let L={peerId:selfId};return I.type===`answer`?L.answer=F:L.candidate=F,z&&(L.offerId=z),L},()=>ke.answeringPeer===je&&!je.isDead)}}),await je.signal(Ne),await flushBufferedCandidates(ke,je,z))},handleCandidate=async(F,I,L,R,z)=>{let De;try{De=await F.toPlain({type:candidateType,sdp:L})}catch{return}let Oe=getState(F.peerStates,I),ke=R&&Oe?.offerPeer&&Oe.offerId===R?Oe.offerPeer:null,Ae=Oe?.answeringPeer??null,je=!R&&Oe?.offerPeer?Oe.offerPeer:null,Me=z&&!z.isDead?z:ke??Ae??je;if(!Me||Me.isDead){let F=R??legacyCandidateKey;(Oe.pendingCandidates[F]??=[]).push(De);return}Me.signal(De)},handleAnswer=async(F,I,L,R,z,De)=>{let Oe;try{Oe=await F.toPlain({type:`answer`,sdp:R})}catch{F.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:F.appId,peerId:L,roomId:F.roomId});return}if(De)F.offerPool.claimLeased(De),De.setHandlers({connect:()=>F.connectPeer(De,L,I),close:()=>F.disconnectPeer(De,L)}),De.signal(Oe);else{let I=F.peerStates[L];if(!I||!I.offerPeer||I.offerAnswered||z&&I.offerId&&z!==I.offerId||I.offerPeer.isDead)return;I.offerAnswered=!0,scheduleOfferExpiry(F,I,L,offerPostAnswerTtlMs),I.offerPeer.signal(Oe)}},prunePendingOffer=(F,I,L)=>{let R=F.peerStates[I];!R||R.connectedPeer||R.offerRelays[L]&&clearOfferRelay(R,L)},createSignalHandler=F=>I=>async(L,R,z)=>{if(F.isLeaving())return;let De=typeof R==`string`?fromJson(R):R,Oe=typeof De.peerId==`string`?De.peerId:``,ke=De.offer,Ae=De.answer,je=De.candidate,Me=De.offerId,Ne=De.peer,Pe=De.hasOutgoingOffer===!0;if(Oe===selfId)return;let Fe=F.peerStates[Oe],Ie=Fe?.connectedPeer;if(Ie&&Fe){let F=getConnectedPeerHealth(Ie);if(F===`live`){Fe.connectedPeerUnhealthySinceMs=null;return}if(F===`stale`)clearConnectedPeer(Fe,Oe,`message-from-stale-peer`);else{let F=Date.now(),I=Fe.connectedPeerUnhealthySinceMs??F;if(Fe.connectedPeerUnhealthySinceMs=I,F-I<disconnectedPeerGraceMs)return;clearConnectedPeer(Fe,Oe,`message-from-prolonged-disconnect`)}}let Le=F.sharedPeers.get(F.appId,Oe);Le&&F.sharedPeers.getHealth(Le.peer)===`stale`&&(F.sharedPeers.clear(F.appId,Oe,{destroyPeer:!0}),Le=void 0);let Re=!!(Oe&&!ke&&!Ae&&!je),[ze,Be]=await all([F.rootTopicP,F.selfTopicP]);if(!F.isLeaving()&&!(L!==ze&&L!==Be)){if(Re&&!Le){let L=getState(F.peerStates,Oe),R=selfId<Oe;if(L.answeringPeer||L.connectedPeer||L.offerAnswered)return;if(!R&&!L.offerPeer){let I=await sha1(topicPath(F.rootTopicPlaintext,Oe));!F.isLeaving()&&!L.connectedPeer&&z(I,toJson({peerId:selfId}));return}if(L.offerRelays[I])return;L.offerRelays[I]=offerRelayPlaceholder,updateStatus(L)}if(Le&&(ke||Ae||je)){if(Le.bindings[F.roomId])return;F.attachSharedPeerToRoom(Oe,Le);return}if(Re)return handleAnnouncement(F,I,Oe,Le,z);if(ke)return handleOffer(F,I,Oe,ke,Me,Pe,z);if(je)return handleCandidate(F,Oe,je,Me,Ne);if(Ae)return handleAnswer(F,I,Oe,Ae,Me,Ne)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:F,subscribe:I,announce:L})=>{let R={},z={},De={},Oe={},ke=new SharedPeerManager,Ae=()=>values(R).some(F=>keys(F).length>0),je=F=>z[F]??={},Me=F=>De[F]??={},Ne=(F,I,L)=>{ke.getHealth(F.peer)===`live`&&ke.sendRoomPresence(F,I,L)},Pe=(F,I)=>{entries(z[F]??{}).forEach(([L,R])=>{let{roomToken:De,roomTokenPromise:Oe}=R;if(De){Ne(I,De,!0);return}Oe.then(De=>{z[F]?.[L]===R&&R.roomToken===De&&(ke.get(F,I.peerId)!==I||I.isClosing||Ne(I,De,!0))})})},Fe=(F,I,L)=>values(ke.getMap(F)).forEach(F=>Ne(F,I,L)),Ie=F=>{Oe[F]||(Oe[F]=ke.setRoomPresenceHandler(F,(I,L,R)=>{if(!R)return;let Oe=ke.get(F,I),Ae=De[F]?.[L];!Oe||!Ae||z[F]?.[Ae]?.attachSharedPeerToRoom(I,Oe)}))},Le=F=>{R[F]&&keys(R[F]).length>0||(Oe[F]?.(),delete Oe[F],delete z[F],delete De[F])},Re=!1,ze=[],Be=null,Ge=noOp;return(Oe,Ne,rt)=>{if(!Oe)throw mkErr(`requires a config map as the first argument`);if(rt&&typeof rt!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:it}=Oe,at=rt?.onJoinError,ot=rt?.onPeerHandshake,st=rt?.handshakeTimeoutMs;if(!it)throw mkErr(`config map is missing appId field`);if(!Ne)throw mkErr(`roomId argument required`);if(st!==void 0&&(!Number.isFinite(st)||st<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(R[it]?.[Ne])return R[it][Ne];Ie(it);let ct=topicPath(libName,it,Ne),lt=sha1(ct),ut=sha1(topicPath(ct,selfId)),dt=genKey(Oe.password??``,it,Ne),ft=deriveRoomNamespace(it,Ne),pt=Oe._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,mt=!1,ht=F=>async I=>({type:I.type,sdp:await F(dt,I.sdp)}),gt=ht(decrypt),vt=ht(encrypt),yt=ke.getMap(it);Be||=new OfferPool(()=>peer_default(!0,Oe));let yr=Be,br=async F=>{let I=await F.getOffer(Date.now()-F.created>offerTtl);if(!I||I.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await vt(I)).sdp},hw=(F,I)=>{let L=getState(gw.peerStates,F);L.answeringExpiryTimer=resetTimer(L.answeringExpiryTimer),L.answeringPeer=null;let{proxy:R,isNew:z}=ke.bind(Ne,ft,I,{onDetach:()=>{let L=gw.peerStates[F];L?.connectedPeer===I.peer&&(L.connectedPeer=null,L.connectedPeerUnhealthySinceMs=null,updateStatus(L))}});L.connectedPeer=I.peer,L.connectedPeerUnhealthySinceMs=null,updateStatus(L),z&&xw(R,F),resetOfferState(L,yr)},gw={appId:it,roomId:Ne,config:Oe,peerStates:{},rootTopicPlaintext:ct,rootTopicP:lt,selfTopicP:ut,toPlain:gt,toCipher:vt,isLeaving:()=>mt,onJoinError:at,sharedPeers:ke,offerPool:yr,encryptOffer:br,initPeer:peer_default,connectPeer:(F,I,L)=>{if(mt){F.destroy();return}let R=getState(gw.peerStates,I);if(R.connectedPeer){let L=yt[I];if(L&&R.connectedPeer===L.peer&&L.bindings[Ne])return;R.connectedPeer!==F&&!F.isDead&&F.destroy();return}let z=yt[I];if(z&&ke.getHealth(z.peer)===`stale`&&(ke.clear(it,I,{destroyPeer:!0}),z=void 0),z&&z.peer!==F){F.isDead||F.destroy(),hw(I,z);return}let De=!z;z||=ke.register(it,I,F,pt),hw(I,z),De&&Pe(it,z)},disconnectPeer:(F,I)=>{if(mt)return;let L=gw.peerStates[I];L?.connectedPeer===F&&clearConnectedPeer(L,I,`close-event`)},attachSharedPeerToRoom:hw,announceIntervals:[],announceIntervalMs},_w=createSignalHandler(gw);if(!Re){let I=F(Oe);yr.warmup(),ze=(Array.isArray(I)?I:[I]).map(F=>Promise.resolve(F)),Re=!0,Ge=Oe.relayConfig?.manualReconnection?noOp:watchOnline()}gw.announceIntervals=ze.map(()=>announceIntervalMs);let vw=ze.map(()=>0),yw=[],bw=ze.map(async(F,L)=>I(await F,await lt,await ut,_w(L),F=>yr.getOffers(F,br)));all([lt,ut]).then(([F,I])=>{if(mt)return;let R=async(z,De)=>{if(mt)return;let Oe=await L(z,F,I);if(mt)return;typeof Oe==`number`&&(gw.announceIntervals[De]=Oe);let ke=vw[De]??0;vw[De]=ke+1;let Ae=gw.announceIntervals[De]??announceIntervalMs,je=announceWarmupIntervalsMs[ke];yw[De]=setTimeout(()=>{R(z,De)},typeof je==`number`?Math.min(Ae,je):Ae)};bw.forEach(async(F,I)=>{if(await F,mt)return;let L=await ze[I];L&&!mt&&R(L,I)})});let xw=noOp,{compose:Sw}=createPasswordHandshake(Oe.password??``,it,Ne),Cw=Sw(ot),ww={...Cw?{onPeerHandshake:Cw}:{},...st===void 0?{}:{handshakeTimeoutMs:st},onHandshakeError:(F,I)=>at?.({error:I.replace(/^handshake failed: /,``),appId:it,peerId:F,roomId:Ne})};R[it]??={};let Tw=je(it),Ew=room_default(F=>xw=F,F=>{if(mt)return;let I=gw.peerStates[F];I?.connectedPeer&&(I.connectedPeer=null,updateStatus(I))},()=>{mt=!0,xw=noOp;let F=z[it]?.[Ne];F?.roomToken&&(Fe(it,F.roomToken,!1),delete De[it]?.[F.roomToken],De[it]&&!keys(De[it]).length&&delete De[it]),z[it]&&(delete z[it][Ne],keys(z[it]).length||delete z[it]),entries(gw.peerStates).forEach(([F,I])=>{if(I.answeringExpiryTimer=resetTimer(I.answeringExpiryTimer),I.connectedPeer&&!I.connectedPeer.isDead){let L=yt[F];(!L||L.peer!==I.connectedPeer)&&I.connectedPeer.destroy()}I.answeringPeer&&!I.answeringPeer.isDead&&I.answeringPeer.destroy(),resetOfferState(I,yr),I.connectedPeer=null,I.answeringPeer=null,updateStatus(I)}),R[it]&&(delete R[it][Ne],keys(R[it]).length===0&&delete R[it]),yw.forEach(resetTimer),bw.forEach(async F=>{(await F)()}),!Ae()&&(Re=!1,yr.destroy(),Be=null,Ge(),Le(it))},ww),Dw={roomToken:null,roomTokenPromise:ft,attachSharedPeerToRoom:hw};return Tw[Ne]=Dw,ft.then(F=>{mt||z[it]?.[Ne]!==Dw||(Dw.roomToken=F,Me(it)[F]=Ne,values(yt).forEach(I=>{I.remoteRoomTokens.has(F)&&hw(I.peerId,I)}),Fe(it,F,!0))}),R[it][Ne]=Ew}},relayManager=createRelayManager(F=>F.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async F=>{if(topicToInfoHash[F])return topicToInfoHash[F];let I=(await sha1(F)).slice(0,hashLimit);return topicToInfoHash[F]=I,infoHashToTopic[I]=F,I},send=async(F,I,L)=>F.send(toJson({action:trackerAction,info_hash:await getInfoHash(I),peer_id:selfId,...L})),warn=(F,I,L=!1)=>console.warn(`${libName}: torrent tracker ${L?`failure`:`warning`} from ${F} - ${I}`),getRoomOutstandingOffers=F=>roomOutstandingOffers[F]??={},deleteRoomOfferBookkeeping=F=>{delete roomOutstandingOffers[F],delete roomOfferGenerationPromises[F]},claimOutstandingOffer=(F,I)=>{let L=roomOutstandingOffers[F],R=L?.[I];if(R)return delete L[I],R.claim?.(),!keys(L).length&&!roomSubscriberCounts[F]&&deleteRoomOfferBookkeeping(F),R},reclaimOutstandingOffer=(F,I)=>{let L=roomOutstandingOffers[F],R=L?.[I];R&&(delete L[I],R.reclaim?.(),!keys(L).length&&!roomSubscriberCounts[F]&&deleteRoomOfferBookkeeping(F))},reclaimAllOutstandingOffers=F=>{keys(getRoomOutstandingOffers(F)).forEach(I=>reclaimOutstandingOffer(F,I)),deleteRoomOfferBookkeeping(F)},pruneOutstandingOffers=F=>{let I=Date.now();entries(getRoomOutstandingOffers(F)).forEach(([L,R])=>{I-R.createdAt>offerRetentionMs&&reclaimOutstandingOffer(F,L)})},ensureOutstandingOffers=async(F,I)=>{for(;roomOfferGenerationPromises[F];)await roomOfferGenerationPromises[F];let L=(async()=>{pruneOutstandingOffers(F);let L=getRoomOutstandingOffers(F),R=keys(L).length,z=Math.max(0,offerPoolSize-R);z>0&&(await I(z)).forEach(F=>{L[genId(hashLimit)]={...F,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[F]===L&&delete roomOfferGenerationPromises[F]});return roomOfferGenerationPromises[F]=L,await L,getRoomOutstandingOffers(F)},joinRoomStrategy=strategy_default({init:F=>getRelays(F,defaultRelayUrls,defaultRedundancy).map(F=>{let I=relayManager.register(F,makeSocket(F,L=>{let R=fromJson(L),z=R[`failure reason`],De=R[`warning message`],{interval:Oe}=R,ke=R.info_hash?infoHashToTopic[R.info_hash]:void 0;if(z){warn(I.url,z,!0);return}if(De&&warn(I.url,De),Oe&&Oe*1e3>(trackerAnnounceMs[I.url]??defaultAnnounceMs)&&ke&&announceFns.forKey(F)[ke]){let L=Math.min(Oe*1e3,maxAnnounceMs),R=announceIntervals.forKey(F),z=announceFns.forKey(F);R[ke]&&clearInterval(R[ke]),trackerAnnounceMs[I.url]=L;let De=z[ke];De&&(R[ke]=setInterval(()=>{De()},L))}if((R.offer||R.answer)&&ke&&R.offer_id){if(R.peer_id===selfId)return;let I=`${ke}:${R.offer?`offer`:`answer`}:${R.offer_id}:${R.peer_id??``}`,L=Date.now(),z=handledSignals[I];if(typeof z==`number`&&L-z<signalDedupeWindowMs)return;handledSignals[I]=L,entries(handledSignals).forEach(([F,I])=>{L-I>signalDedupeWindowMs*6&&delete handledSignals[F]}),msgHandlers.forKey(F)[ke]?.(R)}}));return I.ready}),subscribe:(F,I,L,R,z)=>{let De=msgHandlers.forRelay(F),Oe=announceFns.forRelay(F),ke=announceIntervals.forRelay(F),Ae=subscriptionTokens.forRelay(F),je=Symbol(I);Ae[I]=je,roomSubscriberCounts[I]=(roomSubscriberCounts[I]??0)+1;let Me=L=>{if(L.offer&&L.peer_id&&L.offer_id)R(I,{offer:L.offer.sdp,peerId:L.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(I)).length>0},(R,z)=>void send(F,I,{answer:{type:`answer`,sdp:fromJson(z).answer},offer_id:L.offer_id,to_peer_id:L.peer_id}));else if(L.answer&&L.offer_id&&L.peer_id){let F=claimOutstandingOffer(I,L.offer_id);F&&R(I,{answer:L.answer.sdp,peerId:L.peer_id,peer:F.peer},()=>{})}};De[I]=Me;let Ne=async()=>{Ae[I]===je&&send(F,I,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(I,z)).map(([F,{offer:I}])=>({offer_id:F,offer:{type:`offer`,sdp:I}}))})};return trackerAnnounceMs[F.url]=defaultAnnounceMs,Oe[I]=Ne,ke[I]=setInterval(Ne,trackerAnnounceMs[F.url]),Ne(),()=>{if(roomSubscriberCounts[I]=Math.max(0,(roomSubscriberCounts[I]??1)-1),roomSubscriberCounts[I]||delete roomSubscriberCounts[I],Ae[I]!==je){roomSubscriberCounts[I]||reclaimAllOutstandingOffers(I);return}let F=ke[I];F&&(clearInterval(F),delete ke[I]),De[I]===Me&&delete De[I],Oe[I]===Ne&&delete Oe[I],delete Ae[I],roomSubscriberCounts[I]||reclaimAllOutstandingOffers(I)}},announce:F=>trackerAnnounceMs[F.url]}),joinRoom=(F,I,L)=>joinRoomStrategy({...F,trickleIce:F.trickleIce??!1},I,L),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(F=>`wss://`+F),require_lodash_throttle=__commonJSMin(((F,I)=>{var L=`Expected a function`,R=NaN,z=`[object Symbol]`,De=/^\s+|\s+$/g,Oe=/^[-+]0x[0-9a-f]+$/i,ke=/^0b[01]+$/i,Ae=/^0o[0-7]+$/i,je=parseInt,Me={}.Object===Object&&{},Ne=typeof self==`object`&&self&&self.Object===Object&&self,Pe=Me||Ne||Function(`return this`)(),Fe=Object.prototype.toString,Ie=Math.max,Le=Math.min,Re=function(){return Pe.Date.now()};function ze(F,I,R){var z,De,Oe,ke,Ae,je,Me=0,Ne=!1,Pe=!1,Fe=!0;if(typeof F!=`function`)throw TypeError(L);I=at(I)||0,Ge(R)&&(Ne=!!R.leading,Pe=`maxWait`in R,Oe=Pe?Ie(at(R.maxWait)||0,I):Oe,Fe=`trailing`in R?!!R.trailing:Fe);function ze(I){var L=z,R=De;return z=De=void 0,Me=I,ke=F.apply(R,L),ke}function Be(F){return Me=F,Ae=setTimeout(ot,I),Ne?ze(F):ke}function rt(F){var L=F-je,R=F-Me,z=I-L;return Pe?Le(z,Oe-R):z}function it(F){var L=F-je,R=F-Me;return je===void 0||L>=I||L<0||Pe&&R>=Oe}function ot(){var F=Re();if(it(F))return st(F);Ae=setTimeout(ot,rt(F))}function st(F){return Ae=void 0,Fe&&z?ze(F):(z=De=void 0,ke)}function ct(){Ae!==void 0&&clearTimeout(Ae),Me=0,z=je=De=Ae=void 0}function lt(){return Ae===void 0?ke:st(Re())}function ut(){var F=Re(),L=it(F);if(z=arguments,De=this,je=F,L){if(Ae===void 0)return Be(je);if(Pe)return Ae=setTimeout(ot,I),ze(je)}return Ae===void 0&&(Ae=setTimeout(ot,I)),ke}return ut.cancel=ct,ut.flush=lt,ut}function Be(F,I,R){var z=!0,De=!0;if(typeof F!=`function`)throw TypeError(L);return Ge(R)&&(z=`leading`in R?!!R.leading:z,De=`trailing`in R?!!R.trailing:De),ze(F,I,{leading:z,maxWait:I,trailing:De})}function Ge(F){var I=typeof F;return!!F&&(I==`object`||I==`function`)}function rt(F){return!!F&&typeof F==`object`}function it(F){return typeof F==`symbol`||rt(F)&&Fe.call(F)==`[object Symbol]`}function at(F){if(typeof F==`number`)return F;if(it(F))return R;if(Ge(F)){var I=typeof F.valueOf==`function`?F.valueOf():F;F=Ge(I)?I+``:I}if(typeof F!=`string`)return F===0?F:+F;F=F.replace(De,``);var L=ke.test(F);return L||Ae.test(F)?je(F.slice(2),L?2:8):Oe.test(F)?R:+F}I.exports=Be})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.24.3`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:`6x4LaeUz+EVcw7zh`,VITE_TURN_USERNAME:`02e7e9daca7857e8d1faccf1`}).reduce((F,I)=>{let L=I.match(/VITE_ENABLE_(.*)/);return L&&(F[L[1]]=!0),F},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let F of searchParams.keys()){let I=F.match(/enable_(.*)/);I&&(features[I[1]]=!0)}var turnUsername=`02e7e9daca7857e8d1faccf1`,turnCredential=`6x4LaeUz+EVcw7zh`,rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`},{urls:`turn:a.relay.metered.ca:80`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:80?transport=tcp`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:443`,username:turnUsername,credential:turnCredential},{urls:`turn:a.relay.metered.ca:443?transport=tcp`,username:turnUsername,credential:turnCredential}]},handlePeerMetadataRequest=(F,I,L)=>{F.updatePeer(F,I,L)},handleCowTradeRequest=async(F,{cowOffered:I,cowRequested:L},R)=>{let z=!1;F.setState(F=>{let{allowCustomPeerCowNames:De,cowIdOfferedForTrade:Oe,cowsTraded:ke,cowInventory:Ae,playerId:je,isAwaitingCowTradeRequest:Me,peers:Ne,sendCowAccept:Pe,sendCowReject:Fe}=F;if(!Pe||!Fe)return console.error(`Peer connection not set up correctly`),null;let Ie=Ae.find(({id:F})=>F===Oe);if(Me||L.id!==Oe||!Ie)return Fe({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},R),null;let Le={...I,timesTraded:I.originalOwnerId===je?I.timesTraded:I.timesTraded+1},[,Re]=Object.entries(Ne).find(([,F])=>F?.playerId===Le.ownerId)??[];return Re?(F=changeCowAutomaticHugState(F,Ie,!1),F=removeCowFromInventory(F,Ie),F=addCowToInventory(F,{...Le,ownerId:je}),F=showNotification(F,COW_TRADED_NOTIFICATION(``,Ie,I,je,De),`success`),Pe({...Ie,isUsingHuggingMachine:!1},R),z=!0,{...F,cowIdOfferedForTrade:Le.id,cowsTraded:Le.originalOwnerId===je?ke:ke+1,isAwaitingCowTradeRequest:!0,selectedCowId:Le.id,peers:{...Ne,[R]:{...Re,cowOfferedForTrade:{...Ie,ownerId:Re.playerId}}}}):(console.error(`No data for peer ${Le.ownerId}`),null)},async()=>{z&&(await sleep(750),await F.persistState(),F.showNotification(PROGRESS_SAVED_MESSAGE,`info`),F.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(F,I,L)=>{let R=!1;F.setState(F=>{let{allowCustomPeerCowNames:z,cowIdOfferedForTrade:De,cowInventory:Oe,cowsTraded:ke,cowTradeTimeoutId:Ae,playerId:je,peers:Me}=F,Ne=Oe.find(({id:F})=>F===De);if(!Ne)return console.error(`handleCowTradeRequestAccept: cow with ID ${De} is no longer available`),F=showNotification(F,UNKNOWN_COW_TRADE_FAILURE,`error`),{...F,isAwaitingCowTradeRequest:!1};let[,Pe]=Object.entries(Me).find(([,F])=>{let{playerId:L}=F;return L===I.ownerId})||[],Fe=I.originalOwnerId===je,Ie={...I,timesTraded:Fe?I.timesTraded:I.timesTraded+1};return F=removeCowFromInventory(F,Ne),F=addCowToInventory(F,{...Ie,ownerId:je}),F=showNotification(F,COW_TRADED_NOTIFICATION(``,Ne,Ie,je,z),`success`),Fe||(F=addExperience(F,EXPERIENCE_VALUES.COW_TRADED)),Ae&&clearTimeout(Ae),R=!0,{...F,cowsTraded:Ie.originalOwnerId===je?ke:ke+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:Ie.id,selectedCowId:Ie.id,peers:{...Me,[L]:{...Pe,cowOfferedForTrade:{...Ne,ownerId:Pe.playerId}}}}},async()=>{R&&(await F.persistState(),F.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(F,{reason:I})=>{let{cowTradeTimeoutId:L}=F.state;typeof L==`number`&&clearTimeout(L),F.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),F.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(F,I,L,R,z,De,Oe,ke)=>{let{hasBooted:Ae,isOnline:je,room:Me,redirect:Ne,heartbeatTimeoutId:Pe,peerRoom:Fe,sendPeerMetadata:Ie}=F,Le=(0,import_react$10.useCallback)(F=>(0,import_lodash_throttle.default)((...L)=>{F(...L),I(F=>({...F,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[I]),Re=(0,import_react$10.useCallback)(()=>{typeof R.current?.state?.cowTradeTimeoutId==`number`&&(L.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),I(F=>({...F,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[I,L,R]),ze=(0,import_react$10.useCallback)(z=>{let{cowIdOfferedForTrade:De,cowInventory:Oe,peers:ke,sendCowTradeRequest:Ae}=R.current?.state??F;if(!Ae)return;let{ownerId:je}=z,[Me]=Object.entries(ke).find(([,F])=>F?.playerId===je)??[];if(!Me){console.error(`Owner not found for cow ${JSON.stringify(z)}`);return}if(Oe.find(({id:F})=>F===z.id)){console.error(`Cow ID ${z.id} is already in inventory`),L.current.showNotification(COW_ALREADY_OWNED,`error`);return}let Ne=Oe.find(({id:F})=>F===De);if(!Ne){console.error(`Cow ID ${De} not found`);return}let Pe=setTimeout(Re,COW_TRADE_TIMEOUT);Ae({cowOffered:{...Ne,isUsingHuggingMachine:!1},cowRequested:z},Me),I(F=>({...F,cowTradeTimeoutId:Pe,isAwaitingCowTradeRequest:!0}))},[I,Re,L,R]),Be=(0,import_react$10.useCallback)(()=>{I(F=>(clearTimeout(F.heartbeatTimeoutId??-1),F));let F=import_window.default.setTimeout(()=>{I(F=>({...F,money:moneyTotal(F.money,F.activePlayers??0)})),Be()},HEARTBEAT_INTERVAL_PERIOD);I(I=>({...I,heartbeatTimeoutId:F}))},[I]),Ge=(0,import_react$10.useCallback)(async()=>{let{isOnline:F,priceCrashes:z,priceSurges:De,room:Oe,playerId:ke,peerRoom:Ae}=R.current.state;if(F){L.current.showNotification(CONNECTING_TO_SERVER,`info`);try{I(F=>({...F,isAwaitingNetworkRequest:!0,peers:{}})),Ae?.leave();let{valueAdjustments:F}=await getData(endpoints.getMarketData,{farmId:ke,room:Oe});Be(),I(I=>({...I,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},Oe),valueAdjustments:FarmhandService.applyPriceEvents(F,z,De)})),L.current.showNotification(CONNECTED_TO_ROOM(``,Oe),`success`)}catch(F){L.current.showNotification(SERVER_ERROR,`error`),console.error(F),I(F=>({...F,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}I(F=>({...F,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[Be,L,R,I]),rt=(0,import_react$10.useCallback)((F,I)=>{L.current.prependPendingPeerMessage(F,I)},[L]);return(0,import_react$10.useEffect)(()=>{if(!Ae||!z)return;let F=decodeURIComponent(De),Re=Oe.startsWith(`/online`),ze=!!Ne&&Ne!==z.redirect;if(!ze&&(Re!==je||F!==Me)?I(I=>({...I,isOnline:Re,redirect:``,room:F})):Ne&&!ze&&Re===je&&F===Me&&I(F=>({...F,redirect:``})),(je!==z.isOnline||Me!==z.room)&&(je&&Ge(),!je&&typeof Pe==`number`&&(clearTimeout(Pe),I(F=>({...F,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),je===!1&&z.isOnline===!0&&L.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),Fe!==z.peerRoom)if(Fe){Fe.onPeerJoin(F=>L.current.addPeer(F)),Fe.onPeerLeave(F=>L.current.removePeer(F));let[F,z]=Fe.makeAction(`peerMetadata`);z((...F)=>handlePeerMetadataRequest(R.current,F[0],F[1]));let[De,Oe]=Fe.makeAction(`cowTrade`);Oe((...F)=>handleCowTradeRequest(R.current,F[0],F[1]));let[Ae,je]=Fe.makeAction(`cowAccept`);je((...F)=>handleCowTradeRequestAccept(R.current,F[0],F[1]));let[Me,Ne]=Fe.makeAction(`cowReject`);Ne((...F)=>handleCowTradeRequestReject(R.current,F[0])),I(I=>({...I,getCowAccept:je,getCowReject:Ne,getCowTradeRequest:Oe,getPeerMetadata:z,pendingPeerMessages:[],sendCowAccept:Ae,sendCowReject:Me,sendCowTradeRequest:De,sendPeerMetadata:Le(F)})),F(ke)}else z.peerRoom?.leave(),I(F=>({...F,peers:{},sendPeerMetadata:null}));Ie?.(ke)},[Ae,je,Me,Ne,Pe,Fe,Ie,z,De,Oe,Ge,Le,ke,L,R,I]),{syncToRoom:Ge,scheduleHeartbeat:Be,wrapSendPeerMetadata:Le,tradeForPeerCow:ze,handleCowTradeTimeout:Re,messagePeers:rt}},computeMarketPositions=(F,I,L)=>L.reduce((L,{id:R,quantity:z})=>{let De=F[R]||0,Oe=I[R]||0;return itemsMap[R].doesPriceFluctuate&&De!==z&&(z<De||z<Oe?L[R]=-1:(z>De||z>Oe)&&(L[R]=1)),L},{}),useFarmhandDayAdvancement=(F,I,L,R,z)=>{let De=(0,import_react$10.useCallback)(async()=>{await L.localforage?.clear(),R.current.showNotification(DATA_DELETED)},[L.localforage,R]),Oe=(0,import_react$10.useCallback)((F,I={})=>L.localforage?.setItem(`state`,reduceByPersistedKeys({...F,...I})),[L.localforage]),ke=(0,import_react$10.useCallback)(async()=>{let L=[],R=null;I(F=>({...F,isAwaitingNetworkRequest:!0}));let z;if(F.current.isOnline){let{inventory:De,room:Oe,todaysPurchases:ke,todaysStartingInventory:Ae}=F.current,je=computeMarketPositions(Ae,ke,De);try{z=(await postData(endpoints.postDayResults,{positions:je,room:Oe})).valueAdjustments,Object.keys(je).length&&(L.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,je),severity:`info`}),R=POSITIONS_POSTED_NOTIFICATION(``,``,je))}catch(F){L.push({message:SERVER_ERROR,severity:`error`}),I(F=>({...F,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(F)}}return{broadcastedPositionMessage:R,serverMessages:L,serverValueAdjustments:z}},[F,I]);return{clearPersistedData:De,persistState:Oe,updateServerForNextDay:ke,incrementDay:(0,import_react$10.useCallback)(async(L=!1)=>{if(F.current.isWaitingForDayToCompleteIncrementing&&!L)return;L||I(F=>({...F,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:R,serverMessages:De,serverValueAdjustments:Oe}=await ke();I(F=>{let I=computeStateForNextDay(F,L),ke=[...De,...I.newDayNotifications];return I.valueAdjustments=FarmhandService.applyPriceEvents(Oe??I.valueAdjustments,I.priceCrashes,I.priceSurges),I.isAwaitingNetworkRequest=!1,I.isWaitingForDayToCompleteIncrementing=!0,I.newDayNotifications=[],I.todaysNotifications=[],z.current={state:I,pendingNotifications:ke,broadcastedPositionMessage:R,isFirstDay:L},I})},[F,ke,I,z])}},useFarmhandNotifications=(F,I)=>({showInventoryFullNotifications:(0,import_react$10.useCallback)((F,L)=>{inventorySpaceRemaining(F)>0&&inventorySpaceRemaining(L)<=0&&I.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[I]),showRecipeLearnedNotifications:(0,import_react$10.useCallback)(({learnedRecipes:L})=>{let R=[];Object.keys(F.learnedRecipes).forEach(F=>{L.hasOwnProperty(F)||R.push(recipesMap[F])}),R.length>1?I.current.showNotification(RECIPES_LEARNED(``,R)):R.length===1&&I.current.showNotification(RECIPE_LEARNED(``,R[0]))},[F.learnedRecipes,I])}),FarmhandReducers=class F extends import_react$10.Component{addCowToInventory(...F){throw Error(`Unimplemented`)}addPeer(...F){throw Error(`Unimplemented`)}adjustLoan(...F){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...F){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...F){throw Error(`Unimplemented`)}changeCowName(...F){throw Error(`Unimplemented`)}clearPlot(...F){throw Error(`Unimplemented`)}chopForestPlot(...F){throw Error(`Unimplemented`)}computeStateForNextDay(...F){throw Error(`Unimplemented`)}fertilizePlot(...F){throw Error(`Unimplemented`)}forRange(...F){throw Error(`Unimplemented`)}harvestForestPlot(...F){throw Error(`Unimplemented`)}harvestPlot(...F){throw Error(`Unimplemented`)}hugCow(...F){throw Error(`Unimplemented`)}makeRecipe(...F){throw Error(`Unimplemented`)}makeFermentationRecipe(...F){throw Error(`Unimplemented`)}makeWine(...F){throw Error(`Unimplemented`)}modifyCow(...F){throw Error(`Unimplemented`)}mulchForestPlot(...F){throw Error(`Unimplemented`)}offerCow(...F){throw Error(`Unimplemented`)}placeFarmhandShuffleWager(...F){throw Error(`Unimplemented`)}plantInPlot(...F){throw Error(`Unimplemented`)}plantTreeInPlot(...F){throw Error(`Unimplemented`)}prependPendingPeerMessage(...F){throw Error(`Unimplemented`)}purchaseCombine(...F){throw Error(`Unimplemented`)}purchaseComposter(...F){throw Error(`Unimplemented`)}purchaseCow(...F){throw Error(`Unimplemented`)}purchaseCowPen(...F){throw Error(`Unimplemented`)}purchaseCellar(...F){throw Error(`Unimplemented`)}purchaseField(...F){throw Error(`Unimplemented`)}purchaseForest(...F){throw Error(`Unimplemented`)}purchaseItem(...F){throw Error(`Unimplemented`)}purchaseSmelter(...F){throw Error(`Unimplemented`)}purchaseStorageExpansion(...F){throw Error(`Unimplemented`)}purchaseWoodChipper(...F){throw Error(`Unimplemented`)}removeCowFromInventory(...F){throw Error(`Unimplemented`)}removeKegFromCellar(...F){throw Error(`Unimplemented`)}removePeer(...F){throw Error(`Unimplemented`)}refundUnresumableFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}saveFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}selectCow(...F){throw Error(`Unimplemented`)}sellCow(...F){throw Error(`Unimplemented`)}sellItem(...F){throw Error(`Unimplemented`)}sellKeg(...F){throw Error(`Unimplemented`)}settleFarmhandShuffleMatch(...F){throw Error(`Unimplemented`)}setLightningRod(...F){throw Error(`Unimplemented`)}setScarecrow(...F){throw Error(`Unimplemented`)}setSprinkler(...F){throw Error(`Unimplemented`)}showNotification(...F){throw Error(`Unimplemented`)}updatePeer(...F){throw Error(`Unimplemented`)}upgradeTool(...F){throw Error(`Unimplemented`)}waterAllPlots(...F){throw Error(`Unimplemented`)}waterField(...F){throw Error(`Unimplemented`)}waterPlot(...F){throw Error(`Unimplemented`)}withdrawCow(...F){throw Error(`Unimplemented`)}constructor(I){super(I);let L=Object.getOwnPropertyNames(F.prototype).filter(F=>F!==`constructor`);for(let F of L){let I=reducers_exports[F];I&&(this[F]=(...F)=>{this.setState(L=>I(L,...F))})}}},useFarmhandReducers=F=>(0,import_react$10.useMemo)(()=>{let I={};Object.assign(I,reducers_exports);let L=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(F=>F!==`constructor`);for(let R of L){let L=reducers_exports[R];typeof L==`function`&&(I[R]=(...I)=>{F(F=>{let R=L(F,...I);return!R||R===F?F:{...R}})})}return I},[F]),usePrevious=F=>{let I=(0,import_react$10.useRef)();return(0,import_react$10.useEffect)(()=>{I.current=F},[F]),I.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=F=>{let{features:I,match:{path:L=``,params:{room:R}={}}={}}=F,z=(0,import_react$10.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,farmhandShuffle:{isMatchInProgress:!1,wager:0,serializedMatch:null,totalMatchesPlayed:0,totalWins:0,totalLosses:0,currentWinStreak:0,longestWinStreak:0},field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$2,getCowReject:noop$2,getCowTradeRequest:noop$2,getPeerMetadata:noop$2,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:L.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],notificationDuration:NOTIFICATION_DURATION_DEFAULT,peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(F.match?.params?.room||`global`),sendCowAccept:noop$2,sendCowReject:noop$2,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$2,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.24.3`}),[L,F.match?.params?.room]),[De,Oe]=(0,import_react$10.useState)(z),ke=(0,import_react$10.useRef)(De);ke.current=De;let Ae=R===void 0?De.room:R,je=(0,import_react$10.useRef)(null),Me=(0,import_react$10.useRef)(!1),Ne=useFarmhandReducers(Oe),Pe=(0,import_react$10.useRef)(Ne);Pe.current=Ne;let Fe=usePrevious(De),Ie=STAGE_TITLE_MAP[De.stageFocus],Le=FarmhandService.getFieldToolInventory(De.inventory),Re=FarmhandService.computePlayerInventory(De.inventory,De.valueAdjustments),ze=FarmhandService.getPlantableCropInventory(De.inventory),Be=FarmhandService.getPlantableTreeInventory(De.inventory),Ge=FarmhandService.getMulchInventory(De.inventory),rt=(0,import_react$10.useMemo)(()=>getLevelEntitlements(levelAchieved(De.experience)),[De.experience]),it=(0,import_react$10.useMemo)(()=>getAvailableShopInventory(rt),[rt]),at=rt.stageFocusType[stageFocusType.FOREST],ot=rt.stageFocusType[stageFocusType.FARMHAND_SHUFFLE],st=De.isOnline&&De.room!==`global`,ct=(0,import_react$10.useMemo)(()=>getViewList({isFarmhandShuffleUnlocked:ot,isForestUnlocked:at,purchasedCellar:De.purchasedCellar,purchasedCowPen:De.purchasedCowPen,showHomeScreen:De.showHomeScreen}),[De.showHomeScreen,ot,at,De.purchasedCowPen,De.purchasedCellar]),lt=(0,import_react$10.useMemo)(()=>getPeerMetadata(De),[De]),ut=De.isAwaitingNetworkRequest||De.isAwaitingCowTradeRequest||De.isWaitingForDayToCompleteIncrementing,dt=(0,import_react$10.useRef)(null),{openDialogView:ft,closeDialogView:pt,focusNextView:mt,focusPreviousView:ht}=useFarmhandNavigation(Oe,ct),gt=(0,import_react$10.useRef)(!0),vt=(0,import_react$10.useRef)(!1);(0,import_react$10.useEffect)(()=>{if(De.hasBooted){if(vt.current){vt.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus);return}if(gt.current){gt.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,De.stageFocus,`push`),removeHashQueryParam(`tab`)}},[De.stageFocus,De.hasBooted]),(0,import_react$10.useEffect)(()=>{let F=()=>{let F=getValidatedStageFocusFromHash(ke.current)??stageFocusType.HOME;F!==ke.current.stageFocus&&(vt.current=!0,Oe(I=>({...I,stageFocus:F})))};return import_window.default.addEventListener(`popstate`,F),()=>import_window.default.removeEventListener(`popstate`,F)},[]);let{syncToRoom:yt,scheduleHeartbeat:yr,tradeForPeerCow:br,handleCowTradeTimeout:hw,messagePeers:gw}=useFarmhandNetwork(De,Oe,Pe,dt,Fe,Ae,L,lt),{clearPersistedData:_w,persistState:vw,updateServerForNextDay:yw,incrementDay:bw}=useFarmhandDayAdvancement(ke,Oe,F,Pe,je),{showInventoryFullNotifications:xw,showRecipeLearnedNotifications:Sw}=useFarmhandNotifications(De,Pe);dt.current=(0,import_react$10.useMemo)(()=>({queueRandomNumbers:(F,I)=>randomNumberService.queueRandomNumbers(F,I),state:De,props:F,viewTitle:Ie,fieldToolInventory:Le,mulchInventory:Ge,playerInventory:Re,plantableCropInventory:ze,plantableTreeInventory:Be,viewList:ct,levelEntitlements:rt,shopInventory:it,peerMetadata:lt,isInputBlocked:ut,isChatAvailable:st,isFarmhandShuffleUnlocked:ot,isForestUnlocked:at,setState:(F,I)=>{Oe(L=>{let R=typeof F==`function`?F(L):F;if(R==null)return L;let z={...L,...R};return I&&setTimeout(I,0),z})},...Pe.current,purchaseItem:(F,I)=>Pe.current.purchaseItem(F,I),sellItem:(F,I)=>Pe.current.sellItem(F,I),showNotification:(F,I,L,R)=>Pe.current.showNotification(F,I,L,R),prependPendingPeerMessage:(F,I)=>Pe.current.prependPendingPeerMessage(F,I),forRange:(F,I,L,R,z)=>Pe.current.forRange(F,I,L,R,z),createInitialState:z,getData,postData,tradeForPeerCow:br,handleCowTradeTimeout:hw,clearPersistedData:_w,syncToRoom:yt,scheduleHeartbeat:yr,showInventoryFullNotifications:xw,showRecipeLearnedNotifications:Sw,persistState:(F={})=>vw(dt.current?.state??De,F),updateServerForNextDay:yw,incrementDay:bw,openDialogView:ft,closeDialogView:pt,focusNextView:mt,focusPreviousView:ht,messagePeers:gw}),[De,F,Ie,Le,Ge,Re,ze,Be,ct,rt,it,lt,ut,st,ot,at,br,hw,_w,yt,yr,xw,Sw,vw,yw,bw,ft,pt,mt,ht,gw,z]);let Cw=(0,import_react$10.useMemo)(()=>{let F={debounced:{}};return Object.keys(ui_events_default).forEach(I=>{let L=I;F[L]=(...F)=>ui_events_default[L].apply(dt.current,F),F.debounced[L]=(0,import_lodash_debounce.default)(F[L],50)}),F},[]),ww=(0,import_react$10.useMemo)(()=>{let F={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((I,L)=>{F[`numberKey${L+1}`]=String(L+1)}),F},[]),Tw=(0,import_react$10.useMemo)(()=>{let F={incrementDay:()=>{De.stageFocus===stageFocusType.FARMHAND_SHUFFLE&&De.farmhandShuffle.isMatchInProgress||bw()},nextView:mt,openAccounting:()=>ft(dialogView.ACCOUNTING),openAchievements:()=>ft(dialogView.ACHIEVEMENTS),openLog:()=>ft(dialogView.FARMERS_LOG),openPriceEvents:()=>ft(dialogView.PRICE_EVENTS),openStats:()=>ft(dialogView.STATS),openSettings:()=>ft(dialogView.SETTINGS),openKeybindings:()=>ft(dialogView.KEYBINDINGS),previousView:ht,selectHoe:()=>Cw.handleFieldModeSelect(CLEANUP),selectScythe:()=>Cw.handleFieldModeSelect(HARVEST),selectWateringCan:()=>Cw.handleFieldModeSelect(WATER),selectShovel:()=>{De.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&Cw.handleFieldModeSelect(MINE)},toggleMenu:()=>Cw.handleMenuToggle()};return nullArray(9).forEach((I,L)=>{F[`numberKey${L+1}`]=()=>{let F=ct[L];typeof F==`string`&&Oe(I=>({...I,stageFocus:stageFocusType[F]}))}}),F},[bw,mt,ft,ht,Cw,De.farmhandShuffle.isMatchInProgress,De.stageFocus,De.toolLevels,ct,_w]);(0,import_react$10.useEffect)(()=>{if(Me.current)return;Me.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>dt.current,configurable:!0});let I=!0;return(async()=>{let L=await F.localforage?.getItem(`state`);if(I){if(L){let F=transformStateDataForImport({...z(),...L}),{isCombineEnabled:I,newDayNotifications:R}=F,De=getValidatedStageFocusFromHash(F);Oe(I=>({...I,...F,...De&&{stageFocus:De},newDayNotifications:[],hasBooted:!0})),R.forEach(({message:F,severity:I})=>{setTimeout(()=>Pe.current.showNotification(F,I),0)}),I&&Pe.current.forRange(harvestPlot,1/0,0,0)}else{await bw(!0),Oe(F=>({...F,historicalValueAdjustments:[]})),Pe.current.showNotification(LOAN_INCREASED(``,500),`info`);let F=getValidatedStageFocusFromHash(ke.current);Oe(I=>({...I,...F&&{stageFocus:F},hasBooted:!0}))}yt()}})(),()=>{I=!1}},[z,bw,F.localforage,yt]);let Ew=(0,import_react$10.useRef)(import_window.default.innerWidth);(0,import_react$10.useEffect)(()=>{let F=()=>{let{innerWidth:F}=import_window.default,I=F!==Ew.current;Ew.current=F,I&&Oe(F=>{let I=!doesMenuObstructStage();return F.isMenuOpen===I?F:{...F,isMenuOpen:I}})};return import_window.default.addEventListener(`resize`,F),()=>import_window.default.removeEventListener(`resize`,F)},[]),(0,import_react$10.useEffect)(()=>{if(!De.hasBooted||!je.current)return;let I=!0,{state:L,pendingNotifications:R,broadcastedPositionMessage:z,isFirstDay:ke}=je.current;return je.current=null,(async()=>{try{if(await F.localforage?.setItem(`state`,reduceByPersistedKeys({...L,...ke&&{historicalValueAdjustments:[]},newDayNotifications:R})),!I)return;if([...R].concat(ke?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:F,severity:I})=>setTimeout(()=>Pe.current.showNotification(F,I),0)),L.isCombineEnabled){if(L.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!I)return;Pe.current.forRange(harvestPlot,1/0,0,0)}}catch(F){console.error(F),I&&Pe.current.showNotification(JSON.stringify(F),`error`)}finally{I&&(Oe(F=>({...F,isWaitingForDayToCompleteIncrementing:!1})),z&&Pe.current.prependPendingPeerMessage(z))}})(),()=>{I=!1}},[De.dayCount,De.hasBooted,F.localforage,Oe]),(0,import_react$10.useEffect)(()=>()=>{ke.current.heartbeatTimeoutId&&clearTimeout(ke.current.heartbeatTimeoutId),ke.current.peerRoom?.leave()},[]),(0,import_react$10.useEffect)(()=>{!De.hasBooted||!Fe||(updateAchievements(De,Fe)!==De&&Oe(F=>{let I=updateAchievements(F,Fe);return I===F?F:I}),De.stageFocus===stageFocusType.COW_PEN&&Fe.stageFocus!==stageFocusType.COW_PEN&&Oe(F=>({...F,selectedCowId:``})),De.stageFocus!==Fe.stageFocus&&De.isMenuOpen&&Oe(F=>{let I=!doesMenuObstructStage();return F.isMenuOpen===I?F:{...F,isMenuOpen:I}}),De.money<Fe.money&&Oe(F=>({...F,todaysLosses:moneyTotal(F.todaysLosses,De.money-Fe.money)})),xw(Fe,De),Fe.hasBooted&&Sw(Fe))},[De,Fe,xw,Sw]);let Dw=De.redirect;return{gameState:{...De,blockInput:ut,features:I??{},fieldToolInventory:Le,mulchInventory:Ge,isChatAvailable:st,levelEntitlements:rt,plantableCropInventory:ze,plantableTreeInventory:Be,playerInventory:Re,playerInventoryQuantities:getInventoryQuantities(De.inventory),shopInventory:it,viewList:ct,viewTitle:Ie},handlers:Cw,isInputBlocked:ut,keyMap:ww,keyHandlers:Tw,redirect:Dw,state:De,viewList:ct,focusPreviousView:ht,focusNextView:mt,isChatAvailable:st}},emptyObject=Object.freeze({}),defaultFeatures={},defaultLocalforage=import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),defaultMatch={path:``,params:{}},Farmhand=({features:F=defaultFeatures,localforage:I=defaultLocalforage,match:L=defaultMatch,...R})=>{let{gameState:z,handlers:De,isInputBlocked:Oe,keyMap:ke,keyHandlers:Ae,redirect:je,state:Me,viewList:Ne,focusPreviousView:Pe,focusNextView:Fe,isChatAvailable:Ie}=useFarmhand({...R,features:F,localforage:I,match:L}),Le=Me.stageFocus===stageFocusType.FARMHAND_SHUFFLE&&z.farmhandShuffle.isMatchInProgress;return(0,import_jsx_runtime$2.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:Oe?emptyObject:ke,handlers:Oe?emptyObject:Ae,children:(0,import_jsx_runtime$2.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime$2.jsx)(CssBaseline,{}),(0,import_jsx_runtime$2.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[je&&(0,import_jsx_runtime$2.jsx)(Redirect,{to:je}),(0,import_jsx_runtime$2.jsxs)(FarmhandContext.Provider,{value:{gameState:z,handlers:De},children:[(0,import_jsx_runtime$2.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,Me.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":Me.useAlternateEndDayButtonPosition,"block-input":Oe,"has-booted":Me.hasBooted}),sx:F=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!Me.hasBooted,transform:Me.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...Oe&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:F.transitions.create(`left`,{duration:F.transitions.duration.enteringScreen,easing:F.transitions.easing.easeOut}),width:0,zIndex:Z_INDEX.END_DAY_BUTTON,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...Me.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...Me.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:F.transitions.create(`transform`,{duration:F.transitions.duration.shorter}),transform:Me.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime$2.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime$2.jsx)(Consumer$30,{}),(0,import_jsx_runtime$2.jsxs)(Drawer,{className:`sidebar-wrapper`,open:z.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime$2.jsx)(Consumer$14,{}),(0,import_jsx_runtime$2.jsx)(Consumer$24,{}),(0,import_jsx_runtime$2.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime$2.jsx)(Consumer,{}),(0,import_jsx_runtime$2.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime$2.jsx)(MobileStepper,{variant:`dots`,steps:Ne.length,position:`static`,activeStep:Ne.indexOf(Me.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime$2.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:Pe,children:(0,import_jsx_runtime$2.jsx)(KeyboardArrowLeftIcon,{})}),(0,import_jsx_runtime$2.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":Me.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>De.handleMenuToggle(),children:(0,import_jsx_runtime$2.jsx)(MenuIcon,{})}),(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:Fe,children:(0,import_jsx_runtime$2.jsx)(KeyboardArrowRightIcon,{})})]})]}),!Le&&(0,import_jsx_runtime$2.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime$2.jsxs)(import_jsx_runtime$2.Fragment,{children:[(0,import_jsx_runtime$2.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime$2.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime$2.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:De.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime$2.jsx)(HotelIcon,{})})})]}),Ie?(0,import_jsx_runtime$2.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime$2.jsx)(NotificationSystem_default,{})]})]})]})})},FarmhandRoute=F=>(0,import_jsx_runtime$2.jsx)(Farmhand,{...F,features});(0,import_client.createRoot)(document.getElementById(`root`)).render((0,import_jsx_runtime$2.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime$2.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}));
413
+ //# sourceMappingURL=index-CUCDQafy.js.map