Edit: /tmp/tsx-0/17887-f37156e97d316e211e62980266806762cbbec328 (142272B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/routes/admin.ts\";(()=>{\n\"use strict\";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc2)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc2=__getOwnPropDesc(from,key))||desc2.enumerable})}return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:true}):target,mod));var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var admin_exports={};__export(admin_exports,{_backupDir:()=>_backupDir,_pgDump:()=>_pgDump,default:()=>admin_default});module.exports=__toCommonJS(admin_exports);var import_hono=require(\"hono\");var import_drizzle_orm=require(\"drizzle-orm\");var import_db=require(\"../db.js\");var import_db2=require(\"@canhelp/db\");var import_auth=require(\"../middleware/auth.js\");var import_redis=require(\"../redis.js\");var import_activity=require(\"../lib/activity.js\");var import_email=require(\"../lib/email.js\");var import_translate=require(\"../translate.js\");var import_balance=require(\"../lib/balance.js\");var import_push=require(\"../lib/push.js\");var import_notif=require(\"../lib/notif.js\");var import_node_child_process=require(\"node:child_process\");var import_node_util=require(\"node:util\");var import_node_zlib=__toESM(require(\"node:zlib\"));var import_node_fs=__toESM(require(\"node:fs\"));var import_node_path=__toESM(require(\"node:path\"));var import_node_url=require(\"node:url\");const CATEGORIES_CACHE_KEY=\"categories:tree:v2\";const LOCATIONS_CACHE_KEY=\"locations:tree:v2\";const app=new import_hono.Hono;app.get(\"/stats\",import_auth.requireAdmin,async c=>{const thirtyDaysAgo=new Date(Date.now()-30*24*60*60*1e3);const[[{userCount}],[{specialistCount}],[{taskCount}],[{offerCount}],[{reviewCount}],tasksByStatus,tasksByDay,usersByDay,specialistsByDay,tokenTotals,tokensByMonth]=await Promise.all([import_db.db.select({userCount:(0,import_drizzle_orm.count)()}).from(import_db2.users),import_db.db.select({specialistCount:(0,import_drizzle_orm.countDistinct)(import_db2.specialistCards.specialistId)}).from(import_db2.specialistCards).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.isActive,true)),import_db.db.select({taskCount:(0,import_drizzle_orm.count)()}).from(import_db2.tasks),import_db.db.select({offerCount:(0,import_drizzle_orm.count)()}).from(import_db2.offers),import_db.db.select({reviewCount:(0,import_drizzle_orm.count)()}).from(import_db2.reviews),import_db.db.select({status:import_db2.tasks.status,count:(0,import_drizzle_orm.count)()}).from(import_db2.tasks).groupBy(import_db2.tasks.status),import_db.db.select({day:import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.tasks.createdAt})::date::text`,count:(0,import_drizzle_orm.count)()}).from(import_db2.tasks).where((0,import_drizzle_orm.gte)(import_db2.tasks.createdAt,thirtyDaysAgo)).groupBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.tasks.createdAt})`).orderBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.tasks.createdAt})`),import_db.db.select({day:import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.users.createdAt})::date::text`,count:(0,import_drizzle_orm.count)()}).from(import_db2.users).where((0,import_drizzle_orm.gte)(import_db2.users.createdAt,thirtyDaysAgo)).groupBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.users.createdAt})`).orderBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.users.createdAt})`),import_db.db.select({day:import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.specialistCards.createdAt})::date::text`,count:(0,import_drizzle_orm.countDistinct)(import_db2.specialistCards.specialistId)}).from(import_db2.specialistCards).where((0,import_drizzle_orm.gte)(import_db2.specialistCards.createdAt,thirtyDaysAgo)).groupBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.specialistCards.createdAt})`).orderBy(import_drizzle_orm.sql`DATE_TRUNC('day', ${import_db2.specialistCards.createdAt})`),import_db.db.select({totalInput:import_drizzle_orm.sql`COALESCE(SUM(${import_db2.aiLogs.inputTokens}), 0)`,totalOutput:import_drizzle_orm.sql`COALESCE(SUM(${import_db2.aiLogs.outputTokens}), 0)`,totalCost:import_drizzle_orm.sql`COALESCE(SUM(${import_db2.aiLogs.costUsd}), 0)`}).from(import_db2.aiLogs),import_db.db.select({month:import_drizzle_orm.sql`DATE_TRUNC('month', ${import_db2.aiLogs.createdAt})::date::text`,input:import_drizzle_orm.sql`COALESCE(SUM(${import_db2.aiLogs.inputTokens}), 0)`,output:import_drizzle_orm.sql`COALESCE(SUM(${import_db2.aiLogs.outputTokens}), 0)`}).from(import_db2.aiLogs).groupBy(import_drizzle_orm.sql`DATE_TRUNC('month', ${import_db2.aiLogs.createdAt})`).orderBy(import_drizzle_orm.sql`DATE_TRUNC('month', ${import_db2.aiLogs.createdAt})`)]);return c.json({userCount,specialistCount,taskCount,offerCount,reviewCount,tasksByStatus,tasksByDay,usersByDay,specialistsByDay,totalInputTokens:Number(tokenTotals[0]?.totalInput??0),totalOutputTokens:Number(tokenTotals[0]?.totalOutput??0),totalCostUsd:Number(tokenTotals[0]?.totalCost??0),tokensByMonth})});app.get(\"/users\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||20),100);const offset=(page-1)*limit;const q=c.req.query(\"q\");const role=c.req.query(\"role\");const conditions=[];if(q)conditions.push((0,import_drizzle_orm.or)((0,import_drizzle_orm.ilike)(import_db2.users.name,`%${q}%`),(0,import_drizzle_orm.ilike)(import_db2.users.email,`%${q}%`)));if(role&&[\"customer\",\"specialist\",\"admin\"].includes(role))conditions.push((0,import_drizzle_orm.eq)(import_db2.users.role,role));const where=conditions.length>0?(0,import_drizzle_orm.and)(...conditions):void 0;const[rows,[{total}]]=await Promise.all([import_db.db.select().from(import_db2.users).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.users.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.users).where(where)]);return c.json({data:rows,total,page,limit})});app.get(\"/users/:id\",import_auth.requireAdmin,async c=>{const[user]=await import_db.db.select().from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,c.req.param(\"id\"))).limit(1);if(!user)return c.json({error:\"Not found\"},404);return c.json(user)});app.get(\"/users/:id/specialist-cards\",import_auth.requireAdmin,async c=>{const cards=await import_db.db.select().from(import_db2.specialistCards).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.specialistId,c.req.param(\"id\"))).orderBy((0,import_drizzle_orm.asc)(import_db2.specialistCards.order));return c.json(cards)});app.get(\"/specialist-cards\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||20),100);const offset=(page-1)*limit;const status=c.req.query(\"status\");const whereClause=status===\"active\"?(0,import_drizzle_orm.eq)(import_db2.specialistCards.publicationStatus,\"active\"):status===\"pending\"?(0,import_drizzle_orm.eq)(import_db2.specialistCards.publicationStatus,\"pending\"):status===\"review\"?import_drizzle_orm.sql`${import_db2.specialistCards.publicationStatus} IN ('pending', 'active')`:void 0;const baseQuery=import_db.db.select({id:import_db2.specialistCards.id,specialistId:import_db2.specialistCards.specialistId,title:import_db2.specialistCards.title,description:import_db2.specialistCards.description,skills:import_db2.specialistCards.skills,categories:import_db2.specialistCards.categories,locations:import_db2.specialistCards.locations,publicationStatus:import_db2.specialistCards.publicationStatus,isActive:import_db2.specialistCards.isActive,order:import_db2.specialistCards.order,createdAt:import_db2.specialistCards.createdAt,updatedAt:import_db2.specialistCards.updatedAt}).from(import_db2.specialistCards);const rows=await(whereClause?baseQuery.where(whereClause):baseQuery).orderBy((0,import_drizzle_orm.desc)(import_db2.specialistCards.createdAt)).limit(limit).offset(offset);const totalQuery=import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.specialistCards);const[{total}]=await(whereClause?totalQuery.where(whereClause):totalQuery);const specialistIds=[...new Set(rows.map(row=>row.specialistId))];const specialists=specialistIds.length>0?await import_db.db.select({id:import_db2.users.id,name:import_db2.users.name,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.inArray)(import_db2.users.id,specialistIds)):[];const specialistMap=Object.fromEntries(specialists.map(u=>[u.id,u]));const pendingSuggestions=rows.length===0?[]:await import_db.db.select().from(import_db2.categorySuggestions).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.inArray)(import_db2.categorySuggestions.cardId,rows.map(row=>row.id)),(0,import_drizzle_orm.eq)(import_db2.categorySuggestions.status,\"pending\")));const suggestionsByCard={};for(const suggestion of pendingSuggestions){(suggestionsByCard[suggestion.cardId]??=[]).push(suggestion)}const data=rows.map(row=>({...row,specialistName:specialistMap[row.specialistId]?.name??null,specialistEmail:specialistMap[row.specialistId]?.email??null,categorySuggestions:suggestionsByCard[row.id]??[]}));return c.json({data,total,page,limit})});app.patch(\"/specialist-cards/:id\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const cardId=c.req.param(\"id\");const body=await c.req.json();const[card]=await import_db.db.select().from(import_db2.specialistCards).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.id,cardId)).limit(1);if(!card)return c.json({error:\"Not found\"},404);const[specialist]=await import_db.db.select({id:import_db2.users.id,name:import_db2.users.name,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,card.specialistId)).limit(1);const updates={updatedAt:new Date};if(body.title!==void 0)updates.title=body.title;if(body.description!==void 0)updates.description=body.description??null;if(body.skills!==void 0)updates.skills=body.skills;if(body.categories!==void 0)updates.categories=body.categories;if(body.locations!==void 0)updates.locations=body.locations;if(body.publicationStatus!==void 0){updates.publicationStatus=body.publicationStatus;updates.isActive=body.publicationStatus===\"active\"}if(body.isActive!==void 0)updates.isActive=body.isActive;if(body.isActive!==void 0&&body.publicationStatus===void 0){updates.publicationStatus=body.isActive?\"active\":\"inactive\"}if(body.order!==void 0)updates.order=body.order;const[updated]=await import_db.db.update(import_db2.specialistCards).set(updates).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.id,cardId)).returning();if(!updated)return c.json({error:\"Not found\"},404);if(specialist&&updated.publicationStatus!==card.publicationStatus){if(updated.publicationStatus===\"active\"){(0,import_notif.notifySpecialistCardApproved)(specialist.id,updated.title,updated.id).catch(err=>{console.error(\"[admin] specialist card approved notify error:\",err)})}else if(updated.publicationStatus===\"inactive\"){(0,import_notif.notifySpecialistCardRejected)(specialist.id,updated.title,updated.id,body.adminComment?.trim()||void 0).catch(err=>{console.error(\"[admin] specialist card rejected notify error:\",err)})}}(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.specialist_card.updated\",details:{cardId,specialistId:card.specialistId,adminComment:body.adminComment?.trim()||void 0}});return c.json(updated)});app.patch(\"/specialist-cards/:cardId/category-suggestions/:suggestionId\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const{cardId,suggestionId}=c.req.param();const body=await c.req.json();if(![\"map\",\"create\",\"reject\"].includes(body.action))return c.json({error:\"Invalid action\"},400);const[suggestion]=await import_db.db.select().from(import_db2.categorySuggestions).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.categorySuggestions.id,suggestionId),(0,import_drizzle_orm.eq)(import_db2.categorySuggestions.cardId,cardId),(0,import_drizzle_orm.eq)(import_db2.categorySuggestions.status,\"pending\")));if(!suggestion)return c.json({error:\"Suggestion not found\"},404);let category;if(body.action===\"map\"){if(!body.categoryId)return c.json({error:\"Category is required\"},400);[category]=await import_db.db.select().from(import_db2.categories).where((0,import_drizzle_orm.eq)(import_db2.categories.id,body.categoryId));if(!category)return c.json({error:\"Category not found\"},404)}else if(body.action===\"create\"){const slug=(body.slug??suggestion.name).toLowerCase().trim().replace(/[^a-z0-9]+/g,\"-\").replace(/^-|-$/g,\"\");if(!slug)return c.json({error:\"A Latin slug is required\"},400);const[duplicate]=await import_db.db.select({id:import_db2.categories.id}).from(import_db2.categories).where((0,import_drizzle_orm.eq)(import_db2.categories.slug,slug));if(duplicate)return c.json({error:\"Category slug already exists\"},409);[category]=await import_db.db.insert(import_db2.categories).values({slug,icon:body.icon??\"\\u{1F4E6}\",parentId:body.parentId??null,namesEl:suggestion.name,namesEn:suggestion.name,namesRu:suggestion.name,namesUk:suggestion.name}).returning();await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{})}const[card]=await import_db.db.select().from(import_db2.specialistCards).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.id,cardId));if(!card)return c.json({error:\"Card not found\"},404);if(category){await import_db.db.update(import_db2.specialistCards).set({categories:[...new Set([...card.categories??[],category.slug])],updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.specialistCards.id,cardId))}const[updated]=await import_db.db.update(import_db2.categorySuggestions).set({status:body.action===\"map\"?\"mapped\":body.action===\"create\"?\"created\":\"rejected\",mappedCategoryId:category?.id??null,reviewedByAdminId:admin.id,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.categorySuggestions.id,suggestionId)).returning();(0,import_activity.logActivity)({userId:admin.id,event:\"admin.category_suggestion.resolved\",details:{cardId,suggestionId,action:body.action}});return c.json(updated)});app.patch(\"/users/:id/deactivate\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const[updated]=await import_db.db.update(import_db2.users).set({isActive:false,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.users.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.deactivate\",details:{targetUserId:updated.id,targetEmail:updated.email}});return c.json(updated)});app.patch(\"/users/:id/verify-email\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const[updated]=await import_db.db.update(import_db2.users).set({emailVerified:true,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.users.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.email_verified\",details:{targetUserId:updated.id,targetEmail:updated.email}});return c.json(updated)});app.patch(\"/users/:id/activate\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const[updated]=await import_db.db.update(import_db2.users).set({isActive:true,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.users.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.activate\",details:{targetUserId:updated.id,targetEmail:updated.email}});return c.json(updated)});app.patch(\"/users/:id/role\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const{role}=await c.req.json();if(![\"customer\",\"specialist\",\"admin\"].includes(role))return c.json({error:\"Invalid role\"},400);const[updated]=await import_db.db.update(import_db2.users).set({role,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.users.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.role_changed\",details:{targetUserId:updated.id,targetEmail:updated.email,newRole:role}});return c.json(updated)});app.patch(\"/users/:id\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const body=await c.req.json();const targetUserId=c.req.param(\"id\");const[currentUser]=await import_db.db.select({id:import_db2.users.id,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);if(!currentUser)return c.json({error:\"Not found\"},404);const changedFields=Object.keys(body);const updated=await import_db.db.transaction(async tx=>{const updates={updatedAt:new Date};if(body.firstName!==void 0)updates.firstName=body.firstName;if(body.lastName!==void 0)updates.lastName=body.lastName;if(body.phone!==void 0)updates.phone=body.phone??null;if(body.bio!==void 0)updates.bio=body.bio??null;if(body.role!==void 0&&[\"customer\",\"specialist\",\"admin\"].includes(body.role))updates.role=body.role;if(body.planId!==void 0)updates.planId=body.planId??null;if(body.isActive!==void 0)updates.isActive=body.isActive;if(body.locale!==void 0)updates.locale=body.locale;if(body.languages!==void 0)updates.languages=body.languages;if(body.personalSiteSlug!==void 0)updates.personalSiteSlug=body.personalSiteSlug??null;if(body.showContactInfo!==void 0)updates.showContactInfo=body.showContactInfo;if(body.notifyNewTasks!==void 0)updates.notifyNewTasks=body.notifyNewTasks;if(body.notifMessages!==void 0)updates.notifMessages=body.notifMessages;if(body.skills!==void 0)updates.skills=body.skills;if(body.specialistCategories!==void 0)updates.specialistCategories=body.specialistCategories;if(body.specialistLocations!==void 0)updates.specialistLocations=body.specialistLocations;if(body.siteSettings!==void 0)updates.siteSettings=body.siteSettings;const[nextUser]=await tx.update(import_db2.users).set(updates).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).returning();if(!nextUser)return null;return nextUser});if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.updated\",details:{targetUserId:updated.id,targetEmail:updated.email,changes:changedFields}});return c.json(updated)});app.post(\"/users/:id/balance/topup\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const targetUserId=c.req.param(\"id\");const body=await c.req.json().catch(()=>({}));const amount=Number(body.amount);if(!Number.isFinite(amount)||amount<=0){return c.json({error:\"Amount must be greater than 0\"},400)}const[targetUser]=await import_db.db.select({id:import_db2.users.id,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);if(!targetUser)return c.json({error:\"Not found\"},404);const result=await import_db.db.transaction(async tx=>{const balanceChange=await(0,import_balance.applyBalanceChange)(tx,{userId:targetUserId,amount,direction:\"credit\",kind:\"admin_topup\",currency:\"EUR\",adminUserId:admin?.id??null,description:body.description?.trim()||\"Admin top-up\",metadata:{source:\"admin-panel\"}});const[updatedUser]=await tx.select().from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);return{updatedUser,transaction:balanceChange.transaction}});(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.balance_topped_up\",details:{targetUserId,targetEmail:targetUser.email,amount:amount.toFixed(2),description:body.description?.trim()||null}});return c.json({user:result.updatedUser,transaction:result.transaction})});app.post(\"/users/:id/balance/withdraw\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const targetUserId=c.req.param(\"id\");const body=await c.req.json().catch(()=>({}));const amount=Number(body.amount);if(!Number.isFinite(amount)||amount<=0){return c.json({error:\"Amount must be greater than 0\"},400)}const[targetUser]=await import_db.db.select({id:import_db2.users.id,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);if(!targetUser)return c.json({error:\"Not found\"},404);try{const result=await import_db.db.transaction(async tx=>{const balanceChange=await(0,import_balance.applyBalanceChange)(tx,{userId:targetUserId,amount,direction:\"debit\",kind:\"admin_adjustment\",currency:\"EUR\",adminUserId:admin?.id??null,description:body.description?.trim()||\"Admin withdrawal\",metadata:{source:\"admin-panel\",action:\"withdraw\"}});const[updatedUser]=await tx.select().from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);return{updatedUser,transaction:balanceChange.transaction}});(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.user.balance_withdrawn\",details:{targetUserId,targetEmail:targetUser.email,amount:amount.toFixed(2),description:body.description?.trim()||null}});return c.json({user:result.updatedUser,transaction:result.transaction})}catch(error){const message=error instanceof Error?error.message:\"Failed to withdraw balance\";return c.json({error:message},message===\"Insufficient balance\"?400:500)}});app.get(\"/balance-history\",import_auth.requireAdmin,async c=>{const page=Math.max(1,Number(c.req.query(\"page\")||1));const limit=Math.min(Number(c.req.query(\"limit\")||50),200);const offset=(page-1)*limit;const userId=c.req.query(\"userId\");const kind=c.req.query(\"kind\");const conditions=[];if(userId)conditions.push((0,import_drizzle_orm.eq)(import_db2.balanceTransactions.userId,userId));if(kind&&[\"topup\",\"plan_purchase\",\"admin_topup\",\"admin_adjustment\"].includes(kind)){conditions.push((0,import_drizzle_orm.eq)(import_db2.balanceTransactions.kind,kind))}const where=conditions.length>0?(0,import_drizzle_orm.and)(...conditions):void 0;const[rows,[{total}]]=await Promise.all([import_db.db.select({id:import_db2.balanceTransactions.id,kind:import_db2.balanceTransactions.kind,direction:import_db2.balanceTransactions.direction,amount:import_db2.balanceTransactions.amount,balanceBefore:import_db2.balanceTransactions.balanceBefore,balanceAfter:import_db2.balanceTransactions.balanceAfter,currency:import_db2.balanceTransactions.currency,description:import_db2.balanceTransactions.description,metadata:import_db2.balanceTransactions.metadata,createdAt:import_db2.balanceTransactions.createdAt,userId:import_db2.balanceTransactions.userId,adminUserId:import_db2.balanceTransactions.adminUserId,paymentId:import_db2.balanceTransactions.paymentId,userEmail:import_db2.users.email,userName:import_db2.users.name}).from(import_db2.balanceTransactions).leftJoin(import_db2.users,(0,import_drizzle_orm.eq)(import_db2.balanceTransactions.userId,import_db2.users.id)).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.balanceTransactions.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.balanceTransactions).where(where)]);return c.json({data:rows,total,page,limit})});app.post(\"/push/user/:id\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const targetUserId=c.req.param(\"id\");const body=await c.req.json().catch(()=>({}));const title=body.title?.trim();if(!title)return c.json({error:\"title is required\"},400);const[targetUser]=await import_db.db.select({id:import_db2.users.id,email:import_db2.users.email}).from(import_db2.users).where((0,import_drizzle_orm.eq)(import_db2.users.id,targetUserId)).limit(1);if(!targetUser)return c.json({error:\"Not found\"},404);const data={...body.data??{}};if(body.type?.trim())data.type=body.type.trim();if(body.referenceId?.trim())data.referenceId=body.referenceId.trim();const result=await(0,import_push.sendPushToUser)(targetUserId,{title,body:body.body?.trim()||void 0,data});(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.push.user\",details:{targetUserId,targetEmail:targetUser.email,title,type:data.type??null,referenceId:data.referenceId??null,sent:result.sent,invalidTokens:result.invalidTokens.length,tokensFound:result.tokensFound,reason:result.reason??null,failureKey:result.failureKey??null,failureMessage:result.failureMessage??null}});return c.json({ok:true,targetUserId,sent:result.sent,invalidTokens:result.invalidTokens.length,tokensFound:result.tokensFound,reason:result.reason??null,failureKey:result.failureKey??null,failureMessage:result.failureMessage??null})});app.post(\"/push/broadcast\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const body=await c.req.json().catch(()=>({}));const title=body.title?.trim();if(!title)return c.json({error:\"title is required\"},400);const data={...body.data??{}};if(body.type?.trim())data.type=body.type.trim();if(body.referenceId?.trim())data.referenceId=body.referenceId.trim();const tokenUsersRows=await import_db.db.select({userId:import_db2.pushTokens.userId}).from(import_db2.pushTokens).groupBy(import_db2.pushTokens.userId);const tokenUserIds=tokenUsersRows.map(r=>r.userId);if(tokenUserIds.length===0){return c.json({ok:true,usersTotal:0,usersWithSent:0,pushesSent:0,invalidTokens:0,failedUsers:[]})}let targetUserIds=tokenUserIds;if(body.onlyActive!==false){const activeRows=await import_db.db.select({id:import_db2.users.id}).from(import_db2.users).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.inArray)(import_db2.users.id,tokenUserIds),(0,import_drizzle_orm.eq)(import_db2.users.isActive,true)));targetUserIds=activeRows.map(r=>r.id)}let pushesSent=0;let usersWithSent=0;let invalidTokens=0;let usersWithoutTokens=0;let usersConfigBlocked=0;let usersAuthFailed=0;let usersAllFailed=0;const failedReasonStats={};let failedReasonSample=null;const failedUsers=[];for(const userId of targetUserIds){try{const result=await(0,import_push.sendPushToUser)(userId,{title,body:body.body?.trim()||void 0,data});pushesSent+=result.sent;invalidTokens+=result.invalidTokens.length;if(result.sent>0)usersWithSent+=1;if(result.reason===\"no_tokens\")usersWithoutTokens+=1;if(result.reason===\"fcm_not_configured\")usersConfigBlocked+=1;if(result.reason===\"fcm_auth_failed\")usersAuthFailed+=1;if(result.reason===\"fcm_send_failed\"){usersAllFailed+=1;const key=result.failureKey??\"UNKNOWN_FCM_SEND_FAILURE\";failedReasonStats[key]=(failedReasonStats[key]??0)+1;if(!failedReasonSample&&result.failureMessage){failedReasonSample=result.failureMessage}}}catch{failedUsers.push(userId)}}(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.push.broadcast\",details:{title,type:data.type??null,referenceId:data.referenceId??null,onlyActive:body.onlyActive!==false,usersTotal:targetUserIds.length,usersWithSent,pushesSent,invalidTokens,usersWithoutTokens,usersConfigBlocked,usersAuthFailed,usersAllFailed,failedReasonStats,failedReasonSample,failedUsers:failedUsers.length}});return c.json({ok:true,usersTotal:targetUserIds.length,usersWithSent,pushesSent,invalidTokens,usersWithoutTokens,usersConfigBlocked,usersAuthFailed,usersAllFailed,failedReasonStats,failedReasonSample,failedUsers})});app.get(\"/tasks\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||20),100);const offset=(page-1)*limit;const q=c.req.query(\"q\");const status=c.req.query(\"status\");const conditions=[];if(q)conditions.push((0,import_drizzle_orm.ilike)(import_db2.tasks.title,`%${q}%`));if(status&&[\"draft\",\"open\",\"in_progress\",\"completed\",\"cancelled\"].includes(status))conditions.push((0,import_drizzle_orm.eq)(import_db2.tasks.status,status));const where=conditions.length>0?(0,import_drizzle_orm.and)(...conditions):void 0;const[rows,[{total}]]=await Promise.all([import_db.db.select({task:import_db2.tasks,customer:{id:import_db2.users.id,name:import_db2.users.name,email:import_db2.users.email}}).from(import_db2.tasks).leftJoin(import_db2.users,(0,import_drizzle_orm.eq)(import_db2.tasks.customerId,import_db2.users.id)).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.tasks.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.tasks).where(where)]);return c.json({data:rows,total,page,limit})});app.patch(\"/tasks/:id/cancel\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const[updated]=await import_db.db.update(import_db2.tasks).set({status:\"cancelled\",updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.tasks.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.task.cancelled\",details:{taskId:updated.id,taskTitle:updated.title}});return c.json({task:updated})});app.delete(\"/tasks/:id\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const[deleted]=await import_db.db.delete(import_db2.tasks).where((0,import_drizzle_orm.eq)(import_db2.tasks.id,c.req.param(\"id\"))).returning();if(!deleted)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:\"admin.task.deleted\",details:{taskId:deleted.id,taskTitle:deleted.title}});return c.json({ok:true})});app.get(\"/reports\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||20),100);const offset=(page-1)*limit;const status=c.req.query(\"status\");const whereClause=status?(0,import_drizzle_orm.eq)(import_db2.reports.status,status):void 0;const rowsQuery=import_db.db.select().from(import_db2.reports);const totalQuery=import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.reports);const[rows,[{total}]]=await Promise.all([(whereClause?rowsQuery.where(whereClause):rowsQuery).orderBy((0,import_drizzle_orm.desc)(import_db2.reports.createdAt)).limit(limit).offset(offset),whereClause?totalQuery.where(whereClause):totalQuery]);if(rows.length===0)return c.json({data:[],total,page,limit});const reporterIds=[...new Set(rows.map(r=>r.reporterId))];const taskTargetIds=[...new Set(rows.filter(r=>r.targetType===\"task\").map(r=>r.targetId))];const userTargetIds=[...new Set(rows.filter(r=>r.targetType===\"user\").map(r=>r.targetId))];const[reporters,targetTasks,targetUsers]=await Promise.all([import_db.db.select({id:import_db2.users.id,name:import_db2.users.name}).from(import_db2.users).where((0,import_drizzle_orm.inArray)(import_db2.users.id,reporterIds)),taskTargetIds.length>0?import_db.db.select({id:import_db2.tasks.id,title:import_db2.tasks.title}).from(import_db2.tasks).where((0,import_drizzle_orm.inArray)(import_db2.tasks.id,taskTargetIds)):Promise.resolve([]),userTargetIds.length>0?import_db.db.select({id:import_db2.users.id,name:import_db2.users.name}).from(import_db2.users).where((0,import_drizzle_orm.inArray)(import_db2.users.id,userTargetIds)):Promise.resolve([])]);const reporterMap=Object.fromEntries(reporters.map(u=>[u.id,u.name]));const taskMap=Object.fromEntries(targetTasks.map(t=>[t.id,t.title]));const userMap=Object.fromEntries(targetUsers.map(u=>[u.id,u.name]));const enriched=rows.map(r=>({...r,reporterName:reporterMap[r.reporterId]??null,targetTitle:r.targetType===\"task\"?taskMap[r.targetId]??null:userMap[r.targetId]??null}));return c.json({data:enriched,total,page,limit})});app.patch(\"/reports/:id/status\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const{status}=await c.req.json();const[updated]=await import_db.db.update(import_db2.reports).set({status}).where((0,import_drizzle_orm.eq)(import_db2.reports.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);(0,import_activity.logActivity)({userId:admin?.id,event:`admin.report.${status}`,details:{reportId:updated.id,reason:updated.reason}});return c.json(updated)});app.get(\"/activity-logs\",import_auth.requireAdmin,async c=>{const page=Math.max(1,Number(c.req.query(\"page\")||1));const limit=Math.min(Number(c.req.query(\"limit\")||50),200);const offset=(page-1)*limit;const event=c.req.query(\"event\");const userId=c.req.query(\"userId\");const dateFrom=c.req.query(\"dateFrom\");const dateTo=c.req.query(\"dateTo\");const conditions=[];if(event)conditions.push((0,import_drizzle_orm.eq)(import_db2.activityLogs.event,event));if(userId)conditions.push((0,import_drizzle_orm.eq)(import_db2.activityLogs.userId,userId));if(dateFrom)conditions.push((0,import_drizzle_orm.gte)(import_db2.activityLogs.createdAt,new Date(dateFrom)));if(dateTo){const to=new Date(dateTo);to.setHours(23,59,59,999);conditions.push((0,import_drizzle_orm.lte)(import_db2.activityLogs.createdAt,to))}const where=conditions.length>0?(0,import_drizzle_orm.and)(...conditions):void 0;const[rows,[{total}]]=await Promise.all([import_db.db.select().from(import_db2.activityLogs).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.activityLogs.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.activityLogs).where(where)]);const eventTypes=await import_db.db.selectDistinct({event:import_db2.activityLogs.event}).from(import_db2.activityLogs).orderBy((0,import_drizzle_orm.asc)(import_db2.activityLogs.event));return c.json({data:rows,total,page,limit,eventTypes:eventTypes.map(r=>r.event)})});app.get(\"/mail-logs\",import_auth.requireAdmin,async c=>{const page=Math.max(1,Number(c.req.query(\"page\")||1));const limit=Math.min(Number(c.req.query(\"limit\")||50),200);const offset=(page-1)*limit;const event=c.req.query(\"event\");const dateFrom=c.req.query(\"dateFrom\");const dateTo=c.req.query(\"dateTo\");const mailBaseCondition=(0,import_drizzle_orm.ilike)(import_db2.activityLogs.event,\"email.%\");const conditions=[mailBaseCondition];if(event)conditions.push((0,import_drizzle_orm.eq)(import_db2.activityLogs.event,event));if(dateFrom)conditions.push((0,import_drizzle_orm.gte)(import_db2.activityLogs.createdAt,new Date(dateFrom)));if(dateTo){const to=new Date(dateTo);to.setHours(23,59,59,999);conditions.push((0,import_drizzle_orm.lte)(import_db2.activityLogs.createdAt,to))}const where=(0,import_drizzle_orm.and)(...conditions);const[rows,[{total}],eventTypes]=await Promise.all([import_db.db.select().from(import_db2.activityLogs).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.activityLogs.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.activityLogs).where(where),import_db.db.selectDistinct({event:import_db2.activityLogs.event}).from(import_db2.activityLogs).where(mailBaseCondition).orderBy((0,import_drizzle_orm.asc)(import_db2.activityLogs.event))]);return c.json({data:rows,total,page,limit,eventTypes:eventTypes.map(r=>r.event)})});app.get(\"/categories\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.categories).orderBy((0,import_drizzle_orm.asc)(import_db2.categories.order),(0,import_drizzle_orm.asc)(import_db2.categories.namesEl));return c.json(rows)});app.post(\"/categories\",import_auth.requireAdmin,async c=>{const body=await c.req.json();const[cat]=await import_db.db.insert(import_db2.categories).values({slug:body.slug,icon:body.icon??\"\\u{1F4E6}\",namesEl:body.namesEl,namesEn:body.namesEn,namesRu:body.namesRu,namesUk:body.namesUk??null,parentId:body.parentId??null,order:body.order??0}).returning();await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{});return c.json(cat,201)});app.patch(\"/categories/:id\",import_auth.requireAdmin,async c=>{const body=await c.req.json();const updates={updatedAt:new Date};if(body.slug!==void 0)updates.slug=body.slug;if(body.icon!==void 0)updates.icon=body.icon;if(body.namesEl!==void 0)updates.namesEl=body.namesEl;if(body.namesEn!==void 0)updates.namesEn=body.namesEn;if(body.namesRu!==void 0)updates.namesRu=body.namesRu;if(body.namesUk!==void 0)updates.namesUk=body.namesUk;if(body.parentId!==void 0)updates.parentId=body.parentId;if(body.order!==void 0)updates.order=body.order;if(body.isActive!==void 0)updates.isActive=body.isActive;const[updated]=await import_db.db.update(import_db2.categories).set(updates).where((0,import_drizzle_orm.eq)(import_db2.categories.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{});return c.json(updated)});app.delete(\"/categories/:id\",import_auth.requireAdmin,async c=>{const[deleted]=await import_db.db.delete(import_db2.categories).where((0,import_drizzle_orm.eq)(import_db2.categories.id,c.req.param(\"id\"))).returning();if(!deleted)return c.json({error:\"Not found\"},404);await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{});return c.json({ok:true})});app.get(\"/skills\",import_auth.requireAdmin,async c=>{const categorySlug=c.req.query(\"categorySlug\");const rows=await import_db.db.select().from(import_db2.skillSuggestions).where(categorySlug?(0,import_drizzle_orm.eq)(import_db2.skillSuggestions.categorySlug,categorySlug):void 0).orderBy((0,import_drizzle_orm.asc)(import_db2.skillSuggestions.order),(0,import_drizzle_orm.asc)(import_db2.skillSuggestions.nameEl));return c.json(rows)});app.post(\"/skills\",import_auth.requireAdmin,async c=>{const body=await c.req.json();if(!body.categorySlug||!body.nameEl)return c.json({error:\"categorySlug and nameEl required\"},400);const[row]=await import_db.db.insert(import_db2.skillSuggestions).values({categorySlug:body.categorySlug,nameEl:body.nameEl,nameEn:body.nameEn||body.nameEl,nameRu:body.nameRu||body.nameEl,nameUk:body.nameUk||null,order:body.order??0}).returning();return c.json(row,201)});app.patch(\"/skills/:id\",import_auth.requireAdmin,async c=>{const body=await c.req.json();const updates={};if(body.nameEl!==void 0)updates.nameEl=body.nameEl;if(body.nameEn!==void 0)updates.nameEn=body.nameEn;if(body.nameRu!==void 0)updates.nameRu=body.nameRu;if(body.nameUk!==void 0)updates.nameUk=body.nameUk;if(body.order!==void 0)updates.order=body.order;if(body.categorySlug!==void 0)updates.categorySlug=body.categorySlug;if(Object.keys(updates).length===0)return c.json({error:\"Nothing to update\"},400);const[row]=await import_db.db.update(import_db2.skillSuggestions).set(updates).where((0,import_drizzle_orm.eq)(import_db2.skillSuggestions.id,c.req.param(\"id\"))).returning();if(!row)return c.json({error:\"Not found\"},404);return c.json(row)});app.delete(\"/skills/:id\",import_auth.requireAdmin,async c=>{const[deleted]=await import_db.db.delete(import_db2.skillSuggestions).where((0,import_drizzle_orm.eq)(import_db2.skillSuggestions.id,c.req.param(\"id\"))).returning();if(!deleted)return c.json({error:\"Not found\"},404);return c.json({ok:true})});app.get(\"/skills/dedup\",import_auth.requireAdmin,async c=>{const categorySlug=c.req.query(\"categorySlug\");const rows=await import_db.db.select().from(import_db2.skillSuggestions).where(categorySlug?(0,import_drizzle_orm.eq)(import_db2.skillSuggestions.categorySlug,categorySlug):void 0).orderBy((0,import_drizzle_orm.asc)(import_db2.skillSuggestions.order),(0,import_drizzle_orm.asc)(import_db2.skillSuggestions.nameEl));const map=new Map;for(const row of rows){const key=`${row.categorySlug}::${row.nameEl.toLowerCase().trim()}`;const g=map.get(key)??[];g.push(row);map.set(key,g)}const duplicates=[];for(const[,group]of map){if(group.length<2)continue;const withUsage=await Promise.all(group.map(async s=>{const[{cardCount}]=await import_db.db.select({cardCount:(0,import_drizzle_orm.count)()}).from(import_db2.specialistCards).where(import_drizzle_orm.sql`${s.nameEl} = ANY(${import_db2.specialistCards.skills})`);const[{userCount}]=await import_db.db.select({userCount:(0,import_drizzle_orm.count)()}).from(import_db2.users).where(import_drizzle_orm.sql`${s.nameEl} = ANY(${import_db2.users.skills})`);return{...s,usageCount:Number(cardCount??0)+Number(userCount??0)}}));duplicates.push(withUsage)}return c.json(duplicates)});app.post(\"/skills/dedup/merge\",import_auth.requireAdmin,async c=>{const{keepId,deleteIds}=await c.req.json();if(!keepId||!deleteIds?.length)return c.json({error:\"keepId and deleteIds required\"},400);const[keeper]=await import_db.db.select().from(import_db2.skillSuggestions).where((0,import_drizzle_orm.eq)(import_db2.skillSuggestions.id,keepId));if(!keeper)return c.json({error:\"Keeper skill not found\"},404);const deletees=await import_db.db.select().from(import_db2.skillSuggestions).where((0,import_drizzle_orm.inArray)(import_db2.skillSuggestions.id,deleteIds));for(const deletee of deletees){if(deletee.nameEl!==keeper.nameEl){await import_db.db.update(import_db2.specialistCards).set({skills:import_drizzle_orm.sql`array_replace(${import_db2.specialistCards.skills}, ${deletee.nameEl}, ${keeper.nameEl})`}).where(import_drizzle_orm.sql`${deletee.nameEl} = ANY(${import_db2.specialistCards.skills})`);await import_db.db.update(import_db2.users).set({skills:import_drizzle_orm.sql`array_replace(${import_db2.users.skills}, ${deletee.nameEl}, ${keeper.nameEl})`}).where(import_drizzle_orm.sql`${deletee.nameEl} = ANY(${import_db2.users.skills})`)}await import_db.db.delete(import_db2.skillSuggestions).where((0,import_drizzle_orm.eq)(import_db2.skillSuggestions.id,deletee.id))}return c.json({ok:true,merged:deleteIds.length})});app.get(\"/locations\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.locations).orderBy((0,import_drizzle_orm.asc)(import_db2.locations.order),(0,import_drizzle_orm.asc)(import_db2.locations.nameEl));return c.json(rows)});app.post(\"/locations\",import_auth.requireAdmin,async c=>{const body=await c.req.json();const[loc]=await import_db.db.insert(import_db2.locations).values({slug:body.slug,nameEl:body.nameEl,nameEn:body.nameEn,nameRu:body.nameRu,nameUk:body.nameUk??null,parentId:body.parentId??null,order:body.order??0}).returning();await import_redis.redis.del(LOCATIONS_CACHE_KEY).catch(()=>{});return c.json(loc,201)});app.patch(\"/locations/:id\",import_auth.requireAdmin,async c=>{const body=await c.req.json();const updates={updatedAt:new Date};if(body.slug!==void 0)updates.slug=body.slug;if(body.nameEl!==void 0)updates.nameEl=body.nameEl;if(body.nameEn!==void 0)updates.nameEn=body.nameEn;if(body.nameRu!==void 0)updates.nameRu=body.nameRu;if(body.nameUk!==void 0)updates.nameUk=body.nameUk;if(body.parentId!==void 0)updates.parentId=body.parentId;if(body.order!==void 0)updates.order=body.order;if(body.isActive!==void 0)updates.isActive=body.isActive;const[updated]=await import_db.db.update(import_db2.locations).set(updates).where((0,import_drizzle_orm.eq)(import_db2.locations.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);await import_redis.redis.del(LOCATIONS_CACHE_KEY).catch(()=>{});return c.json(updated)});app.delete(\"/locations/:id\",import_auth.requireAdmin,async c=>{const[deleted]=await import_db.db.delete(import_db2.locations).where((0,import_drizzle_orm.eq)(import_db2.locations.id,c.req.param(\"id\"))).returning();if(!deleted)return c.json({error:\"Not found\"},404);await import_redis.redis.del(LOCATIONS_CACHE_KEY).catch(()=>{});return c.json({ok:true})});app.get(\"/ai-logs\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||50),200);const offset=(page-1)*limit;const[rows,[{total}]]=await Promise.all([import_db.db.select().from(import_db2.aiLogs).orderBy((0,import_drizzle_orm.desc)(import_db2.aiLogs.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.aiLogs)]);return c.json({data:rows,total,page,limit})});app.get(\"/notification-logs\",import_auth.requireAdmin,async c=>{const page=Number(c.req.query(\"page\")||1);const limit=Math.min(Number(c.req.query(\"limit\")||50),200);const offset=(page-1)*limit;const type=c.req.query(\"type\")||\"\";const dateFrom=c.req.query(\"dateFrom\")||\"\";const dateTo=c.req.query(\"dateTo\")||\"\";const filters=[type?(0,import_drizzle_orm.eq)(import_db2.notifications.type,type):void 0,dateFrom?(0,import_drizzle_orm.gte)(import_db2.notifications.createdAt,new Date(dateFrom)):void 0,dateTo?(0,import_drizzle_orm.lte)(import_db2.notifications.createdAt,new Date(dateTo+\"T23:59:59\")):void 0].filter(Boolean);const where=filters.length?(0,import_drizzle_orm.and)(...filters):void 0;const[rows,[{total}],types]=await Promise.all([import_db.db.select({n:import_db2.notifications,recipientEmail:import_db2.users.email,recipientName:import_db2.users.name}).from(import_db2.notifications).leftJoin(import_db2.users,(0,import_drizzle_orm.eq)(import_db2.notifications.recipientId,import_db2.users.id)).where(where).orderBy((0,import_drizzle_orm.desc)(import_db2.notifications.createdAt)).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(import_db2.notifications).where(where),import_db.db.selectDistinct({type:import_db2.notifications.type}).from(import_db2.notifications)]);return c.json({data:rows.map(r=>({...r.n,recipientEmail:r.recipientEmail,recipientName:r.recipientName})),total,page,limit,notifTypes:types.map(t=>t.type)})});app.get(\"/notification-stats\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select({day:import_drizzle_orm.sql`to_char(${import_db2.notifications.createdAt}, 'YYYY-MM-DD')`,count:import_drizzle_orm.sql`cast(count(*) as int)`}).from(import_db2.notifications).where((0,import_drizzle_orm.gte)(import_db2.notifications.createdAt,new Date(Date.now()-30*24*60*60*1e3))).groupBy(import_drizzle_orm.sql`to_char(${import_db2.notifications.createdAt}, 'YYYY-MM-DD')`).orderBy(import_drizzle_orm.sql`to_char(${import_db2.notifications.createdAt}, 'YYYY-MM-DD')`);return c.json(rows)});app.get(\"/mail-stats\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select({day:import_drizzle_orm.sql`to_char(${import_db2.activityLogs.createdAt}, 'YYYY-MM-DD')`,count:import_drizzle_orm.sql`cast(count(*) as int)`}).from(import_db2.activityLogs).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.ilike)(import_db2.activityLogs.event,\"email.%\"),(0,import_drizzle_orm.gte)(import_db2.activityLogs.createdAt,new Date(Date.now()-30*24*60*60*1e3)))).groupBy(import_drizzle_orm.sql`to_char(${import_db2.activityLogs.createdAt}, 'YYYY-MM-DD')`).orderBy(import_drizzle_orm.sql`to_char(${import_db2.activityLogs.createdAt}, 'YYYY-MM-DD')`);return c.json(rows)});app.get(\"/plans\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.plans).orderBy((0,import_drizzle_orm.asc)(import_db2.plans.order),(0,import_drizzle_orm.asc)(import_db2.plans.name));return c.json(rows)});app.post(\"/plans\",import_auth.requireAdmin,async c=>{const body=await c.req.json();if(body.isDefault){await import_db.db.update(import_db2.plans).set({isDefault:false}).where((0,import_drizzle_orm.eq)(import_db2.plans.isDefault,true))}const[plan]=await import_db.db.insert(import_db2.plans).values({name:body.name,description:body.description??null,role:body.role??\"customer\",tier:body.tier??\"free\",price:body.price??\"0\",oldPrice:body.oldPrice??null,currency:body.currency??\"EUR\",maxTasks:body.maxTasks??null,maxOffers:body.maxOffers??null,maxCards:body.maxCards??null,maxMessagesPerDay:body.maxMessagesPerDay??null,maxOrdersPerDay:body.maxOrdersPerDay??null,maxSkills:body.maxSkills??null,maxProfiles:body.maxProfiles??null,maxPortfolioItems:body.maxPortfolioItems??null,durationDays:body.durationDays??null,notifyNewTasks:body.notifyNewTasks??false,searchBoost:body.searchBoost??0,offersMultiplier:body.offersMultiplier??\"1.00\",canContactFreePlan:body.canContactFreePlan??false,canContactProPlan:body.canContactProPlan??true,canContactAll:body.canContactAll??false,canShowContactInfo:body.canShowContactInfo??false,canViewPhone:body.canViewPhone??false,canUploadVideo:body.canUploadVideo??false,hasFavorites:body.hasFavorites??false,hasGoogleCalendar:body.hasGoogleCalendar??false,hasVerifiedBadge:body.hasVerifiedBadge??false,highlightedReviews:body.highlightedReviews??false,hasPersonalSite:body.hasPersonalSite??false,hasCanHelpNowStatus:body.hasCanHelpNowStatus??false,hasNeedHelpStatus:body.hasNeedHelpStatus??false,hasAutoResponse:body.hasAutoResponse??false,hasAutoMatch:body.hasAutoMatch??false,hasPriceList:body.hasPriceList??false,receiveInstantDispatchFree:body.receiveInstantDispatchFree??false,receiveInstantDispatchPro:body.receiveInstantDispatchPro??false,features:body.features??[],isDefault:body.isDefault??false,isActive:body.isActive??true,order:body.order??0}).returning();return c.json(plan,201)});app.patch(\"/plans/:id\",import_auth.requireAdmin,async c=>{const body=await c.req.json();if(body.isDefault){await import_db.db.update(import_db2.plans).set({isDefault:false}).where((0,import_drizzle_orm.eq)(import_db2.plans.isDefault,true))}const updates={updatedAt:new Date};if(body.name!==void 0)updates.name=body.name;if(body.description!==void 0)updates.description=body.description;if(body.role!==void 0)updates.role=body.role;if(body.tier!==void 0)updates.tier=body.tier;if(body.price!==void 0)updates.price=body.price;if(body.oldPrice!==void 0)updates.oldPrice=body.oldPrice;if(body.currency!==void 0)updates.currency=body.currency;if(body.maxTasks!==void 0)updates.maxTasks=body.maxTasks;if(body.maxOffers!==void 0)updates.maxOffers=body.maxOffers;if(body.maxCards!==void 0)updates.maxCards=body.maxCards;if(body.maxMessagesPerDay!==void 0)updates.maxMessagesPerDay=body.maxMessagesPerDay;if(body.maxOrdersPerDay!==void 0)updates.maxOrdersPerDay=body.maxOrdersPerDay;if(body.maxSkills!==void 0)updates.maxSkills=body.maxSkills;if(body.maxProfiles!==void 0)updates.maxProfiles=body.maxProfiles;if(body.maxPortfolioItems!==void 0)updates.maxPortfolioItems=body.maxPortfolioItems;if(body.durationDays!==void 0)updates.durationDays=body.durationDays;if(body.notifyNewTasks!==void 0)updates.notifyNewTasks=body.notifyNewTasks;if(body.searchBoost!==void 0)updates.searchBoost=body.searchBoost;if(body.offersMultiplier!==void 0)updates.offersMultiplier=body.offersMultiplier;if(body.canContactFreePlan!==void 0)updates.canContactFreePlan=body.canContactFreePlan;if(body.canContactProPlan!==void 0)updates.canContactProPlan=body.canContactProPlan;if(body.canContactAll!==void 0)updates.canContactAll=body.canContactAll;if(body.canShowContactInfo!==void 0)updates.canShowContactInfo=body.canShowContactInfo;if(body.canViewPhone!==void 0)updates.canViewPhone=body.canViewPhone;if(body.canUploadVideo!==void 0)updates.canUploadVideo=body.canUploadVideo;if(body.hasFavorites!==void 0)updates.hasFavorites=body.hasFavorites;if(body.hasGoogleCalendar!==void 0)updates.hasGoogleCalendar=body.hasGoogleCalendar;if(body.hasVerifiedBadge!==void 0)updates.hasVerifiedBadge=body.hasVerifiedBadge;if(body.highlightedReviews!==void 0)updates.highlightedReviews=body.highlightedReviews;if(body.hasPersonalSite!==void 0)updates.hasPersonalSite=body.hasPersonalSite;if(body.hasCanHelpNowStatus!==void 0)updates.hasCanHelpNowStatus=body.hasCanHelpNowStatus;if(body.hasNeedHelpStatus!==void 0)updates.hasNeedHelpStatus=body.hasNeedHelpStatus;if(body.hasAutoResponse!==void 0)updates.hasAutoResponse=body.hasAutoResponse;if(body.hasAutoMatch!==void 0)updates.hasAutoMatch=body.hasAutoMatch;if(body.hasPriceList!==void 0)updates.hasPriceList=body.hasPriceList;if(body.receiveInstantDispatchFree!==void 0)updates.receiveInstantDispatchFree=body.receiveInstantDispatchFree;if(body.receiveInstantDispatchPro!==void 0)updates.receiveInstantDispatchPro=body.receiveInstantDispatchPro;if(body.features!==void 0)updates.features=body.features;if(body.isDefault!==void 0)updates.isDefault=body.isDefault;if(body.isActive!==void 0)updates.isActive=body.isActive;if(body.order!==void 0)updates.order=body.order;const[updated]=await import_db.db.update(import_db2.plans).set(updates).where((0,import_drizzle_orm.eq)(import_db2.plans.id,c.req.param(\"id\"))).returning();if(!updated)return c.json({error:\"Not found\"},404);return c.json(updated)});app.delete(\"/plans/:id\",import_auth.requireAdmin,async c=>{const[deleted]=await import_db.db.delete(import_db2.plans).where((0,import_drizzle_orm.eq)(import_db2.plans.id,c.req.param(\"id\"))).returning();if(!deleted)return c.json({error:\"Not found\"},404);return c.json({ok:true})});app.get(\"/settings\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.settings);const kv={};for(const r of rows)kv[r.key]=r.value;return c.json(kv)});app.put(\"/settings\",import_auth.requireAdmin,async c=>{const body=await c.req.json();if(typeof body!==\"object\"||body===null)return c.json({error:\"Invalid body\"},400);const ALLOWED_PREFIXES=[\"general.\",\"smtp.\",\"payment.\",\"seo.\",\"social.\",\"telegram.\"];const ALLOWED_EXACT=[\"referral_enabled\",\"referral_plan_id\",\"referral_days\",\"referral_customer_plan_id\",\"referral_customer_days\",\"referral_specialist_plan_id\",\"referral_specialist_days\"];const entries=Object.entries(body).filter(([k])=>ALLOWED_PREFIXES.some(p=>k.startsWith(p))||ALLOWED_EXACT.includes(k));if(entries.length===0)return c.json({ok:true});await Promise.all(entries.map(([key,value])=>import_db.db.insert(import_db2.settings).values({key,value,updatedAt:new Date}).onConflictDoUpdate({target:import_db2.settings.key,set:{value,updatedAt:new Date}})));(0,import_email.invalidateEmailCache)();if(entries.some(([k])=>k.startsWith(\"telegram.\"))){const{invalidateTelegramCache}=await import(\"../lib/telegram.js\").then(s=>{const e=\"default\";return s[e]&&typeof s[e]==\"object\"&&\"__esModule\"in s[e]?s[e]:s});invalidateTelegramCache()}return c.json({ok:true})});app.get(\"/public-settings\",async c=>{const[showPricing]=await import_db.db.select({value:import_db2.settings.value}).from(import_db2.settings).where((0,import_drizzle_orm.eq)(import_db2.settings.key,\"general.showPricing\"));return c.json({showPricing:showPricing?.value!==\"false\"})});app.get(\"/settings/templates\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.emailTemplates);return c.json(rows)});app.put(\"/settings/templates/:key\",import_auth.requireAdmin,async c=>{const key=c.req.param(\"key\");const BASE_KEYS=[\"email_verification\",\"registration_success\",\"password_reset\",\"new_offer\",\"new_task\",\"offer_accepted\",\"new_message\",\"offer_declined\",\"offer_other_accepted\",\"task_updated\",\"deadline_reminder\",\"task_archived\",\"referral_reward\",\"plan_activated\",\"plan_upgraded\",\"plan_downgrade_scheduled\",\"plan_downgrade_applied\",\"plan_renewal_reminder\",\"plan_insufficient_funds\"];const VALID_KEYS=[...BASE_KEYS,...BASE_KEYS.flatMap(k=>[\"el\",\"en\",\"ru\",\"uk\"].map(l=>`${k}_${l}`))];if(!VALID_KEYS.includes(key))return c.json({error:\"Unknown template key\"},400);const{subject,body:bodyText}=await c.req.json();await import_db.db.insert(import_db2.emailTemplates).values({key,subject:subject??\"\",body:bodyText??\"\",updatedAt:new Date}).onConflictDoUpdate({target:import_db2.emailTemplates.key,set:{subject:subject??\"\",body:bodyText??\"\",updatedAt:new Date}});const[updated]=await import_db.db.select().from(import_db2.emailTemplates).where((0,import_drizzle_orm.eq)(import_db2.emailTemplates.key,key));return c.json(updated)});app.post(\"/settings/templates/translate\",import_auth.requireAdmin,async c=>{const{subject,body:bodyText,fromLocale}=await c.req.json();if(!subject&&!bodyText)return c.json({error:\"subject or body required\"},400);if(![\"el\",\"en\",\"ru\",\"uk\"].includes(fromLocale))return c.json({error:\"invalid locale\"},400);const targets=[\"el\",\"en\",\"ru\",\"uk\"].filter(l=>l!==fromLocale);const results={};await Promise.all(targets.map(async loc=>{const subjectResult=subject?await(0,import_translate.translateTask)(subject,\"\",fromLocale,loc):null;const bodyResult=bodyText?await(0,import_translate.translateTask)(\"\",bodyText,fromLocale,loc):null;results[loc]={subject:subjectResult?.title??subject,body:bodyResult?.description??bodyText}}));return c.json(results)});app.post(\"/settings/test-email\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const to=admin?.email;if(!to)return c.json({error:\"No admin email\"},400);try{const{emailWelcome}=await import(\"../lib/email.js\").then(s=>{const e=\"default\";return s[e]&&typeof s[e]==\"object\"&&\"__esModule\"in s[e]?s[e]:s});await emailWelcome({to,name:admin.firstName||admin.name||\"Admin\",role:\"customer\",locale:admin.locale||\"el\"});await(0,import_activity.logActivity)({userId:admin.id,event:\"admin.email.test.sent\",details:{to}});return c.json({ok:true,to})}catch(err){await(0,import_activity.logActivity)({userId:admin.id,event:\"admin.email.test.failed\",details:{to,error:err instanceof Error?err.message:String(err)}});return c.json({error:err instanceof Error?err.message:\"Failed to send test email\"},500)}});app.post(\"/settings/test-telegram\",import_auth.requireAdmin,async c=>{const admin=c.get(\"user\");const body=await c.req.json().catch(()=>({}));if(!body.botToken||!body.chatId)return c.json({ok:false,error:\"botToken and chatId are required\"});try{const{testTelegramConnection}=await import(\"../lib/telegram.js\").then(s=>{const e=\"default\";return s[e]&&typeof s[e]==\"object\"&&\"__esModule\"in s[e]?s[e]:s});const result=await testTelegramConnection(body.botToken,body.chatId);if(result.ok){await(0,import_activity.logActivity)({userId:admin.id,event:\"admin.telegram.test.ok\",details:{chatId:body.chatId,locale:body.locale,bot:result.botName}});return c.json({ok:true,botName:result.botName})}else{return c.json({ok:false,error:result.error})}}catch(err){return c.json({ok:false,error:err instanceof Error?err.message:String(err)})}});app.post(\"/settings/verify-telegram-token\",import_auth.requireAdmin,async c=>{const body=await c.req.json().catch(()=>({}));if(!body.botToken)return c.json({ok:false,error:\"botToken is required\"});try{const res=await fetch(`https://api.telegram.org/bot${body.botToken}/getMe`);const data=await res.json();if(!data.ok)return c.json({ok:false,error:data.description??\"Invalid token\"});const botName=data.result?.username||data.result?.first_name||\"Bot\";return c.json({ok:true,botName})}catch(err){return c.json({ok:false,error:err instanceof Error?err.message:String(err)})}});app.get(\"/seo-public\",async c=>{const rows=await import_db.db.select().from(import_db2.settings);const kv={};for(const r of rows){if(r.key.startsWith(\"seo.\"))kv[r.key]=r.value}return c.json(kv)});app.get(\"/social-public\",async c=>{const rows=await import_db.db.select().from(import_db2.settings);const kv={};for(const r of rows){if(r.key.startsWith(\"social.\")&&r.value)kv[r.key]=r.value}return c.json(kv)});const execFileAsync=(0,import_node_util.promisify)(import_node_child_process.execFile);const _backupDir=process.env.BACKUP_DIR?import_node_path.default.resolve(process.env.BACKUP_DIR):import_node_path.default.resolve(import_node_path.default.dirname((0,import_node_url.fileURLToPath)(\"file:///opt/canhelp/apps/api/src/routes/admin.ts\")),\"../../backups\");if(!import_node_fs.default.existsSync(_backupDir)){import_node_fs.default.mkdirSync(_backupDir,{recursive:true})}function _parseDatabaseUrl(url){const parsed=new URL(url);return{host:parsed.hostname||\"localhost\",port:parsed.port||\"5432\",user:parsed.username,password:process.env.DB_PASSWORD||decodeURIComponent(parsed.password),database:parsed.pathname.replace(/^\\//,\"\")}}__name(_parseDatabaseUrl,\"_parseDatabaseUrl\");async function _pgDump(tableName){const dbUrl=process.env.DATABASE_URL||\"\";const{host,port,user,password,database}=_parseDatabaseUrl(dbUrl);const args=[\"-h\",host,\"-p\",port,\"-U\",user,\"-d\",database,\"--no-password\",\"--clean\",\"--if-exists\"];if(tableName)args.push(\"-t\",tableName);const{stdout}=await execFileAsync(\"pg_dump\",args,{env:{...process.env,PGPASSWORD:password},maxBuffer:200*1024*1024});return new Promise((resolve,reject)=>import_node_zlib.default.gzip(Buffer.from(stdout),(err,buf)=>err?reject(err):resolve(buf)))}__name(_pgDump,\"_pgDump\");async function _psqlRestore(sqlGzBuffer){const dbUrl=process.env.DATABASE_URL||\"\";const{host,port,user,password,database}=_parseDatabaseUrl(dbUrl);const sql2=await new Promise((resolve,reject)=>import_node_zlib.default.gunzip(sqlGzBuffer,(err,buf)=>err?reject(err):resolve(buf)));await new Promise((resolve,reject)=>{const child=(0,import_node_child_process.spawn)(\"psql\",[\"-h\",host,\"-p\",port,\"-U\",user,\"-d\",database,\"--no-password\"],{env:{...process.env,PGPASSWORD:password}});let stderr=\"\";child.stderr.on(\"data\",d=>{stderr+=d.toString()});child.on(\"close\",code=>{if(code!==0)reject(new Error(`psql exited ${code}: ${stderr}`));else resolve()});child.on(\"error\",reject);child.stdin.write(sql2);child.stdin.end()})}__name(_psqlRestore,\"_psqlRestore\");app.get(\"/backup/tables\",import_auth.requireAdmin,async c=>{const result=await import_db.db.execute(import_drizzle_orm.sql`SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE' ORDER BY table_name`);const tables=result.rows.map(r=>r.table_name);return c.json({tables})});app.get(\"/backup/settings\",import_auth.requireAdmin,async c=>{const rows=await import_db.db.select().from(import_db2.settings).where(import_drizzle_orm.sql`${import_db2.settings.key} LIKE 'backup.%'`);const kv={};for(const r of rows)kv[r.key]=r.value;return c.json({autoEnabled:kv[\"backup.autoEnabled\"]===\"true\",lastBackup:kv[\"backup.lastBackup\"]||null})});app.put(\"/backup/settings\",import_auth.requireAdmin,async c=>{const body=await c.req.json();if(body.autoEnabled!==void 0){await import_db.db.insert(import_db2.settings).values({key:\"backup.autoEnabled\",value:String(body.autoEnabled),updatedAt:new Date}).onConflictDoUpdate({target:import_db2.settings.key,set:{value:String(body.autoEnabled),updatedAt:new Date}})}return c.json({ok:true})});app.get(\"/backup/list\",import_auth.requireAdmin,async c=>{const names=[\"backup_today\",\"backup_yesterday\"];const files=names.map(name=>{const fp=import_node_path.default.join(_backupDir,`${name}.sql.gz`);if(!import_node_fs.default.existsSync(fp))return null;const stat=import_node_fs.default.statSync(fp);return{name,size:stat.size,date:stat.mtime.toISOString()}}).filter(Boolean);return c.json({files})});app.get(\"/backup/export\",import_auth.requireAdmin,async c=>{try{const buf=await _pgDump();return new Response(buf,{headers:{\"Content-Type\":\"application/gzip\",\"Content-Disposition\":`attachment; filename=\"backup_${new Date().toISOString().slice(0,10)}.sql.gz\"`,\"Content-Length\":String(buf.length)}})}catch(err){console.error(\"[BackupExport] error\",err);return c.json({error:err instanceof Error?err.message:\"Export failed\"},500)}});app.get(\"/backup/export/:table\",import_auth.requireAdmin,async c=>{const table=c.req.param(\"table\");if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(table)){return c.json({error:\"Invalid table name\"},400)}try{const buf=await _pgDump(table);return new Response(buf,{headers:{\"Content-Type\":\"application/gzip\",\"Content-Disposition\":`attachment; filename=\"${table}_${new Date().toISOString().slice(0,10)}.sql.gz\"`,\"Content-Length\":String(buf.length)}})}catch(err){console.error(\"[BackupExport] table error\",err);return c.json({error:err instanceof Error?err.message:\"Export failed\"},500)}});app.post(\"/backup/import\",import_auth.requireAdmin,async c=>{try{const formData=await c.req.formData();const file=formData.get(\"file\");if(!file)return c.json({error:\"No file provided\"},400);const buf=Buffer.from(await file.arrayBuffer());await _psqlRestore(buf);return c.json({ok:true})}catch(err){console.error(\"[BackupImport] error\",err);return c.json({error:err instanceof Error?err.message:\"Import failed\"},500)}});app.post(\"/backup/import/:table\",import_auth.requireAdmin,async c=>{const table=c.req.param(\"table\");if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(table)){return c.json({error:\"Invalid table name\"},400)}try{const formData=await c.req.formData();const file=formData.get(\"file\");if(!file)return c.json({error:\"No file provided\"},400);const buf=Buffer.from(await file.arrayBuffer());await _psqlRestore(buf);return c.json({ok:true})}catch(err){console.error(\"[BackupImport] table error\",err);return c.json({error:err instanceof Error?err.message:\"Import failed\"},500)}});app.post(\"/backup/restore\",import_auth.requireAdmin,async c=>{const{name}=await c.req.json();if(![\"backup_today\",\"backup_yesterday\"].includes(name)){return c.json({error:\"Invalid backup name\"},400)}const fp=import_node_path.default.join(_backupDir,`${name}.sql.gz`);if(!import_node_fs.default.existsSync(fp))return c.json({error:\"Backup file not found\"},404);try{const buf=import_node_fs.default.readFileSync(fp);await _psqlRestore(buf);return c.json({ok:true})}catch(err){console.error(\"[BackupRestore] error\",err);return c.json({error:err instanceof Error?err.message:\"Restore failed\"},500)}});const TRANSLATION_LANGS=[\"el\",\"en\",\"ru\",\"uk\"];const TABLE_CONFIG={categories:{table:import_db2.categories,fields:{el:\"namesEl\",en:\"namesEn\",ru:\"namesRu\",uk:\"namesUk\"},displayField:\"namesEl\"},locations:{table:import_db2.locations,fields:{el:\"nameEl\",en:\"nameEn\",ru:\"nameRu\",uk:\"nameUk\"},displayField:\"nameEl\"},skill_suggestions:{table:import_db2.skillSuggestions,fields:{el:\"nameEl\",en:\"nameEn\",ru:\"nameRu\",uk:\"nameUk\"},displayField:\"nameEl\"},specialist_cards:{table:import_db2.specialistCards,fields:{el:\"descriptionEl\",en:\"descriptionEn\",ru:\"descriptionRu\",uk:\"descriptionUk\"},displayField:\"descriptionEl\"}};app.get(\"/translations/stats\",import_auth.requireAdmin,async c=>{const[catStats]=await import_db.db.select({total:(0,import_drizzle_orm.count)(),missingEl:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE names_el IS NULL OR names_el = '')`,missingEn:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE names_en IS NULL OR names_en = '')`,missingRu:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE names_ru IS NULL OR names_ru = '')`,missingUk:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE names_uk IS NULL OR names_uk = '')`}).from(import_db2.categories);const[locStats]=await import_db.db.select({total:(0,import_drizzle_orm.count)(),missingEl:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_el IS NULL OR name_el = '')`,missingEn:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_en IS NULL OR name_en = '')`,missingRu:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_ru IS NULL OR name_ru = '')`,missingUk:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_uk IS NULL OR name_uk = '')`}).from(import_db2.locations);const[skillStats]=await import_db.db.select({total:(0,import_drizzle_orm.count)(),missingEl:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_el IS NULL OR name_el = '')`,missingEn:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_en IS NULL OR name_en = '')`,missingRu:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_ru IS NULL OR name_ru = '')`,missingUk:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE name_uk IS NULL OR name_uk = '')`}).from(import_db2.skillSuggestions);const[cardStats]=await import_db.db.select({total:(0,import_drizzle_orm.count)(),missingEl:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE (description_el IS NULL OR description_el = '') AND (original_locale != 'el' OR (description IS NULL OR description = '')))`,missingEn:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE (description_en IS NULL OR description_en = '') AND original_locale != 'en')`,missingRu:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE (description_ru IS NULL OR description_ru = '') AND original_locale != 'ru')`,missingUk:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE (description_uk IS NULL OR description_uk = '') AND original_locale != 'uk')`}).from(import_db2.specialistCards);const[taskStats]=await import_db.db.select({total:(0,import_drizzle_orm.count)(),missingEl:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE title_el IS NULL OR title_el = '')`,missingEn:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE title_en IS NULL OR title_en = '')`,missingRu:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE title_ru IS NULL OR title_ru = '')`,missingUk:import_drizzle_orm.sql`COUNT(*) FILTER (WHERE title_uk IS NULL OR title_uk = '')`}).from(import_db2.tasks);const EMAIL_BASE_KEYS_STATS=[\"email_verification\",\"registration_success\",\"password_reset\",\"new_offer\",\"new_task\",\"offer_accepted\",\"new_message\",\"offer_declined\",\"offer_other_accepted\",\"task_updated\",\"deadline_reminder\",\"task_archived\",\"referral_reward\",\"plan_activated\",\"plan_upgraded\",\"plan_downgrade_scheduled\",\"plan_downgrade_applied\",\"plan_renewal_reminder\",\"plan_insufficient_funds\"];const emailRows=await import_db.db.select({key:import_db2.emailTemplates.key}).from(import_db2.emailTemplates);const emailKeySet=new Set(emailRows.map(r=>r.key));const emailTotal=EMAIL_BASE_KEYS_STATS.length;const emailMissingEl=EMAIL_BASE_KEYS_STATS.filter(k=>!emailKeySet.has(`${k}_el`)).length;const emailMissingEn=EMAIL_BASE_KEYS_STATS.filter(k=>!emailKeySet.has(`${k}_en`)).length;const emailMissingRu=EMAIL_BASE_KEYS_STATS.filter(k=>!emailKeySet.has(`${k}_ru`)).length;const emailMissingUk=EMAIL_BASE_KEYS_STATS.filter(k=>!emailKeySet.has(`${k}_uk`)).length;return c.json({tables:[{name:\"categories\",label:\"Categories\",total:Number(catStats.total),missing:{el:Number(catStats.missingEl),en:Number(catStats.missingEn),ru:Number(catStats.missingRu),uk:Number(catStats.missingUk)}},{name:\"locations\",label:\"Locations\",total:Number(locStats.total),missing:{el:Number(locStats.missingEl),en:Number(locStats.missingEn),ru:Number(locStats.missingRu),uk:Number(locStats.missingUk)}},{name:\"skill_suggestions\",label:\"Skills\",total:Number(skillStats.total),missing:{el:Number(skillStats.missingEl),en:Number(skillStats.missingEn),ru:Number(skillStats.missingRu),uk:Number(skillStats.missingUk)}},{name:\"tasks\",label:\"Tasks\",total:Number(taskStats.total),missing:{el:Number(taskStats.missingEl),en:Number(taskStats.missingEn),ru:Number(taskStats.missingRu),uk:Number(taskStats.missingUk)}},{name:\"email_templates\",label:\"Email Templates\",total:emailTotal,missing:{el:emailMissingEl,en:emailMissingEn,ru:emailMissingRu,uk:emailMissingUk}},{name:\"specialist_cards\",label:\"Portfolio (Card descriptions)\",total:Number(cardStats.total),missing:{el:Number(cardStats.missingEl),en:Number(cardStats.missingEn),ru:Number(cardStats.missingRu),uk:Number(cardStats.missingUk)}}]})});app.post(\"/translations/auto-translate\",import_auth.requireAdmin,async c=>{const{table:tableName,missingLang,fromLang,batchSize=20}=await c.req.json();if(!TRANSLATION_LANGS.includes(missingLang)||!TRANSLATION_LANGS.includes(fromLang)){return c.json({error:\"Invalid language\"},400)}const cfg=TABLE_CONFIG[tableName];if(!cfg)return c.json({error:\"Unknown table\"},400);const missingFieldName=cfg.fields[missingLang];const fromFieldName=cfg.fields[fromLang];const missingCol=cfg.table[missingFieldName];const rows=await import_db.db.select().from(cfg.table).where((0,import_drizzle_orm.or)((0,import_drizzle_orm.isNull)(missingCol),(0,import_drizzle_orm.eq)(missingCol,\"\"))).limit(Math.min(batchSize,500));const rowsWithText=rows.map(row=>{const localeText=row[fromFieldName];const fallbackText=tableName===\"specialist_cards\"?row.description:void 0;return{row,text:localeText||fallbackText||\"\"}}).filter(r=>r.text);const translations=await(0,import_translate.translateStringsBatch)(rowsWithText.map(r=>r.text),fromLang,missingLang);let translated=0;let failed=rows.length-rowsWithText.length;await Promise.all(rowsWithText.map(async({row},i)=>{const result=translations[i];if(!result){failed++;return}await import_db.db.update(cfg.table).set({[missingFieldName]:result}).where((0,import_drizzle_orm.eq)(cfg.table.id,row.id));translated++}));if(tableName===\"categories\")await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{});if(tableName===\"locations\")await import_redis.redis.del(LOCATIONS_CACHE_KEY).catch(()=>{});return c.json({translated,failed,total:rows.length})});app.get(\"/translations/tasks-preview\",import_auth.requireAdmin,async c=>{const lang=c.req.query(\"lang\");const limit=Math.min(Number(c.req.query(\"limit\")??50),200);if(!lang||!TRANSLATION_LANGS.includes(lang)){return c.json({error:\"Invalid lang\"},400)}const cap=__name(s=>s.charAt(0).toUpperCase()+s.slice(1),\"cap\");const titleField=import_db2.tasks[`title${cap(lang)}`];const rows=await import_db.db.select({id:import_db2.tasks.id,title:import_db2.tasks.title,originalLocale:import_db2.tasks.originalLocale,titleEl:import_db2.tasks.titleEl,titleEn:import_db2.tasks.titleEn,titleRu:import_db2.tasks.titleRu,titleUk:import_db2.tasks.titleUk}).from(import_db2.tasks).where((0,import_drizzle_orm.or)((0,import_drizzle_orm.isNull)(titleField),(0,import_drizzle_orm.eq)(titleField,\"\"))).orderBy(import_db2.tasks.id).limit(limit);return c.json({lang,rows})});app.post(\"/translations/auto-translate-tasks\",import_auth.requireAdmin,async c=>{const{batchSize=500}=await c.req.json();const cap=__name(s=>s.charAt(0).toUpperCase()+s.slice(1),\"cap\");const langs=[\"el\",\"en\",\"ru\",\"uk\"];const rows=await import_db.db.select().from(import_db2.tasks).where((0,import_drizzle_orm.or)((0,import_drizzle_orm.isNull)(import_db2.tasks.titleEl),(0,import_drizzle_orm.eq)(import_db2.tasks.titleEl,\"\"),(0,import_drizzle_orm.isNull)(import_db2.tasks.titleEn),(0,import_drizzle_orm.eq)(import_db2.tasks.titleEn,\"\"),(0,import_drizzle_orm.isNull)(import_db2.tasks.titleRu),(0,import_drizzle_orm.eq)(import_db2.tasks.titleRu,\"\"),(0,import_drizzle_orm.isNull)(import_db2.tasks.titleUk),(0,import_drizzle_orm.eq)(import_db2.tasks.titleUk,\"\"))).limit(Math.min(batchSize,500));const translatedTaskIds=new Set;let failed=0;for(const toLang of langs){const titleField=`title${cap(toLang)}`;const descField=`description${cap(toLang)}`;const needLang=rows.filter(r=>{const val=r[titleField];return!val||val===\"\"});if(needLang.length===0)continue;const directCopy=needLang.filter(r=>(r.originalLocale??\"el\")===toLang);if(directCopy.length>0){await Promise.all(directCopy.map(async row=>{await import_db.db.update(import_db2.tasks).set({[titleField]:row.title,[descField]:row.description}).where((0,import_drizzle_orm.eq)(import_db2.tasks.id,row.id));translatedTaskIds.add(row.id)}))}const needTranslation=needLang.filter(r=>(r.originalLocale??\"el\")!==toLang);if(needTranslation.length===0)continue;const byLocale=new Map;for(const row of needTranslation){const loc=row.originalLocale??\"el\";if(!byLocale.has(loc))byLocale.set(loc,[]);byLocale.get(loc).push(row)}for(const[fromLocale,group]of byLocale.entries()){const titles=group.map(r=>r.title);const descriptions=group.map(r=>r.description);const[translatedTitles,translatedDescs]=await Promise.all([(0,import_translate.translateStringsBatch)(titles,fromLocale,toLang),(0,import_translate.translateStringsBatch)(descriptions,fromLocale,toLang)]);await Promise.all(group.map(async(row,i)=>{const t=translatedTitles[i];const d=translatedDescs[i];if(!t||!d){failed++;return}await import_db.db.update(import_db2.tasks).set({[titleField]:t,[descField]:d}).where((0,import_drizzle_orm.eq)(import_db2.tasks.id,row.id));translatedTaskIds.add(row.id)}))}}return c.json({translated:translatedTaskIds.size,failed,total:rows.length})});app.post(\"/translations/auto-translate-templates\",import_auth.requireAdmin,async c=>{const{missingLang,fromLang=\"el\"}=await c.req.json();if(!TRANSLATION_LANGS.includes(missingLang))return c.json({error:\"Invalid language\"},400);if(!TRANSLATION_LANGS.includes(fromLang))return c.json({error:\"Invalid fromLang\"},400);const EMAIL_BASE_KEYS_TRANS=[\"email_verification\",\"registration_success\",\"password_reset\",\"new_offer\",\"new_task\",\"offer_accepted\",\"new_message\",\"offer_declined\",\"offer_other_accepted\",\"task_updated\",\"deadline_reminder\",\"task_archived\",\"referral_reward\",\"plan_activated\",\"plan_upgraded\",\"plan_downgrade_scheduled\",\"plan_downgrade_applied\",\"plan_renewal_reminder\",\"plan_insufficient_funds\"];const existingRows=await import_db.db.select().from(import_db2.emailTemplates);const existingMap=new Map(existingRows.map(r=>[r.key,r]));const keysToTranslate=EMAIL_BASE_KEYS_TRANS.filter(k=>!existingMap.has(`${k}_${missingLang}`));const sourceEntries=keysToTranslate.map(k=>({key:k,row:existingMap.get(`${k}_${fromLang}`)??existingMap.get(k)})).filter(e=>!!e.row&&!!(e.row.subject||e.row.body));const subjects=sourceEntries.map(e=>e.row.subject??\"\");const bodies=sourceEntries.map(e=>e.row.body??\"\");const[translatedSubjects,translatedBodies]=await Promise.all([(0,import_translate.translateStringsBatch)(subjects.map(s=>s||\" \"),fromLang,missingLang),(0,import_translate.translateStringsBatch)(bodies.map(b=>b||\" \"),fromLang,missingLang)]);let translated=0;let failed=keysToTranslate.length-sourceEntries.length;await Promise.all(sourceEntries.map(async({key,row},i)=>{const subjectResult=translatedSubjects[i]??row.subject??\"\";const bodyResult=translatedBodies[i]??row.body??\"\";try{const targetKey=`${key}_${missingLang}`;await import_db.db.insert(import_db2.emailTemplates).values({key:targetKey,subject:subjectResult,body:bodyResult,updatedAt:new Date}).onConflictDoUpdate({target:import_db2.emailTemplates.key,set:{subject:subjectResult,body:bodyResult,updatedAt:new Date}});translated++}catch{failed++}}));return c.json({translated,failed,total:keysToTranslate.length})});app.get(\"/translations/:table\",import_auth.requireAdmin,async c=>{const tableName=c.req.param(\"table\");const missingLang=c.req.query(\"missingLang\")??\"uk\";const page=Math.max(1,parseInt(c.req.query(\"page\")??\"1\",10));const limit=Math.min(100,parseInt(c.req.query(\"limit\")??\"50\",10));const offset=(page-1)*limit;if(!TRANSLATION_LANGS.includes(missingLang))return c.json({error:\"Invalid language\"},400);const cfg=TABLE_CONFIG[tableName];if(!cfg)return c.json({error:\"Unknown table\"},400);const missingFieldName=cfg.fields[missingLang];const missingCol=cfg.table[missingFieldName];const[rows,[{total}]]=await Promise.all([import_db.db.select().from(cfg.table).where((0,import_drizzle_orm.or)((0,import_drizzle_orm.isNull)(missingCol),(0,import_drizzle_orm.eq)(missingCol,\"\"))).orderBy(cfg.table[cfg.displayField]).limit(limit).offset(offset),import_db.db.select({total:(0,import_drizzle_orm.count)()}).from(cfg.table).where((0,import_drizzle_orm.or)((0,import_drizzle_orm.isNull)(missingCol),(0,import_drizzle_orm.eq)(missingCol,\"\")))]);return c.json({rows,total:Number(total),page,limit})});app.post(\"/translations/:table/save\",import_auth.requireAdmin,async c=>{const tableName=c.req.param(\"table\");const cfg=TABLE_CONFIG[tableName];if(!cfg)return c.json({error:\"Unknown table\"},400);const{items}=await c.req.json();if(!Array.isArray(items)||items.length===0)return c.json({error:\"No items\"},400);const ALLOWED_FIELDS=new Set(Object.values(cfg.fields));let saved=0;for(const item of items){if(!item.id||!item.lang||!item.value?.trim())continue;const fieldName=cfg.fields[item.lang];if(!fieldName||!ALLOWED_FIELDS.has(fieldName))continue;await import_db.db.update(cfg.table).set({[fieldName]:item.value.trim()}).where((0,import_drizzle_orm.eq)(cfg.table.id,item.id));saved++}if(saved>0){if(tableName===\"categories\")await import_redis.redis.del(CATEGORIES_CACHE_KEY).catch(()=>{});if(tableName===\"locations\")await import_redis.redis.del(LOCATIONS_CACHE_KEY).catch(()=>{})}return c.json({saved})});app.get(\"/referrals\",import_auth.requireAdmin,async c=>{const rewards=await import_db.db.select().from(import_db2.referralRewards).orderBy((0,import_drizzle_orm.desc)(import_db2.referralRewards.createdAt));if(rewards.length===0){return c.json({totalReferrers:0,totalReferrals:0,activeRewards:0,tree:[]})}const userIds=[...new Set([...rewards.map(r=>r.referrerId),...rewards.map(r=>r.refereeId)])];const usersData=await import_db.db.select({id:import_db2.users.id,firstName:import_db2.users.firstName,lastName:import_db2.users.lastName,email:import_db2.users.email,referralCode:import_db2.users.referralCode}).from(import_db2.users).where((0,import_drizzle_orm.inArray)(import_db2.users.id,userIds));const userMap=Object.fromEntries(usersData.map(u=>[u.id,u]));const now=new Date;const activeRewards=rewards.filter(r=>r.expiresAt>now).length;const grouped=new Map;for(const r of rewards){if(!grouped.has(r.referrerId)){grouped.set(r.referrerId,{referrer:userMap[r.referrerId],referees:[]})}grouped.get(r.referrerId).referees.push({...userMap[r.refereeId],planId:r.planId,daysAdded:r.daysAdded,expiresAt:r.expiresAt,createdAt:r.createdAt})}const tree=[...grouped.values()].sort((a,b)=>b.referees.length-a.referees.length);return c.json({totalReferrers:grouped.size,totalReferrals:rewards.length,activeRewards,tree})});var admin_default=app;0&&(module.exports={_backupDir,_pgDump});\n})()\n","warnings":[],"map":{"version":3,"mappings":";igCAAA,kLAAqB,gBACrB,uBAAoG,uBACpG,cAAmB,oBACnB,IAAAA,WAA+Q,uBAC/Q,gBAAiD,iCACjD,iBAAsB,uBACtB,oBAA4B,8BAC5B,iBAAqC,2BACrC,qBAAsE,2BACtE,mBAAmC,6BACnC,gBAA+B,0BAC/B,iBAA2E,2BAC3E,8BAAgC,8BAChC,qBAA0B,qBAC1B,qBAAiB,8BACjB,mBAAe,4BACf,qBAAiB,8BACjB,oBAA8B,oBAE9B,MAAM,qBAAuB,qBAC7B,MAAM,oBAAsB,oBAE5B,MAAM,IAAM,IAAI,iBAGhB,IAAI,IAAI,SAAU,yBAAc,MAAO,GAAM,CAC3C,MAAM,cAAgB,IAAI,KAAK,KAAK,IAAI,EAAI,GAAK,GAAK,GAAK,GAAK,GAAI,EAEpE,KAAM,CACJ,CAAC,CAAE,SAAU,CAAC,EACd,CAAC,CAAE,eAAgB,CAAC,EACpB,CAAC,CAAE,SAAU,CAAC,EACd,CAAC,CAAE,UAAW,CAAC,EACf,CAAC,CAAE,WAAY,CAAC,EAChB,cACA,WACA,WACA,iBACA,YACA,aACF,EAAI,MAAM,QAAQ,IAAI,CACpB,aAAG,OAAO,CAAE,aAAW,0BAAM,CAAE,CAAC,EAAE,KAAK,gBAAK,EAC5C,aAAG,OAAO,CAAE,mBAAiB,kCAAc,2BAAgB,YAAY,CAAE,CAAC,EAAE,KAAK,0BAAe,EAAE,SAAM,uBAAG,2BAAgB,SAAU,IAAI,CAAC,EAC1I,aAAG,OAAO,CAAE,aAAW,0BAAM,CAAE,CAAC,EAAE,KAAK,gBAAK,EAC5C,aAAG,OAAO,CAAE,cAAY,0BAAM,CAAE,CAAC,EAAE,KAAK,iBAAM,EAC9C,aAAG,OAAO,CAAE,eAAa,0BAAM,CAAE,CAAC,EAAE,KAAK,kBAAO,EAChD,aAAG,OAAO,CAAE,OAAQ,iBAAM,OAAQ,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,gBAAK,EAAE,QAAQ,iBAAM,MAAM,EACpF,aACG,OAAO,CACN,IAAK,2CAAgC,iBAAM,SAAS,gBACpD,SAAO,0BAAM,CACf,CAAC,EACA,KAAK,gBAAK,EACV,SAAM,wBAAI,iBAAM,UAAW,aAAa,CAAC,EACzC,QAAQ,2CAAwB,iBAAM,SAAS,GAAG,EAClD,QAAQ,2CAAwB,iBAAM,SAAS,GAAG,EACrD,aACG,OAAO,CACN,IAAK,2CAAgC,iBAAM,SAAS,gBACpD,SAAO,0BAAM,CACf,CAAC,EACA,KAAK,gBAAK,EACV,SAAM,wBAAI,iBAAM,UAAW,aAAa,CAAC,EACzC,QAAQ,2CAAwB,iBAAM,SAAS,GAAG,EAClD,QAAQ,2CAAwB,iBAAM,SAAS,GAAG,EACrD,aACG,OAAO,CACN,IAAK,2CAAgC,2BAAgB,SAAS,gBAC9D,SAAO,kCAAc,2BAAgB,YAAY,CACnD,CAAC,EACA,KAAK,0BAAe,EACpB,SAAM,wBAAI,2BAAgB,UAAW,aAAa,CAAC,EACnD,QAAQ,2CAAwB,2BAAgB,SAAS,GAAG,EAC5D,QAAQ,2CAAwB,2BAAgB,SAAS,GAAG,EAC/D,aACG,OAAO,CACN,WAAY,sCAA2B,kBAAO,WAAW,QACzD,YAAa,sCAA2B,kBAAO,YAAY,QAC3D,UAAW,sCAA2B,kBAAO,OAAO,OACtD,CAAC,EACA,KAAK,iBAAM,EACd,aACG,OAAO,CACN,MAAO,6CAAkC,kBAAO,SAAS,gBACzD,MAAO,sCAA2B,kBAAO,WAAW,QACpD,OAAQ,sCAA2B,kBAAO,YAAY,OACxD,CAAC,EACA,KAAK,iBAAM,EACX,QAAQ,6CAA0B,kBAAO,SAAS,GAAG,EACrD,QAAQ,6CAA0B,kBAAO,SAAS,GAAG,CAE1D,CAAC,EAED,OAAO,EAAE,KAAK,CACZ,UACA,gBACA,UACA,WACA,YACA,cACA,WACA,WACA,iBACA,iBAAkB,OAAO,YAAY,CAAC,GAAG,YAAc,CAAC,EACxD,kBAAmB,OAAO,YAAY,CAAC,GAAG,aAAe,CAAC,EAC1D,aAAc,OAAO,YAAY,CAAC,GAAG,WAAa,CAAC,EACnD,aACF,CAAC,CACH,CAAC,EAGD,IAAI,IAAI,SAAU,yBAAc,MAAO,GAAM,CAC3C,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,EAAI,EAAE,IAAI,MAAM,GAAG,EACzB,MAAM,KAAO,EAAE,IAAI,MAAM,MAAM,EAE/B,MAAM,WAAa,CAAC,EACpB,GAAI,EAAG,WAAW,QAAK,0BAAG,0BAAM,iBAAM,KAAM,IAAI,CAAC,GAAG,KAAG,0BAAM,iBAAM,MAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EACpF,GAAI,MAAQ,CAAC,WAAY,aAAc,OAAO,EAAE,SAAS,IAAI,EAC3D,WAAW,QAAK,uBAAG,iBAAM,KAAM,IAA2C,CAAC,EAE7E,MAAM,MAAQ,WAAW,OAAS,KAAI,wBAAI,GAAG,UAAU,EAAI,OAE3D,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aAAG,OAAO,EAAE,KAAK,gBAAK,EAAE,MAAM,KAAK,EAAE,WAAQ,yBAAK,iBAAM,SAAS,CAAC,EAAE,MAAM,KAAK,EAAE,OAAO,MAAM,EAC9F,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,gBAAK,EAAE,MAAM,KAAK,CACvD,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,KAAM,CAAC,CAClD,CAAC,EAGD,IAAI,IAAI,aAAc,yBAAc,MAAO,GAAM,CAC/C,KAAM,CAAC,IAAI,EAAI,MAAM,aAClB,OAAO,EACP,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,MAAM,CAAC,EACV,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACpD,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,IAAI,8BAA+B,yBAAc,MAAO,GAAM,CAChE,MAAM,MAAQ,MAAM,aACjB,OAAO,EACP,KAAK,0BAAe,EACpB,SAAM,uBAAG,2BAAgB,aAAc,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACzD,WAAQ,wBAAI,2BAAgB,KAAK,CAAC,EACrC,OAAO,EAAE,KAAK,KAAK,CACrB,CAAC,EAGD,IAAI,IAAI,oBAAqB,yBAAc,MAAO,GAAM,CACtD,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EAEnC,MAAM,YACJ,SAAW,YACP,uBAAG,2BAAgB,kBAAmB,QAAQ,EAC9C,SAAW,aACT,uBAAG,2BAAgB,kBAAmB,SAAS,EAC/C,SAAW,SACT,yBAAM,2BAAgB,iBAAiB,4BACvC,OAEV,MAAM,UAAY,aACf,OAAO,CACN,GAAI,2BAAgB,GACpB,aAAc,2BAAgB,aAC9B,MAAO,2BAAgB,MACvB,YAAa,2BAAgB,YAC7B,OAAQ,2BAAgB,OACxB,WAAY,2BAAgB,WAC5B,UAAW,2BAAgB,UAC3B,kBAAmB,2BAAgB,kBACnC,SAAU,2BAAgB,SAC1B,MAAO,2BAAgB,MACvB,UAAW,2BAAgB,UAC3B,UAAW,2BAAgB,SAC7B,CAAC,EACA,KAAK,0BAAe,EAEvB,MAAM,KAAO,MAAO,YAAc,UAAU,MAAM,WAAW,EAAI,WAC9D,WAAQ,yBAAK,2BAAgB,SAAS,CAAC,EACvC,MAAM,KAAK,EACX,OAAO,MAAM,EAEhB,MAAM,WAAa,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,0BAAe,EACrE,KAAM,CAAC,CAAE,KAAM,CAAC,EAAI,MAAO,YAAc,WAAW,MAAM,WAAW,EAAI,YAEzE,MAAM,cAAgB,CAAC,GAAG,IAAI,IAAI,KAAK,IAAK,KAAQ,IAAI,YAAY,CAAC,CAAC,EACtE,MAAM,YAAc,cAAc,OAAS,EACvC,MAAM,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,KAAM,iBAAM,KAAM,MAAO,iBAAM,KAAM,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,4BAAQ,iBAAM,GAAI,aAAa,CAAC,EAC1H,CAAC,EACL,MAAM,cAAgB,OAAO,YAAY,YAAY,IAAK,GAAM,CAAC,EAAE,GAAI,CAAC,CAAC,CAAC,EAE1E,MAAM,mBAAqB,KAAK,SAAW,EACvC,CAAC,EACD,MAAM,aAAG,OAAO,EAAE,KAAK,8BAAmB,EAAE,SAAM,2BAClD,4BAAQ,+BAAoB,OAAQ,KAAK,IAAK,KAAQ,IAAI,EAAE,CAAC,KAC7D,uBAAG,+BAAoB,OAAQ,SAAS,CAC1C,CAAC,EACH,MAAM,kBAA+D,CAAC,EACtE,UAAW,cAAc,mBAAoB,EAC1C,kBAAkB,WAAW,MAAM,IAAM,CAAC,GAAG,KAAK,UAAU,CAC/D,CAEA,MAAM,KAAO,KAAK,IAAK,MAAS,CAC9B,GAAG,IACH,eAAgB,cAAc,IAAI,YAAY,GAAG,MAAQ,KACzD,gBAAiB,cAAc,IAAI,YAAY,GAAG,OAAS,KAC3D,oBAAqB,kBAAkB,IAAI,EAAE,GAAK,CAAC,CACrD,EAAE,EAEF,OAAO,EAAE,KAAK,CAAE,KAAM,MAAO,KAAM,KAAM,CAAC,CAC5C,CAAC,EAGD,IAAI,MAAM,wBAAyB,yBAAc,MAAO,GAAM,CAC5D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,OAAS,EAAE,IAAI,MAAM,IAAI,EAC/B,MAAM,KAAO,MAAM,EAAE,IAAI,KAMtB,EAEH,KAAM,CAAC,IAAI,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,0BAAe,EAAE,SAAM,uBAAG,2BAAgB,GAAI,MAAM,CAAC,EAAE,MAAM,CAAC,EACpG,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAEpD,KAAM,CAAC,UAAU,EAAI,MAAM,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,KAAM,iBAAM,KAAM,MAAO,iBAAM,KAAM,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,uBAAG,iBAAM,GAAI,KAAK,YAAY,CAAC,EAAE,MAAM,CAAC,EAEvJ,MAAM,QAA+B,CAAE,UAAW,IAAI,IAAO,EAC7D,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MACnD,GAAI,KAAK,cAAgB,OAAW,QAAQ,YAAc,KAAK,aAAe,KAC9E,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,aAAe,OAAW,QAAQ,WAAa,KAAK,WAC7D,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,oBAAsB,OAAW,CACxC,QAAQ,kBAAoB,KAAK,kBACjC,QAAQ,SAAW,KAAK,oBAAsB,QAChD,CACA,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,WAAa,QAAa,KAAK,oBAAsB,OAAW,CACvE,QAAQ,kBAAoB,KAAK,SAAW,SAAW,UACzD,CACA,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MAEnD,KAAM,CAAC,OAAO,EAAI,MAAM,aAAG,OAAO,0BAAe,EAAE,IAAI,OAAO,EAAE,SAAM,uBAAG,2BAAgB,GAAI,MAAM,CAAC,EAAE,UAAU,EAChH,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAEvD,GAAI,YAAc,QAAQ,oBAAsB,KAAK,kBAAmB,CACtE,GAAI,QAAQ,oBAAsB,SAAU,IAC1C,2CAA6B,WAAW,GAAI,QAAQ,MAAO,QAAQ,EAAE,EAAE,MAAO,KAAQ,CACpF,QAAQ,MAAM,iDAAkD,GAAG,CACrE,CAAC,CACH,SAAW,QAAQ,oBAAsB,WAAY,IACnD,2CAA6B,WAAW,GAAI,QAAQ,MAAO,QAAQ,GAAI,KAAK,cAAc,KAAK,GAAK,MAAS,EAAE,MAAO,KAAQ,CAC5H,QAAQ,MAAM,iDAAkD,GAAG,CACrE,CAAC,CACH,CACF,IAEA,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,gCAAiC,QAAS,CAAE,OAAQ,aAAc,KAAK,aAAc,aAAc,KAAK,cAAc,KAAK,GAAK,MAAU,CAAE,CAAC,EACrL,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAED,IAAI,MAAM,+DAAgE,yBAAc,MAAO,GAAM,CACnG,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAE,OAAQ,YAAa,EAAI,EAAE,IAAI,MAAM,EAC7C,MAAM,KAAO,MAAM,EAAE,IAAI,KAMtB,EACH,GAAI,CAAC,CAAC,MAAO,SAAU,QAAQ,EAAE,SAAS,KAAK,MAAM,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,gBAAiB,EAAG,GAAG,EAEtG,KAAM,CAAC,UAAU,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,8BAAmB,EAAE,SAAM,2BACrE,uBAAG,+BAAoB,GAAI,YAAY,KACvC,uBAAG,+BAAoB,OAAQ,MAAM,KACrC,uBAAG,+BAAoB,OAAQ,SAAS,CAC1C,CAAC,EACD,GAAI,CAAC,WAAY,OAAO,EAAE,KAAK,CAAE,MAAO,sBAAuB,EAAG,GAAG,EAErE,IAAI,SACJ,GAAI,KAAK,SAAW,MAAO,CACzB,GAAI,CAAC,KAAK,WAAY,OAAO,EAAE,KAAK,CAAE,MAAO,sBAAuB,EAAG,GAAG,EACzE,CAAC,QAAQ,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,qBAAU,EAAE,SAAM,uBAAG,sBAAW,GAAI,KAAK,UAAU,CAAC,EACzF,GAAI,CAAC,SAAU,OAAO,EAAE,KAAK,CAAE,MAAO,oBAAqB,EAAG,GAAG,CACnE,SAAW,KAAK,SAAW,SAAU,CACnC,MAAM,MAAQ,KAAK,MAAQ,WAAW,MACnC,YAAY,EACZ,KAAK,EACL,QAAQ,cAAe,GAAG,EAC1B,QAAQ,SAAU,EAAE,EACvB,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,0BAA2B,EAAG,GAAG,EACnE,KAAM,CAAC,SAAS,EAAI,MAAM,aAAG,OAAO,CAAE,GAAI,sBAAW,EAAG,CAAC,EAAE,KAAK,qBAAU,EAAE,SAAM,uBAAG,sBAAW,KAAM,IAAI,CAAC,EAC3G,GAAI,UAAW,OAAO,EAAE,KAAK,CAAE,MAAO,8BAA+B,EAAG,GAAG,EAC1E,CAAC,QAAQ,EAAI,MAAM,aAAG,OAAO,qBAAU,EAAE,OAAO,CAC/C,KACA,KAAM,KAAK,MAAQ,YACnB,SAAU,KAAK,UAAY,KAC3B,QAAS,WAAW,KACpB,QAAS,WAAW,KACpB,QAAS,WAAW,KACpB,QAAS,WAAW,IACtB,CAAC,EAAE,UAAU,EACb,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,CACtD,CAEA,KAAM,CAAC,IAAI,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,0BAAe,EAAE,SAAM,uBAAG,2BAAgB,GAAI,MAAM,CAAC,EAC3F,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,gBAAiB,EAAG,GAAG,EACzD,GAAI,SAAU,CACZ,MAAM,aAAG,OAAO,0BAAe,EAAE,IAAI,CACnC,WAAY,CAAC,GAAG,IAAI,IAAI,CAAC,GAAI,KAAK,YAAc,CAAC,EAAI,SAAS,IAAI,CAAC,CAAC,EACpE,UAAW,IAAI,IACjB,CAAC,EAAE,SAAM,uBAAG,2BAAgB,GAAI,MAAM,CAAC,CACzC,CAEA,KAAM,CAAC,OAAO,EAAI,MAAM,aAAG,OAAO,8BAAmB,EAAE,IAAI,CACzD,OAAQ,KAAK,SAAW,MAAQ,SAAW,KAAK,SAAW,SAAW,UAAY,WAClF,iBAAkB,UAAU,IAAM,KAClC,kBAAmB,MAAM,GACzB,UAAW,IAAI,IACjB,CAAC,EAAE,SAAM,uBAAG,+BAAoB,GAAI,YAAY,CAAC,EAAE,UAAU,KAC7D,6BAAY,CAAE,OAAQ,MAAM,GAAI,MAAO,qCAAsC,QAAS,CAAE,OAAQ,aAAc,OAAQ,KAAK,MAAO,CAAE,CAAC,EACrI,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,MAAM,wBAAyB,yBAAc,MAAO,GAAM,CAC5D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,IAAI,CAAE,SAAU,MAAO,UAAW,IAAI,IAAO,CAAC,EAC9C,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,wBAAyB,QAAS,CAAE,aAAc,QAAQ,GAAI,YAAa,QAAQ,KAAM,CAAE,CAAC,EACpI,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,MAAM,0BAA2B,yBAAc,MAAO,GAAM,CAC9D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,IAAI,CAAE,cAAe,KAAM,UAAW,IAAI,IAAO,CAAC,EAClD,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,4BAA6B,QAAS,CAAE,aAAc,QAAQ,GAAI,YAAa,QAAQ,KAAM,CAAE,CAAC,EACxI,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,MAAM,sBAAuB,yBAAc,MAAO,GAAM,CAC1D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,IAAI,CAAE,SAAU,KAAM,UAAW,IAAI,IAAO,CAAC,EAC7C,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,sBAAuB,QAAS,CAAE,aAAc,QAAQ,GAAI,YAAa,QAAQ,KAAM,CAAE,CAAC,EAClI,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,MAAM,kBAAmB,yBAAc,MAAO,GAAM,CACtD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAE,IAAK,EAAI,MAAM,EAAE,IAAI,KAAoD,EACjF,GAAI,CAAC,CAAC,WAAY,aAAc,OAAO,EAAE,SAAS,IAAI,EACpD,OAAO,EAAE,KAAK,CAAE,MAAO,cAAe,EAAG,GAAG,EAE9C,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,IAAI,CAAE,KAAM,UAAW,IAAI,IAAO,CAAC,EACnC,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,0BAA2B,QAAS,CAAE,aAAc,QAAQ,GAAI,YAAa,QAAQ,MAAO,QAAS,IAAK,CAAE,CAAC,EACrJ,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,MAAM,aAAc,yBAAc,MAAO,GAAM,CACjD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,KAAO,MAAM,EAAE,IAAI,KAkBtB,EAEH,MAAM,aAAe,EAAE,IAAI,MAAM,IAAI,EACrC,KAAM,CAAC,WAAW,EAAI,MAAM,aACzB,OAAO,CAAE,GAAI,iBAAM,GAAI,MAAO,iBAAM,KAAM,CAAC,EAC3C,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,GAAI,CAAC,YAAa,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAE3D,MAAM,cAAgB,OAAO,KAAK,IAAI,EAEtC,MAAM,QAAU,MAAM,aAAG,YAAY,MAAO,IAAO,CACjD,MAAM,QAA+B,CAAE,UAAW,IAAI,IAAO,EAC7D,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,OAAS,KAC5D,GAAI,KAAK,MAAQ,OAAW,QAAQ,IAAM,KAAK,KAAO,KACtD,GAAI,KAAK,OAAS,QAAa,CAAC,WAAY,aAAc,OAAO,EAAE,SAAS,KAAK,IAAI,EACnF,QAAQ,KAAO,KAAK,KACtB,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,QAAU,KAC/D,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,mBAAqB,OAAW,QAAQ,iBAAmB,KAAK,kBAAoB,KAC7F,GAAI,KAAK,kBAAoB,OAAW,QAAQ,gBAAkB,KAAK,gBACvE,GAAI,KAAK,iBAAmB,OAAW,QAAQ,eAAiB,KAAK,eACrE,GAAI,KAAK,gBAAkB,OAAW,QAAQ,cAAgB,KAAK,cACnE,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,uBAAyB,OAAW,QAAQ,qBAAuB,KAAK,qBACjF,GAAI,KAAK,sBAAwB,OAAW,QAAQ,oBAAsB,KAAK,oBAC/E,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aAEjE,KAAM,CAAC,QAAQ,EAAI,MAAM,GACtB,OAAO,gBAAK,EACZ,IAAI,OAAO,EACX,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,UAAU,EAEb,GAAI,CAAC,SAAU,OAAO,KAEtB,OAAO,QACT,CAAC,EAED,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,qBAAsB,QAAS,CAAE,aAAc,QAAQ,GAAI,YAAa,QAAQ,MAAO,QAAS,aAAc,CAAE,CAAC,EACzJ,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAED,IAAI,KAAK,2BAA4B,yBAAc,MAAO,GAAM,CAC9D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,aAAe,EAAE,IAAI,MAAM,IAAI,EACrC,MAAM,KAA2D,MAAM,EAAE,IACtE,KAAyD,EACzD,MAAM,KAAO,CAAC,EAAE,EACnB,MAAM,OAAS,OAAO,KAAK,MAAM,EAEjC,GAAI,CAAC,OAAO,SAAS,MAAM,GAAK,QAAU,EAAG,CAC3C,OAAO,EAAE,KAAK,CAAE,MAAO,+BAAgC,EAAG,GAAG,CAC/D,CAEA,KAAM,CAAC,UAAU,EAAI,MAAM,aACxB,OAAO,CAAE,GAAI,iBAAM,GAAI,MAAO,iBAAM,KAAM,CAAC,EAC3C,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,GAAI,CAAC,WAAY,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAE1D,MAAM,OAAS,MAAM,aAAG,YAAY,MAAO,IAAO,CAChD,MAAM,cAAgB,QAAM,mCAAmB,GAAI,CACjD,OAAQ,aACR,OACA,UAAW,SACX,KAAM,cACN,SAAU,MACV,YAAa,OAAO,IAAM,KAC1B,YAAa,KAAK,aAAa,KAAK,GAAK,eACzC,SAAU,CACR,OAAQ,aACV,CACF,CAAC,EAED,KAAM,CAAC,WAAW,EAAI,MAAM,GACzB,OAAO,EACP,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,MAAO,CAAE,YAAa,YAAa,cAAc,WAAY,CAC/D,CAAC,KAED,6BAAY,CACV,OAAQ,OAAO,GACf,MAAO,+BACP,QAAS,CACP,aACA,YAAa,WAAW,MACxB,OAAQ,OAAO,QAAQ,CAAC,EACxB,YAAa,KAAK,aAAa,KAAK,GAAK,IAC3C,CACF,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,OAAO,YAAa,YAAa,OAAO,WAAY,CAAC,CAC7E,CAAC,EAED,IAAI,KAAK,8BAA+B,yBAAc,MAAO,GAAM,CACjE,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,aAAe,EAAE,IAAI,MAAM,IAAI,EACrC,MAAM,KAA2D,MAAM,EAAE,IACtE,KAAyD,EACzD,MAAM,KAAO,CAAC,EAAE,EACnB,MAAM,OAAS,OAAO,KAAK,MAAM,EAEjC,GAAI,CAAC,OAAO,SAAS,MAAM,GAAK,QAAU,EAAG,CAC3C,OAAO,EAAE,KAAK,CAAE,MAAO,+BAAgC,EAAG,GAAG,CAC/D,CAEA,KAAM,CAAC,UAAU,EAAI,MAAM,aACxB,OAAO,CAAE,GAAI,iBAAM,GAAI,MAAO,iBAAM,KAAM,CAAC,EAC3C,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,GAAI,CAAC,WAAY,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAE1D,GAAI,CACF,MAAM,OAAS,MAAM,aAAG,YAAY,MAAO,IAAO,CAChD,MAAM,cAAgB,QAAM,mCAAmB,GAAI,CACjD,OAAQ,aACR,OACA,UAAW,QACX,KAAM,mBACN,SAAU,MACV,YAAa,OAAO,IAAM,KAC1B,YAAa,KAAK,aAAa,KAAK,GAAK,mBACzC,SAAU,CACR,OAAQ,cACR,OAAQ,UACV,CACF,CAAC,EAED,KAAM,CAAC,WAAW,EAAI,MAAM,GACzB,OAAO,EACP,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,MAAO,CAAE,YAAa,YAAa,cAAc,WAAY,CAC/D,CAAC,KAED,6BAAY,CACV,OAAQ,OAAO,GACf,MAAO,+BACP,QAAS,CACP,aACA,YAAa,WAAW,MACxB,OAAQ,OAAO,QAAQ,CAAC,EACxB,YAAa,KAAK,aAAa,KAAK,GAAK,IAC3C,CACF,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,OAAO,YAAa,YAAa,OAAO,WAAY,CAAC,CAC7E,OAAS,MAAO,CACd,MAAM,QAAU,iBAAiB,MAAQ,MAAM,QAAU,6BACzD,OAAO,EAAE,KAAK,CAAE,MAAO,OAAQ,EAAG,UAAY,uBAAyB,IAAM,GAAG,CAClF,CACF,CAAC,EAED,IAAI,IAAI,mBAAoB,yBAAc,MAAO,GAAM,CACrD,MAAM,KAAO,KAAK,IAAI,EAAG,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,CAAC,EACzD,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EACnC,MAAM,KAAO,EAAE,IAAI,MAAM,MAAM,EAE/B,MAAM,WAAa,CAAC,EACpB,GAAI,OAAQ,WAAW,QAAK,uBAAG,+BAAoB,OAAQ,MAAM,CAAC,EAClE,GAAI,MAAQ,CAAC,QAAS,gBAAiB,cAAe,kBAAkB,EAAE,SAAS,IAAI,EAAG,CACxF,WAAW,QAAK,uBAAG,+BAAoB,KAAM,IAAW,CAAC,CAC3D,CAEA,MAAM,MAAQ,WAAW,OAAS,KAAI,wBAAI,GAAG,UAAU,EAAI,OAE3D,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aACG,OAAO,CACN,GAAI,+BAAoB,GACxB,KAAM,+BAAoB,KAC1B,UAAW,+BAAoB,UAC/B,OAAQ,+BAAoB,OAC5B,cAAe,+BAAoB,cACnC,aAAc,+BAAoB,aAClC,SAAU,+BAAoB,SAC9B,YAAa,+BAAoB,YACjC,SAAU,+BAAoB,SAC9B,UAAW,+BAAoB,UAC/B,OAAQ,+BAAoB,OAC5B,YAAa,+BAAoB,YACjC,UAAW,+BAAoB,UAC/B,UAAW,iBAAM,MACjB,SAAU,iBAAM,IAClB,CAAC,EACA,KAAK,8BAAmB,EACxB,SAAS,oBAAO,uBAAG,+BAAoB,OAAQ,iBAAM,EAAE,CAAC,EACxD,MAAM,KAAK,EACX,WAAQ,yBAAK,+BAAoB,SAAS,CAAC,EAC3C,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,8BAAmB,EAAE,MAAM,KAAK,CACrE,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,KAAM,CAAC,CAClD,CAAC,EAGD,IAAI,KAAK,iBAAkB,yBAAc,MAAO,GAAM,CACpD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,aAAe,EAAE,IAAI,MAAM,IAAI,EAQrC,MAAM,KAAsB,MAAM,EAAE,IACjC,KAAoB,EACpB,MAAM,KAAO,CAAC,EAAmB,EAEpC,MAAM,MAAQ,KAAK,OAAO,KAAK,EAC/B,GAAI,CAAC,MAAO,OAAO,EAAE,KAAK,CAAE,MAAO,mBAAoB,EAAG,GAAG,EAE7D,KAAM,CAAC,UAAU,EAAI,MAAM,aACxB,OAAO,CAAE,GAAI,iBAAM,GAAI,MAAO,iBAAM,KAAM,CAAC,EAC3C,KAAK,gBAAK,EACV,SAAM,uBAAG,iBAAM,GAAI,YAAY,CAAC,EAChC,MAAM,CAAC,EAEV,GAAI,CAAC,WAAY,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EAE1D,MAAM,KAA+B,CAAE,GAAI,KAAK,MAAQ,CAAC,CAAG,EAC5D,GAAI,KAAK,MAAM,KAAK,EAAG,KAAK,KAAO,KAAK,KAAK,KAAK,EAClD,GAAI,KAAK,aAAa,KAAK,EAAG,KAAK,YAAc,KAAK,YAAY,KAAK,EAEvE,MAAM,OAAS,QAAM,4BAAe,aAAc,CAChD,MACA,KAAM,KAAK,MAAM,KAAK,GAAK,OAC3B,IACF,CAAC,KAED,6BAAY,CACV,OAAQ,OAAO,GACf,MAAO,kBACP,QAAS,CACP,aACA,YAAa,WAAW,MACxB,MACA,KAAM,KAAK,MAAQ,KACnB,YAAa,KAAK,aAAe,KACjC,KAAM,OAAO,KACb,cAAe,OAAO,cAAc,OACpC,YAAa,OAAO,YACpB,OAAQ,OAAO,QAAU,KACzB,WAAY,OAAO,YAAc,KACjC,eAAgB,OAAO,gBAAkB,IAC3C,CACF,CAAC,EAED,OAAO,EAAE,KAAK,CACZ,GAAI,KACJ,aACA,KAAM,OAAO,KACb,cAAe,OAAO,cAAc,OACpC,YAAa,OAAO,YACpB,OAAQ,OAAO,QAAU,KACzB,WAAY,OAAO,YAAc,KACjC,eAAgB,OAAO,gBAAkB,IAC3C,CAAC,CACH,CAAC,EAGD,IAAI,KAAK,kBAAmB,yBAAc,MAAO,GAAM,CACrD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAS1B,MAAM,KAA2B,MAAM,EAAE,IACtC,KAAyB,EACzB,MAAM,KAAO,CAAC,EAAwB,EAEzC,MAAM,MAAQ,KAAK,OAAO,KAAK,EAC/B,GAAI,CAAC,MAAO,OAAO,EAAE,KAAK,CAAE,MAAO,mBAAoB,EAAG,GAAG,EAE7D,MAAM,KAA+B,CAAE,GAAI,KAAK,MAAQ,CAAC,CAAG,EAC5D,GAAI,KAAK,MAAM,KAAK,EAAG,KAAK,KAAO,KAAK,KAAK,KAAK,EAClD,GAAI,KAAK,aAAa,KAAK,EAAG,KAAK,YAAc,KAAK,YAAY,KAAK,EAEvE,MAAM,eAAiB,MAAM,aAC1B,OAAO,CAAE,OAAQ,sBAAW,MAAO,CAAC,EACpC,KAAK,qBAAU,EACf,QAAQ,sBAAW,MAAM,EAE5B,MAAM,aAAe,eAAe,IAAK,GAAM,EAAE,MAAM,EACvD,GAAI,aAAa,SAAW,EAAG,CAC7B,OAAO,EAAE,KAAK,CACZ,GAAI,KACJ,WAAY,EACZ,cAAe,EACf,WAAY,EACZ,cAAe,EACf,YAAa,CAAC,CAChB,CAAC,CACH,CAEA,IAAI,cAAgB,aACpB,GAAI,KAAK,aAAe,MAAO,CAC7B,MAAM,WAAa,MAAM,aACtB,OAAO,CAAE,GAAI,iBAAM,EAAG,CAAC,EACvB,KAAK,gBAAK,EACV,SAAM,2BAAI,4BAAQ,iBAAM,GAAI,YAAY,KAAG,uBAAG,iBAAM,SAAU,IAAI,CAAC,CAAC,EACvE,cAAgB,WAAW,IAAK,GAAM,EAAE,EAAE,CAC5C,CAEA,IAAI,WAAa,EACjB,IAAI,cAAgB,EACpB,IAAI,cAAgB,EACpB,IAAI,mBAAqB,EACzB,IAAI,mBAAqB,EACzB,IAAI,gBAAkB,EACtB,IAAI,eAAiB,EACrB,MAAM,kBAA4C,CAAC,EACnD,IAAI,mBAAoC,KACxC,MAAM,YAAwB,CAAC,EAE/B,UAAW,UAAU,cAAe,CAClC,GAAI,CACF,MAAM,OAAS,QAAM,4BAAe,OAAQ,CAC1C,MACA,KAAM,KAAK,MAAM,KAAK,GAAK,OAC3B,IACF,CAAC,EAED,YAAc,OAAO,KACrB,eAAiB,OAAO,cAAc,OACtC,GAAI,OAAO,KAAO,EAAG,eAAiB,EACtC,GAAI,OAAO,SAAW,YAAa,oBAAsB,EACzD,GAAI,OAAO,SAAW,qBAAsB,oBAAsB,EAClE,GAAI,OAAO,SAAW,kBAAmB,iBAAmB,EAC5D,GAAI,OAAO,SAAW,kBAAmB,CACvC,gBAAkB,EAClB,MAAM,IAAM,OAAO,YAAc,2BACjC,kBAAkB,GAAG,GAAK,kBAAkB,GAAG,GAAK,GAAK,EACzD,GAAI,CAAC,oBAAsB,OAAO,eAAgB,CAChD,mBAAqB,OAAO,cAC9B,CACF,CACF,MAAQ,CACN,YAAY,KAAK,MAAM,CACzB,CACF,IAEA,6BAAY,CACV,OAAQ,OAAO,GACf,MAAO,uBACP,QAAS,CACP,MACA,KAAM,KAAK,MAAQ,KACnB,YAAa,KAAK,aAAe,KACjC,WAAY,KAAK,aAAe,MAChC,WAAY,cAAc,OAC1B,cACA,WACA,cACA,mBACA,mBACA,gBACA,eACA,kBACA,mBACA,YAAa,YAAY,MAC3B,CACF,CAAC,EAED,OAAO,EAAE,KAAK,CACZ,GAAI,KACJ,WAAY,cAAc,OAC1B,cACA,WACA,cACA,mBACA,mBACA,gBACA,eACA,kBACA,mBACA,WACF,CAAC,CACH,CAAC,EAGD,IAAI,IAAI,SAAU,yBAAc,MAAO,GAAM,CAC3C,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,EAAI,EAAE,IAAI,MAAM,GAAG,EACzB,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EAEnC,MAAM,WAAa,CAAC,EACpB,GAAI,EAAG,WAAW,QAAK,0BAAM,iBAAM,MAAO,IAAI,CAAC,GAAG,CAAC,EACnD,GAAI,QAAU,CAAC,QAAS,OAAQ,cAAe,YAAa,WAAW,EAAE,SAAS,MAAM,EACtF,WAAW,QAAK,uBAAG,iBAAM,OAAQ,MAAa,CAAC,EAEjD,MAAM,MAAQ,WAAW,OAAS,KAAI,wBAAI,GAAG,UAAU,EAAI,OAE3D,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aACG,OAAO,CAAE,KAAM,iBAAO,SAAU,CAAE,GAAI,iBAAM,GAAI,KAAM,iBAAM,KAAM,MAAO,iBAAM,KAAM,CAAE,CAAC,EACxF,KAAK,gBAAK,EACV,SAAS,oBAAO,uBAAG,iBAAM,WAAY,iBAAM,EAAE,CAAC,EAC9C,MAAM,KAAK,EACX,WAAQ,yBAAK,iBAAM,SAAS,CAAC,EAC7B,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,gBAAK,EAAE,MAAM,KAAK,CACvD,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,KAAM,CAAC,CAClD,CAAC,EAGD,IAAI,MAAM,oBAAqB,yBAAc,MAAO,GAAM,CACxD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,IAAI,CAAE,OAAQ,YAAa,UAAW,IAAI,IAAO,CAAC,EAClD,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,uBAAwB,QAAS,CAAE,OAAQ,QAAQ,GAAI,UAAW,QAAQ,KAAM,CAAE,CAAC,EAC3H,OAAO,EAAE,KAAK,CAAE,KAAM,OAAQ,CAAC,CACjC,CAAC,EAGD,IAAI,OAAO,aAAc,yBAAc,MAAO,GAAM,CAClD,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,gBAAK,EACZ,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACrC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,qBAAsB,QAAS,CAAE,OAAQ,QAAQ,GAAI,UAAW,QAAQ,KAAM,CAAE,CAAC,EACzH,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAGD,IAAI,IAAI,WAAY,yBAAc,MAAO,GAAM,CAC7C,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EAEnC,MAAM,YAAc,UAAS,uBAAG,mBAAQ,OAAQ,MAAa,EAAI,OAEjE,MAAM,UAAY,aAAG,OAAO,EAAE,KAAK,kBAAO,EAC1C,MAAM,WAAa,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,kBAAO,EAC7D,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,EAC3C,YAAc,UAAU,MAAM,WAAW,EAAI,WAAW,WAAQ,yBAAK,mBAAQ,SAAS,CAAC,EAAE,MAAM,KAAK,EAAE,OAAO,MAAM,EACpH,YAAc,WAAW,MAAM,WAAW,EAAI,UAChD,CAAC,EAED,GAAI,KAAK,SAAW,EAAG,OAAO,EAAE,KAAK,CAAE,KAAM,CAAC,EAAG,MAAO,KAAM,KAAM,CAAC,EAGrE,MAAM,YAAc,CAAC,GAAG,IAAI,IAAI,KAAK,IAAK,GAAM,EAAE,UAAU,CAAC,CAAC,EAC9D,MAAM,cAAgB,CAAC,GAAG,IAAI,IAAI,KAAK,OAAQ,GAAM,EAAE,aAAe,MAAM,EAAE,IAAK,GAAM,EAAE,QAAQ,CAAC,CAAC,EACrG,MAAM,cAAgB,CAAC,GAAG,IAAI,IAAI,KAAK,OAAQ,GAAM,EAAE,aAAe,MAAM,EAAE,IAAK,GAAM,EAAE,QAAQ,CAAC,CAAC,EAErG,KAAM,CAAC,UAAW,YAAa,WAAW,EAAI,MAAM,QAAQ,IAAI,CAC9D,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,KAAM,iBAAM,IAAK,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,4BAAQ,iBAAM,GAAI,WAAW,CAAC,EAC9F,cAAc,OAAS,EACnB,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,MAAO,iBAAM,KAAM,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,4BAAQ,iBAAM,GAAI,aAAa,CAAC,EAClG,QAAQ,QAAQ,CAAC,CAAC,EACtB,cAAc,OAAS,EACnB,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,KAAM,iBAAM,IAAK,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,4BAAQ,iBAAM,GAAI,aAAa,CAAC,EAChG,QAAQ,QAAQ,CAAC,CAAC,CACxB,CAAC,EAED,MAAM,YAAc,OAAO,YAAY,UAAU,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,IAAI,CAAC,CAAC,EAC3E,MAAM,QAAU,OAAO,YAAY,YAAY,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,KAAK,CAAC,CAAC,EAC1E,MAAM,QAAU,OAAO,YAAY,YAAY,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,IAAI,CAAC,CAAC,EAEzE,MAAM,SAAW,KAAK,IAAK,IAAO,CAChC,GAAG,EACH,aAAc,YAAY,EAAE,UAAU,GAAK,KAC3C,YAAa,EAAE,aAAe,OAAU,QAAQ,EAAE,QAAQ,GAAK,KAAS,QAAQ,EAAE,QAAQ,GAAK,IACjG,EAAE,EAEF,OAAO,EAAE,KAAK,CAAE,KAAM,SAAU,MAAO,KAAM,KAAM,CAAC,CACtD,CAAC,EAGD,IAAI,MAAM,sBAAuB,yBAAc,MAAO,GAAM,CAC1D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,KAAM,CAAE,MAAO,EAAI,MAAM,EAAE,IAAI,KAA2C,EAC1E,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,kBAAO,EACd,IAAI,CAAE,MAAO,CAAC,EACd,SAAM,uBAAG,mBAAQ,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACvC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,KACvD,6BAAY,CAAE,OAAQ,OAAO,GAAI,MAAO,gBAAgB,MAAM,GAAI,QAAS,CAAE,SAAU,QAAQ,GAAI,OAAQ,QAAQ,MAAO,CAAE,CAAC,EAC7H,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,IAAI,iBAAkB,yBAAc,MAAO,GAAM,CACnD,MAAM,KAAO,KAAK,IAAI,EAAG,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,CAAC,EACzD,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,MAAQ,EAAE,IAAI,MAAM,OAAO,EACjC,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EACnC,MAAM,SAAW,EAAE,IAAI,MAAM,UAAU,EACvC,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EAEnC,MAAM,WAAa,CAAC,EACpB,GAAI,MAAO,WAAW,QAAK,uBAAG,wBAAa,MAAO,KAAK,CAAC,EACxD,GAAI,OAAQ,WAAW,QAAK,uBAAG,wBAAa,OAAQ,MAAM,CAAC,EAC3D,GAAI,SAAU,WAAW,QAAK,wBAAI,wBAAa,UAAW,IAAI,KAAK,QAAQ,CAAC,CAAC,EAC7E,GAAI,OAAQ,CACV,MAAM,GAAK,IAAI,KAAK,MAAM,EAC1B,GAAG,SAAS,GAAI,GAAI,GAAI,GAAG,EAC3B,WAAW,QAAK,wBAAI,wBAAa,UAAW,EAAE,CAAC,CACjD,CAEA,MAAM,MAAQ,WAAW,OAAS,KAAI,wBAAI,GAAG,UAAU,EAAI,OAE3D,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aACG,OAAO,EACP,KAAK,uBAAY,EACjB,MAAM,KAAK,EACX,WAAQ,yBAAK,wBAAa,SAAS,CAAC,EACpC,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,uBAAY,EAAE,MAAM,KAAK,CAC9D,CAAC,EAGD,MAAM,WAAa,MAAM,aACtB,eAAe,CAAE,MAAO,wBAAa,KAAM,CAAC,EAC5C,KAAK,uBAAY,EACjB,WAAQ,wBAAI,wBAAa,KAAK,CAAC,EAElC,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,MAAO,WAAY,WAAW,IAAK,GAAM,EAAE,KAAK,CAAE,CAAC,CAC9F,CAAC,EAGD,IAAI,IAAI,aAAc,yBAAc,MAAO,GAAM,CAC/C,MAAM,KAAO,KAAK,IAAI,EAAG,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,CAAC,EACzD,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,MAAQ,EAAE,IAAI,MAAM,OAAO,EACjC,MAAM,SAAW,EAAE,IAAI,MAAM,UAAU,EACvC,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,EAEnC,MAAM,qBAAoB,0BAAM,wBAAa,MAAO,SAAS,EAE7D,MAAM,WAAoB,CAAC,iBAAiB,EAC5C,GAAI,MAAO,WAAW,QAAK,uBAAG,wBAAa,MAAO,KAAK,CAAC,EACxD,GAAI,SAAU,WAAW,QAAK,wBAAI,wBAAa,UAAW,IAAI,KAAK,QAAQ,CAAC,CAAC,EAC7E,GAAI,OAAQ,CACV,MAAM,GAAK,IAAI,KAAK,MAAM,EAC1B,GAAG,SAAS,GAAI,GAAI,GAAI,GAAG,EAC3B,WAAW,QAAK,wBAAI,wBAAa,UAAW,EAAE,CAAC,CACjD,CAEA,MAAM,SAAQ,wBAAI,GAAG,UAAU,EAE/B,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,EAAG,UAAU,EAAI,MAAM,QAAQ,IAAI,CACxD,aACG,OAAO,EACP,KAAK,uBAAY,EACjB,MAAM,KAAK,EACX,WAAQ,yBAAK,wBAAa,SAAS,CAAC,EACpC,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,uBAAY,EAAE,MAAM,KAAK,EAC5D,aACG,eAAe,CAAE,MAAO,wBAAa,KAAM,CAAC,EAC5C,KAAK,uBAAY,EACjB,MAAM,iBAAiB,EACvB,WAAQ,wBAAI,wBAAa,KAAK,CAAC,CACpC,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,MAAO,WAAY,WAAW,IAAK,GAAM,EAAE,KAAK,CAAE,CAAC,CAC9F,CAAC,EAKD,IAAI,IAAI,cAAe,yBAAc,MAAO,GAAM,CAChD,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,qBAAU,EACf,WAAQ,wBAAI,sBAAW,KAAK,KAAG,wBAAI,sBAAW,OAAO,CAAC,EACzD,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,KAAK,cAAe,yBAAc,MAAO,GAAM,CACjD,MAAM,KAAO,MAAM,EAAE,IAAI,KAStB,EAEH,KAAM,CAAC,GAAG,EAAI,MAAM,aACjB,OAAO,qBAAU,EACjB,OAAO,CACN,KAAM,KAAK,KACX,KAAM,KAAK,MAAQ,YACnB,QAAS,KAAK,QACd,QAAS,KAAK,QACd,QAAS,KAAK,QACd,QAAS,KAAK,SAAW,KACzB,SAAU,KAAK,UAAY,KAC3B,MAAO,KAAK,OAAS,CACvB,CAAC,EACA,UAAU,EAEb,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,EACpD,OAAO,EAAE,KAAK,IAAK,GAAG,CACxB,CAAC,EAGD,IAAI,MAAM,kBAAmB,yBAAc,MAAO,GAAM,CACtD,MAAM,KAAO,MAAM,EAAE,IAAI,KAUtB,EAEH,MAAM,QAAmD,CAAE,UAAW,IAAI,IAAO,EACjF,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,UAAY,OAAW,QAAQ,QAAU,KAAK,QACvD,GAAI,KAAK,UAAY,OAAW,QAAQ,QAAU,KAAK,QACvD,GAAI,KAAK,UAAY,OAAW,QAAQ,QAAU,KAAK,QACvD,GAAI,KAAK,UAAY,OAAW,QAAQ,QAAU,KAAK,QACvD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MACnD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SAEzD,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,qBAAU,EACjB,IAAI,OAAO,EACX,SAAM,uBAAG,sBAAW,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAC1C,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,EACpD,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,OAAO,kBAAmB,yBAAc,MAAO,GAAM,CACvD,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,qBAAU,EACjB,SAAM,uBAAG,sBAAW,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAC1C,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,EACpD,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAKD,IAAI,IAAI,UAAW,yBAAc,MAAO,GAAM,CAC5C,MAAM,aAAe,EAAE,IAAI,MAAM,cAAc,EAC/C,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,2BAAgB,EACrB,MAAM,gBAAe,uBAAG,4BAAiB,aAAc,YAAY,EAAI,MAAS,EAChF,WAAQ,wBAAI,4BAAiB,KAAK,KAAG,wBAAI,4BAAiB,MAAM,CAAC,EACpE,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,KAAK,UAAW,yBAAc,MAAO,GAAM,CAC7C,MAAM,KAAO,MAAM,EAAE,IAAI,KAOtB,EACH,GAAI,CAAC,KAAK,cAAgB,CAAC,KAAK,OAAQ,OAAO,EAAE,KAAK,CAAE,MAAO,kCAAmC,EAAG,GAAG,EACxG,KAAM,CAAC,GAAG,EAAI,MAAM,aACjB,OAAO,2BAAgB,EACvB,OAAO,CACN,aAAc,KAAK,aACnB,OAAQ,KAAK,OACb,OAAQ,KAAK,QAAU,KAAK,OAC5B,OAAQ,KAAK,QAAU,KAAK,OAC5B,OAAQ,KAAK,QAAU,KACvB,MAAO,KAAK,OAAS,CACvB,CAAC,EACA,UAAU,EACb,OAAO,EAAE,KAAK,IAAK,GAAG,CACxB,CAAC,EAGD,IAAI,MAAM,cAAe,yBAAc,MAAO,GAAM,CAClD,MAAM,KAAO,MAAM,EAAE,IAAI,KAOtB,EACH,MAAM,QAAe,CAAC,EACtB,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MACnD,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,OAAO,KAAK,OAAO,EAAE,SAAW,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,mBAAoB,EAAG,GAAG,EACxF,KAAM,CAAC,GAAG,EAAI,MAAM,aACjB,OAAO,2BAAgB,EACvB,IAAI,OAAO,EACX,SAAM,uBAAG,4BAAiB,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAChD,UAAU,EACb,GAAI,CAAC,IAAK,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACnD,OAAO,EAAE,KAAK,GAAG,CACnB,CAAC,EAGD,IAAI,OAAO,cAAe,yBAAc,MAAO,GAAM,CACnD,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,2BAAgB,EACvB,SAAM,uBAAG,4BAAiB,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAChD,UAAU,EACb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAGD,IAAI,IAAI,gBAAiB,yBAAc,MAAO,GAAM,CAClD,MAAM,aAAe,EAAE,IAAI,MAAM,cAAc,EAC/C,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,2BAAgB,EACrB,MAAM,gBAAe,uBAAG,4BAAiB,aAAc,YAAY,EAAI,MAAS,EAChF,WAAQ,wBAAI,4BAAiB,KAAK,KAAG,wBAAI,4BAAiB,MAAM,CAAC,EAGpE,MAAM,IAAM,IAAI,IAChB,UAAW,OAAO,KAAM,CACtB,MAAM,IAAM,GAAG,IAAI,YAAY,KAAK,IAAI,OAAO,YAAY,EAAE,KAAK,CAAC,GACnE,MAAM,EAAI,IAAI,IAAI,GAAG,GAAK,CAAC,EAC3B,EAAE,KAAK,GAAG,EACV,IAAI,IAAI,IAAK,CAAC,CAChB,CAEA,MAAM,WAAgC,CAAC,EACvC,SAAW,CAAC,CAAE,KAAK,IAAK,IAAK,CAC3B,GAAI,MAAM,OAAS,EAAG,SACtB,MAAM,UAAY,MAAM,QAAQ,IAAI,MAAM,IAAI,MAAO,GAAM,CACzD,KAAM,CAAC,CAAE,SAAU,CAAC,EAAI,MAAM,aAC3B,OAAO,CAAE,aAAW,0BAAM,CAAE,CAAC,EAC7B,KAAK,0BAAe,EACpB,MAAM,yBAAM,EAAE,MAAM,UAAU,2BAAgB,MAAM,GAAG,EAC1D,KAAM,CAAC,CAAE,SAAU,CAAC,EAAI,MAAM,aAC3B,OAAO,CAAE,aAAW,0BAAM,CAAE,CAAC,EAC7B,KAAK,gBAAK,EACV,MAAM,yBAAM,EAAE,MAAM,UAAU,iBAAM,MAAM,GAAG,EAChD,MAAO,CAAE,GAAG,EAAG,WAAY,OAAO,WAAa,CAAC,EAAI,OAAO,WAAa,CAAC,CAAE,CAC7E,CAAC,CAAC,EACF,WAAW,KAAK,SAAS,CAC3B,CACA,OAAO,EAAE,KAAK,UAAU,CAC1B,CAAC,EAGD,IAAI,KAAK,sBAAuB,yBAAc,MAAO,GAAM,CACzD,KAAM,CAAE,OAAQ,SAAU,EAAI,MAAM,EAAE,IAAI,KAA8C,EACxF,GAAI,CAAC,QAAU,CAAC,WAAW,OAAQ,OAAO,EAAE,KAAK,CAAE,MAAO,+BAAgC,EAAG,GAAG,EAEhG,KAAM,CAAC,MAAM,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,2BAAgB,EAAE,SAAM,uBAAG,4BAAiB,GAAI,MAAM,CAAC,EAC/F,GAAI,CAAC,OAAQ,OAAO,EAAE,KAAK,CAAE,MAAO,wBAAyB,EAAG,GAAG,EAEnE,MAAM,SAAW,MAAM,aAAG,OAAO,EAAE,KAAK,2BAAgB,EAAE,SAAM,4BAAQ,4BAAiB,GAAI,SAAS,CAAC,EACvG,UAAW,WAAW,SAAU,CAC9B,GAAI,QAAQ,SAAW,OAAO,OAAQ,CACpC,MAAM,aACH,OAAO,0BAAe,EACtB,IAAI,CAAE,OAAQ,uCAAoB,2BAAgB,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO,MAAM,GAAI,CAAC,EAClG,MAAM,yBAAM,QAAQ,MAAM,UAAU,2BAAgB,MAAM,GAAG,EAChE,MAAM,aACH,OAAO,gBAAK,EACZ,IAAI,CAAE,OAAQ,uCAAoB,iBAAM,MAAM,KAAK,QAAQ,MAAM,KAAK,OAAO,MAAM,GAAI,CAAC,EACxF,MAAM,yBAAM,QAAQ,MAAM,UAAU,iBAAM,MAAM,GAAG,CACxD,CACA,MAAM,aAAG,OAAO,2BAAgB,EAAE,SAAM,uBAAG,4BAAiB,GAAI,QAAQ,EAAE,CAAC,CAC7E,CACA,OAAO,EAAE,KAAK,CAAE,GAAI,KAAM,OAAQ,UAAU,MAAO,CAAC,CACtD,CAAC,EAKD,IAAI,IAAI,aAAc,yBAAc,MAAO,GAAM,CAC/C,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,oBAAS,EACd,WAAQ,wBAAI,qBAAU,KAAK,KAAG,wBAAI,qBAAU,MAAM,CAAC,EACtD,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,KAAK,aAAc,yBAAc,MAAO,GAAM,CAChD,MAAM,KAAO,MAAM,EAAE,IAAI,KAKtB,EAEH,KAAM,CAAC,GAAG,EAAI,MAAM,aACjB,OAAO,oBAAS,EAChB,OAAO,CACN,KAAM,KAAK,KACX,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,OAAQ,KAAK,QAAU,KACvB,SAAU,KAAK,UAAY,KAC3B,MAAO,KAAK,OAAS,CACvB,CAAC,EACA,UAAU,EAEb,MAAM,mBAAM,IAAI,mBAAmB,EAAE,MAAM,IAAM,CAAC,CAAC,EACnD,OAAO,EAAE,KAAK,IAAK,GAAG,CACxB,CAAC,EAGD,IAAI,MAAM,iBAAkB,yBAAc,MAAO,GAAM,CACrD,MAAM,KAAO,MAAM,EAAE,IAAI,KAMtB,EAEH,MAAM,QAAkD,CAAE,UAAW,IAAI,IAAO,EAChF,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,SAAW,OAAW,QAAQ,OAAS,KAAK,OACrD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MACnD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SAEzD,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,oBAAS,EAChB,IAAI,OAAO,EACX,SAAM,uBAAG,qBAAU,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACzC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,MAAM,mBAAM,IAAI,mBAAmB,EAAE,MAAM,IAAM,CAAC,CAAC,EACnD,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,OAAO,iBAAkB,yBAAc,MAAO,GAAM,CACtD,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,oBAAS,EAChB,SAAM,uBAAG,qBAAU,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EACzC,UAAU,EAEb,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,MAAM,mBAAM,IAAI,mBAAmB,EAAE,MAAM,IAAM,CAAC,CAAC,EACnD,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAGD,IAAI,IAAI,WAAY,yBAAc,MAAO,GAAM,CAC7C,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAE5B,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aAAG,OAAO,EAAE,KAAK,iBAAM,EAAE,WAAQ,yBAAK,kBAAO,SAAS,CAAC,EAAE,MAAM,KAAK,EAAE,OAAO,MAAM,EACnF,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,iBAAM,CAC3C,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,KAAM,MAAO,KAAM,KAAM,CAAC,CAClD,CAAC,EAGD,IAAI,IAAI,qBAAsB,yBAAc,MAAO,GAAM,CACvD,MAAM,KAAO,OAAO,EAAE,IAAI,MAAM,MAAM,GAAK,CAAC,EAC5C,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,MAAM,QAAU,KAAO,GAAK,MAC5B,MAAM,KAAO,EAAE,IAAI,MAAM,MAAM,GAAK,GACpC,MAAM,SAAW,EAAE,IAAI,MAAM,UAAU,GAAK,GAC5C,MAAM,OAAS,EAAE,IAAI,MAAM,QAAQ,GAAK,GAExC,MAAM,QAAU,CACd,QAAO,uBAAG,yBAAc,KAAM,IAAW,EAAI,OAC7C,YAAW,wBAAI,yBAAc,UAAW,IAAI,KAAK,QAAQ,CAAC,EAAI,OAC9D,UAAS,wBAAI,yBAAc,UAAW,IAAI,KAAK,OAAS,WAAW,CAAC,EAAI,MAC1E,EAAE,OAAO,OAAO,EAEhB,MAAM,MAAQ,QAAQ,UAAS,wBAAI,GAAG,OAAO,EAAI,OAEjD,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,EAAG,KAAK,EAAI,MAAM,QAAQ,IAAI,CACnD,aAAG,OAAO,CAAE,EAAG,yBAAe,eAAgB,iBAAM,MAAO,cAAe,iBAAM,IAAK,CAAC,EACnF,KAAK,wBAAa,EAClB,SAAS,oBAAO,uBAAG,yBAAc,YAAa,iBAAM,EAAE,CAAC,EACvD,MAAM,KAAK,EACX,WAAQ,yBAAK,yBAAc,SAAS,CAAC,EACrC,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aAAG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EAAE,KAAK,wBAAa,EAAE,MAAM,KAAK,EAC7D,aAAG,eAAe,CAAE,KAAM,yBAAc,IAAK,CAAC,EAAE,KAAK,wBAAa,CACpE,CAAC,EAED,OAAO,EAAE,KAAK,CACZ,KAAM,KAAK,IAAK,IAAO,CAAE,GAAG,EAAE,EAAG,eAAgB,EAAE,eAAgB,cAAe,EAAE,aAAc,EAAE,EACpG,MACA,KACA,MACA,WAAY,MAAM,IAAK,GAAM,EAAE,IAAI,CACrC,CAAC,CACH,CAAC,EAGD,IAAI,IAAI,sBAAuB,yBAAc,MAAO,GAAM,CACxD,MAAM,KAAO,MAAM,aAChB,OAAO,CACN,IAAK,iCAAsB,yBAAc,SAAS,kBAClD,MAAO,6CACT,CAAC,EACA,KAAK,wBAAa,EAClB,SAAM,wBAAI,yBAAc,UAAW,IAAI,KAAK,KAAK,IAAI,EAAI,GAAK,GAAK,GAAK,GAAK,GAAI,CAAC,CAAC,EACnF,QAAQ,iCAAc,yBAAc,SAAS,iBAAiB,EAC9D,QAAQ,iCAAc,yBAAc,SAAS,iBAAiB,EACjE,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,IAAI,cAAe,yBAAc,MAAO,GAAM,CAChD,MAAM,KAAO,MAAM,aAChB,OAAO,CACN,IAAK,iCAAsB,wBAAa,SAAS,kBACjD,MAAO,6CACT,CAAC,EACA,KAAK,uBAAY,EACjB,SAAM,2BACL,0BAAM,wBAAa,MAAO,SAAS,KACnC,wBAAI,wBAAa,UAAW,IAAI,KAAK,KAAK,IAAI,EAAI,GAAK,GAAK,GAAK,GAAK,GAAI,CAAC,CAC7E,CAAC,EACA,QAAQ,iCAAc,wBAAa,SAAS,iBAAiB,EAC7D,QAAQ,iCAAc,wBAAa,SAAS,iBAAiB,EAChE,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAKD,IAAI,IAAI,SAAU,yBAAc,MAAO,GAAM,CAC3C,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,gBAAK,EAAE,WAAQ,wBAAI,iBAAM,KAAK,KAAG,wBAAI,iBAAM,IAAI,CAAC,EACpF,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,KAAK,SAAU,yBAAc,MAAO,GAAM,CAC5C,MAAM,KAAO,MAAM,EAAE,IAAI,KA0CtB,EAGH,GAAI,KAAK,UAAW,CAClB,MAAM,aAAG,OAAO,gBAAK,EAAE,IAAI,CAAE,UAAW,KAAM,CAAC,EAAE,SAAM,uBAAG,iBAAM,UAAW,IAAI,CAAC,CAClF,CAEA,KAAM,CAAC,IAAI,EAAI,MAAM,aAAG,OAAO,gBAAK,EAAE,OAAO,CAC3C,KAAM,KAAK,KACX,YAAa,KAAK,aAAe,KACjC,KAAO,KAAK,MAAgB,WAC5B,KAAO,KAAK,MAAgB,OAC5B,MAAO,KAAK,OAAS,IACrB,SAAU,KAAK,UAAY,KAC3B,SAAU,KAAK,UAAY,MAC3B,SAAU,KAAK,UAAY,KAC3B,UAAW,KAAK,WAAa,KAC7B,SAAU,KAAK,UAAY,KAC3B,kBAAmB,KAAK,mBAAqB,KAC7C,gBAAiB,KAAK,iBAAmB,KACzC,UAAW,KAAK,WAAa,KAC7B,YAAa,KAAK,aAAe,KACjC,kBAAmB,KAAK,mBAAqB,KAC7C,aAAc,KAAK,cAAgB,KACnC,eAAgB,KAAK,gBAAkB,MACvC,YAAa,KAAK,aAAe,EACjC,iBAAkB,KAAK,kBAAoB,OAC3C,mBAAoB,KAAK,oBAAsB,MAC/C,kBAAmB,KAAK,mBAAqB,KAC7C,cAAe,KAAK,eAAiB,MACrC,mBAAoB,KAAK,oBAAsB,MAC/C,aAAc,KAAK,cAAgB,MACnC,eAAgB,KAAK,gBAAkB,MACvC,aAAc,KAAK,cAAgB,MACnC,kBAAmB,KAAK,mBAAqB,MAC7C,iBAAkB,KAAK,kBAAoB,MAC3C,mBAAoB,KAAK,oBAAsB,MAC/C,gBAAiB,KAAK,iBAAmB,MACzC,oBAAqB,KAAK,qBAAuB,MACjD,kBAAmB,KAAK,mBAAqB,MAC7C,gBAAiB,KAAK,iBAAmB,MACzC,aAAc,KAAK,cAAgB,MACnC,aAAc,KAAK,cAAgB,MACnC,2BAA4B,KAAK,4BAA8B,MAC/D,0BAA2B,KAAK,2BAA6B,MAC7D,SAAU,KAAK,UAAY,CAAC,EAC5B,UAAW,KAAK,WAAa,MAC7B,SAAU,KAAK,UAAY,KAC3B,MAAO,KAAK,OAAS,CACvB,CAAC,EAAE,UAAU,EAEb,OAAO,EAAE,KAAK,KAAM,GAAG,CACzB,CAAC,EAGD,IAAI,MAAM,aAAc,yBAAc,MAAO,GAAM,CACjD,MAAM,KAAO,MAAM,EAAE,IAAI,KA0CtB,EAEH,GAAI,KAAK,UAAW,CAClB,MAAM,aAAG,OAAO,gBAAK,EAAE,IAAI,CAAE,UAAW,KAAM,CAAC,EAAE,SAAM,uBAAG,iBAAM,UAAW,IAAI,CAAC,CAClF,CAEA,MAAM,QAA8C,CAAE,UAAW,IAAI,IAAO,EAC5E,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,cAAgB,OAAW,QAAQ,YAAc,KAAK,YAC/D,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,OAAS,OAAW,QAAQ,KAAO,KAAK,KACjD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MACnD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,oBAAsB,OAAW,QAAQ,kBAAoB,KAAK,kBAC3E,GAAI,KAAK,kBAAoB,OAAW,QAAQ,gBAAkB,KAAK,gBACvE,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,cAAgB,OAAW,QAAQ,YAAc,KAAK,YAC/D,GAAI,KAAK,oBAAsB,OAAW,QAAQ,kBAAoB,KAAK,kBAC3E,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,KAAK,iBAAmB,OAAW,QAAQ,eAAiB,KAAK,eACrE,GAAI,KAAK,cAAgB,OAAW,QAAQ,YAAc,KAAK,YAC/D,GAAI,KAAK,mBAAqB,OAAW,QAAQ,iBAAmB,KAAK,iBACzE,GAAI,KAAK,qBAAuB,OAAW,QAAQ,mBAAqB,KAAK,mBAC7E,GAAI,KAAK,oBAAsB,OAAW,QAAQ,kBAAoB,KAAK,kBAC3E,GAAI,KAAK,gBAAkB,OAAW,QAAQ,cAAgB,KAAK,cACnE,GAAI,KAAK,qBAAuB,OAAW,QAAQ,mBAAqB,KAAK,mBAC7E,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,KAAK,iBAAmB,OAAW,QAAQ,eAAiB,KAAK,eACrE,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,KAAK,oBAAsB,OAAW,QAAQ,kBAAoB,KAAK,kBAC3E,GAAI,KAAK,mBAAqB,OAAW,QAAQ,iBAAmB,KAAK,iBACzE,GAAI,KAAK,qBAAuB,OAAW,QAAQ,mBAAqB,KAAK,mBAC7E,GAAI,KAAK,kBAAoB,OAAW,QAAQ,gBAAkB,KAAK,gBACvE,GAAI,KAAK,sBAAwB,OAAW,QAAQ,oBAAsB,KAAK,oBAC/E,GAAI,KAAK,oBAAsB,OAAW,QAAQ,kBAAoB,KAAK,kBAC3E,GAAI,KAAK,kBAAoB,OAAW,QAAQ,gBAAkB,KAAK,gBACvE,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,KAAK,eAAiB,OAAW,QAAQ,aAAe,KAAK,aACjE,GAAI,KAAK,6BAA+B,OAAW,QAAQ,2BAA6B,KAAK,2BAC7F,GAAI,KAAK,4BAA8B,OAAW,QAAQ,0BAA4B,KAAK,0BAC3F,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,YAAc,OAAW,QAAQ,UAAY,KAAK,UAC3D,GAAI,KAAK,WAAa,OAAW,QAAQ,SAAW,KAAK,SACzD,GAAI,KAAK,QAAU,OAAW,QAAQ,MAAQ,KAAK,MAEnD,KAAM,CAAC,OAAO,EAAI,MAAM,aAAG,OAAO,gBAAK,EAAE,IAAI,OAAO,EAAE,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,UAAU,EAEvG,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,OAAO,aAAc,yBAAc,MAAO,GAAM,CAClD,KAAM,CAAC,OAAO,EAAI,MAAM,aAAG,OAAO,gBAAK,EAAE,SAAM,uBAAG,iBAAM,GAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,UAAU,EAC1F,GAAI,CAAC,QAAS,OAAO,EAAE,KAAK,CAAE,MAAO,WAAY,EAAG,GAAG,EACvD,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAKD,IAAI,IAAI,YAAa,yBAAc,MAAO,GAAM,CAC9C,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,WAAAC,QAAa,EACjD,MAAM,GAA6B,CAAC,EACpC,UAAW,KAAK,KAAM,GAAG,EAAE,GAAG,EAAI,EAAE,MACpC,OAAO,EAAE,KAAK,EAAE,CAClB,CAAC,EAID,IAAI,IAAI,YAAa,yBAAc,MAAO,GAAM,CAC9C,MAAM,KAAO,MAAM,EAAE,IAAI,KAA6B,EACtD,GAAI,OAAO,OAAS,UAAY,OAAS,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,cAAe,EAAG,GAAG,EAE3F,MAAM,iBAAmB,CAAC,WAAY,QAAS,WAAY,OAAQ,UAAW,WAAW,EACzF,MAAM,cAAgB,CAAC,mBAAoB,mBAAoB,gBAAiB,4BAA6B,yBAA0B,8BAA+B,0BAA0B,EAChM,MAAM,QAAU,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAC7C,iBAAiB,KAAM,GAAM,EAAE,WAAW,CAAC,CAAC,GAAK,cAAc,SAAS,CAAC,CAC3E,EACA,GAAI,QAAQ,SAAW,EAAG,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,EAEpD,MAAM,QAAQ,IACZ,QAAQ,IAAI,CAAC,CAAC,IAAK,KAAK,IACtB,aACG,OAAO,WAAAA,QAAa,EACpB,OAAO,CAAE,IAAK,MAAO,UAAW,IAAI,IAAO,CAAC,EAC5C,mBAAmB,CAAE,OAAQ,WAAAA,SAAc,IAAK,IAAK,CAAE,MAAO,UAAW,IAAI,IAAO,CAAE,CAAC,CAC5F,CACF,KACA,mCAAqB,EAErB,GAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAM,EAAE,WAAW,WAAW,CAAC,EAAG,CACpD,KAAM,CAAE,uBAAwB,EAAI,KAAM,QAAO,oBAAoB,8FACrE,wBAAwB,CAC1B,CACA,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAGD,IAAI,IAAI,mBAAoB,MAAO,GAAM,CACvC,KAAM,CAAC,WAAW,EAAI,MAAM,aACzB,OAAO,CAAE,MAAO,WAAAA,SAAc,KAAM,CAAC,EACrC,KAAK,WAAAA,QAAa,EAClB,SAAM,uBAAG,WAAAA,SAAc,IAAK,qBAAqB,CAAC,EACrD,OAAO,EAAE,KAAK,CAAE,YAAa,aAAa,QAAU,OAAQ,CAAC,CAC/D,CAAC,EAGD,IAAI,IAAI,sBAAuB,yBAAc,MAAO,GAAM,CACxD,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,yBAAc,EAClD,OAAO,EAAE,KAAK,IAAI,CACpB,CAAC,EAGD,IAAI,IAAI,2BAA4B,yBAAc,MAAO,GAAM,CAC7D,MAAM,IAAM,EAAE,IAAI,MAAM,KAAK,EAC7B,MAAM,UAAY,CAChB,qBAAsB,uBAAwB,iBAC9C,YAAa,WAAY,iBAAkB,cAC3C,iBAAkB,uBAAwB,eAC1C,oBAAqB,gBAAiB,kBAEtC,iBAAkB,gBAAiB,2BACnC,yBAA0B,wBAAyB,yBACrD,EACA,MAAM,WAAa,CAAC,GAAG,UAAW,GAAG,UAAU,QAAS,GAAM,CAAC,KAAM,KAAM,KAAM,IAAI,EAAE,IAAK,GAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAC/G,GAAI,CAAC,WAAW,SAAS,GAAG,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,sBAAuB,EAAG,GAAG,EAEnF,KAAM,CAAE,QAAS,KAAM,QAAS,EAAI,MAAM,EAAE,IAAI,KAA0C,EAE1F,MAAM,aACH,OAAO,yBAAc,EACrB,OAAO,CAAE,IAAK,QAAS,SAAW,GAAI,KAAM,UAAY,GAAI,UAAW,IAAI,IAAO,CAAC,EACnF,mBAAmB,CAClB,OAAQ,0BAAe,IACvB,IAAK,CAAE,QAAS,SAAW,GAAI,KAAM,UAAY,GAAI,UAAW,IAAI,IAAO,CAC7E,CAAC,EAEH,KAAM,CAAC,OAAO,EAAI,MAAM,aAAG,OAAO,EAAE,KAAK,yBAAc,EAAE,SAAM,uBAAG,0BAAe,IAAK,GAAG,CAAC,EAC1F,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,KAAK,gCAAiC,yBAAc,MAAO,GAAM,CACnE,KAAM,CAAE,QAAS,KAAM,SAAU,UAAW,EAAI,MAAM,EAAE,IAAI,KAA4D,EACxH,GAAI,CAAC,SAAW,CAAC,SAAU,OAAO,EAAE,KAAK,CAAE,MAAO,0BAA2B,EAAG,GAAG,EACnF,GAAI,CAAC,CAAC,KAAM,KAAM,KAAM,IAAI,EAAE,SAAS,UAAU,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,gBAAiB,EAAG,GAAG,EAElG,MAAM,QAAW,CAAC,KAAM,KAAM,KAAM,IAAI,EAAY,OAAQ,GAAM,IAAM,UAAU,EAClF,MAAM,QAA6D,CAAC,EAEpE,MAAM,QAAQ,IAAI,QAAQ,IAAI,MAAO,KAAQ,CAC3C,MAAM,cAAgB,QAAU,QAAM,gCAAc,QAAS,GAAI,WAAY,GAAG,EAAI,KACpF,MAAM,WAAa,SAAW,QAAM,gCAAc,GAAI,SAAU,WAAY,GAAG,EAAI,KACnF,QAAQ,GAAG,EAAI,CACb,QAAS,eAAe,OAAS,QACjC,KAAM,YAAY,aAAe,QACnC,CACF,CAAC,CAAC,EAEF,OAAO,EAAE,KAAK,OAAO,CACvB,CAAC,EAGD,IAAI,KAAK,uBAAwB,yBAAc,MAAO,GAAM,CAC1D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,GAAK,OAAO,MAClB,GAAI,CAAC,GAAI,OAAO,EAAE,KAAK,CAAE,MAAO,gBAAiB,EAAG,GAAG,EACvD,GAAI,CACF,KAAM,CAAE,YAAa,EAAI,KAAM,QAAO,iBAAiB,8FACvD,MAAM,aAAa,CAAE,GAAI,KAAM,MAAM,WAAa,MAAM,MAAQ,QAAS,KAAM,WAAY,OAAQ,MAAM,QAAU,IAAK,CAAC,EACzH,QAAM,6BAAY,CAAE,OAAQ,MAAM,GAAI,MAAO,wBAAyB,QAAS,CAAE,EAAG,CAAE,CAAC,EACvF,OAAO,EAAE,KAAK,CAAE,GAAI,KAAM,EAAG,CAAC,CAChC,OAAS,IAAK,CACZ,QAAM,6BAAY,CAChB,OAAQ,MAAM,GACd,MAAO,0BACP,QAAS,CAAE,GAAI,MAAO,eAAe,MAAQ,IAAI,QAAU,OAAO,GAAG,CAAE,CACzE,CAAC,EACD,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,2BAA4B,EAAG,GAAG,CAChG,CACF,CAAC,EAGD,IAAI,KAAK,0BAA2B,yBAAc,MAAO,GAAM,CAC7D,MAAM,MAAQ,EAAE,IAAI,MAAM,EAC1B,MAAM,KAAO,MAAM,EAAE,IAAI,KAAK,EAAE,MAAM,KAAO,CAAC,EAAE,EAChD,GAAI,CAAC,KAAK,UAAY,CAAC,KAAK,OAAQ,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,kCAAmC,CAAC,EAC1G,GAAI,CACF,KAAM,CAAE,sBAAuB,EAAI,KAAM,QAAO,oBAAoB,8FACpE,MAAM,OAAS,MAAM,uBAAuB,KAAK,SAAU,KAAK,MAAM,EACtE,GAAI,OAAO,GAAI,CACb,QAAM,6BAAY,CAAE,OAAQ,MAAM,GAAI,MAAO,yBAA0B,QAAS,CAAE,OAAQ,KAAK,OAAQ,OAAQ,KAAK,OAAQ,IAAK,OAAO,OAAQ,CAAE,CAAC,EACnJ,OAAO,EAAE,KAAK,CAAE,GAAI,KAAM,QAAS,OAAO,OAAQ,CAAC,CACrD,KAAO,CACL,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,OAAO,KAAM,CAAC,CAClD,CACF,OAAS,IAAK,CACZ,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,eAAe,MAAQ,IAAI,QAAU,OAAO,GAAG,CAAE,CAAC,CACtF,CACF,CAAC,EAGD,IAAI,KAAK,kCAAmC,yBAAc,MAAO,GAAM,CACrE,MAAM,KAAO,MAAM,EAAE,IAAI,KAAK,EAAE,MAAM,KAAO,CAAC,EAAE,EAChD,GAAI,CAAC,KAAK,SAAU,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,sBAAuB,CAAC,EAC9E,GAAI,CACF,MAAM,IAAM,MAAM,MAAM,+BAA+B,KAAK,QAAQ,QAAQ,EAC5E,MAAM,KAAO,MAAM,IAAI,KAAK,EAC5B,GAAI,CAAC,KAAK,GAAI,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,KAAK,aAAe,eAAgB,CAAC,EACrF,MAAM,QAAU,KAAK,QAAQ,UAAY,KAAK,QAAQ,YAAc,MACpE,OAAO,EAAE,KAAK,CAAE,GAAI,KAAM,OAAQ,CAAC,CACrC,OAAS,IAAK,CACZ,OAAO,EAAE,KAAK,CAAE,GAAI,MAAO,MAAO,eAAe,MAAQ,IAAI,QAAU,OAAO,GAAG,CAAE,CAAC,CACtF,CACF,CAAC,EAGD,IAAI,IAAI,cAAe,MAAO,GAAM,CAClC,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,WAAAA,QAAa,EACjD,MAAM,GAA6B,CAAC,EACpC,UAAW,KAAK,KAAM,CACpB,GAAI,EAAE,IAAI,WAAW,MAAM,EAAG,GAAG,EAAE,GAAG,EAAI,EAAE,KAC9C,CACA,OAAO,EAAE,KAAK,EAAE,CAClB,CAAC,EAGD,IAAI,IAAI,iBAAkB,MAAO,GAAM,CACrC,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,WAAAA,QAAa,EACjD,MAAM,GAA6B,CAAC,EACpC,UAAW,KAAK,KAAM,CACpB,GAAI,EAAE,IAAI,WAAW,SAAS,GAAK,EAAE,MAAO,GAAG,EAAE,GAAG,EAAI,EAAE,KAC5D,CACA,OAAO,EAAE,KAAK,EAAE,CAClB,CAAC,EAID,MAAM,iBAAgB,4BAAU,kCAAQ,EAExC,MAAM,WAAa,QAAQ,IAAI,WAC3B,iBAAAC,QAAK,QAAQ,QAAQ,IAAI,UAAU,EACnC,iBAAAA,QAAK,QAAQ,iBAAAA,QAAK,WAAQ,+BAAc,kDAAe,CAAC,EAAG,eAAe,EAE9E,GAAI,CAAC,eAAAC,QAAG,WAAW,UAAU,EAAG,CAC9B,eAAAA,QAAG,UAAU,WAAY,CAAE,UAAW,IAAK,CAAC,CAC9C,CAEA,SAAS,kBAAkB,IAAa,CACtC,MAAM,OAAS,IAAI,IAAI,GAAG,EAC1B,MAAO,CACL,KAAM,OAAO,UAAY,YACzB,KAAM,OAAO,MAAQ,OACrB,KAAM,OAAO,SAGb,SAAU,QAAQ,IAAI,aAAe,mBAAmB,OAAO,QAAQ,EACvE,SAAU,OAAO,SAAS,QAAQ,MAAO,EAAE,CAC7C,CACF,CAXS,8CAaT,eAAe,QAAQ,UAAqC,CAC1D,MAAM,MAAQ,QAAQ,IAAI,cAAgB,GAC1C,KAAM,CAAE,KAAM,KAAM,KAAM,SAAU,QAAS,EAAI,kBAAkB,KAAK,EACxE,MAAM,KAAO,CACX,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAC1C,gBAAiB,UAAW,aAC9B,EACA,GAAI,UAAW,KAAK,KAAK,KAAM,SAAS,EACxC,KAAM,CAAE,MAAO,EAAI,MAAM,cAAc,UAAW,KAAM,CACtD,IAAK,CAAE,GAAG,QAAQ,IAAK,WAAY,QAAS,EAC5C,UAAW,IAAM,KAAO,IAC1B,CAAC,EACD,OAAO,IAAI,QAAgB,CAAC,QAAS,SACnC,iBAAAC,QAAK,KAAK,OAAO,KAAK,MAAM,EAAG,CAAC,IAAK,MAAS,IAAM,OAAO,GAAG,EAAI,QAAQ,GAAG,CAAE,CACjF,CACF,CAfe,0BAiBf,eAAe,aAAa,YAAoC,CAC9D,MAAM,MAAQ,QAAQ,IAAI,cAAgB,GAC1C,KAAM,CAAE,KAAM,KAAM,KAAM,SAAU,QAAS,EAAI,kBAAkB,KAAK,EACxE,MAAMC,KAAM,MAAM,IAAI,QAAgB,CAAC,QAAS,SAC9C,iBAAAD,QAAK,OAAO,YAAa,CAAC,IAAK,MAAS,IAAM,OAAO,GAAG,EAAI,QAAQ,GAAG,CAAE,CAC3E,EACA,MAAM,IAAI,QAAc,CAAC,QAAS,SAAW,CAC3C,MAAM,SAAQ,iCAAM,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,eAAe,EAAG,CACjG,IAAK,CAAE,GAAG,QAAQ,IAAK,WAAY,QAAS,CAC9C,CAAC,EACD,IAAI,OAAS,GACb,MAAM,OAAO,GAAG,OAAS,GAAc,CAAE,QAAU,EAAE,SAAS,CAAE,CAAC,EACjE,MAAM,GAAG,QAAU,MAAS,CAC1B,GAAI,OAAS,EAAG,OAAO,IAAI,MAAM,eAAe,IAAI,KAAK,MAAM,EAAE,CAAC,OAC7D,QAAQ,CACf,CAAC,EACD,MAAM,GAAG,QAAS,MAAM,EACxB,MAAM,MAAM,MAAMC,IAAG,EACrB,MAAM,MAAM,IAAI,CAClB,CAAC,CACH,CApBe,oCAuBf,IAAI,IAAI,iBAAkB,yBAAc,MAAO,GAAM,CACnD,MAAM,OAAS,MAAM,aAAG,QACtB,wJACF,EACA,MAAM,OAAU,OAAO,KAAe,IAAK,GAAW,EAAE,UAAoB,EAC5E,OAAO,EAAE,KAAK,CAAE,MAAO,CAAC,CAC1B,CAAC,EAGD,IAAI,IAAI,mBAAoB,yBAAc,MAAO,GAAM,CACrD,MAAM,KAAO,MAAM,aAAG,OAAO,EAAE,KAAK,WAAAJ,QAAa,EAAE,MACjD,yBAAM,WAAAA,SAAc,GAAG,kBACzB,EACA,MAAM,GAA6B,CAAC,EACpC,UAAW,KAAK,KAAM,GAAG,EAAE,GAAG,EAAI,EAAE,MACpC,OAAO,EAAE,KAAK,CACZ,YAAa,GAAG,oBAAoB,IAAM,OAC1C,WAAY,GAAG,mBAAmB,GAAK,IACzC,CAAC,CACH,CAAC,EAGD,IAAI,IAAI,mBAAoB,yBAAc,MAAO,GAAM,CACrD,MAAM,KAAO,MAAM,EAAE,IAAI,KAAgC,EACzD,GAAI,KAAK,cAAgB,OAAW,CAClC,MAAM,aACH,OAAO,WAAAA,QAAa,EACpB,OAAO,CAAE,IAAK,qBAAsB,MAAO,OAAO,KAAK,WAAW,EAAG,UAAW,IAAI,IAAO,CAAC,EAC5F,mBAAmB,CAAE,OAAQ,WAAAA,SAAc,IAAK,IAAK,CAAE,MAAO,OAAO,KAAK,WAAW,EAAG,UAAW,IAAI,IAAO,CAAE,CAAC,CACtH,CACA,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,CAAC,EAGD,IAAI,IAAI,eAAgB,yBAAc,MAAO,GAAM,CACjD,MAAM,MAAQ,CAAC,eAAgB,kBAAkB,EACjD,MAAM,MAAQ,MACX,IAAK,MAAS,CACb,MAAM,GAAK,iBAAAC,QAAK,KAAK,WAAY,GAAG,IAAI,SAAS,EACjD,GAAI,CAAC,eAAAC,QAAG,WAAW,EAAE,EAAG,OAAO,KAC/B,MAAM,KAAO,eAAAA,QAAG,SAAS,EAAE,EAC3B,MAAO,CAAE,KAAM,KAAM,KAAK,KAAM,KAAM,KAAK,MAAM,YAAY,CAAE,CACjE,CAAC,EACA,OAAO,OAAO,EACjB,OAAO,EAAE,KAAK,CAAE,KAAM,CAAC,CACzB,CAAC,EAGD,IAAI,IAAI,iBAAkB,yBAAc,MAAO,GAAM,CACnD,GAAI,CACF,MAAM,IAAM,MAAM,QAAQ,EAC1B,OAAO,IAAI,SAAS,IAAK,CACvB,QAAS,CACP,eAAgB,mBAChB,sBAAuB,gCAAgC,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,EAAG,EAAE,CAAC,WAC5F,iBAAkB,OAAO,IAAI,MAAM,CACrC,CACF,CAAC,CACH,OAAS,IAAK,CACZ,QAAQ,MAAM,uBAAwB,GAAG,EACzC,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,eAAgB,EAAG,GAAG,CACpF,CACF,CAAC,EAGD,IAAI,IAAI,wBAAyB,yBAAc,MAAO,GAAM,CAC1D,MAAM,MAAQ,EAAE,IAAI,MAAM,OAAO,EAEjC,GAAI,CAAC,2BAA2B,KAAK,KAAK,EAAG,CAC3C,OAAO,EAAE,KAAK,CAAE,MAAO,oBAAqB,EAAG,GAAG,CACpD,CACA,GAAI,CACF,MAAM,IAAM,MAAM,QAAQ,KAAK,EAC/B,OAAO,IAAI,SAAS,IAAK,CACvB,QAAS,CACP,eAAgB,mBAChB,sBAAuB,yBAAyB,KAAK,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,EAAG,EAAE,CAAC,WAC9F,iBAAkB,OAAO,IAAI,MAAM,CACrC,CACF,CAAC,CACH,OAAS,IAAK,CACZ,QAAQ,MAAM,6BAA8B,GAAG,EAC/C,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,eAAgB,EAAG,GAAG,CACpF,CACF,CAAC,EAGD,IAAI,KAAK,iBAAkB,yBAAc,MAAO,GAAM,CACpD,GAAI,CACF,MAAM,SAAW,MAAM,EAAE,IAAI,SAAS,EACtC,MAAM,KAAO,SAAS,IAAI,MAAM,EAChC,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAC3D,MAAM,IAAM,OAAO,KAAK,MAAM,KAAK,YAAY,CAAC,EAChD,MAAM,aAAa,GAAG,EACtB,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,OAAS,IAAK,CACZ,QAAQ,MAAM,uBAAwB,GAAG,EACzC,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,eAAgB,EAAG,GAAG,CACpF,CACF,CAAC,EAGD,IAAI,KAAK,wBAAyB,yBAAc,MAAO,GAAM,CAC3D,MAAM,MAAQ,EAAE,IAAI,MAAM,OAAO,EACjC,GAAI,CAAC,2BAA2B,KAAK,KAAK,EAAG,CAC3C,OAAO,EAAE,KAAK,CAAE,MAAO,oBAAqB,EAAG,GAAG,CACpD,CACA,GAAI,CACF,MAAM,SAAW,MAAM,EAAE,IAAI,SAAS,EACtC,MAAM,KAAO,SAAS,IAAI,MAAM,EAChC,GAAI,CAAC,KAAM,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAC3D,MAAM,IAAM,OAAO,KAAK,MAAM,KAAK,YAAY,CAAC,EAChD,MAAM,aAAa,GAAG,EACtB,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,OAAS,IAAK,CACZ,QAAQ,MAAM,6BAA8B,GAAG,EAC/C,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,eAAgB,EAAG,GAAG,CACpF,CACF,CAAC,EAGD,IAAI,KAAK,kBAAmB,yBAAc,MAAO,GAAM,CACrD,KAAM,CAAE,IAAK,EAAI,MAAM,EAAE,IAAI,KAAuB,EACpD,GAAI,CAAC,CAAC,eAAgB,kBAAkB,EAAE,SAAS,IAAI,EAAG,CACxD,OAAO,EAAE,KAAK,CAAE,MAAO,qBAAsB,EAAG,GAAG,CACrD,CACA,MAAM,GAAK,iBAAAD,QAAK,KAAK,WAAY,GAAG,IAAI,SAAS,EACjD,GAAI,CAAC,eAAAC,QAAG,WAAW,EAAE,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,uBAAwB,EAAG,GAAG,EAC7E,GAAI,CACF,MAAM,IAAM,eAAAA,QAAG,aAAa,EAAE,EAC9B,MAAM,aAAa,GAAG,EACtB,OAAO,EAAE,KAAK,CAAE,GAAI,IAAK,CAAC,CAC5B,OAAS,IAAK,CACZ,QAAQ,MAAM,wBAAyB,GAAG,EAC1C,OAAO,EAAE,KAAK,CAAE,MAAO,eAAe,MAAQ,IAAI,QAAU,gBAAiB,EAAG,GAAG,CACrF,CACF,CAAC,EAID,MAAM,kBAAoB,CAAC,KAAM,KAAM,KAAM,IAAI,EAGjD,MAAM,aAAe,CACnB,WAAY,CACV,MAAO,sBACP,OAAQ,CAAE,GAAI,UAAW,GAAI,UAAW,GAAI,UAAW,GAAI,SAAU,EACrE,aAAc,SAChB,EACA,UAAW,CACT,MAAO,qBACP,OAAQ,CAAE,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,QAAS,EACjE,aAAc,QAChB,EACA,kBAAmB,CACjB,MAAO,4BACP,OAAQ,CAAE,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,QAAS,EACjE,aAAc,QAChB,EACA,iBAAkB,CAChB,MAAO,2BACP,OAAQ,CAAE,GAAI,gBAAiB,GAAI,gBAAiB,GAAI,gBAAiB,GAAI,eAAgB,EAC7F,aAAc,eAChB,CACF,EAGA,IAAI,IAAI,sBAAuB,yBAAc,MAAO,GAAM,CACxD,KAAM,CAAC,QAAQ,EAAI,MAAM,aAAG,OAAO,CACjC,SAAO,0BAAM,EACb,UAAW,kFACX,UAAW,kFACX,UAAW,kFACX,UAAW,iFACb,CAAC,EAAE,KAAK,qBAAU,EAElB,KAAM,CAAC,QAAQ,EAAI,MAAM,aAAG,OAAO,CACjC,SAAO,0BAAM,EACb,UAAW,gFACX,UAAW,gFACX,UAAW,gFACX,UAAW,+EACb,CAAC,EAAE,KAAK,oBAAS,EAEjB,KAAM,CAAC,UAAU,EAAI,MAAM,aAAG,OAAO,CACnC,SAAO,0BAAM,EACb,UAAW,gFACX,UAAW,gFACX,UAAW,gFACX,UAAW,+EACb,CAAC,EAAE,KAAK,2BAAgB,EAExB,KAAM,CAAC,SAAS,EAAI,MAAM,aAAG,OAAO,CAClC,SAAO,0BAAM,EAGb,UAAW,2KACX,UAAW,4HACX,UAAW,4HACX,UAAW,2HACb,CAAC,EAAE,KAAK,0BAAe,EAEvB,KAAM,CAAC,SAAS,EAAI,MAAM,aAAG,OAAO,CAClC,SAAO,0BAAM,EACb,UAAW,kFACX,UAAW,kFACX,UAAW,kFACX,UAAW,iFACb,CAAC,EAAE,KAAK,gBAAK,EAEb,MAAM,sBAAwB,CAC5B,qBAAsB,uBAAwB,iBAC9C,YAAa,WAAY,iBAAkB,cAC3C,iBAAkB,uBAAwB,eAC1C,oBAAqB,gBAAiB,kBACtC,iBAAkB,gBAAiB,2BACnC,yBAA0B,wBAAyB,yBACrD,EACA,MAAM,UAAY,MAAM,aAAG,OAAO,CAAE,IAAK,0BAAe,GAAI,CAAC,EAAE,KAAK,yBAAc,EAClF,MAAM,YAAc,IAAI,IAAI,UAAU,IAAK,GAAM,EAAE,GAAG,CAAC,EACvD,MAAM,WAAa,sBAAsB,OACzC,MAAM,eAAiB,sBAAsB,OAAQ,GAAM,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,OACxF,MAAM,eAAiB,sBAAsB,OAAQ,GAAM,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,OACxF,MAAM,eAAiB,sBAAsB,OAAQ,GAAM,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,OACxF,MAAM,eAAiB,sBAAsB,OAAQ,GAAM,CAAC,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,OAExF,OAAO,EAAE,KAAK,CACZ,OAAQ,CACN,CACE,KAAM,aACN,MAAO,aACP,MAAO,OAAO,SAAS,KAAK,EAC5B,QAAS,CAAE,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,CAAE,CAC5I,EACA,CACE,KAAM,YACN,MAAO,YACP,MAAO,OAAO,SAAS,KAAK,EAC5B,QAAS,CAAE,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,EAAG,GAAI,OAAO,SAAS,SAAS,CAAE,CAC5I,EACA,CACE,KAAM,oBACN,MAAO,SACP,MAAO,OAAO,WAAW,KAAK,EAC9B,QAAS,CAAE,GAAI,OAAO,WAAW,SAAS,EAAG,GAAI,OAAO,WAAW,SAAS,EAAG,GAAI,OAAO,WAAW,SAAS,EAAG,GAAI,OAAO,WAAW,SAAS,CAAE,CACpJ,EACA,CACE,KAAM,QACN,MAAO,QACP,MAAO,OAAO,UAAU,KAAK,EAC7B,QAAS,CAAE,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,CAAE,CAChJ,EACA,CACE,KAAM,kBACN,MAAO,kBACP,MAAO,WACP,QAAS,CAAE,GAAI,eAAgB,GAAI,eAAgB,GAAI,eAAgB,GAAI,cAAe,CAC5F,EACA,CACE,KAAM,mBACN,MAAO,gCACP,MAAO,OAAO,UAAU,KAAK,EAC7B,QAAS,CAAE,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,EAAG,GAAI,OAAO,UAAU,SAAS,CAAE,CAChJ,CACF,CACF,CAAC,CACH,CAAC,EAGD,IAAI,KAAK,+BAAgC,yBAAc,MAAO,GAAM,CAClE,KAAM,CAAE,MAAO,UAAW,YAAa,SAAU,UAAY,EAAG,EAAI,MAAM,EAAE,IAAI,KAK7E,EAEH,GAAI,CAAC,kBAAkB,SAAS,WAAW,GAAK,CAAC,kBAAkB,SAAS,QAAQ,EAAG,CACrF,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,CAClD,CACA,MAAM,IAAM,aAAa,SAAsC,EAC/D,GAAI,CAAC,IAAK,OAAO,EAAE,KAAK,CAAE,MAAO,eAAgB,EAAG,GAAG,EAEvD,MAAM,iBAAmB,IAAI,OAAO,WAAW,EAC/C,MAAM,cAAgB,IAAI,OAAO,QAAQ,EAEzC,MAAM,WAAc,IAAI,MAAc,gBAAgB,EAGtD,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,IAAI,KAAY,EACrB,SAAM,0BAAG,2BAAO,UAAU,KAAG,uBAAG,WAAY,EAAE,CAAC,CAAC,EAChD,MAAM,KAAK,IAAI,UAAW,GAAG,CAAC,EAEjC,MAAM,aAAe,KAClB,IAAK,KAAQ,CAGZ,MAAM,WAAc,IAAY,aAAa,EAC7C,MAAM,aAAe,YAAc,mBAAsB,IAAY,YAA2C,OAChH,MAAO,CAAE,IAAK,KAAO,YAAc,cAAgB,EAAI,CACzD,CAAC,EACA,OAAQ,GAAM,EAAE,IAAI,EAEvB,MAAM,aAAe,QAAM,wCAAsB,aAAa,IAAK,GAAM,EAAE,IAAI,EAAG,SAAU,WAAW,EAEvG,IAAI,WAAa,EACjB,IAAI,OAAS,KAAK,OAAS,aAAa,OAExC,MAAM,QAAQ,IAAI,aAAa,IAAI,MAAO,CAAE,GAAI,EAAG,IAAM,CACvD,MAAM,OAAS,aAAa,CAAC,EAC7B,GAAI,CAAC,OAAQ,CAAE,SAAU,MAAO,CAChC,MAAM,aACH,OAAO,IAAI,KAAY,EACvB,IAAI,CAAE,CAAC,gBAAgB,EAAG,MAAO,CAAQ,EACzC,SAAM,uBAAI,IAAI,MAAc,GAAI,IAAI,EAAE,CAAC,EAC1C,YACF,CAAC,CAAC,EAGF,GAAI,YAAc,aAAc,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,EACpF,GAAI,YAAc,YAAa,MAAM,mBAAM,IAAI,mBAAmB,EAAE,MAAM,IAAM,CAAC,CAAC,EAElF,OAAO,EAAE,KAAK,CAAE,WAAY,OAAQ,MAAO,KAAK,MAAO,CAAC,CAC1D,CAAC,EAGD,IAAI,IAAI,8BAA+B,yBAAc,MAAO,GAAM,CAChE,MAAM,KAAO,EAAE,IAAI,MAAM,MAAM,EAC/B,MAAM,MAAQ,KAAK,IAAI,OAAO,EAAE,IAAI,MAAM,OAAO,GAAK,EAAE,EAAG,GAAG,EAC9D,GAAI,CAAC,MAAQ,CAAC,kBAAkB,SAAS,IAAW,EAAG,CACrD,OAAO,EAAE,KAAK,CAAE,MAAO,cAAe,EAAG,GAAG,CAC9C,CACA,MAAM,IAAM,OAAC,GAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAI,EAAE,MAAM,CAAC,EAApD,OACZ,MAAM,WAAa,iBAAM,QAAQ,IAAI,IAAI,CAAC,EAAwB,EAClE,MAAM,KAAO,MAAM,aAChB,OAAO,CACN,GAAI,iBAAM,GACV,MAAO,iBAAM,MACb,eAAgB,iBAAM,eACtB,QAAS,iBAAM,QACf,QAAS,iBAAM,QACf,QAAS,iBAAM,QACf,QAAS,iBAAM,OACjB,CAAC,EACA,KAAK,gBAAK,EACV,SAAM,0BAAG,2BAAO,UAAU,KAAG,uBAAG,WAAY,EAAE,CAAC,CAAC,EAChD,QAAQ,iBAAM,EAAE,EAChB,MAAM,KAAK,EACd,OAAO,EAAE,KAAK,CAAE,KAAM,IAAK,CAAC,CAC9B,CAAC,EAID,IAAI,KAAK,qCAAsC,yBAAc,MAAO,GAAM,CACxE,KAAM,CAAE,UAAY,GAAI,EAAI,MAAM,EAAE,IAAI,KAA6B,EAErE,MAAM,IAAM,OAAC,GAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAI,EAAE,MAAM,CAAC,EAApD,OACZ,MAAM,MAA2B,CAAC,KAAM,KAAM,KAAM,IAAI,EAGxD,MAAM,KAAO,MAAM,aAChB,OAAO,EACP,KAAK,gBAAK,EACV,SAAM,0BACL,2BAAO,iBAAM,OAAO,KAAG,uBAAG,iBAAM,QAAS,EAAE,KAC3C,2BAAO,iBAAM,OAAO,KAAG,uBAAG,iBAAM,QAAS,EAAE,KAC3C,2BAAO,iBAAM,OAAO,KAAG,uBAAG,iBAAM,QAAS,EAAE,KAC3C,2BAAO,iBAAM,OAAO,KAAG,uBAAG,iBAAM,QAAS,EAAE,CAC7C,CAAC,EACA,MAAM,KAAK,IAAI,UAAW,GAAG,CAAC,EAEjC,MAAM,kBAAoB,IAAI,IAC9B,IAAI,OAAS,EAGb,UAAW,UAAU,MAAO,CAC1B,MAAM,WAAa,QAAQ,IAAI,MAAM,CAAC,GACtC,MAAM,UAAY,cAAc,IAAI,MAAM,CAAC,GAE3C,MAAM,SAAW,KAAK,OAAQ,GAAM,CAClC,MAAM,IAAO,EAAU,UAAU,EACjC,MAAO,CAAC,KAAO,MAAQ,EACzB,CAAC,EACD,GAAI,SAAS,SAAW,EAAG,SAG3B,MAAM,WAAa,SAAS,OAAQ,IAAO,EAAE,gBAAkB,QAAU,MAAM,EAC/E,GAAI,WAAW,OAAS,EAAG,CACzB,MAAM,QAAQ,IAAI,WAAW,IAAI,MAAO,KAAQ,CAC9C,MAAM,aACH,OAAO,gBAAK,EACZ,IAAI,CAAE,CAAC,UAAU,EAAG,IAAI,MAAO,CAAC,SAAS,EAAG,IAAI,WAAY,CAAQ,EACpE,SAAM,uBAAG,iBAAM,GAAI,IAAI,EAAE,CAAC,EAC7B,kBAAkB,IAAI,IAAI,EAAE,CAC9B,CAAC,CAAC,CACJ,CAGA,MAAM,gBAAkB,SAAS,OAAQ,IAAO,EAAE,gBAAkB,QAAU,MAAM,EACpF,GAAI,gBAAgB,SAAW,EAAG,SAElC,MAAM,SAAW,IAAI,IACrB,UAAW,OAAO,gBAAiB,CACjC,MAAM,IAAM,IAAI,gBAAkB,KAClC,GAAI,CAAC,SAAS,IAAI,GAAG,EAAG,SAAS,IAAI,IAAK,CAAC,CAAC,EAC5C,SAAS,IAAI,GAAG,EAAG,KAAK,GAAG,CAC7B,CAEA,SAAW,CAAC,WAAY,KAAK,IAAK,SAAS,QAAQ,EAAG,CACpD,MAAM,OAAS,MAAM,IAAK,GAAM,EAAE,KAAK,EACvC,MAAM,aAAe,MAAM,IAAK,GAAM,EAAE,WAAW,EACnD,KAAM,CAAC,iBAAkB,eAAe,EAAI,MAAM,QAAQ,IAAI,IAC5D,wCAAsB,OAAQ,WAAY,MAAM,KAChD,wCAAsB,aAAc,WAAY,MAAM,CACxD,CAAC,EACD,MAAM,QAAQ,IAAI,MAAM,IAAI,MAAO,IAAK,IAAM,CAC5C,MAAM,EAAI,iBAAiB,CAAC,EAC5B,MAAM,EAAI,gBAAgB,CAAC,EAC3B,GAAI,CAAC,GAAK,CAAC,EAAG,CAAE,SAAU,MAAO,CACjC,MAAM,aACH,OAAO,gBAAK,EACZ,IAAI,CAAE,CAAC,UAAU,EAAG,EAAG,CAAC,SAAS,EAAG,CAAE,CAAQ,EAC9C,SAAM,uBAAG,iBAAM,GAAI,IAAI,EAAE,CAAC,EAC7B,kBAAkB,IAAI,IAAI,EAAE,CAC9B,CAAC,CAAC,CACJ,CACF,CAEA,OAAO,EAAE,KAAK,CAAE,WAAY,kBAAkB,KAAM,OAAQ,MAAO,KAAK,MAAO,CAAC,CAClF,CAAC,EAID,IAAI,KAAK,yCAA0C,yBAAc,MAAO,GAAM,CAC5E,KAAM,CAAE,YAAa,SAAW,IAAK,EAAI,MAAM,EAAE,IAAI,KAGlD,EAEH,GAAI,CAAC,kBAAkB,SAAS,WAAW,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAC9F,GAAI,CAAC,kBAAkB,SAAS,QAA2B,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAE9G,MAAM,sBAAwB,CAC5B,qBAAsB,uBAAwB,iBAC9C,YAAa,WAAY,iBAAkB,cAC3C,iBAAkB,uBAAwB,eAC1C,oBAAqB,gBAAiB,kBACtC,iBAAkB,gBAAiB,2BACnC,yBAA0B,wBAAyB,yBACrD,EAEA,MAAM,aAAe,MAAM,aAAG,OAAO,EAAE,KAAK,yBAAc,EAC1D,MAAM,YAAc,IAAI,IAAI,aAAa,IAAK,GAAM,CAAC,EAAE,IAAK,CAAC,CAAC,CAAC,EAE/D,MAAM,gBAAkB,sBAAsB,OAAQ,GAAM,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,EAGnG,MAAM,cAAgB,gBACnB,IAAK,IAAO,CAAE,IAAK,EAAG,IAAK,YAAY,IAAI,GAAG,CAAC,IAAI,QAAQ,EAAE,GAAK,YAAY,IAAI,CAAC,CAAE,EAAE,EACvF,OAAQ,GAA4D,CAAC,CAAC,EAAE,KAAO,CAAC,EAAE,EAAE,IAAI,SAAW,EAAE,IAAI,KAAK,EAEjH,MAAM,SAAW,cAAc,IAAK,GAAM,EAAE,IAAI,SAAW,EAAE,EAC7D,MAAM,OAAS,cAAc,IAAK,GAAM,EAAE,IAAI,MAAQ,EAAE,EAExD,KAAM,CAAC,mBAAoB,gBAAgB,EAAI,MAAM,QAAQ,IAAI,IAC/D,wCAAsB,SAAS,IAAK,GAAM,GAAK,GAAG,EAAG,SAAU,WAAW,KAC1E,wCAAsB,OAAO,IAAK,GAAM,GAAK,GAAG,EAAG,SAAU,WAAW,CAC1E,CAAC,EAED,IAAI,WAAa,EACjB,IAAI,OAAS,gBAAgB,OAAS,cAAc,OAEpD,MAAM,QAAQ,IAAI,cAAc,IAAI,MAAO,CAAE,IAAK,GAAI,EAAG,IAAM,CAC7D,MAAM,cAAgB,mBAAmB,CAAC,GAAK,IAAI,SAAW,GAC9D,MAAM,WAAa,iBAAiB,CAAC,GAAK,IAAI,MAAQ,GACtD,GAAI,CACF,MAAM,UAAY,GAAG,GAAG,IAAI,WAAW,GACvC,MAAM,aACH,OAAO,yBAAc,EACrB,OAAO,CAAE,IAAK,UAAW,QAAS,cAAe,KAAM,WAAY,UAAW,IAAI,IAAO,CAAC,EAC1F,mBAAmB,CAClB,OAAQ,0BAAe,IACvB,IAAK,CAAE,QAAS,cAAe,KAAM,WAAY,UAAW,IAAI,IAAO,CACzE,CAAC,EACH,YACF,MAAQ,CACN,QACF,CACF,CAAC,CAAC,EAEF,OAAO,EAAE,KAAK,CAAE,WAAY,OAAQ,MAAO,gBAAgB,MAAO,CAAC,CACrE,CAAC,EAGD,IAAI,IAAI,uBAAwB,yBAAc,MAAO,GAAM,CACzD,MAAM,UAAY,EAAE,IAAI,MAAM,OAAO,EACrC,MAAM,YAAe,EAAE,IAAI,MAAM,aAAa,GAAK,KACnD,MAAM,KAAO,KAAK,IAAI,EAAG,SAAS,EAAE,IAAI,MAAM,MAAM,GAAK,IAAK,EAAE,CAAC,EACjE,MAAM,MAAQ,KAAK,IAAI,IAAK,SAAS,EAAE,IAAI,MAAM,OAAO,GAAK,KAAM,EAAE,CAAC,EACtE,MAAM,QAAU,KAAO,GAAK,MAE5B,GAAI,CAAC,kBAAkB,SAAS,WAAW,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,EAC9F,MAAM,IAAM,aAAa,SAAsC,EAC/D,GAAI,CAAC,IAAK,OAAO,EAAE,KAAK,CAAE,MAAO,eAAgB,EAAG,GAAG,EAEvD,MAAM,iBAAmB,IAAI,OAAO,WAAW,EAE/C,MAAM,WAAc,IAAI,MAAc,gBAAgB,EAEtD,KAAM,CAAC,KAAM,CAAC,CAAE,KAAM,CAAC,CAAC,EAAI,MAAM,QAAQ,IAAI,CAC5C,aACG,OAAO,EACP,KAAK,IAAI,KAAY,EACrB,SAAM,0BAAG,2BAAO,UAAU,KAAG,uBAAG,WAAY,EAAE,CAAC,CAAC,EAChD,QAAS,IAAI,MAAc,IAAI,YAAY,CAAC,EAC5C,MAAM,KAAK,EACX,OAAO,MAAM,EAChB,aACG,OAAO,CAAE,SAAO,0BAAM,CAAE,CAAC,EACzB,KAAK,IAAI,KAAY,EACrB,SAAM,0BAAG,2BAAO,UAAU,KAAG,uBAAG,WAAY,EAAE,CAAC,CAAC,CACrD,CAAC,EAED,OAAO,EAAE,KAAK,CAAE,KAAM,MAAO,OAAO,KAAK,EAAG,KAAM,KAAM,CAAC,CAC3D,CAAC,EAGD,IAAI,KAAK,4BAA6B,yBAAc,MAAO,GAAM,CAC/D,MAAM,UAAY,EAAE,IAAI,MAAM,OAAO,EACrC,MAAM,IAAM,aAAa,SAAsC,EAC/D,GAAI,CAAC,IAAK,OAAO,EAAE,KAAK,CAAE,MAAO,eAAgB,EAAG,GAAG,EAEvD,KAAM,CAAE,KAAM,EAAI,MAAM,EAAE,IAAI,KAE3B,EAEH,GAAI,CAAC,MAAM,QAAQ,KAAK,GAAK,MAAM,SAAW,EAAG,OAAO,EAAE,KAAK,CAAE,MAAO,UAAW,EAAG,GAAG,EAEzF,MAAM,eAAiB,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC,EACxD,IAAI,MAAQ,EAEZ,UAAW,QAAQ,MAAO,CACxB,GAAI,CAAC,KAAK,IAAM,CAAC,KAAK,MAAQ,CAAC,KAAK,OAAO,KAAK,EAAG,SACnD,MAAM,UAAY,IAAI,OAAO,KAAK,IAAI,EACtC,GAAI,CAAC,WAAa,CAAC,eAAe,IAAI,SAAS,EAAG,SAElD,MAAM,aACH,OAAO,IAAI,KAAY,EACvB,IAAI,CAAE,CAAC,SAAS,EAAG,KAAK,MAAM,KAAK,CAAE,CAAQ,EAC7C,SAAM,uBAAI,IAAI,MAAc,GAAI,KAAK,EAAE,CAAC,EAE3C,OACF,CAGA,GAAI,MAAQ,EAAG,CACb,GAAI,YAAc,aAAc,MAAM,mBAAM,IAAI,oBAAoB,EAAE,MAAM,IAAM,CAAC,CAAC,EACpF,GAAI,YAAc,YAAa,MAAM,mBAAM,IAAI,mBAAmB,EAAE,MAAM,IAAM,CAAC,CAAC,CACpF,CAEA,OAAO,EAAE,KAAK,CAAE,KAAM,CAAC,CACzB,CAAC,EAGD,IAAI,IAAI,aAAc,yBAAc,MAAO,GAAM,CAC/C,MAAM,QAAU,MAAM,aACnB,OAAO,EACP,KAAK,0BAAe,EACpB,WAAQ,yBAAK,2BAAgB,SAAS,CAAC,EAE1C,GAAI,QAAQ,SAAW,EAAG,CACxB,OAAO,EAAE,KAAK,CAAE,eAAgB,EAAG,eAAgB,EAAG,cAAe,EAAG,KAAM,CAAC,CAAE,CAAC,CACpF,CAEA,MAAM,QAAU,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,IAAK,GAAM,EAAE,UAAU,EAAG,GAAG,QAAQ,IAAK,GAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACtG,MAAM,UAAY,MAAM,aACrB,OAAO,CAAE,GAAI,iBAAM,GAAI,UAAW,iBAAM,UAAW,SAAU,iBAAM,SAAU,MAAO,iBAAM,MAAO,aAAc,iBAAM,YAAa,CAAC,EACnI,KAAK,gBAAK,EACV,SAAM,4BAAQ,iBAAM,GAAI,OAAO,CAAC,EAEnC,MAAM,QAAU,OAAO,YAAY,UAAU,IAAK,GAAM,CAAC,EAAE,GAAI,CAAC,CAAC,CAAC,EAClE,MAAM,IAAM,IAAI,KAChB,MAAM,cAAgB,QAAQ,OAAQ,GAAM,EAAE,UAAY,GAAG,EAAE,OAE/D,MAAM,QAAU,IAAI,IACpB,UAAW,KAAK,QAAS,CACvB,GAAI,CAAC,QAAQ,IAAI,EAAE,UAAU,EAAG,CAC9B,QAAQ,IAAI,EAAE,WAAY,CAAE,SAAU,QAAQ,EAAE,UAAU,EAAG,SAAU,CAAC,CAAE,CAAC,CAC7E,CACA,QAAQ,IAAI,EAAE,UAAU,EAAG,SAAS,KAAK,CACvC,GAAG,QAAQ,EAAE,SAAS,EACtB,OAAQ,EAAE,OACV,UAAW,EAAE,UACb,UAAW,EAAE,UACb,UAAW,EAAE,SACf,CAAC,CACH,CAEA,MAAM,KAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,EAAE,KAAK,CAAC,EAAG,IAAM,EAAE,SAAS,OAAS,EAAE,SAAS,MAAM,EAEvF,OAAO,EAAE,KAAK,CAAE,eAAgB,QAAQ,KAAM,eAAgB,QAAQ,OAAQ,cAAe,IAAK,CAAC,CACrG,CAAC,EAGD,IAAO,cAAQ","names":["import_db","settingsTable","path","fs","zlib","sql"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/routes/admin.ts"],"sourcesContent":[null]}}