@acorex-platform/module-maintenance-management-client 0.0.53 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-Dqy4wGda.mjs} +53 -41
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-Dqy4wGda.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BX8JwWt8.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BX8JwWt8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-mWMeP02k.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-mWMeP02k.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CWhKwFy9.mjs} +8 -5
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CWhKwFy9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DiKnz1IH.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DiKnz1IH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BwOeeKLn.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BbyqDKGm.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BwOeeKLn.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BbyqDKGm.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
- package/i18n/en-AU/maintenance-management.json +2014 -0
- package/i18n/en-US/maintenance-management.json +2014 -0
- package/i18n/fa-IR/maintenance-management.json +2001 -0
- package/package.json +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-workflow.debug.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/maintenance-generation.utils.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/asset-create-maintenance-offer.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/failure-register-create-work-order.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/maintenance-plan-create-work-order.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-prefill.constants.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-fill.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-post-submit.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-source-type.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/index.ts","../../../../libs/modules/maintenance-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/shared/work-order-expression-evaluator-scope.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-work-report-column.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column-widget.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-report/widgets/work-report-checklist-results.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-report/widgets/work-report-widget.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/maintenance-management.module.ts","../../../../libs/modules/maintenance-management/client/src/lib/menu.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-execution-workflow.shared.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-execution.workflow.ts","../../../../libs/modules/maintenance-management/client/src/acorex-platform-module-maintenance-management-client.ts"],"sourcesContent":["//#region ---- Workflow debug namespace ----\n\nexport const AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE = 'maintenance-management';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport type { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { isValidMultiLanguageObject, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { defaultTo, get, isNumber, isObject, isString } from 'lodash';\nimport { AXMWorkOrderSourceType, AXMWorkOrderStatus } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Identifier rules ----\n\nexport const MAINTENANCE_PLAN_CODE_RULE_ID = 'maintenance-plan-code';\nexport const WORK_ORDER_NO_RULE_ID = 'work-order-no';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type MaintenanceScheduleMode = 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly';\n\nexport interface MaintenancePlanScheduleLike {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n occurrences?: number;\n endDate?: string | Date;\n };\n}\n\nexport type LocalizableLabel = string | AXPMultiLanguageString | undefined;\n\ntype BilingualLabel = { 'en-US': string; 'fa-IR': string };\n\nexport interface MaintenanceTemplateLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n description?: LocalizableLabel;\n maintenanceTypeId?: string;\n assetTypeId?: string;\n schedule?: MaintenancePlanScheduleLike;\n estimatedMinutes?: number;\n needPermission?: boolean;\n needShutdown?: boolean;\n autoGeneratePlan?: boolean;\n metadataIds?: string[];\n workflowConfig?: {\n workflowDefinitionId?: string;\n workflowName?: string;\n enabled?: boolean;\n defaultInput?: Record<string, unknown>;\n } | null;\n}\n\nexport interface FailureRegisterLike {\n id: string;\n code?: string;\n assetId?: string;\n priorityId?: string;\n description?: string;\n}\n\nexport interface MaintenancePlanLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n description?: LocalizableLabel;\n assetId?: string;\n maintenanceTypeId?: string;\n maintenanceTemplateId?: string;\n schedule?: MaintenancePlanScheduleLike;\n assignedToId?: string;\n assignedTo?: { id?: string; displayName?: string; fullName?: string };\n priorityId?: string;\n priority?: { id?: string; title?: LocalizableLabel };\n estimatedHours?: number;\n needPermission?: boolean;\n needShutdown?: boolean;\n autoGeneratedPlan?: boolean;\n}\n\nexport interface WorkOrderFieldsFromPlan {\n assignedToId?: string;\n assignedTo?: { id: string; fullName?: string };\n priorityId?: string;\n estimatedHours?: number;\n}\n\nexport interface WorkOrderOccurrenceWindow {\n scheduledStart?: string;\n scheduledEnd?: string;\n}\n\n//#endregion\n\nexport interface AssetLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n assetTypeId?: string;\n}\n\nexport interface EntityStorageBackend {\n getOne(entityName: string, id: string): Promise<unknown>;\n insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown>;\n query(\n entityName: string,\n request: {\n skip?: number;\n take?: number;\n filter?: unknown;\n },\n ): Promise<{ total: number; items: unknown[] }>;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nconst MAX_BY_DATE_OCCURRENCES = 10_000;\n\nexport function isTruthyFlag(value: unknown): boolean {\n return [true, 'true', 1, '1'].includes(value as never);\n}\n\nfunction isMultiLanguageString(value: unknown): value is AXPMultiLanguageString {\n return isValidMultiLanguageObject(value);\n}\n\n/**\n * Normalizes plain or multilingual labels into a bilingual {@link AXPMultiLanguageString}.\n */\nexport function normalizeMultiLanguageString(\n value: LocalizableLabel,\n fallback: string,\n): BilingualLabel {\n if (!value) {\n return { 'en-US': fallback, 'fa-IR': fallback };\n }\n if (isString(value)) {\n return { 'en-US': value, 'fa-IR': value };\n }\n if (isMultiLanguageString(value)) {\n const en = resolveMultiLanguageString(value, 'en-US') || fallback;\n const fa = resolveMultiLanguageString(value, 'fa-IR') || en;\n return { 'en-US': en, 'fa-IR': fa };\n }\n return { 'en-US': fallback, 'fa-IR': fallback };\n}\n\n/**\n * Resolves a display label for dialogs and messages (defaults to en-US).\n */\nexport function resolveDisplayLabel(\n value: LocalizableLabel,\n fallback: string,\n locale: 'en-US' | 'fa-IR' = 'en-US',\n): string {\n if (!value) {\n return fallback;\n }\n if (isString(value)) {\n return value;\n }\n return resolveMultiLanguageString(value, locale) || fallback;\n}\n\nfunction combineMultiLanguageTitle(\n left: LocalizableLabel,\n leftFallback: string,\n right: LocalizableLabel,\n rightFallback: string,\n): AXPMultiLanguageString {\n const leftMl = normalizeMultiLanguageString(left, leftFallback);\n const rightMl = normalizeMultiLanguageString(right, rightFallback);\n\n return {\n 'en-US': `${leftMl['en-US']} - ${rightMl['en-US']}`,\n 'fa-IR': `${leftMl['fa-IR']} - ${rightMl['fa-IR']}`,\n };\n}\n\nfunction toDate(value: string | Date | undefined | null): Date | undefined {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : new Date(value.getTime());\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n}\n\n/** Treat schedule end dates as inclusive through the end of the calendar day. */\nfunction toScheduleEndBoundary(value: string | Date | undefined | null): Date | undefined {\n const date = toDate(value);\n if (!date) {\n return undefined;\n }\n\n const boundary = new Date(date.getTime());\n boundary.setHours(23, 59, 59, 999);\n return boundary;\n}\n\nfunction toIsoString(date: Date): string {\n return date.toISOString();\n}\n\nfunction inferScheduleMode(schedule: MaintenancePlanScheduleLike): MaintenanceScheduleMode {\n const mode = get(schedule, 'mode');\n if (\n mode === 'hourly' ||\n mode === 'daily' ||\n mode === 'weekly' ||\n mode === 'monthly' ||\n mode === 'yearly'\n ) {\n return mode;\n }\n\n const recurrence = get(schedule, 'recurrence');\n switch (recurrence) {\n case 'hourly':\n return 'hourly';\n case 'daily':\n return 'daily';\n case 'weekly':\n return 'weekly';\n case 'monthly':\n return 'monthly';\n case 'yearly':\n return 'yearly';\n default:\n return 'daily';\n }\n}\n\nfunction resolveScheduleInterval(schedule: MaintenancePlanScheduleLike): number {\n const interval = get(schedule, 'interval');\n return isNumber(interval) && interval > 0 ? interval : 1;\n}\n\n/**\n * Anchor date for the first work-order occurrence (now, byDate, or onDemand).\n */\nexport function resolveScheduleAnchorDate(\n schedule: MaintenancePlanScheduleLike | undefined,\n referenceDate: Date = new Date(),\n): Date | undefined {\n if (!schedule) {\n return undefined;\n }\n\n const startType = get(schedule, 'startCondition.type');\n if (startType === 'onDemand') {\n return undefined;\n }\n\n if (startType === 'now') {\n return new Date(referenceDate.getTime());\n }\n\n const configuredStart = toDate(get(schedule, 'startCondition.startDate'));\n if (configuredStart) {\n return configuredStart;\n }\n\n return undefined;\n}\n\nfunction addScheduleInterval(\n anchor: Date,\n mode: MaintenanceScheduleMode,\n interval: number,\n step: number,\n): Date {\n const result = new Date(anchor.getTime());\n const amount = step * interval;\n\n switch (mode) {\n case 'hourly':\n result.setHours(result.getHours() + amount);\n break;\n case 'daily':\n result.setDate(result.getDate() + amount);\n break;\n case 'weekly':\n result.setDate(result.getDate() + amount * 7);\n break;\n case 'monthly':\n result.setMonth(result.getMonth() + amount);\n break;\n case 'yearly':\n result.setFullYear(result.getFullYear() + amount);\n break;\n }\n\n return result;\n}\n\nfunction resolveOccurrenceScheduledEnd(\n scheduledStart: Date,\n estimatedHours?: number,\n): string | undefined {\n if (!isNumber(estimatedHours) || estimatedHours <= 0) {\n return undefined;\n }\n\n const end = new Date(scheduledStart.getTime());\n end.setTime(end.getTime() + estimatedHours * 60 * 60 * 1000);\n return toIsoString(end);\n}\n\n/**\n * Resolves scheduled start dates for work orders from a maintenance plan schedule.\n *\n * - End `never`: first occurrence only (next ones are generated later).\n * - End `afterOccurrences`: all occurrences up to the configured count.\n * - End `byDate`: occurrences from anchor through end date (inclusive).\n */\nexport function resolveWorkOrderScheduledStarts(\n schedule: MaintenancePlanScheduleLike | undefined,\n referenceDate: Date = new Date(),\n): Date[] {\n if (!schedule) {\n return [];\n }\n\n const anchor = resolveScheduleAnchorDate(schedule, referenceDate);\n if (!anchor) {\n return [];\n }\n\n const mode = inferScheduleMode(schedule);\n const interval = resolveScheduleInterval(schedule);\n const endType = defaultTo(get(schedule, 'endCondition.type'), 'never');\n\n if (endType === 'never') {\n return [anchor];\n }\n\n if (endType === 'afterOccurrences') {\n const count = Math.max(1, defaultTo(get(schedule, 'endCondition.occurrences'), 1));\n return Array.from({ length: count }, (_, step) => addScheduleInterval(anchor, mode, interval, step));\n }\n\n if (endType === 'byDate') {\n const endDate = toScheduleEndBoundary(get(schedule, 'endCondition.endDate'));\n if (!endDate) {\n return [anchor];\n }\n\n const starts: Date[] = [];\n for (let step = 0; step < MAX_BY_DATE_OCCURRENCES; step += 1) {\n const occurrence = addScheduleInterval(anchor, mode, interval, step);\n if (occurrence.getTime() > endDate.getTime()) {\n break;\n }\n starts.push(occurrence);\n }\n\n return starts;\n }\n\n return [anchor];\n}\n\nexport function resolveWorkOrderOccurrences(\n schedule: MaintenancePlanScheduleLike | undefined,\n options?: { referenceDate?: Date; estimatedHours?: number },\n): WorkOrderOccurrenceWindow[] {\n const referenceDate = options?.referenceDate ?? new Date();\n const starts = resolveWorkOrderScheduledStarts(schedule, referenceDate);\n const estimatedHours = options?.estimatedHours;\n\n if (starts.length === 0) {\n return [{}];\n }\n\n return starts.map((scheduledStart) => {\n const scheduledEnd = resolveOccurrenceScheduledEnd(scheduledStart, estimatedHours);\n return {\n scheduledStart: toIsoString(scheduledStart),\n ...(scheduledEnd ? { scheduledEnd } : {}),\n };\n });\n}\n\n/**\n * Returns how many work orders will be created from a plan schedule (minimum 1 when schedule is absent or on-demand).\n */\nexport function countWorkOrdersToCreateFromSchedule(\n schedule: MaintenancePlanScheduleLike | undefined,\n referenceDate: Date = new Date(),\n): number {\n return resolveWorkOrderOccurrences(schedule, { referenceDate }).length;\n}\n\nexport function resolveScheduledStart(\n schedule?: MaintenancePlanScheduleLike,\n referenceDate: Date = new Date(),\n): string | undefined {\n const starts = resolveWorkOrderScheduledStarts(schedule, referenceDate);\n const first = starts[0];\n return first ? toIsoString(first) : undefined;\n}\n\n/** Internal flag on plan create payloads; stripped before persistence when supported. */\nexport const SUPPRESS_WORK_ORDER_PROMPT_FIELD = '__suppressWorkOrderPrompt';\n\n/**\n * Allocates and commits the next identifier code for programmatic entity creates.\n * Validation runs before identifier middleware (order 5); the code must be on the payload.\n * Uses `generate` (not `peek`) so back-to-back creates in a loop receive distinct codes.\n */\nexport async function allocateIdentifierCode(\n identifierService: AXPIdentifierService,\n sessionService: AXPSessionService,\n ruleId: string,\n): Promise<string> {\n const result = await identifierService.generate({\n id: ruleId,\n tenantId: sessionService.tenant?.id,\n appId: sessionService.application?.id,\n });\n return result.code;\n}\n\nexport function buildMaintenancePlanPayload(\n asset: AssetLike,\n template: MaintenanceTemplateLike,\n options?: { suppressWorkOrderPrompt?: boolean; code?: string; autoGeneratedPlan?: boolean },\n): Record<string, unknown> {\n return {\n ...(options?.code ? { code: options.code } : {}),\n title: combineMultiLanguageTitle(\n template.title,\n template.code ?? 'Template',\n asset.title,\n asset.code ?? 'Asset',\n ),\n description: template.description,\n assetId: asset.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\n schedule: template.schedule ?? {\n startCondition: { type: 'byDate', startDate: new Date().toISOString() },\n },\n estimatedHours: template.estimatedMinutes\n ? Math.max(1, Math.ceil(template.estimatedMinutes / 60))\n : undefined,\n needPermission: !!template.needPermission,\n needShutdown: !!template.needShutdown,\n ...(options?.autoGeneratedPlan ? { autoGeneratedPlan: true } : {}),\n ...(options?.suppressWorkOrderPrompt\n ? { [SUPPRESS_WORK_ORDER_PROMPT_FIELD]: true }\n : {}),\n };\n}\n\nexport async function resolveMaintenanceTemplate(\n backend: EntityStorageBackend,\n templateEntityName: string,\n partial: MaintenanceTemplateLike,\n): Promise<MaintenanceTemplateLike | null> {\n if (!partial?.id) {\n return null;\n }\n\n if (partial.maintenanceTypeId) {\n return partial;\n }\n\n const loaded = (await backend\n .getOne(templateEntityName, partial.id)\n .catch(() => null)) as MaintenanceTemplateLike | null;\n\n return loaded?.maintenanceTypeId ? loaded : null;\n}\n\nfunction resolveRelationId(value: unknown): string | undefined {\n if (isString(value)) {\n const trimmed = value.trim();\n return trimmed || undefined;\n }\n\n if (isObject(value)) {\n const id = get(value, 'id') as unknown;\n if (isString(id)) {\n const trimmed = id.trim();\n return trimmed || undefined;\n }\n }\n\n return undefined;\n}\n\n/**\n * Normalizes lookup-style relation values on a plan to plain ids for work-order generation.\n */\nexport function normalizePlanRelationIds(plan: MaintenancePlanLike): MaintenancePlanLike {\n return {\n ...plan,\n assetId: resolveRelationId(plan.assetId) ?? plan.assetId,\n maintenanceTypeId: resolveRelationId(plan.maintenanceTypeId) ?? plan.maintenanceTypeId,\n maintenanceTemplateId: resolveRelationId(plan.maintenanceTemplateId) ?? plan.maintenanceTemplateId,\n assignedToId: resolveRelationId(plan.assignedToId) ?? plan.assignedToId,\n priorityId:\n resolveRelationId(plan.priorityId) ?? resolveRelationId(plan.priority?.id) ?? plan.priorityId,\n };\n}\n\n/**\n * Merges persisted plan with create-time fields that may not be returned by `getOne` yet.\n * Stored values win; missing work-order fields are filled from the create payload.\n */\nexport function mergeMaintenancePlanForWorkOrder(\n createPayload: MaintenancePlanLike | null | undefined,\n stored: MaintenancePlanLike | null,\n id: string,\n): MaintenancePlanLike | null {\n if (!stored && !createPayload) {\n return null;\n }\n\n const merged: MaintenancePlanLike = {\n ...(createPayload ?? {}),\n ...(stored ?? {}),\n id: stored?.id ?? id,\n };\n\n delete (merged as unknown as Record<string, unknown>)[SUPPRESS_WORK_ORDER_PROMPT_FIELD];\n\n if (!createPayload) {\n return normalizePlanRelationIds(merged);\n }\n\n const fillIfMissing = <K extends keyof MaintenancePlanLike>(key: K): void => {\n const storedValue = merged[key];\n const createValue = createPayload[key];\n const storedEmpty =\n storedValue === undefined ||\n storedValue === null ||\n (typeof storedValue === 'string' && storedValue.trim() === '');\n if (storedEmpty && createValue !== undefined && createValue !== null) {\n merged[key] = createValue;\n }\n };\n\n fillIfMissing('assetId');\n fillIfMissing('maintenanceTypeId');\n fillIfMissing('maintenanceTemplateId');\n fillIfMissing('schedule');\n fillIfMissing('title');\n fillIfMissing('description');\n fillIfMissing('needPermission');\n fillIfMissing('needShutdown');\n fillIfMissing('assignedToId');\n fillIfMissing('assignedTo');\n fillIfMissing('priorityId');\n fillIfMissing('priority');\n fillIfMissing('estimatedHours');\n\n return normalizePlanRelationIds(merged);\n}\n\n/**\n * Normalizes plan priority for work-order payload.\n */\nexport function resolvePlanPriorityId(plan: MaintenancePlanLike): string | undefined {\n const priorityId = plan.priorityId?.trim() || plan.priority?.id?.trim();\n return priorityId || undefined;\n}\n\n/**\n * Normalizes plan estimated hours (supports numeric strings from forms/storage).\n */\nexport function resolvePlanEstimatedHours(plan: MaintenancePlanLike): number | undefined {\n const raw = plan.estimatedHours;\n if (isNumber(raw) && raw >= 0) {\n return raw;\n }\n if (isString(raw)) {\n const parsed = Number(raw);\n if (!Number.isNaN(parsed) && parsed >= 0) {\n return parsed;\n }\n }\n return undefined;\n}\n\nconst EMPLOYEE_ENTITY = 'HumanCapitalManagement.Employee';\n\n/**\n * Maintenance plan `assignedToId` stores Employee id; work order `assignedToId` expects Person id.\n */\nexport async function resolvePlanAssignedToForWorkOrder(\n backend: EntityStorageBackend,\n plan: MaintenancePlanLike,\n): Promise<Pick<WorkOrderFieldsFromPlan, 'assignedToId' | 'assignedTo'>> {\n const employeeId = plan.assignedToId?.trim();\n if (!employeeId) {\n return {};\n }\n\n const employee = (await backend.getOne(EMPLOYEE_ENTITY, employeeId).catch(() => null)) as {\n personId?: string;\n person?: { id?: string; fullName?: string; displayName?: string };\n } | null;\n\n const personId = employee?.personId?.trim() || employee?.person?.id?.trim();\n if (!personId) {\n return {};\n }\n\n const fullName = employee?.person?.fullName?.trim() || employee?.person?.displayName?.trim();\n return {\n assignedToId: personId,\n assignedTo: fullName ? { id: personId, fullName } : { id: personId },\n };\n}\n\n/**\n * Resolves work-order assignment, priority, and estimated hours from a maintenance plan.\n */\nexport async function resolvePlanFieldsForWorkOrder(\n backend: EntityStorageBackend,\n plan: MaintenancePlanLike,\n): Promise<WorkOrderFieldsFromPlan> {\n const assignment = await resolvePlanAssignedToForWorkOrder(backend, plan);\n const priorityId = resolvePlanPriorityId(plan);\n const estimatedHours = resolvePlanEstimatedHours(plan);\n\n return {\n ...assignment,\n ...(priorityId ? { priorityId } : {}),\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n };\n}\n\nexport function buildWorkOrderPayloadFromFailureRegister(\n failureRegister: FailureRegisterLike,\n template: MaintenanceTemplateLike,\n workOrderNo: string,\n): Record<string, unknown> {\n const title = normalizeMultiLanguageString(template.title, template.code ?? 'Template');\n\n return {\n workOrderNo,\n assetId: failureRegister.assetId,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\n failureRegisterId: failureRegister.id,\n priorityId: failureRegister.priorityId,\n title,\n description: failureRegister.description,\n needPermission: !!template.needPermission,\n needShutdown: !!template.needShutdown,\n statusId: AXMWorkOrderStatus.Planned,\n sourceType: AXMWorkOrderSourceType.FailureRegister,\n isArchived: false,\n isDeleted: false,\n };\n}\n\nexport function buildWorkOrderPayloadFromPlan(\n plan: MaintenancePlanLike,\n workOrderNo: string,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n occurrence?: WorkOrderOccurrenceWindow;\n sourceType?: AXMWorkOrderSourceType;\n workOrderFields?: WorkOrderFieldsFromPlan;\n includeScheduledEnd?: boolean;\n },\n): Record<string, unknown> {\n const title = normalizeMultiLanguageString(plan.title, plan.code ?? 'Work order');\n const occurrence =\n options?.occurrence ??\n resolveWorkOrderOccurrences(plan.schedule, {\n referenceDate: options?.referenceDate,\n estimatedHours: resolvePlanEstimatedHours(plan),\n })[0];\n\n const fields = options?.workOrderFields ?? {};\n const priorityId = fields.priorityId ?? resolvePlanPriorityId(plan);\n const estimatedHours = fields.estimatedHours ?? resolvePlanEstimatedHours(plan);\n\n return {\n workOrderNo,\n assetId: plan.assetId,\n maintenanceTypeId: plan.maintenanceTypeId,\n maintenanceTemplateId: plan.maintenanceTemplateId,\n maintenancePlanId: plan.id,\n title,\n description: plan.description,\n scheduledStart: occurrence?.scheduledStart,\n ...(options?.includeScheduledEnd && occurrence?.scheduledEnd\n ? { scheduledEnd: occurrence.scheduledEnd }\n : {}),\n ...(fields.assignedToId\n ? {\n assignedToId: fields.assignedToId,\n ...(fields.assignedTo ? { assignedTo: fields.assignedTo } : {}),\n }\n : {}),\n ...(priorityId ? { priorityId } : {}),\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n needPermission: !!plan.needPermission,\n needShutdown: !!plan.needShutdown,\n ...(options?.autoGeneratedWorkOrder ? { autoGeneratedWorkOrder: true } : {}),\n statusId: AXMWorkOrderStatus.Planned,\n sourceType: options?.sourceType ?? AXMWorkOrderSourceType.MaintenancePlan,\n isArchived: false,\n isDeleted: false,\n };\n}\n\n/**\n * Builds one work-order payload per schedule occurrence (count varies by end condition).\n */\nexport function buildWorkOrderPayloadsFromPlan(\n plan: MaintenancePlanLike,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n sourceType?: AXMWorkOrderSourceType;\n workOrderFields?: WorkOrderFieldsFromPlan;\n includeScheduledEnd?: boolean;\n },\n): Array<Record<string, unknown>> {\n const referenceDate = options?.referenceDate ?? new Date();\n const estimatedHours = resolvePlanEstimatedHours(plan);\n const occurrences = resolveWorkOrderOccurrences(plan.schedule, {\n referenceDate,\n estimatedHours,\n });\n const selectedOccurrences = options?.autoGeneratedWorkOrder ? occurrences.slice(0, 1) : occurrences;\n\n return selectedOccurrences.map((occurrence) =>\n buildWorkOrderPayloadFromPlan(plan, '', {\n autoGeneratedWorkOrder: options?.autoGeneratedWorkOrder,\n referenceDate,\n occurrence,\n sourceType: options?.sourceType,\n workOrderFields: options?.workOrderFields,\n includeScheduledEnd: options?.includeScheduledEnd,\n }),\n );\n}\n\n/**\n * Inserts all work orders implied by the plan schedule (peek identifier per row).\n */\nexport async function insertWorkOrdersFromPlan(\n entityStorage: { insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown> },\n identifierService: AXPIdentifierService,\n sessionService: AXPSessionService,\n workOrderEntityName: string,\n plan: MaintenancePlanLike,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n sourceType?: AXMWorkOrderSourceType;\n backend?: EntityStorageBackend;\n },\n): Promise<number> {\n const resolvedPlan = normalizePlanRelationIds(plan);\n const workOrderFields = options?.backend ? await resolvePlanFieldsForWorkOrder(options.backend, resolvedPlan) : {};\n\n const payloads = buildWorkOrderPayloadsFromPlan(resolvedPlan, {\n autoGeneratedWorkOrder: options?.autoGeneratedWorkOrder,\n referenceDate: options?.referenceDate,\n sourceType: options?.sourceType,\n workOrderFields,\n includeScheduledEnd: false,\n });\n let createdCount = 0;\n\n for (const payload of payloads) {\n const workOrderNo = await allocateIdentifierCode(identifierService, sessionService, WORK_ORDER_NO_RULE_ID);\n await entityStorage.insertOne(workOrderEntityName, { ...payload, workOrderNo });\n createdCount += 1;\n }\n\n return createdCount;\n}\n\nexport function canCreateWorkOrderFromFailureRegister(\n failureRegister: FailureRegisterLike,\n template: MaintenanceTemplateLike,\n): boolean {\n return !!(failureRegister.assetId && template.id && template.maintenanceTypeId);\n}\n\nexport function canCreateWorkOrderFromPlan(plan: MaintenancePlanLike): boolean {\n const normalized = normalizePlanRelationIds(plan);\n return !!(\n normalized.assetId &&\n normalized.maintenanceTypeId &&\n normalized.maintenanceTemplateId\n );\n}\n\nfunction isMaintenanceTemplateLike(row: unknown): row is MaintenanceTemplateLike {\n if (!row || typeof row !== 'object') {\n return false;\n }\n const candidate = row as MaintenanceTemplateLike;\n return typeof candidate.id === 'string' && typeof candidate.maintenanceTypeId === 'string';\n}\n\nexport async function queryAutoGenerateTemplatesForAssetType(\n backend: EntityStorageBackend,\n templateEntityName: string,\n assetTypeId: string,\n): Promise<MaintenanceTemplateLike[]> {\n const result = await backend\n .query(templateEntityName, {\n skip: 0,\n take: 200,\n filter: {\n logic: 'and',\n filters: [\n { field: 'assetTypeId', operator: { type: 'equal' }, value: assetTypeId },\n { field: 'autoGeneratePlan', operator: { type: 'equal' }, value: true },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n const items: unknown[] = result.items ?? [];\n return items.filter(isMaintenanceTemplateLike);\n}\n\nconst ASSET_ENTITY = 'AssetManagement.Asset';\nconst ASSET_TYPE_ENTITY = 'AssetManagement.AssetType';\n\nexport function isWorkflowEnabledOnTemplate(template: MaintenanceTemplateLike): boolean {\n const config = template.workflowConfig;\n if (!config?.workflowDefinitionId?.trim() || !config?.workflowName?.trim()) {\n return false;\n }\n return config.enabled !== false;\n}\n\n/**\n * Resolves asset → asset type maintenance types → maintenance templates with an enabled workflow.\n */\nexport async function queryWorkflowTemplatesForAsset(\n backend: EntityStorageBackend,\n templateEntityName: string,\n assetId: string,\n): Promise<MaintenanceTemplateLike[]> {\n const trimmedAssetId = assetId?.trim();\n if (!trimmedAssetId) {\n return [];\n }\n\n const asset = (await backend.getOne(ASSET_ENTITY, trimmedAssetId).catch(() => null)) as AssetLike | null;\n const assetTypeId = asset?.assetTypeId?.trim();\n if (!asset || !assetTypeId) {\n return [];\n }\n\n const assetType = (await backend.getOne(ASSET_TYPE_ENTITY, assetTypeId).catch(() => null)) as\n | { maintenanceTypeIds?: string[] }\n | null;\n const maintenanceTypeIds = (assetType?.maintenanceTypeIds ?? []).filter((id) => isString(id) && id.trim());\n if (maintenanceTypeIds.length === 0) {\n return [];\n }\n\n const result = await backend\n .query(templateEntityName, {\n skip: 0,\n take: 500,\n filter: {\n logic: 'and',\n filters: [\n { field: 'assetTypeId', operator: { type: 'equal' }, value: assetTypeId },\n { field: 'maintenanceTypeId', operator: { type: 'in' }, value: maintenanceTypeIds },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n const rawItems: unknown[] = result.items ?? [];\n const items = rawItems.filter(isMaintenanceTemplateLike);\n return items.filter((template) => isWorkflowEnabledOnTemplate(template));\n}\n\nexport async function hasWorkOrderForPlan(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n): Promise<boolean> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n field: 'maintenancePlanId',\n operator: { type: 'equal' },\n value: planId,\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n return (result.total ?? 0) > 0 || (result.items?.length ?? 0) > 0;\n}\n\nexport async function countWorkOrdersForMaintenancePlan(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n): Promise<number> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n field: 'maintenancePlanId',\n operator: { type: 'equal' },\n value: planId,\n },\n })\n .catch(() => ({ total: 0 }));\n\n return result.total ?? 0;\n}\n\nexport async function hasWorkOrderForPlanScheduledStart(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n scheduledStart: string,\n): Promise<boolean> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n { field: 'maintenancePlanId', operator: { type: 'equal' }, value: planId },\n { field: 'scheduledStart', operator: { type: 'equal' }, value: scheduledStart },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n return (result.total ?? 0) > 0 || (result.items?.length ?? 0) > 0;\n}\n\n/**\n * Resolves the next scheduled work-order occurrence after a signed-off work order.\n * For `endCondition.type === 'never'`, returns the next interval from the signed-off scheduled start.\n */\nexport function resolveNextWorkOrderOccurrenceAfterSignedOff(\n plan: MaintenancePlanLike,\n signedOffWorkOrder: { scheduledStart?: string },\n referenceDate: Date = new Date(),\n): WorkOrderOccurrenceWindow | null {\n const schedule = plan.schedule;\n if (!schedule) {\n return null;\n }\n\n const startType = get(schedule, 'startCondition.type');\n if (startType === 'onDemand') {\n return null;\n }\n\n const anchor = toDate(signedOffWorkOrder.scheduledStart) ?? resolveScheduleAnchorDate(schedule, referenceDate);\n if (!anchor) {\n return null;\n }\n\n const mode = inferScheduleMode(schedule);\n const interval = resolveScheduleInterval(schedule);\n const nextStart = addScheduleInterval(anchor, mode, interval, 1);\n const endType = defaultTo(get(schedule, 'endCondition.type'), 'never');\n\n if (endType === 'byDate') {\n const endDate = toScheduleEndBoundary(get(schedule, 'endCondition.endDate'));\n if (endDate && nextStart.getTime() > endDate.getTime()) {\n return null;\n }\n }\n\n const estimatedHours = resolvePlanEstimatedHours(plan);\n const scheduledEnd = resolveOccurrenceScheduledEnd(nextStart, estimatedHours);\n\n return {\n scheduledStart: toIsoString(nextStart),\n ...(scheduledEnd ? { scheduledEnd } : {}),\n };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n buildMaintenancePlanPayload,\n canCreateWorkOrderFromPlan,\n allocateIdentifierCode,\n insertWorkOrdersFromPlan,\n MAINTENANCE_PLAN_CODE_RULE_ID,\n mergeMaintenancePlanForWorkOrder,\n queryAutoGenerateTemplatesForAssetType,\n resolveDisplayLabel,\n type AssetLike,\n type EntityStorageBackend,\n type MaintenancePlanLike,\n type MaintenanceTemplateLike,\n} from './maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst ASSET_ENTITY = 'AssetManagement.Asset';\n\n//#endregion\n\n//#region ---- Dialog ----\n\ninterface MaintenanceOfferChoice {\n createPlans: boolean;\n createWorkOrders: boolean;\n}\n\nasync function askMaintenanceOfferChoice(\n dialogService: AXDialogService,\n translateService: AXTranslationService,\n templateCount: number,\n assetTitle: string,\n): Promise<MaintenanceOfferChoice | null> {\n const title = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.title',\n );\n const content = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.content',\n { params: { count: templateCount, assetTitle } },\n );\n const plansOnlyLabel = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.actions.plans-only',\n );\n const plansAndWorkOrdersLabel = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.actions.plans-and-work-orders',\n );\n const cancelLabel = await translateService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: MaintenanceOfferChoice | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'horizontal',\n closeButton: false,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n {\n text: plansOnlyLabel,\n color: 'default',\n onClick: () => {\n dialog.close();\n finish({ createPlans: true, createWorkOrders: false });\n },\n },\n {\n text: plansAndWorkOrdersLabel,\n color: 'primary',\n onClick: () => {\n dialog.close();\n finish({ createPlans: true, createWorkOrders: true });\n },\n },\n ],\n });\n });\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating an Asset, offers to create maintenance plans (and optionally work orders)\n * for maintenance templates on the asset type with `autoGeneratePlan = true`.\n */\nexport const assetCreateMaintenanceOfferMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 88,\n },\n execute: async (ctx, next) => {\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const translateService = inject(AXTranslationService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n\n if (ctx.entityName !== ASSET_ENTITY) {\n await next();\n return;\n }\n\n await next();\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (\n !createdId ||\n !dialogService ||\n !toastService ||\n !translateService ||\n !entityStorage ||\n !identifierService ||\n !sessionService\n ) {\n return;\n }\n\n const asset = (await backend.getOne(ASSET_ENTITY, createdId).catch(() => null)) as AssetLike | null;\n if (!asset?.assetTypeId) {\n return;\n }\n\n const templateEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const planEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`;\n const workOrderEntity = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n const templates = await queryAutoGenerateTemplatesForAssetType(\n backend,\n templateEntity,\n asset.assetTypeId,\n );\n if (templates.length === 0) {\n return;\n }\n\n const assetTitle = resolveDisplayLabel(asset.title, asset.code ?? createdId);\n const choice = await askMaintenanceOfferChoice(\n dialogService,\n translateService,\n templates.length,\n assetTitle,\n );\n if (!choice?.createPlans) {\n return;\n }\n\n const createdPlans: MaintenancePlanLike[] = [];\n\n for (const template of templates) {\n if (!template.maintenanceTypeId) {\n const loaded = (await backend\n .getOne(templateEntity, template.id)\n .catch(() => null)) as MaintenanceTemplateLike | null;\n if (!loaded?.maintenanceTypeId) {\n continue;\n }\n Object.assign(template, loaded);\n }\n\n try {\n // Validation runs before identifier middleware; allocate (commit) a distinct code per plan.\n const planCode = await allocateIdentifierCode(\n identifierService,\n sessionService,\n MAINTENANCE_PLAN_CODE_RULE_ID,\n );\n const planPayload = buildMaintenancePlanPayload(asset, template, {\n suppressWorkOrderPrompt: true,\n code: planCode,\n autoGeneratedPlan: true,\n });\n const planId = await entityStorage.insertOne(planEntity, planPayload);\n const resolvedPlanId = typeof planId === 'string' ? planId : undefined;\n if (!resolvedPlanId) {\n continue;\n }\n\n const storedPlan = (await backend.getOne(planEntity, resolvedPlanId).catch(() => null)) as MaintenancePlanLike | null;\n const plan = mergeMaintenancePlanForWorkOrder(\n { ...planPayload, id: resolvedPlanId },\n storedPlan,\n resolvedPlanId,\n );\n if (plan) {\n createdPlans.push(plan);\n }\n } catch (error) {\n const errorTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.errors.create-failed-title',\n );\n const errorMessage =\n error instanceof Error\n ? error.message\n : await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.errors.create-failed-content',\n );\n toastService.show({ color: 'danger', title: errorTitle, content: errorMessage });\n return;\n }\n }\n\n if (!choice.createWorkOrders || createdPlans.length === 0) {\n const successTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.plans-title',\n );\n const successContent = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.plans-content',\n { params: { count: createdPlans.length } },\n );\n toastService.show({ color: 'success', title: successTitle, content: successContent });\n return;\n }\n\n let workOrderCount = 0;\n const referenceDate = new Date();\n for (const plan of createdPlans) {\n if (!canCreateWorkOrderFromPlan(plan)) {\n continue;\n }\n workOrderCount += await insertWorkOrdersFromPlan(\n entityStorage,\n identifierService,\n sessionService,\n workOrderEntity,\n plan,\n {\n autoGeneratedWorkOrder: true,\n referenceDate,\n sourceType: AXMWorkOrderSourceType.CreateAsset,\n backend,\n },\n );\n }\n\n const successTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.both-title',\n );\n const successContent = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.both-content',\n { params: { planCount: createdPlans.length, workOrderCount } },\n );\n toastService.show({ color: 'success', title: successTitle, content: successContent });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityDataSelectorService,\n AXPEntityDefinitionRegistryService,\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n allocateIdentifierCode,\n buildWorkOrderPayloadFromFailureRegister,\n canCreateWorkOrderFromFailureRegister,\n resolveMaintenanceTemplate,\n WORK_ORDER_NO_RULE_ID,\n type EntityStorageBackend,\n type FailureRegisterLike,\n type MaintenanceTemplateLike,\n} from './maintenance-generation.utils';\n\n/** Asset detail route entity keys (must match AssetManagement registration). */\nconst ASSET_ENTITY = 'AssetManagement.Asset';\nconst ASSET_TYPE_ENTITY = 'AssetManagement.AssetType';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface AssetLike {\n assetTypeId?: string;\n assetType?: {\n maintenanceTypeIds?: string[];\n };\n}\n\ninterface AssetTypeLike {\n maintenanceTypeIds?: string[];\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeMaintenanceTypeIds(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((id): id is string => typeof id === 'string' && id.trim().length > 0);\n}\n\n/**\n * Resolves maintenance type ids allowed for the asset (from asset type), matching work-order / maintenance-plan lookups.\n */\nasync function resolveAssetMaintenanceTypeIds(backend: EntityStorageBackend, assetId: string): Promise<string[]> {\n const asset = (await backend.getOne(ASSET_ENTITY, assetId).catch(() => null)) as AssetLike | null;\n if (!asset) {\n return [];\n }\n\n const fromAssetType = normalizeMaintenanceTypeIds(asset.assetType?.maintenanceTypeIds);\n if (fromAssetType.length > 0) {\n return fromAssetType;\n }\n\n if (!asset.assetTypeId) {\n return [];\n }\n\n const assetType = (await backend\n .getOne(ASSET_TYPE_ENTITY, asset.assetTypeId)\n .catch(() => null)) as AssetTypeLike | null;\n return normalizeMaintenanceTypeIds(assetType?.maintenanceTypeIds);\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating a Failure Register, asks user to optionally create a Work Order.\n * If user confirms, opens the standard entity data selector for maintenance templates.\n */\nexport const failureRegisterCreateWorkOrderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 90,\n },\n execute: async (ctx, next) => {\n // IMPORTANT: resolve injected deps before any await to keep Angular injection context valid.\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const entityRegistry = inject(AXPEntityDefinitionRegistryService, { optional: true });\n const entityDataSelector = inject(AXPEntityDataSelectorService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n\n const failureRegisterEntity = `${RootConfig.module.name}.${RootConfig.entities.failureRegister.name}`;\n if (ctx.entityName !== failureRegisterEntity) {\n await next();\n return;\n }\n\n await next();\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (!createdId) {\n return;\n }\n\n // The middleware can run in non-UI execution contexts; keep it safe.\n if (\n !dialogService ||\n !toastService ||\n !entityRegistry ||\n !entityDataSelector ||\n !entityStorage ||\n !identifierService ||\n !sessionService\n ) {\n return;\n }\n\n const fr = (await backend.getOne(ctx.entityName, createdId).catch(() => null)) as FailureRegisterLike | null;\n if (!fr?.assetId) {\n return;\n }\n\n const confirm = await dialogService.confirm(\n 'Create work order',\n 'Do you want to create work order now?',\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n if (confirm.result !== true) {\n return;\n }\n\n const templateEntity = await entityRegistry.resolve(\n RootConfig.module.name,\n RootConfig.entities.maintenanceTemplate.name,\n );\n if (!templateEntity) {\n toastService.show({\n color: 'danger',\n title: 'Template error',\n content: 'Maintenance template entity is not available.',\n });\n return;\n }\n\n const maintenanceTypeIds = await resolveAssetMaintenanceTypeIds(backend, fr.assetId);\n if (!maintenanceTypeIds.length) {\n toastService.show({\n color: 'warning',\n title: 'No maintenance types',\n content: 'The selected asset has no maintenance types configured on its asset type.',\n });\n return;\n }\n\n const selectorTitle =\n typeof templateEntity.title === 'string' ? templateEntity.title : RootConfig.entities.maintenanceTemplate.title;\n\n const templateFilters: AXDataSourceFilterOption = {\n field: 'maintenanceTypeId',\n operator: { type: 'in' },\n value: maintenanceTypeIds,\n };\n\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const workOrderEntityName = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n const selectorResult = await entityDataSelector.open({\n entity: templateEntity,\n title: selectorTitle,\n allowMultiple: false,\n allowCreate: 'none',\n columns: [\n 'code',\n 'title',\n 'maintenanceTypeId',\n 'needPermission',\n 'needShutdown',\n 'estimatedHours',\n 'hasSchedule',\n 'schedule',\n 'autoGeneratePlan',\n ],\n filters: templateFilters,\n });\n\n if (!selectorResult?.items?.length) {\n return;\n }\n\n const selectedTemplate = selectorResult.items[0] as MaintenanceTemplateLike;\n const template = await resolveMaintenanceTemplate(backend, templateEntityName, selectedTemplate);\n if (!template) {\n toastService.show({\n color: 'danger',\n title: 'Template error',\n content: 'Selected template does not have maintenance type.',\n });\n return;\n }\n\n if (!canCreateWorkOrderFromFailureRegister(fr, template)) {\n toastService.show({\n color: 'warning',\n title: 'Missing data',\n content: 'Asset, maintenance type, and maintenance template are required to create a work order.',\n });\n return;\n }\n\n const workOrderNo = await allocateIdentifierCode(identifierService, sessionService, WORK_ORDER_NO_RULE_ID);\n\n const result = await entityStorage.insertOne(\n workOrderEntityName,\n buildWorkOrderPayloadFromFailureRegister(fr, template, workOrderNo),\n );\n const workOrderId = typeof result === 'string' ? result : undefined;\n\n if (!workOrderId) {\n toastService.show({\n color: 'danger',\n title: 'Work order error',\n content: 'Work order creation failed.',\n });\n return;\n }\n\n toastService.show({\n color: 'success',\n title: 'Work order created',\n content: 'Work order was created successfully.',\n });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n canCreateWorkOrderFromPlan,\n countWorkOrdersToCreateFromSchedule,\n hasWorkOrderForPlan,\n insertWorkOrdersFromPlan,\n mergeMaintenancePlanForWorkOrder,\n SUPPRESS_WORK_ORDER_PROMPT_FIELD,\n type EntityStorageBackend,\n type MaintenancePlanLike,\n} from './maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Per-create ctx.locals flag so duplicate middleware entries schedule only one prompt. */\nconst WORK_ORDER_PROMPT_SCHEDULED_KEY = 'maintenancePlan.workOrderPromptScheduled';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface MaintenancePlanWorkOrderPromptDeps {\n createdId: string;\n planEntity: string;\n createPayload?: MaintenancePlanLike;\n dialogService: AXDialogService;\n backend: EntityStorageBackend;\n entityStorage: {\n insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown>;\n };\n identifierService: AXPIdentifierService;\n sessionService: AXPSessionService;\n toastService: AXToastService;\n}\n\n//#endregion\n\n//#region ---- Prompt runner ----\n\n/**\n * Asks whether to create work order(s) immediately after plan create completes.\n * Runs inline after `next()` so the dialog appears before navigation away from the create form.\n */\nasync function runMaintenancePlanWorkOrderPrompt(deps: MaintenancePlanWorkOrderPromptDeps): Promise<void> {\n const {\n createdId,\n planEntity,\n createPayload,\n dialogService,\n backend,\n entityStorage,\n identifierService,\n sessionService,\n toastService,\n } = deps;\n\n const storedPlan = (await backend.getOne(planEntity, createdId).catch(() => null)) as MaintenancePlanLike | null;\n const plan = mergeMaintenancePlanForWorkOrder(createPayload, storedPlan, createdId);\n if (!plan) {\n return;\n }\n\n const plannedWorkOrderCount = countWorkOrdersToCreateFromSchedule(plan.schedule);\n const confirmMessage =\n plannedWorkOrderCount === 1\n ? 'Do you want to create 1 work order now based on the plan schedule?'\n : `Do you want to create ${plannedWorkOrderCount} work orders now based on the plan schedule?`;\n\n const confirm = await dialogService.confirm(\n 'Create work order',\n confirmMessage,\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n if (confirm.result !== true) {\n return;\n }\n\n if (!canCreateWorkOrderFromPlan(plan)) {\n await dialogService.alert(\n 'Missing plan data',\n 'Asset, maintenance type, and maintenance template are required to create a work order.',\n 'warning',\n );\n return;\n }\n\n const workOrderEntity = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n if (await hasWorkOrderForPlan(backend, workOrderEntity, plan.id)) {\n await dialogService.alert(\n 'Work order exists',\n 'A work order already exists for this maintenance plan.',\n 'warning',\n );\n return;\n }\n\n try {\n const workOrderCount = await insertWorkOrdersFromPlan(\n entityStorage,\n identifierService,\n sessionService,\n workOrderEntity,\n plan,\n { backend },\n );\n\n if (workOrderCount === 0) {\n await dialogService.alert('Work order error', 'Work order creation failed.', 'danger');\n return;\n }\n\n const successMessage =\n workOrderCount === 1\n ? 'Work order was created successfully.'\n : `${workOrderCount} work orders were created successfully.`;\n toastService.show({\n color: 'success',\n title: 'Work order created',\n content: successMessage,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Work order creation failed.';\n await dialogService.alert('Work order error', message, 'danger');\n }\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating a Maintenance Plan, asks whether to create a Work Order immediately.\n * If confirmed, creates Work Order using the plan's already selected template.\n */\nexport const maintenancePlanCreateWorkOrderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 91,\n },\n execute: async (ctx, next) => {\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n\n const maintenancePlanEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`;\n if (ctx.entityName !== maintenancePlanEntity) {\n await next();\n return;\n }\n\n const suppressPrompt =\n ctx.data &&\n typeof ctx.data === 'object' &&\n (ctx.data as Record<string, unknown>)[SUPPRESS_WORK_ORDER_PROMPT_FIELD] === true;\n\n const createPayload =\n ctx.data && typeof ctx.data === 'object' ? (ctx.data as unknown as MaintenancePlanLike) : undefined;\n\n await next();\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (\n !createdId ||\n !dialogService ||\n !toastService ||\n !entityStorage ||\n !identifierService ||\n !sessionService ||\n suppressPrompt\n ) {\n return;\n }\n\n if (ctx.locals.get(WORK_ORDER_PROMPT_SCHEDULED_KEY)) {\n return;\n }\n ctx.locals.set(WORK_ORDER_PROMPT_SCHEDULED_KEY, true);\n\n await runMaintenancePlanWorkOrderPrompt({\n createdId,\n planEntity: ctx.entityName,\n createPayload,\n dialogService,\n backend,\n entityStorage,\n identifierService,\n sessionService,\n toastService,\n });\n },\n};\n\n//#endregion\n","//#region ---- Constants ----\n\n/** Answer keys pre-filled from asset.code (readonly in viewer). */\nexport const WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS = [\n 'mm_f920_asset_no',\n 'mm_prestart_plant_item',\n] as const;\n\n/** Answer keys pre-filled from asset.serialNumber (readonly in viewer). */\nexport const WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS = [\n 'mm_f920_registration_number',\n 'mm_prestart_serial_number',\n] as const;\n\n/** All asset-driven prefill keys across maintenance checklists. */\nexport const WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS = [\n ...WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS,\n ...WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS,\n] as const;\n\nexport type WorkOrderChecklistAssetPrefillKey = (typeof WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS)[number];\n\n//#endregion\n\n//#region ---- Helpers ----\n\n/**\n * Builds checklist answer prefill from asset identifiers for maintenance questionnaires.\n */\nexport function buildWorkOrderChecklistAssetPrefillAnswers(asset: {\n code?: string | null;\n serialNumber?: string | null;\n}): Partial<Record<WorkOrderChecklistAssetPrefillKey, string>> {\n const code = typeof asset.code === 'string' ? asset.code.trim() : '';\n const serialNumber = typeof asset.serialNumber === 'string' ? asset.serialNumber.trim() : '';\n\n const answers: Partial<Record<WorkOrderChecklistAssetPrefillKey, string>> = {};\n if (code) {\n for (const key of WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS) {\n answers[key] = code;\n }\n }\n if (serialNumber) {\n for (const key of WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS) {\n answers[key] = serialNumber;\n }\n }\n return answers;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandMiddleware } from '@acorex-platform/framework-client/runtime';\nimport { inject } from '@angular/core';\nimport { defaultTo, get, isEmpty, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n buildWorkOrderChecklistAssetPrefillAnswers,\n WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS,\n} from './work-order-checklist-prefill.constants';\n\n//#endregion\n\n//#region ---- Types ----\n\nconst WORK_ORDER_SUBJECT_TYPE = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\ninterface FillAssessmentCaseCommandInput {\n caseId?: string;\n sessionId?: string;\n prefillAnswers?: Record<string, unknown>;\n readonlyAnswerKeys?: string[];\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * Pre-fills PD-F920 asset header answers when a work-order checklist is opened from the task board.\n */\nexport const workOrderChecklistFillMiddleware: AXPCommandMiddleware<FillAssessmentCaseCommandInput, void> = async (\n context,\n next,\n) => {\n const entityService = inject(AXPEntityService);\n const input = context.input;\n const caseId = resolveText(get(input, 'caseId'));\n if (!caseId) {\n return next(context);\n }\n const assessmentCase = await entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(caseId);\n\n const subjectType = resolveText(get(assessmentCase, 'subjectRef.type'));\n const workOrderId = resolveText(get(assessmentCase, 'subjectRef.id'));\n if (subjectType !== WORK_ORDER_SUBJECT_TYPE || !workOrderId) {\n return next(context);\n }\n\n const workOrder = await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n\n const assetId = resolveText(get(workOrder, 'assetId'));\n if (!assetId) {\n return next(context);\n }\n\n const asset = (await entityService.withEntity('AssetManagement', 'Asset').data().byKey(assetId)) as {\n code?: string;\n serialNumber?: string;\n } | null;\n\n const prefillAnswers = buildWorkOrderChecklistAssetPrefillAnswers({\n code: asset?.code ?? null,\n serialNumber: asset?.serialNumber ?? null,\n });\n\n if (isEmpty(prefillAnswers)) {\n return next(context);\n }\n\n const sessionId = resolveText(get(input, 'sessionId'));\n if (sessionId) {\n const session = await entityService.withEntity('AssessmentManagement', 'AssessmentSession').data().byKey(sessionId);\n const existingAnswers = defaultTo(get(session, 'answers'), {}) as Record<string, unknown>;\n const { merged, changed } = mergeMissingAnswers(existingAnswers, prefillAnswers);\n if (changed) {\n await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .update(sessionId, { answers: merged } as never);\n }\n }\n\n return next({\n ...context,\n input: {\n ...input,\n prefillAnswers: {\n ...prefillAnswers,\n ...defaultTo(get(input, 'prefillAnswers'), {}),\n },\n readonlyAnswerKeys: [\n ...WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS,\n ...defaultTo(get(input, 'readonlyAnswerKeys'), []),\n ],\n },\n });\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\nfunction mergeMissingAnswers(\n existing: Record<string, unknown>,\n prefill: Record<string, unknown>,\n): { merged: Record<string, unknown>; changed: boolean } {\n const merged = { ...existing };\n let changed = false;\n\n for (const [key, value] of Object.entries(prefill)) {\n if (isEmpty(merged[key]) && !isEmpty(value)) {\n merged[key] = value;\n changed = true;\n }\n }\n\n return { merged, changed };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandMiddleware, AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { inject } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { AXMWorkOrderStatus, AXMMaintenanceManagementCommandKeys, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nconst WORK_ORDER_SUBJECT_TYPE = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\ninterface FillAssessmentCaseCommandInput {\n caseId?: string;\n sessionId?: string;\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After a work-order checklist is submitted, ensures WorkReport draft, assessment reference,\n * and work-order in-progress status are persisted even when the workflow backend chain does not run.\n */\nexport const workOrderChecklistPostSubmitMiddleware: AXPCommandMiddleware<\n FillAssessmentCaseCommandInput,\n void\n> = async (context, next) => {\n const entityService = inject(AXPEntityService);\n const commandService = inject(AXPCommandService);\n const sessionService = inject(AXPSessionService);\n\n const result = await next(context);\n try {\n await applyWorkOrderChecklistPostSubmitEffects(context.input, result, {\n entityService,\n commandService,\n sessionService,\n });\n } catch (error: unknown) {\n AXPDebugService.instance?.error(\n 'maintenance-management',\n 'work-order-checklist-post-submit',\n 'Post-submit middleware failed; assessment fill result preserved',\n () => ({\n caseId: get(context.input, 'caseId'),\n sessionId: get(context.input, 'sessionId'),\n success: result?.success,\n outcome: get(result, 'metadata.outcome'),\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n return result;\n};\n\ninterface WorkOrderChecklistPostSubmitServices {\n entityService: AXPEntityService;\n commandService: AXPCommandService;\n sessionService: AXPSessionService;\n}\n\n//#endregion\n\n//#region ---- Post-submit effects ----\n\nasync function applyWorkOrderChecklistPostSubmitEffects(\n input: FillAssessmentCaseCommandInput,\n result: AXPRuntimeCommandResult<void> | null | undefined,\n services: WorkOrderChecklistPostSubmitServices,\n): Promise<void> {\n if (!result?.success) {\n return;\n }\n\n const caseId = resolveText(get(input, 'caseId'));\n if (!caseId) {\n return;\n }\n\n const submitted = await isWorkOrderChecklistSubmitted(input, result, caseId, services.entityService);\n if (!submitted) {\n return;\n }\n\n const { entityService, commandService, sessionService } = services;\n\n const assessmentCase = await entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(caseId);\n\n const subjectType = resolveText(get(assessmentCase, 'subjectRef.type'));\n const workOrderId = resolveText(get(assessmentCase, 'subjectRef.id'));\n if (subjectType !== WORK_ORDER_SUBJECT_TYPE || !workOrderId) {\n return;\n }\n\n const workOrder = (await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n if (!workOrder?.id) {\n return;\n }\n\n const performedById = await resolveEmployeeIdByPersonId(\n entityService,\n resolveText(workOrder.assignedToId),\n );\n const completedById = resolveText(sessionService.user?.id);\n const activityKeys = AXMMaintenanceManagementCommandKeys.WorkflowActivity;\n\n const draftResult = await commandService.execute(activityKeys.CreateOrGetWorkReportDraft, {\n workOrderId,\n performedById: performedById || null,\n });\n\n const workReportId = resolveText(get(draftResult, 'data.workReportId'));\n\n await commandService.execute(activityKeys.RecordWorkReportAssessment, {\n workOrderId,\n workReportId: workReportId || null,\n performedById: performedById || null,\n assessmentCaseId: caseId,\n completedById: completedById || null,\n });\n\n const shouldSetInProgress =\n workOrder.statusId === AXMWorkOrderStatus.Planned ||\n workOrder.statusId === AXMWorkOrderStatus.Scheduled ||\n workOrder.statusId === AXMWorkOrderStatus.Assigned;\n\n if (shouldSetInProgress) {\n await commandService.execute(activityKeys.UpdateWorkOrderInProgress, { workOrderId });\n }\n}\n\nasync function isWorkOrderChecklistSubmitted(\n input: FillAssessmentCaseCommandInput,\n result: AXPRuntimeCommandResult<void> | null | undefined,\n caseId: string,\n entityService: AXPEntityService,\n): Promise<boolean> {\n const outcome = resolveText(get(result, 'metadata.outcome')).toLowerCase();\n if (outcome === 'submitted') {\n return true;\n }\n const sessionId = resolveText(get(input, 'sessionId'));\n if (sessionId) {\n const session = await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .byKey(sessionId);\n if (resolveText(get(session, 'statusId')).toLowerCase() === 'submitted') {\n return true;\n }\n }\n\n const page = await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .query({\n skip: 0,\n take: 1,\n sort: [{ field: 'lastSavedAt', direction: 'desc' }],\n filter: {\n logic: 'and',\n filters: [{ field: 'caseId', operator: { type: 'equal' }, value: caseId }],\n },\n } as never);\n\n const latest = defaultTo(get(page, 'items[0]'), null) as { statusId?: string } | null;\n return resolveText(latest?.statusId).toLowerCase() === 'submitted';\n}\n\nasync function resolveEmployeeIdByPersonId(\n entityService: AXPEntityService,\n personId: string,\n): Promise<string> {\n if (!personId) {\n return '';\n }\n\n const page = await entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return resolveText(employee?.id);\n}\n\nfunction resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { isEmpty, isNil } from 'lodash';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityStorageMiddleware } from '@acorex-platform/framework-client/layout/entity';\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Middleware ----\n\nconst workOrderEntityName = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n/**\n * Applies create defaults for work orders: `sourceType` (manual when unset) and `requestedById` (current user).\n */\nexport const workOrderSourceTypeMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 10,\n },\n execute: async (ctx, next) => {\n if (ctx.entityName !== workOrderEntityName || !ctx.data || typeof ctx.data !== 'object') {\n await next();\n return;\n }\n\n const data = ctx.data as Record<string, unknown>;\n if (isNil(data['sourceType']) || data['sourceType'] === '') {\n data['sourceType'] = AXMWorkOrderSourceType.Manual;\n }\n\n const sessionService = inject(AXPSessionService, { optional: true });\n const currentUserId = sessionService?.user?.id;\n if (!isEmpty(currentUserId)) {\n data['requestedById'] = currentUserId;\n }\n\n await next();\n },\n};\n\n//#endregion\n","//#region ---- Middleware Exports ----\n\nexport { assetCreateMaintenanceOfferMiddleware } from './asset-create-maintenance-offer.middleware';\nexport { failureRegisterCreateWorkOrderMiddleware } from './failure-register-create-work-order.middleware';\nexport { maintenancePlanCreateWorkOrderMiddleware } from './maintenance-plan-create-work-order.middleware';\nexport { workOrderChecklistFillMiddleware } from './work-order-checklist-fill.middleware';\nexport { workOrderChecklistPostSubmitMiddleware } from './work-order-checklist-post-submit.middleware';\nexport { workOrderSourceTypeMiddleware } from './work-order-source-type.middleware';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { MM_CATALOG_SCOPE_MN } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst QUESTIONNAIRE = 'AssessmentManagement.Questionnaire';\nconst QUESTION_BANK_ITEM = 'AssessmentManagement.QuestionBankItem';\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\nconst MM_CATALOG_TARGETS = [QUESTIONNAIRE, QUESTION_BANK_ITEM, WORKFLOW_DEFINITION] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMMaintenanceManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: MM_CATALOG_SCOPE_MN,\n title: '@maintenance-management:catalog-scopes.mn.title',\n description: '@maintenance-management:catalog-scopes.mn.description',\n targets: [...MM_CATALOG_TARGETS],\n icon: 'fa-light fa-screwdriver-wrench',\n cssClass: 'warning-surface',\n order: 20,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { isString } from 'lodash';\n\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n} from '../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveAssetId(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\n//#endregion\n\n/**\n * Expression-evaluator scope for work-order \"Create\" dropdown items (workflow-enabled maintenance templates).\n */\nexport class AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n /**\n * Loads maintenance templates with workflows for the asset behind the current list context.\n * Resolves asset → assetType.maintenanceTypeIds → templates (assetType + maintenanceType + workflow).\n */\n WorkOrderCreateActions: async (assetIdRaw?: unknown): Promise<AXPEntityAction[]> => {\n const assetId = resolveAssetId(assetIdRaw);\n if (!assetId) {\n return [];\n }\n\n try {\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n const backend = this.createStorageBackend();\n const assetContext = await this.loadAssetMaintenanceContext(backend, assetId);\n if (!assetContext) {\n return [];\n }\n\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n\n const sorted = [...templates].sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n const { asset, assetTypeId, maintenanceTypeIds } = assetContext;\n\n return sorted.map((template) => ({\n name: `create-work-order-${template.id}`,\n title: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n icon: 'fa-light fa-clipboard-list',\n color: 'default',\n command: {\n name: 'Entity:Create',\n options: {\n process: {\n redirect: false,\n canCreateNewOne: true,\n data: {\n assetId: asset.id,\n asset: {\n id: asset.id,\n title: asset.title,\n assetTypeId,\n assetType: { maintenanceTypeIds },\n },\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\n maintenanceTemplate: {\n id: template.id,\n title: template.title,\n metadataIds: template.metadataIds,\n workflowConfig: template.workflowConfig,\n },\n needShutdown: template.needShutdown ?? false,\n needPermission: template.needPermission ?? false,\n estimatedHours:\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined,\n sourceType: AXMWorkOrderSourceType.Manual,\n autoGeneratedWorkOrder: false,\n },\n },\n },\n },\n priority: 'primary',\n type: 'info',\n scope: AXPEntityCommandScope.TypeLevel,\n })) satisfies AXPEntityAction[];\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.WorkOrderCreateActions failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().query(request as never);\n },\n };\n }\n\n private async loadAssetMaintenanceContext(backend: EntityStorageBackend, assetId: string) {\n const asset = (await backend.getOne('AssetManagement.Asset', assetId)) as {\n id?: string;\n title?: unknown;\n assetTypeId?: string;\n } | null;\n\n const assetTypeId = asset?.assetTypeId?.trim();\n if (!asset?.id || !assetTypeId) {\n return null;\n }\n\n const assetType = (await backend.getOne('AssetManagement.AssetType', assetTypeId)) as {\n maintenanceTypeIds?: string[];\n } | null;\n const maintenanceTypeIds = (assetType?.maintenanceTypeIds ?? []).filter((id) => isString(id) && id.trim());\n if (maintenanceTypeIds.length === 0) {\n return null;\n }\n\n return {\n asset: { id: asset.id, title: asset.title, assetTypeId },\n assetTypeId,\n maintenanceTypeIds,\n };\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkOrderWorkflowColumnWidget: AXPWidgetConfig = {\n name: 'work-order-workflow-column',\n title: 'Work Order Workflow Column',\n description: 'List column for selecting a maintenance template workflow and starting the flow per row.',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-diagram-project',\n properties: [],\n components: {\n column: {\n component: () =>\n import('./work-order-workflow-column.component').then((c) => c.AXMWorkOrderWorkflowColumnComponent),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkOrderWorkReportColumnWidget: AXPWidgetConfig = {\n name: 'work-order-work-report-column',\n title: 'Work Order Work Report Column',\n description: 'List column for viewing the work report linked to a work order.',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-file-lines',\n properties: [],\n components: {\n column: {\n component: () =>\n import('./work-order-work-report-column.component').then((c) => c.AXMWorkOrderWorkReportColumnComponent),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMWorkOrderWorkflowColumnWidget } from './work-order-workflow-column.widget.config';\nimport { AXMWorkOrderWorkReportColumnWidget } from './work-order-work-report-column.widget.config';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMWorkOrderWorkflowColumnWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMWorkOrderWorkflowColumnWidget, AXMWorkOrderWorkReportColumnWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkReportChecklistResultsWidget: AXPWidgetConfig = {\n name: 'work-report-checklist-results',\n title: 'Work Report Checklist Results',\n description: 'Read-only checklist assessment references with view-response actions.',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-list-check',\n properties: [],\n components: {\n view: {\n component: () =>\n import('./work-report-checklist-results-view.component').then(\n (c) => c.AXMWorkReportChecklistResultsViewComponent,\n ),\n },\n edit: {\n component: () =>\n import('./work-report-checklist-results-view.component').then(\n (c) => c.AXMWorkReportChecklistResultsViewComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMWorkReportChecklistResultsWidget } from './work-report-checklist-results.widget.config';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMWorkReportWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMWorkReportChecklistResultsWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups, provideCommandMiddleware } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { AXMMaintenanceManagementCommandKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n assetCreateMaintenanceOfferMiddleware,\n failureRegisterCreateWorkOrderMiddleware,\n maintenancePlanCreateWorkOrderMiddleware,\n workOrderChecklistFillMiddleware,\n workOrderChecklistPostSubmitMiddleware,\n workOrderSourceTypeMiddleware,\n} from './middlewares';\nimport { AXMMaintenanceManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider } from './features/shared/work-order-expression-evaluator-scope.provider';\nimport { AXMWorkOrderWorkflowColumnWidgetProvider } from './features/work-order/widgets/work-order-workflow-column-widget.provider';\nimport { AXMWorkReportWidgetProvider } from './features/work-report/widgets/work-report-widget.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n ],\n providers: [\n\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMMaintenanceManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMWorkReportWidgetProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMWorkOrderWorkflowColumnWidgetProvider,\n multi: true,\n },\n // Provider references (now using tokens)\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMMaintenanceManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMMaintenanceManagementMenuProvider),\n ),\n provideLazyProvider(AXP_SEARCH_PROVIDER, () =>\n import('./search-command.provider').then((m) => m.AXMMaintenanceManagementSearchCommandProvider),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/failure-register-status.provider').then(\n (m) => m.AXMMaintenanceManagementFailureRegisterStatusProvider,\n ),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/work-order-status.provider').then(\n (m) => m.AXMMaintenanceManagementWorkOrderStatusProvider,\n ),\n ),\n provideCommandMiddleware([\n {\n target: 'AssessmentManagement.AssessmentCase:Fill',\n middleware: workOrderChecklistPostSubmitMiddleware,\n },\n {\n target: 'AssessmentManagement.AssessmentCase:Fill',\n middleware: workOrderChecklistFillMiddleware,\n },\n ]),\n provideCommandSetups([\n {\n key: 'Entity:List',\n command: () => import('./features/commands/work-order-list-command').then((c) => c.WorkOrderListCommand),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,\n command: () =>\n import('./features/work-order/commands/start-work-order-flow.command').then(\n (c) => c.StartWorkOrderFlowCommand,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolveWorkOrder,\n command: () =>\n import('./features/work-order/workflows/activities/resolve-work-order.activity').then(\n (c) => c.ResolveWorkOrderActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolvePersonUserId,\n command: () =>\n import('./features/work-order/workflows/activities/resolve-person-user-id.activity').then(\n (c) => c.ResolvePersonUserIdActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.CreateOrGetWorkReportDraft,\n command: () =>\n import('./features/work-order/workflows/activities/create-or-get-work-report-draft.activity').then(\n (c) => c.CreateOrGetWorkReportDraftActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderInProgress,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-order-in-progress.activity').then(\n (c) => c.UpdateWorkOrderInProgressActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ValidateWorkOrderCompletion,\n command: () =>\n import('./features/work-order/workflows/activities/validate-work-order-completion.activity').then(\n (c) => c.ValidateWorkOrderCompletionActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkReportOnCompletion,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-report-on-completion.activity').then(\n (c) => c.UpdateWorkReportOnCompletionActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.RecordWorkReportAssessment,\n command: () =>\n import('./features/work-order/workflows/activities/record-work-report-assessment.activity').then(\n (c) => c.RecordWorkReportAssessmentActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderCompleted,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-order-completed.activity').then(\n (c) => c.UpdateWorkOrderCompletedActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkReport.FillCompletion,\n command: () =>\n import('./features/work-report/commands/fill-work-report-completion.command').then(\n (c) => c.FillWorkReportCompletionCommand,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkReport.OpenFromWorkOrder,\n command: () =>\n import('./features/work-report/commands/open-work-report-from-work-order.command').then(\n (c) => c.OpenWorkReportFromWorkOrderCommand,\n ),\n },\n ]),\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: assetCreateMaintenanceOfferMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: failureRegisterCreateWorkOrderMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: maintenancePlanCreateWorkOrderMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: workOrderSourceTypeMiddleware,\n multi: true,\n },\n ],\n})\nexport class AXMMaintenanceManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXMMaintenanceManagementMenuKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nconst PLAN_EQUIPMENT_MENU_KEY = 'Configuration:Menu:PlantEquipment';\n\n/**\n * Maintenance Management Menu Provider.\n * Provides menu items for the Maintenance Management module with permission and feature checks.\n */\nexport class AXMMaintenanceManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPAssetsMaintenancePermissionKeys;\n\n // Edition enables AssetManagement (module name), not MaintenanceManagement.\n // Keep operational + setup menus on the same feature gate as Asset Types.\n const operationalMenuPolicy = {\n features: ['AssetManagement'],\n permissions: [keys.MaintainMaintenance],\n };\n const configMenuPolicy = {\n features: ['AssetManagement'],\n permissions: [keys.Setup],\n };\n\n context.find(AXPCommonMenuKeys.PlantEquipment).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.FailureRegisters,\n text: RootConfig.entities.failureRegister.titlePlural,\n icon: RootConfig.entities.failureRegister.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureRegister.name),\n priority: 12,\n policy: operationalMenuPolicy,\n },\n ]);\n\n const planEquipmentMenu = context.find(PLAN_EQUIPMENT_MENU_KEY);\n if (!planEquipmentMenu.exists) {\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: PLAN_EQUIPMENT_MENU_KEY,\n priority: 9000,\n text: '@general:menus.plan-equipment.title',\n icon: module.icon,\n },\n ]);\n }\n\n context.find(PLAN_EQUIPMENT_MENU_KEY).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.MaintenanceTypes,\n text: RootConfig.entities.maintenanceType.titlePlural,\n icon: RootConfig.entities.maintenanceType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.maintenanceType.name),\n priority: 12,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.ActivityTypes,\n text: RootConfig.entities.activityType.titlePlural,\n icon: RootConfig.entities.activityType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.activityType.name),\n priority: 13,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.Failures,\n text: '@maintenance-management:module.menus.failures.title',\n icon: RootConfig.entities.failureMode.icon,\n type: 'menu',\n priority: 14,\n policy: configMenuPolicy,\n children: [],\n },\n ]);\n\n // Nest taxonomy items under Failures. A type:'group' parent with sibling leaves\n // looks empty / is easy to miss; empty parents without children are also filtered.\n context.find(AXMMaintenanceManagementMenuKeys.Failures).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.FailureTypes,\n text: RootConfig.entities.failureType.titlePlural,\n icon: RootConfig.entities.failureType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureType.name),\n priority: 1,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureModes,\n text: RootConfig.entities.failureMode.titlePlural,\n icon: RootConfig.entities.failureMode.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureMode.name),\n priority: 2,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureDetections,\n text: RootConfig.entities.failureDetection.titlePlural,\n icon: RootConfig.entities.failureDetection.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureDetection.name),\n priority: 3,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureCauses,\n text: RootConfig.entities.failureCause.titlePlural,\n icon: RootConfig.entities.failureCause.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureCause.name),\n priority: 4,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureMechanisms,\n text: RootConfig.entities.failureMechanism.titlePlural,\n icon: RootConfig.entities.failureMechanism.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureMechanism.name),\n priority: 5,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureEffects,\n text: RootConfig.entities.failureEffect.titlePlural,\n icon: RootConfig.entities.failureEffect.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureEffect.name),\n priority: 6,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureSeverities,\n text: RootConfig.entities.failureSeverity.titlePlural,\n icon: RootConfig.entities.failureSeverity.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureSeverity.name),\n priority: 7,\n policy: configMenuPolicy,\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-maintenance-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers maintenance capabilities into the shared Assets & Maintenance group.\n */\n@Injectable()\nexport class AXMMaintenanceManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAssetsMaintenancePermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:assets-maintenance.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.AssetsMaintenance.Root, `${G}.assets-maintenance.title`, `${G}.assets-maintenance.description`, { order: 70 });\n\n context\n .addGroup(\n groups.AssetsMaintenance.Maintenance,\n `${G}.assets-maintenance-maintenance.title`,\n `${G}.assets-maintenance-maintenance.description`,\n { parent: groups.AssetsMaintenance.Root, order: 20 },\n )\n .addPermission(\n keys.MaintainMaintenance,\n `${P}.maintain-maintenance.title`,\n `${P}.maintain-maintenance.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMMaintenanceManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-maintenance-type',\n group: 'command',\n title: RootConfig.entities.maintenanceType.title,\n icon: RootConfig.entities.maintenanceType.icon,\n description: RootConfig.entities.maintenanceType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenanceType.name}`,\n {\n name: RootConfig.entities.maintenanceType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenanceType.title,\n },\n ),\n },\n },\n {\n id: 'create-maintenance-template',\n group: 'command',\n title: RootConfig.entities.maintenanceTemplate.title,\n icon: RootConfig.entities.maintenanceTemplate.icon,\n description: RootConfig.entities.maintenanceTemplate.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`,\n {\n name: RootConfig.entities.maintenanceTemplate.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenanceTemplate.title,\n },\n ),\n },\n },\n {\n id: 'create-maintenance-plan',\n group: 'command',\n title: RootConfig.entities.maintenancePlan.title,\n icon: RootConfig.entities.maintenancePlan.icon,\n description: RootConfig.entities.maintenancePlan.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`,\n {\n name: RootConfig.entities.maintenancePlan.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenancePlan.title,\n },\n ),\n },\n },\n {\n id: 'create-work-report',\n group: 'command',\n title: RootConfig.entities.workReport.title,\n icon: RootConfig.entities.workReport.icon,\n description: RootConfig.entities.workReport.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.workReport.name}`,\n {\n name: RootConfig.entities.workReport.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.workReport.title,\n },\n ),\n },\n },\n {\n id: 'create-activity-type-resource',\n group: 'command',\n title: RootConfig.entities.activityTypeResource.title,\n icon: RootConfig.entities.activityTypeResource.icon,\n description: RootConfig.entities.activityTypeResource.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.activityTypeResource.name}`,\n {\n name: RootConfig.entities.activityTypeResource.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.activityTypeResource.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-mode',\n group: 'command',\n title: RootConfig.entities.failureMode.title,\n icon: RootConfig.entities.failureMode.icon,\n description: RootConfig.entities.failureMode.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureMode.name}`,\n {\n name: RootConfig.entities.failureMode.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureMode.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-cause',\n group: 'command',\n title: RootConfig.entities.failureCause.title,\n icon: RootConfig.entities.failureCause.icon,\n description: RootConfig.entities.failureCause.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureCause.name}`,\n { name: RootConfig.entities.failureCause.name, module: RootConfig.module.name, title: RootConfig.entities.failureCause.title }\n ),\n },\n },\n {\n id: 'create-failure-mechanism',\n group: 'command',\n title: RootConfig.entities.failureMechanism.title,\n icon: RootConfig.entities.failureMechanism.icon,\n description: RootConfig.entities.failureMechanism.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureMechanism.name}`,\n {\n name: RootConfig.entities.failureMechanism.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureMechanism.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-detection',\n group: 'command',\n title: RootConfig.entities.failureDetection.title,\n icon: RootConfig.entities.failureDetection.icon,\n description: RootConfig.entities.failureDetection.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureDetection.name}`,\n {\n name: RootConfig.entities.failureDetection.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureDetection.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-type',\n group: 'command',\n title: RootConfig.entities.failureType.title,\n icon: RootConfig.entities.failureType.icon,\n description: RootConfig.entities.failureType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureType.name}`,\n {\n name: RootConfig.entities.failureType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureType.title,\n }\n ),\n },\n },\n ];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMAssetManagementCommandKeys } from '@acorex-platform/module-asset-management-client/contracts';\nimport type { AXPMultiLanguageString, AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\n\nimport { AXMMaintenanceManagementCommandKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Factory config ----\n\nexport interface WorkOrderExecutionWorkflowConfig {\n name: string;\n title: AXPMultiLanguageString;\n description: AXPMultiLanguageString;\n startTaskTitle: string;\n inProgressTaskTitle: string;\n}\n\n//#endregion\n\n//#region ---- Expression helpers ----\n\nconst WFM_EXPR_ASSIGNED_USER = 'context.eval(\"variables.assignedUserId\")';\nconst WFM_EXPR_WORK_ORDER_ID = 'context.eval(\"inputs.workOrderId\")';\nconst WFM_EXPR_ASSET_ID = 'context.eval(\"inputs.assetId\")';\nconst WFM_EXPR_MAINTENANCE_TYPE_ID = 'context.eval(\"inputs.maintenanceTypeId\")';\n\nconst wfmExpr = (expression: string): string => `{{ ${expression} }}`;\n\nconst workOrderTaskContext = {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n workOrderNo: '{{ inputs.workOrderNo }}',\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n assetDisplayName: '{{ inputs.assetDisplayName }}',\n maintenanceTypeId: '{{ inputs.maintenanceTypeId }}',\n maintenanceTypeName: '{{ inputs.maintenanceTypeName }}',\n maintenancePlanId: '{{ inputs.maintenancePlanId }}',\n failureRegisterId: '{{ inputs.failureRegisterId }}',\n sourceType: '{{ inputs.sourceType }}',\n dueDate: '{{ inputs.dueDate }}',\n entityType: 'MaintenanceManagement.WorkOrder',\n};\n\nconst startWorkAction = {\n name: 'start-work',\n title: 'Start work',\n icon: 'fa-light fa-play',\n color: 'primary',\n command: { name: 'start-work' },\n};\n\nconst completeWorkAction = {\n name: 'complete-work',\n title: 'Complete work',\n icon: 'fa-light fa-check',\n color: 'success',\n command: { name: 'complete-work' },\n};\n\n//#endregion\n\n/**\n * Executes an existing work order: assignee task board → start work → in progress → complete work → completed.\n * Approval/sign-off is intentionally excluded (separate workflow).\n */\nexport function createWorkOrderExecutionWorkflowDefinition(\n config: WorkOrderExecutionWorkflowConfig,\n): AXPWorkflowDefinition {\n const { name, title, description, startTaskTitle, inProgressTaskTitle } = config;\n const activityKeys = AXMMaintenanceManagementCommandKeys.WorkflowActivity;\n const assetActivityKey = AXMAssetManagementCommandKeys.WorkflowActivity.RecalculateOperationalStatus;\n\n return {\n schemaVersion: 'acorex-platform-workflow/v1',\n name,\n title,\n description,\n variables: [\n {\n name: 'assignedUserId',\n title: 'Assigned user',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedPersonId',\n title: 'Assigned person',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetStatusTarget',\n title: 'Asset status target',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workStartedAt',\n title: 'Work started at',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workCompletedAt',\n title: 'Work completed at',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n ],\n inputs: [\n {\n name: 'workOrderId',\n title: 'Work order ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workOrderNo',\n title: 'Work order number',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetId',\n title: 'Asset ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetDisplayName',\n title: 'Asset display name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedToId',\n title: 'Assigned person ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedToDisplayName',\n title: 'Assigned person display name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenanceTypeId',\n title: 'Maintenance type ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenanceTypeName',\n title: 'Maintenance type name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenancePlanId',\n title: 'Maintenance plan ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'failureRegisterId',\n title: 'Failure register ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'sourceType',\n title: 'Source type',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'dueDate',\n title: 'Due date',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n ],\n outputs: [],\n extensions: {},\n graph: {\n startActivityId: 'resolveWorkOrder',\n activities: [\n {\n id: 'resolveWorkOrder',\n name: activityKeys.ResolveWorkOrder,\n title: 'Resolve work order',\n inputs: {\n workOrderId: '{{ inputs.workOrderId }}',\n assignedToId: '{{ inputs.assignedToId }}',\n },\n outputToVariables: {\n assignedPersonId: 'assignedToId',\n },\n },\n {\n id: 'resolveAssignedUser',\n name: activityKeys.ResolvePersonUserId,\n title: 'Resolve assigned user',\n inputs: {\n personId: '{{ variables.assignedPersonId || inputs.assignedToId }}',\n },\n outputToVariables: { assignedUserId: 'userId' },\n },\n {\n id: 'showAssignedUserRequiredToast',\n name: 'workflow-activity:show-toast',\n title: 'Assigned user required',\n inputs: {\n message: 'Assigned user is required before starting work order execution.',\n type: 'warning',\n },\n },\n {\n id: 'createWorkOrderTask',\n name: 'workflow-activity:human-task',\n title: startTaskTitle,\n inputs: {\n title: 'Work order: {{ inputs.workOrderNo }}',\n description: 'Start the assigned maintenance work when you are ready.',\n assignedUserIds: wfmExpr(WFM_EXPR_ASSIGNED_USER),\n dueDate: '{{ inputs.dueDate }}',\n context: workOrderTaskContext,\n actions: { suffix: [startWorkAction] },\n },\n },\n {\n id: 'updateWorkOrderInProgress',\n name: activityKeys.UpdateWorkOrderInProgress,\n title: 'Work order — in progress',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n outputToVariables: { workStartedAt: 'startedAt' },\n },\n {\n id: 'recalculateAssetStatusOnStart',\n name: assetActivityKey,\n title: 'Recalculate asset status (work started)',\n inputs: {\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n trigger: 'work-started',\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n maintenanceTypeId: wfmExpr(WFM_EXPR_MAINTENANCE_TYPE_ID),\n },\n outputToVariables: { assetStatusTarget: 'statusId' },\n },\n {\n id: 'workInProgressTask',\n name: 'workflow-activity:human-task',\n title: inProgressTaskTitle,\n inputs: {\n title: 'Work order: {{ inputs.workOrderNo }}',\n description: 'Perform the maintenance work, then mark it complete.',\n assignedUserIds: wfmExpr(WFM_EXPR_ASSIGNED_USER),\n dueDate: '{{ inputs.dueDate }}',\n context: workOrderTaskContext,\n actions: { suffix: [completeWorkAction] },\n },\n },\n {\n id: 'showWorkCompletionValidationFailedToast',\n name: 'workflow-activity:show-toast',\n title: 'Work completion validation failed',\n inputs: {\n message: 'Work order cannot be completed yet. Ensure work is in progress and requirements are met.',\n type: 'warning',\n },\n },\n {\n id: 'validateWorkCompletion',\n name: activityKeys.ValidateWorkOrderCompletion,\n title: 'Validate work completion',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n },\n {\n id: 'updateWorkOrderCompleted',\n name: activityKeys.UpdateWorkOrderCompleted,\n title: 'Work order — completed',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n outputToVariables: { workCompletedAt: 'completedAt' },\n },\n {\n id: 'recalculateAssetStatusOnComplete',\n name: assetActivityKey,\n title: 'Recalculate asset status (work completed)',\n inputs: {\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n trigger: 'work-completed',\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n maintenanceTypeId: wfmExpr(WFM_EXPR_MAINTENANCE_TYPE_ID),\n },\n },\n ],\n connections: [\n { source: { activtyName: 'resolveWorkOrder', port: 'Done' }, target: { activtyName: 'resolveAssignedUser' } },\n {\n source: { activtyName: 'resolveWorkOrder', port: 'Blocked' },\n target: { activtyName: 'showAssignedUserRequiredToast' },\n },\n {\n source: { activtyName: 'resolveWorkOrder', port: 'NotFound' },\n target: { activtyName: 'showAssignedUserRequiredToast' },\n },\n {\n source: { activtyName: 'resolveAssignedUser', port: 'Done' },\n target: { activtyName: 'createWorkOrderTask' },\n },\n {\n source: { activtyName: 'createWorkOrderTask', port: 'start-work' },\n target: { activtyName: 'updateWorkOrderInProgress' },\n },\n {\n source: { activtyName: 'updateWorkOrderInProgress', port: 'Done' },\n target: { activtyName: 'recalculateAssetStatusOnStart' },\n },\n {\n source: { activtyName: 'recalculateAssetStatusOnStart', port: 'Done' },\n target: { activtyName: 'workInProgressTask' },\n },\n {\n source: { activtyName: 'workInProgressTask', port: 'complete-work' },\n target: { activtyName: 'validateWorkCompletion' },\n },\n {\n source: { activtyName: 'validateWorkCompletion', port: 'Done' },\n target: { activtyName: 'updateWorkOrderCompleted' },\n },\n {\n source: { activtyName: 'validateWorkCompletion', port: 'Failed' },\n target: { activtyName: 'showWorkCompletionValidationFailedToast' },\n },\n {\n source: { activtyName: 'showWorkCompletionValidationFailedToast', port: 'Done' },\n target: { activtyName: 'workInProgressTask' },\n },\n {\n source: { activtyName: 'updateWorkOrderCompleted', port: 'Done' },\n target: { activtyName: 'recalculateAssetStatusOnComplete' },\n },\n ],\n },\n };\n}\n\nexport const workOrderExecutionWorkflowName = 'work-order-execution';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { createMultiLanguageString } from '@acorex/core/translation';\nimport type { AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\n\nimport {\n createWorkOrderExecutionWorkflowDefinition,\n workOrderExecutionWorkflowName,\n} from './work-order-execution-workflow.shared';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst M = createMultiLanguageString;\n\n//#endregion\n\n//#region ---- Definition export ----\n\n/** Published workflow graph for seeding `WorkflowManagement.WorkflowDefinition`. */\nexport const workOrderExecutionWorkflowDefinition: AXPWorkflowDefinition = createWorkOrderExecutionWorkflowDefinition({\n name: workOrderExecutionWorkflowName,\n title: M('Work order execution', 'اجرای دستور کار'),\n description: M(\n 'Assignee task board, start work, asset status recalculation, complete work. Approval is a separate workflow.',\n 'کارتابل مسئول، شروع کار، محاسبه وضعیت دارایی، تکمیل کار. تأیید در گردش کار جداگانه انجام میشود.',\n ),\n startTaskTitle: 'Start work — work order',\n inProgressTaskTitle: 'Complete work — work order',\n});\n\nexport { workOrderExecutionWorkflowName };\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ASSET_ENTITY","ASSET_TYPE_ENTITY","WORK_ORDER_SUBJECT_TYPE","resolveText"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAEO,MAAM,uCAAuC,GAAG;AAEvD;;ACJA;AASA;AAEA;AAEO,MAAM,6BAA6B,GAAG,uBAAuB;AAC7D,MAAM,qBAAqB,GAAG,eAAe;AA8GpD;AAEA;AAEA,MAAM,uBAAuB,GAAG,MAAM;AAEhC,SAAU,YAAY,CAAC,KAAc,EAAA;AACzC,IAAA,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAc,CAAC;AACxD;AAEA,SAAS,qBAAqB,CAAC,KAAc,EAAA;AAC3C,IAAA,OAAO,0BAA0B,CAAC,KAAK,CAAC;AAC1C;AAEA;;AAEG;AACG,SAAU,4BAA4B,CAC1C,KAAuB,EACvB,QAAgB,EAAA;IAEhB,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;IACjD;AACA,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;IAC3C;AACA,IAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;QAChC,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ;QACjE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;QAC3D,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACrC;IACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;AACjD;AAEA;;AAEG;AACG,SAAU,mBAAmB,CACjC,KAAuB,EACvB,QAAgB,EAChB,SAA4B,OAAO,EAAA;IAEnC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,QAAQ;IACjB;AACA,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,KAAK;IACd;IACA,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ;AAC9D;AAEA,SAAS,yBAAyB,CAChC,IAAsB,EACtB,YAAoB,EACpB,KAAuB,EACvB,aAAqB,EAAA;IAErB,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,EAAE,YAAY,CAAC;IAC/D,MAAM,OAAO,GAAG,4BAA4B,CAAC,KAAK,EAAE,aAAa,CAAC;IAElE,OAAO;QACL,OAAO,EAAE,CAAA,EAAG,MAAM,CAAC,OAAO,CAAC,CAAA,GAAA,EAAM,OAAO,CAAC,OAAO,CAAC,CAAA,CAAE;QACnD,OAAO,EAAE,CAAA,EAAG,MAAM,CAAC,OAAO,CAAC,CAAA,GAAA,EAAM,OAAO,CAAC,OAAO,CAAC,CAAA,CAAE;KACpD;AACH;AAEA,SAAS,MAAM,CAAC,KAAuC,EAAA;AACrD,IAAA,IAAI,KAAK,YAAY,IAAI,EAAE;QACzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9E;IACA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;IAC5D;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACA,SAAS,qBAAqB,CAAC,KAAuC,EAAA;AACpE,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,SAAS;IAClB;IAEA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAClC,IAAA,OAAO,QAAQ;AACjB;AAEA,SAAS,WAAW,CAAC,IAAU,EAAA;AAC7B,IAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B;AAEA,SAAS,iBAAiB,CAAC,QAAqC,EAAA;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClC,IACE,IAAI,KAAK,QAAQ;AACjB,QAAA,IAAI,KAAK,OAAO;AAChB,QAAA,IAAI,KAAK,QAAQ;AACjB,QAAA,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,QAAQ,EACjB;AACA,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC;IAC9C,QAAQ,UAAU;AAChB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,OAAO;AAChB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS;AAClB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA;AACE,YAAA,OAAO,OAAO;;AAEpB;AAEA,SAAS,uBAAuB,CAAC,QAAqC,EAAA;IACpE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1C,IAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;AAC1D;AAEA;;AAEG;AACG,SAAU,yBAAyB,CACvC,QAAiD,EACjD,aAAA,GAAsB,IAAI,IAAI,EAAE,EAAA;IAEhC,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,SAAS;IAClB;IAEA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACtD,IAAA,IAAI,SAAS,KAAK,UAAU,EAAE;AAC5B,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC1C;IAEA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IACzE,IAAI,eAAe,EAAE;AACnB,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,mBAAmB,CAC1B,MAAY,EACZ,IAA6B,EAC7B,QAAgB,EAChB,IAAY,EAAA;IAEZ,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACzC,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,QAAQ;IAE9B,QAAQ,IAAI;AACV,QAAA,KAAK,QAAQ;YACX,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;YAC3C;AACF,QAAA,KAAK,OAAO;YACV,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;YACzC;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;YAC7C;AACF,QAAA,KAAK,SAAS;YACZ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;YAC3C;AACF,QAAA,KAAK,QAAQ;YACX,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC;YACjD;;AAGJ,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,6BAA6B,CACpC,cAAoB,EACpB,cAAuB,EAAA;IAEvB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE;AACpD,QAAA,OAAO,SAAS;IAClB;IAEA,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC9C,IAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC;AACzB;AAEA;;;;;;AAMG;AACG,SAAU,+BAA+B,CAC7C,QAAiD,EACjD,aAAA,GAAsB,IAAI,IAAI,EAAE,EAAA;IAEhC,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AACxC,IAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC;AAEtE,IAAA,IAAI,OAAO,KAAK,OAAO,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC;IACjB;AAEA,IAAA,IAAI,OAAO,KAAK,kBAAkB,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtG;AAEA,IAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;QACxB,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,CAAC,MAAM,CAAC;QACjB;QAEA,MAAM,MAAM,GAAW,EAAE;AACzB,QAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,uBAAuB,EAAE,IAAI,IAAI,CAAC,EAAE;AAC5D,YAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;YACpE,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;gBAC5C;YACF;AACA,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACzB;AAEA,QAAA,OAAO,MAAM;IACf;IAEA,OAAO,CAAC,MAAM,CAAC;AACjB;AAEM,SAAU,2BAA2B,CACzC,QAAiD,EACjD,OAA2D,EAAA;IAE3D,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,IAAI,EAAE;IAC1D,MAAM,MAAM,GAAG,+BAA+B,CAAC,QAAQ,EAAE,aAAa,CAAC;AACvE,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc;AAE9C,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,CAAC,EAAE,CAAC;IACb;AAEA,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,KAAI;QACnC,MAAM,YAAY,GAAG,6BAA6B,CAAC,cAAc,EAAE,cAAc,CAAC;QAClF,OAAO;AACL,YAAA,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC;AAC3C,YAAA,IAAI,YAAY,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;SAC1C;AACH,IAAA,CAAC,CAAC;AACJ;AAEA;;AAEG;AACG,SAAU,mCAAmC,CACjD,QAAiD,EACjD,aAAA,GAAsB,IAAI,IAAI,EAAE,EAAA;IAEhC,OAAO,2BAA2B,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM;AACxE;AAEM,SAAU,qBAAqB,CACnC,QAAsC,EACtC,aAAA,GAAsB,IAAI,IAAI,EAAE,EAAA;IAEhC,MAAM,MAAM,GAAG,+BAA+B,CAAC,QAAQ,EAAE,aAAa,CAAC;AACvE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,IAAA,OAAO,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS;AAC/C;AAEA;AACO,MAAM,gCAAgC,GAAG,2BAA2B;AAE3E;;;;AAIG;AACI,eAAe,sBAAsB,CAC1C,iBAAuC,EACvC,cAAiC,EACjC,MAAc,EAAA;AAEd,IAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC;AAC9C,QAAA,EAAE,EAAE,MAAM;AACV,QAAA,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE;AACnC,QAAA,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,EAAE;AACtC,KAAA,CAAC;IACF,OAAO,MAAM,CAAC,IAAI;AACpB;SAEgB,2BAA2B,CACzC,KAAgB,EAChB,QAAiC,EACjC,OAA2F,EAAA;IAE3F,OAAO;AACL,QAAA,IAAI,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAChD,KAAK,EAAE,yBAAyB,CAC9B,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,IAAI,IAAI,UAAU,EAC3B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,IAAI,OAAO,CACtB;QACD,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,qBAAqB,EAAE,QAAQ,CAAC,EAAE;AAClC,QAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI;AAC7B,YAAA,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;AACxE,SAAA;QACD,cAAc,EAAE,QAAQ,CAAC;AACvB,cAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC;AACvD,cAAE,SAAS;AACb,QAAA,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc;AACzC,QAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY;AACrC,QAAA,IAAI,OAAO,EAAE,iBAAiB,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAClE,IAAI,OAAO,EAAE;AACX,cAAE,EAAE,CAAC,gCAAgC,GAAG,IAAI;cAC1C,EAAE,CAAC;KACR;AACH;AAEO,eAAe,0BAA0B,CAC9C,OAA6B,EAC7B,kBAA0B,EAC1B,OAAgC,EAAA;AAEhC,IAAA,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE;AAChB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC7B,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,MAAM,MAAM,IAAI,MAAM;AACnB,SAAA,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE;AACrC,SAAA,KAAK,CAAC,MAAM,IAAI,CAAC,CAAmC;IAEvD,OAAO,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI;AAClD;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;QAC5B,OAAO,OAAO,IAAI,SAAS;IAC7B;AAEA,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAY;AACtC,QAAA,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE;AAChB,YAAA,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE;YACzB,OAAO,OAAO,IAAI,SAAS;QAC7B;IACF;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA;;AAEG;AACG,SAAU,wBAAwB,CAAC,IAAyB,EAAA;IAChE,OAAO;AACL,QAAA,GAAG,IAAI;QACP,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO;QACxD,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB;QACtF,qBAAqB,EAAE,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,qBAAqB;QAClG,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY;AACvE,QAAA,UAAU,EACR,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU;KAChG;AACH;AAEA;;;AAGG;SACa,gCAAgC,CAC9C,aAAqD,EACrD,MAAkC,EAClC,EAAU,EAAA;AAEV,IAAA,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;AAC7B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,MAAM,GAAwB;AAClC,QAAA,IAAI,aAAa,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,MAAM,IAAI,EAAE,CAAC;AACjB,QAAA,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;KACrB;AAED,IAAA,OAAQ,MAA6C,CAAC,gCAAgC,CAAC;IAEvF,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,OAAO,wBAAwB,CAAC,MAAM,CAAC;IACzC;AAEA,IAAA,MAAM,aAAa,GAAG,CAAsC,GAAM,KAAU;AAC1E,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC;AACtC,QAAA,MAAM,WAAW,GACf,WAAW,KAAK,SAAS;AACzB,YAAA,WAAW,KAAK,IAAI;AACpB,aAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QAChE,IAAI,WAAW,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE;AACpE,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW;QAC3B;AACF,IAAA,CAAC;IAED,aAAa,CAAC,SAAS,CAAC;IACxB,aAAa,CAAC,mBAAmB,CAAC;IAClC,aAAa,CAAC,uBAAuB,CAAC;IACtC,aAAa,CAAC,UAAU,CAAC;IACzB,aAAa,CAAC,OAAO,CAAC;IACtB,aAAa,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,gBAAgB,CAAC;IAC/B,aAAa,CAAC,cAAc,CAAC;IAC7B,aAAa,CAAC,cAAc,CAAC;IAC7B,aAAa,CAAC,YAAY,CAAC;IAC3B,aAAa,CAAC,YAAY,CAAC;IAC3B,aAAa,CAAC,UAAU,CAAC;IACzB,aAAa,CAAC,gBAAgB,CAAC;AAE/B,IAAA,OAAO,wBAAwB,CAAC,MAAM,CAAC;AACzC;AAEA;;AAEG;AACG,SAAU,qBAAqB,CAAC,IAAyB,EAAA;AAC7D,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE;IACvE,OAAO,UAAU,IAAI,SAAS;AAChC;AAEA;;AAEG;AACG,SAAU,yBAAyB,CAAC,IAAyB,EAAA;AACjE,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc;IAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AAC7B,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;AACxC,YAAA,OAAO,MAAM;QACf;IACF;AACA,IAAA,OAAO,SAAS;AAClB;AAEA,MAAM,eAAe,GAAG,iCAAiC;AAEzD;;AAEG;AACI,eAAe,iCAAiC,CACrD,OAA6B,EAC7B,IAAyB,EAAA;IAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE;IAC5C,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAG7E;AAER,IAAA,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE;IAC3E,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,QAAQ,GAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5F,OAAO;AACL,QAAA,YAAY,EAAE,QAAQ;AACtB,QAAA,UAAU,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE;KACrE;AACH;AAEA;;AAEG;AACI,eAAe,6BAA6B,CACjD,OAA6B,EAC7B,IAAyB,EAAA;IAEzB,MAAM,UAAU,GAAG,MAAM,iCAAiC,CAAC,OAAO,EAAE,IAAI,CAAC;AACzE,IAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC;AAC9C,IAAA,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,CAAC;IAEtD,OAAO;AACL,QAAA,GAAG,UAAU;AACb,QAAA,IAAI,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACrC,QAAA,IAAI,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;KAC5D;AACH;SAEgB,wCAAwC,CACtD,eAAoC,EACpC,QAAiC,EACjC,WAAmB,EAAA;AAEnB,IAAA,MAAM,KAAK,GAAG,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC;IAEvF,OAAO;QACL,WAAW;QACX,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,qBAAqB,EAAE,QAAQ,CAAC,EAAE;QAClC,iBAAiB,EAAE,eAAe,CAAC,EAAE;QACrC,UAAU,EAAE,eAAe,CAAC,UAAU;QACtC,KAAK;QACL,WAAW,EAAE,eAAe,CAAC,WAAW;AACxC,QAAA,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc;AACzC,QAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY;QACrC,QAAQ,EAAE,kBAAkB,CAAC,OAAO;QACpC,UAAU,EAAE,sBAAsB,CAAC,eAAe;AAClD,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;KACjB;AACH;SAEgB,6BAA6B,CAC3C,IAAyB,EACzB,WAAmB,EACnB,OAOC,EAAA;AAED,IAAA,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC;AACjF,IAAA,MAAM,UAAU,GACd,OAAO,EAAE,UAAU;AACnB,QAAA,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzC,aAAa,EAAE,OAAO,EAAE,aAAa;AACrC,YAAA,cAAc,EAAE,yBAAyB,CAAC,IAAI,CAAC;SAChD,CAAC,CAAC,CAAC,CAAC;AAEP,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,eAAe,IAAI,EAAE;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAAC,IAAI,CAAC;IACnE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,yBAAyB,CAAC,IAAI,CAAC;IAE/E,OAAO;QACL,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAC1B,KAAK;QACL,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,UAAU,EAAE,cAAc;AAC1C,QAAA,IAAI,OAAO,EAAE,mBAAmB,IAAI,UAAU,EAAE;AAC9C,cAAE,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY;cACvC,EAAE,CAAC;QACP,IAAI,MAAM,CAAC;AACT,cAAE;gBACE,YAAY,EAAE,MAAM,CAAC,YAAY;AACjC,gBAAA,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC;AAChE;cACD,EAAE,CAAC;AACP,QAAA,IAAI,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACrC,QAAA,IAAI,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;AAC3D,QAAA,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AACrC,QAAA,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;AACjC,QAAA,IAAI,OAAO,EAAE,sBAAsB,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC5E,QAAQ,EAAE,kBAAkB,CAAC,OAAO;AACpC,QAAA,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,sBAAsB,CAAC,eAAe;AACzE,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;KACjB;AACH;AAEA;;AAEG;AACG,SAAU,8BAA8B,CAC5C,IAAyB,EACzB,OAMC,EAAA;IAED,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,IAAI,EAAE;AAC1D,IAAA,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,CAAC;AACtD,IAAA,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC7D,aAAa;QACb,cAAc;AACf,KAAA,CAAC;IACF,MAAM,mBAAmB,GAAG,OAAO,EAAE,sBAAsB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW;AAEnG,IAAA,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,UAAU,KACxC,6BAA6B,CAAC,IAAI,EAAE,EAAE,EAAE;QACtC,sBAAsB,EAAE,OAAO,EAAE,sBAAsB;QACvD,aAAa;QACb,UAAU;QACV,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB;AAClD,KAAA,CAAC,CACH;AACH;AAEA;;AAEG;AACI,eAAe,wBAAwB,CAC5C,aAAmG,EACnG,iBAAuC,EACvC,cAAiC,EACjC,mBAA2B,EAC3B,IAAyB,EACzB,OAKC,EAAA;AAED,IAAA,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC;IACnD,MAAM,eAAe,GAAG,OAAO,EAAE,OAAO,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE;AAElH,IAAA,MAAM,QAAQ,GAAG,8BAA8B,CAAC,YAAY,EAAE;QAC5D,sBAAsB,EAAE,OAAO,EAAE,sBAAsB;QACvD,aAAa,EAAE,OAAO,EAAE,aAAa;QACrC,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,eAAe;AACf,QAAA,mBAAmB,EAAE,KAAK;AAC3B,KAAA,CAAC;IACF,IAAI,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,CAAC;AAC1G,QAAA,MAAM,aAAa,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC;QAC/E,YAAY,IAAI,CAAC;IACnB;AAEA,IAAA,OAAO,YAAY;AACrB;AAEM,SAAU,qCAAqC,CACnD,eAAoC,EACpC,QAAiC,EAAA;AAEjC,IAAA,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,iBAAiB,CAAC;AACjF;AAEM,SAAU,0BAA0B,CAAC,IAAyB,EAAA;AAClE,IAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC;AACjD,IAAA,OAAO,CAAC,EACN,UAAU,CAAC,OAAO;AAClB,QAAA,UAAU,CAAC,iBAAiB;QAC5B,UAAU,CAAC,qBAAqB,CACjC;AACH;AAEA,SAAS,yBAAyB,CAAC,GAAY,EAAA;IAC7C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACnC,QAAA,OAAO,KAAK;IACd;IACA,MAAM,SAAS,GAAG,GAA8B;AAChD,IAAA,OAAO,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,iBAAiB,KAAK,QAAQ;AAC5F;AAEO,eAAe,sCAAsC,CAC1D,OAA6B,EAC7B,kBAA0B,EAC1B,WAAmB,EAAA;IAEnB,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AACzE,gBAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACxE,aAAA;AACF,SAAA;KACF;AACA,SAAA,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAEzC,IAAA,MAAM,KAAK,GAAc,MAAM,CAAC,KAAK,IAAI,EAAE;AAC3C,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAChD;AAEA,MAAMA,cAAY,GAAG,uBAAuB;AAC5C,MAAMC,mBAAiB,GAAG,2BAA2B;AAE/C,SAAU,2BAA2B,CAAC,QAAiC,EAAA;AAC3E,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc;AACtC,IAAA,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;AAC1E,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK;AACjC;AAEA;;AAEG;AACI,eAAe,8BAA8B,CAClD,OAA6B,EAC7B,kBAA0B,EAC1B,OAAe,EAAA;AAEf,IAAA,MAAM,cAAc,GAAG,OAAO,EAAE,IAAI,EAAE;IACtC,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,CAACD,cAAY,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAqB;IACxG,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;AAC9C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE;AAC1B,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,SAAS,IAAI,MAAM,OAAO,CAAC,MAAM,CAACC,mBAAiB,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAEjF;IACR,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,kBAAkB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1G,IAAA,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,GAAG;AACT,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AACzE,gBAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACpF,aAAA;AACF,SAAA;KACF;AACA,SAAA,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAEzC,IAAA,MAAM,QAAQ,GAAc,MAAM,CAAC,KAAK,IAAI,EAAE;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC;AACxD,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC1E;AAEO,eAAe,mBAAmB,CACvC,OAA6B,EAC7B,mBAA2B,EAC3B,MAAc,EAAA;IAEd,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,YAAA,KAAK,EAAE,MAAM;AACd,SAAA;KACF;AACA,SAAA,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAEzC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AACnE;AAEO,eAAe,iCAAiC,CACrD,OAA6B,EAC7B,mBAA2B,EAC3B,MAAc,EAAA;IAEd,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,YAAA,KAAK,EAAE,MAAM;AACd,SAAA;KACF;AACA,SAAA,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAE9B,IAAA,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC;AAC1B;AAEO,eAAe,iCAAiC,CACrD,OAA6B,EAC7B,mBAA2B,EAC3B,MAAc,EACd,cAAsB,EAAA;IAEtB,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1E,gBAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;AAChF,aAAA;AACF,SAAA;KACF;AACA,SAAA,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAEzC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;AACnE;AAEA;;;AAGG;AACG,SAAU,4CAA4C,CAC1D,IAAyB,EACzB,kBAA+C,EAC/C,aAAA,GAAsB,IAAI,IAAI,EAAE,EAAA;AAEhC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;IAC9B,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACtD,IAAA,IAAI,SAAS,KAAK,UAAU,EAAE;AAC5B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC9G,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AACxC,IAAA,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC;AAClD,IAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChE,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC;AAEtE,IAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;QACxB,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC5E,QAAA,IAAI,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;AACtD,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,CAAC;IACtD,MAAM,YAAY,GAAG,6BAA6B,CAAC,SAAS,EAAE,cAAc,CAAC;IAE7E,OAAO;AACL,QAAA,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,YAAY,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;KAC1C;AACH;AAEA;;ACn/BA;AA4BA;AAEA;AAEA,MAAMD,cAAY,GAAG,uBAAuB;AAW5C,eAAe,yBAAyB,CACtC,aAA8B,EAC9B,gBAAsC,EACtC,aAAqB,EACrB,UAAkB,EAAA;IAElB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACjD,gFAAgF,CACjF;IACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACnD,kFAAkF,EAClF,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,CACjD;IACD,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAC1D,6FAA6F,CAC9F;IACD,MAAM,uBAAuB,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACnE,wGAAwG,CACzG;IACD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,+BAA+B,CAAC;AAE1F,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;QAC7B,IAAI,OAAO,GAAG,KAAK;AACnB,QAAA,MAAM,MAAM,GAAG,CAAC,KAAoC,KAAI;YACtD,IAAI,OAAO,EAAE;gBACX;YACF;YACA,OAAO,GAAG,IAAI;YACd,OAAO,CAAC,KAAK,CAAC;AAChB,QAAA,CAAC;AAED,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;YAChC,KAAK;YACL,OAAO;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,SAAS,EAAE,IAAI;oBACf,OAAO,EAAE,MAAK;wBACZ,MAAM,CAAC,KAAK,EAAE;wBACd,MAAM,CAAC,IAAI,CAAC;oBACd,CAAC;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,MAAK;wBACZ,MAAM,CAAC,KAAK,EAAE;wBACd,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;oBACxD,CAAC;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,MAAK;wBACZ,MAAM,CAAC,KAAK,EAAE;wBACd,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;oBACvD,CAAC;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEA;AAEA;AAEA;;;AAGG;AACI,MAAM,qCAAqC,GAA+B;AAC/E,IAAA,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,QAAQ,CAAC;AACf,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,KAAI;AAC3B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAgC;AACpD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAgC;AAC3G,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEpE,QAAA,IAAI,GAAG,CAAC,UAAU,KAAKA,cAAY,EAAE;YACnC,MAAM,IAAI,EAAE;YACZ;QACF;QAEA,MAAM,IAAI,EAAE;AAEZ,QAAA,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS;AACzE,QAAA,IACE,CAAC,SAAS;AACV,YAAA,CAAC,aAAa;AACd,YAAA,CAAC,YAAY;AACb,YAAA,CAAC,gBAAgB;AACjB,YAAA,CAAC,aAAa;AACd,YAAA,CAAC,iBAAiB;YAClB,CAAC,cAAc,EACf;YACA;QACF;QAEA,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,CAACA,cAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAqB;AACnG,QAAA,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;YACvB;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;AAClG,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE;AAC1F,QAAA,MAAM,eAAe,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AAEzF,QAAA,MAAM,SAAS,GAAG,MAAM,sCAAsC,CAC5D,OAAO,EACP,cAAc,EACd,KAAK,CAAC,WAAW,CAClB;AACD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;AAC5E,QAAA,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,aAAa,EACb,gBAAgB,EAChB,SAAS,CAAC,MAAM,EAChB,UAAU,CACX;AACD,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;YACxB;QACF;QAEA,MAAM,YAAY,GAA0B,EAAE;AAE9C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,MAAM,MAAM,IAAI,MAAM;AACnB,qBAAA,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE;AAClC,qBAAA,KAAK,CAAC,MAAM,IAAI,CAAC,CAAmC;AACvD,gBAAA,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE;oBAC9B;gBACF;AACA,gBAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;YACjC;AAEA,YAAA,IAAI;;gBAEF,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,iBAAiB,EACjB,cAAc,EACd,6BAA6B,CAC9B;AACD,gBAAA,MAAM,WAAW,GAAG,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC/D,oBAAA,uBAAuB,EAAE,IAAI;AAC7B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,iBAAiB,EAAE,IAAI;AACxB,iBAAA,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;AACrE,gBAAA,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS;gBACtE,IAAI,CAAC,cAAc,EAAE;oBACnB;gBACF;gBAEA,MAAM,UAAU,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAA+B;AACrH,gBAAA,MAAM,IAAI,GAAG,gCAAgC,CAC3C,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,EACtC,UAAU,EACV,cAAc,CACf;gBACD,IAAI,IAAI,EAAE;AACR,oBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB;YACF;YAAE,OAAO,KAAK,EAAE;gBACd,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACtD,qGAAqG,CACtG;AACD,gBAAA,MAAM,YAAY,GAChB,KAAK,YAAY;sBACb,KAAK,CAAC;sBACN,MAAM,gBAAgB,CAAC,cAAc,CACnC,uGAAuG,CACxG;AACP,gBAAA,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;gBAChF;YACF;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YACzD,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACxD,8FAA8F,CAC/F;YACD,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAC1D,gGAAgG,EAChG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAC3C;AACD,YAAA,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YACrF;QACF;QAEA,IAAI,cAAc,GAAG,CAAC;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE;AAChC,QAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE;gBACrC;YACF;AACA,YAAA,cAAc,IAAI,MAAM,wBAAwB,CAC9C,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,IAAI,EACJ;AACE,gBAAA,sBAAsB,EAAE,IAAI;gBAC5B,aAAa;gBACb,UAAU,EAAE,sBAAsB,CAAC,WAAW;gBAC9C,OAAO;AACR,aAAA,CACF;QACH;QAEA,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,cAAc,CACxD,6FAA6F,CAC9F;QACD,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAC1D,+FAA+F,EAC/F,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAC/D;AACD,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACvF,CAAC;CACF;AAED;;ACzRA;AA0BA;AACA,MAAM,YAAY,GAAG,uBAAuB;AAC5C,MAAM,iBAAiB,GAAG,2BAA2B;AAiBrD;AAEA;AAEA,SAAS,2BAA2B,CAAC,KAAc,EAAA;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAmB,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3F;AAEA;;AAEG;AACH,eAAe,8BAA8B,CAAC,OAA6B,EAAE,OAAe,EAAA;IAC1F,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAqB;IACjG,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,aAAa,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC;AACtF,IAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACtB,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,SAAS,IAAI,MAAM;AACtB,SAAA,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW;AAC3C,SAAA,KAAK,CAAC,MAAM,IAAI,CAAC,CAAyB;AAC7C,IAAA,OAAO,2BAA2B,CAAC,SAAS,EAAE,kBAAkB,CAAC;AACnE;AAEA;AAEA;AAEA;;;AAGG;AACI,MAAM,wCAAwC,GAA+B;AAClF,IAAA,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,QAAQ,CAAC;AACf,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,KAAI;;AAE3B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrF,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnF,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAgC;AACpD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAgC;AAC3G,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEpE,QAAA,MAAM,qBAAqB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE;AACrG,QAAA,IAAI,GAAG,CAAC,UAAU,KAAK,qBAAqB,EAAE;YAC5C,MAAM,IAAI,EAAE;YACZ;QACF;QAEA,MAAM,IAAI,EAAE;AAEZ,QAAA,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS;QACzE,IAAI,CAAC,SAAS,EAAE;YACd;QACF;;AAGA,QAAA,IACE,CAAC,aAAa;AACd,YAAA,CAAC,YAAY;AACb,YAAA,CAAC,cAAc;AACf,YAAA,CAAC,kBAAkB;AACnB,YAAA,CAAC,aAAa;AACd,YAAA,CAAC,iBAAiB;YAClB,CAAC,cAAc,EACf;YACA;QACF;QAEA,MAAM,EAAE,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAA+B;AAC5G,QAAA,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CACzC,mBAAmB,EACnB,uCAAuC,EACvC,SAAS,EACT,YAAY,EACZ,KAAK,EACL,QAAQ,CACT;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;YAC3B;QACF;QAEA,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,OAAO,CACjD,UAAU,CAAC,MAAM,CAAC,IAAI,EACtB,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAC7C;QACD,IAAI,CAAC,cAAc,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,+CAA+C;AACzD,aAAA,CAAC;YACF;QACF;QAEA,MAAM,kBAAkB,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;AACpF,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;YAC9B,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,OAAO,EAAE,2EAA2E;AACrF,aAAA,CAAC;YACF;QACF;QAEA,MAAM,aAAa,GACjB,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,GAAG,cAAc,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK;AAEjH,QAAA,MAAM,eAAe,GAA6B;AAChD,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACxB,YAAA,KAAK,EAAE,kBAAkB;SAC1B;AAED,QAAA,MAAM,kBAAkB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;AACtG,QAAA,MAAM,mBAAmB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AAE7F,QAAA,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC;AACnD,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,OAAO,EAAE;gBACP,MAAM;gBACN,OAAO;gBACP,mBAAmB;gBACnB,gBAAgB;gBAChB,cAAc;gBACd,gBAAgB;gBAChB,aAAa;gBACb,UAAU;gBACV,kBAAkB;AACnB,aAAA;AACD,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC;QACF;QAEA,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAA4B;QAC3E,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;QAChG,IAAI,CAAC,QAAQ,EAAE;YACb,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,mDAAmD;AAC7D,aAAA,CAAC;YACF;QACF;QAEA,IAAI,CAAC,qCAAqC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE;YACxD,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,OAAO,EAAE,wFAAwF;AAClG,aAAA,CAAC;YACF;QACF;QAEA,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,CAAC;AAE1G,QAAA,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAC1C,mBAAmB,EACnB,wCAAwC,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CACpE;AACD,QAAA,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS;QAEnE,IAAI,CAAC,WAAW,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,OAAO,EAAE,6BAA6B;AACvC,aAAA,CAAC;YACF;QACF;QAEA,YAAY,CAAC,IAAI,CAAC;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA,CAAC;IACJ,CAAC;CACF;AAED;;AC3PA;AAuBA;AAEA;AAEA;AACA,MAAM,+BAA+B,GAAG,0CAA0C;AAoBlF;AAEA;AAEA;;;AAGG;AACH,eAAe,iCAAiC,CAAC,IAAwC,EAAA;IACvF,MAAM,EACJ,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,EACb,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,GAAG,IAAI;IAER,MAAM,UAAU,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAA+B;IAChH,MAAM,IAAI,GAAG,gCAAgC,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC;IACnF,IAAI,CAAC,IAAI,EAAE;QACT;IACF;IAEA,MAAM,qBAAqB,GAAG,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChF,IAAA,MAAM,cAAc,GAClB,qBAAqB,KAAK;AACxB,UAAE;AACF,UAAE,CAAA,sBAAA,EAAyB,qBAAqB,CAAA,4CAAA,CAA8C;AAElG,IAAA,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CACzC,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,QAAQ,CACT;AACD,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;QAC3B;IACF;AAEA,IAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,aAAa,CAAC,KAAK,CACvB,mBAAmB,EACnB,wFAAwF,EACxF,SAAS,CACV;QACD;IACF;AAEA,IAAA,MAAM,eAAe,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AACzF,IAAA,IAAI,MAAM,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;QAChE,MAAM,aAAa,CAAC,KAAK,CACvB,mBAAmB,EACnB,wDAAwD,EACxD,SAAS,CACV;QACD;IACF;AAEA,IAAA,IAAI;AACF,QAAA,MAAM,cAAc,GAAG,MAAM,wBAAwB,CACnD,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,IAAI,EACJ,EAAE,OAAO,EAAE,CACZ;AAED,QAAA,IAAI,cAAc,KAAK,CAAC,EAAE;YACxB,MAAM,aAAa,CAAC,KAAK,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,QAAQ,CAAC;YACtF;QACF;AAEA,QAAA,MAAM,cAAc,GAClB,cAAc,KAAK;AACjB,cAAE;AACF,cAAE,CAAA,EAAG,cAAc,CAAA,uCAAA,CAAyC;QAChE,YAAY,CAAC,IAAI,CAAC;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA,CAAC;IACJ;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,6BAA6B;QACtF,MAAM,aAAa,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,QAAQ,CAAC;IAClE;AACF;AAEA;AAEA;AAEA;;;AAGG;AACI,MAAM,wCAAwC,GAA+B;AAClF,IAAA,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,QAAQ,CAAC;AACf,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,KAAI;AAC3B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,QAAgC;AACpD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzE,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAgC;AAC3G,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEpE,QAAA,MAAM,qBAAqB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE;AACrG,QAAA,IAAI,GAAG,CAAC,UAAU,KAAK,qBAAqB,EAAE;YAC5C,MAAM,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,cAAc,GAClB,GAAG,CAAC,IAAI;AACR,YAAA,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;AAC3B,YAAA,GAAG,CAAC,IAAgC,CAAC,gCAAgC,CAAC,KAAK,IAAI;QAElF,MAAM,aAAa,GACjB,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAI,GAAG,CAAC,IAAuC,GAAG,SAAS;QAErG,MAAM,IAAI,EAAE;AAEZ,QAAA,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS;AACzE,QAAA,IACE,CAAC,SAAS;AACV,YAAA,CAAC,aAAa;AACd,YAAA,CAAC,YAAY;AACb,YAAA,CAAC,aAAa;AACd,YAAA,CAAC,iBAAiB;AAClB,YAAA,CAAC,cAAc;AACf,YAAA,cAAc,EACd;YACA;QACF;QAEA,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE;YACnD;QACF;QACA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC;AAErD,QAAA,MAAM,iCAAiC,CAAC;YACtC,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa;YACb,aAAa;YACb,OAAO;YACP,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,YAAY;AACb,SAAA,CAAC;IACJ,CAAC;CACF;AAED;;ACnNA;AAEA;AACO,MAAM,oCAAoC,GAAG;IAClD,kBAAkB;IAClB,wBAAwB;CAChB;AAEV;AACO,MAAM,sCAAsC,GAAG;IACpD,6BAA6B;IAC7B,2BAA2B;CACnB;AAEV;AACO,MAAM,uCAAuC,GAAG;AACrD,IAAA,GAAG,oCAAoC;AACvC,IAAA,GAAG,sCAAsC;CACjC;AAIV;AAEA;AAEA;;AAEG;AACG,SAAU,0CAA0C,CAAC,KAG1D,EAAA;IACC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IACpE,MAAM,YAAY,GAAG,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;IAE5F,MAAM,OAAO,GAA+D,EAAE;IAC9E,IAAI,IAAI,EAAE;AACR,QAAA,KAAK,MAAM,GAAG,IAAI,oCAAoC,EAAE;AACtD,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;QACrB;IACF;IACA,IAAI,YAAY,EAAE;AAChB,QAAA,KAAK,MAAM,GAAG,IAAI,sCAAsC,EAAE;AACxD,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY;QAC7B;IACF;AACA,IAAA,OAAO,OAAO;AAChB;AAEA;;AClDA;AAaA;AAEA;AAEA,MAAME,yBAAuB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AASjG;AAEA;AAEA;;AAEG;AACI,MAAM,gCAAgC,GAA+D,OAC1G,OAAO,EACP,IAAI,KACF;AACF,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9C,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3B,MAAM,MAAM,GAAGC,aAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IACA,MAAM,cAAc,GAAG,MAAM;AAC1B,SAAA,UAAU,CAAC,sBAAsB,EAAE,gBAAgB;AACnD,SAAA,IAAI;SACJ,KAAK,CAAC,MAAM,CAAC;IAEhB,MAAM,WAAW,GAAGA,aAAW,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAGA,aAAW,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACrE,IAAA,IAAI,WAAW,KAAKD,yBAAuB,IAAI,CAAC,WAAW,EAAE;AAC3D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA,MAAM,SAAS,GAAG,MAAM;AACrB,SAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,SAAA,IAAI;SACJ,KAAK,CAAC,WAAW,CAAC;IAErB,MAAM,OAAO,GAAGC,aAAW,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA,MAAM,KAAK,IAAI,MAAM,aAAa,CAAC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAGvF;IAER,MAAM,cAAc,GAAG,0CAA0C,CAAC;AAChE,QAAA,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI;AACzB,QAAA,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,IAAI;AAC1C,KAAA,CAAC;AAEF,IAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;IAEA,MAAM,SAAS,GAAGA,aAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE;AACb,QAAA,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACnH,QAAA,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,CAA4B;AACzF,QAAA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,eAAe,EAAE,cAAc,CAAC;QAChF,IAAI,OAAO,EAAE;AACX,YAAA,MAAM;AACH,iBAAA,UAAU,CAAC,sBAAsB,EAAE,mBAAmB;AACtD,iBAAA,IAAI;iBACJ,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAW,CAAC;QACpD;IACF;AAEA,IAAA,OAAO,IAAI,CAAC;AACV,QAAA,GAAG,OAAO;AACV,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,KAAK;AACR,YAAA,cAAc,EAAE;AACd,gBAAA,GAAG,cAAc;gBACjB,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC;AAC/C,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,GAAG,uCAAuC;gBAC1C,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC;AACnD,aAAA;AACF,SAAA;AACF,KAAA,CAAC;AACJ,CAAC;AAED;AAEA;AAEA,SAASA,aAAW,CAAC,KAAc,EAAA;AACjC,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,EAAE;AACrB;AAEA,SAAS,mBAAmB,CAC1B,QAAiC,EACjC,OAAgC,EAAA;AAEhC,IAAA,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE;IAC9B,IAAI,OAAO,GAAG,KAAK;AAEnB,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;YACnB,OAAO,GAAG,IAAI;QAChB;IACF;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AAC5B;AAEA;;ACvIA;AAaA;AAEA;AAEA,MAAM,uBAAuB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AAOjG;AAEA;AAEA;;;AAGG;AACI,MAAM,sCAAsC,GAG/C,OAAO,OAAO,EAAE,IAAI,KAAI;AAC1B,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9C,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEhD,IAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;AAClC,IAAA,IAAI;AACF,QAAA,MAAM,wCAAwC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;YACpE,aAAa;YACb,cAAc;YACd,cAAc;AACf,SAAA,CAAC;IACJ;IAAE,OAAO,KAAc,EAAE;AACvB,QAAA,eAAe,CAAC,QAAQ,EAAE,KAAK,CAC7B,wBAAwB,EACxB,kCAAkC,EAClC,iEAAiE,EACjE,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;YACpC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;YAC1C,OAAO,EAAE,MAAM,EAAE,OAAO;AACxB,YAAA,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;AACxC,YAAA,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9D,SAAA,CAAC,CACH;IACH;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAQD;AAEA;AAEA,eAAe,wCAAwC,CACrD,KAAqC,EACrC,MAAwD,EACxD,QAA8C,EAAA;AAE9C,IAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;QACpB;IACF;IAEA,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE;QACX;IACF;AAEA,IAAA,MAAM,SAAS,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;IACpG,IAAI,CAAC,SAAS,EAAE;QACd;IACF;IAEA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,QAAQ;IAElE,MAAM,cAAc,GAAG,MAAM;AAC1B,SAAA,UAAU,CAAC,sBAAsB,EAAE,gBAAgB;AACnD,SAAA,IAAI;SACJ,KAAK,CAAC,MAAM,CAAC;IAEhB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AACrE,IAAA,IAAI,WAAW,KAAK,uBAAuB,IAAI,CAAC,WAAW,EAAE;QAC3D;IACF;AAEA,IAAA,MAAM,SAAS,IAAI,MAAM;AACtB,SAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,SAAA,IAAI;AACJ,SAAA,KAAK,CAAC,WAAW,CAAC,CAAwD;AAE7E,IAAA,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE;QAClB;IACF;AAEA,IAAA,MAAM,aAAa,GAAG,MAAM,2BAA2B,CACrD,aAAa,EACb,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CACpC;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1D,IAAA,MAAM,YAAY,GAAG,mCAAmC,CAAC,gBAAgB;IAEzE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,EAAE;QACxF,WAAW;QACX,aAAa,EAAE,aAAa,IAAI,IAAI;AACrC,KAAA,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAEvE,IAAA,MAAM,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,EAAE;QACpE,WAAW;QACX,YAAY,EAAE,YAAY,IAAI,IAAI;QAClC,aAAa,EAAE,aAAa,IAAI,IAAI;AACpC,QAAA,gBAAgB,EAAE,MAAM;QACxB,aAAa,EAAE,aAAa,IAAI,IAAI;AACrC,KAAA,CAAC;IAEF,MAAM,mBAAmB,GACvB,SAAS,CAAC,QAAQ,KAAK,kBAAkB,CAAC,OAAO;AACjD,QAAA,SAAS,CAAC,QAAQ,KAAK,kBAAkB,CAAC,SAAS;AACnD,QAAA,SAAS,CAAC,QAAQ,KAAK,kBAAkB,CAAC,QAAQ;IAEpD,IAAI,mBAAmB,EAAE;AACvB,QAAA,MAAM,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,CAAC;IACvF;AACF;AAEA,eAAe,6BAA6B,CAC1C,KAAqC,EACrC,MAAwD,EACxD,MAAc,EACd,aAA+B,EAAA;AAE/B,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE;AAC1E,IAAA,IAAI,OAAO,KAAK,WAAW,EAAE;AAC3B,QAAA,OAAO,IAAI;IACb;IACA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE;QACb,MAAM,OAAO,GAAG,MAAM;AACnB,aAAA,UAAU,CAAC,sBAAsB,EAAE,mBAAmB;AACtD,aAAA,IAAI;aACJ,KAAK,CAAC,SAAS,CAAC;AACnB,QAAA,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;AACvE,YAAA,OAAO,IAAI;QACb;IACF;IAEA,MAAM,IAAI,GAAG,MAAM;AAChB,SAAA,UAAU,CAAC,sBAAsB,EAAE,mBAAmB;AACtD,SAAA,IAAI;AACJ,SAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACnD,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3E,SAAA;AACO,KAAA,CAAC;AAEb,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAAiC;IACrF,OAAO,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW;AACpE;AAEA,eAAe,2BAA2B,CACxC,aAA+B,EAC/B,QAAgB,EAAA;IAEhB,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,IAAI,GAAG,MAAM;AAChB,SAAA,UAAU,CAAC,wBAAwB,EAAE,UAAU;AAC/C,SAAA,IAAI;AACJ,SAAA,KAAK,CAAC;AACL,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC/E,SAAA;AACO,KAAA,CAAC;AAEb,IAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAA2B;AACjF,IAAA,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClC;AAEA,SAAS,WAAW,CAAC,KAAc,EAAA;AACjC,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,EAAE;AACrB;AAEA;;ACxNA;AAQA;AAEA;AAEA,MAAM,mBAAmB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AAE7F;;AAEG;AACI,MAAM,6BAA6B,GAA+B;AACvE,IAAA,MAAM,EAAE;QACN,GAAG,EAAE,CAAC,QAAQ,CAAC;AACf,QAAA,KAAK,EAAE,EAAE;AACV,KAAA;AACD,IAAA,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,KAAI;AAC3B,QAAA,IAAI,GAAG,CAAC,UAAU,KAAK,mBAAmB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvF,MAAM,IAAI,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B;AAChD,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE;AAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC,MAAM;QACpD;AAEA,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpE,QAAA,MAAM,aAAa,GAAG,cAAc,EAAE,IAAI,EAAE,EAAE;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,aAAa;QACvC;QAEA,MAAM,IAAI,EAAE;IACd,CAAC;CACF;AAED;;AC3CA;AASA;;ACHA;AAEA;AAEA,MAAM,aAAa,GAAG,oCAAoC;AAC1D,MAAM,kBAAkB,GAAG,uCAAuC;AAClE,MAAM,mBAAmB,GAAG,uCAAuC;AAEnE,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,CAAU;AAE5F;AAEA;MAGa,sDAAsD,CAAA;AACjE,IAAA,MAAM,KAAK,GAAA;QACT,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,iDAAiD;AACxD,gBAAA,WAAW,EAAE,uDAAuD;AACpE,gBAAA,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC;AAChC,gBAAA,IAAI,EAAE,gCAAgC;AACtC,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;SACF;IACH;8GAbW,sDAAsD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtD,sDAAsD,EAAA,CAAA,CAAA;;2FAAtD,sDAAsD,EAAA,UAAA,EAAA,CAAA;kBADlE;;;ACpBD;AAgBA;AAEA;AAEA,SAAS,cAAc,CAAC,KAAc,EAAA;AACpC,IAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,EAAE;AACrB;AAEA;AAEA;;AAEG;MACU,iEAAiE,CAAA;AAA9E,IAAA,WAAA,GAAA;;AAKmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;;IAyI7D;;;IAnIE,MAAM,OAAO,CAAC,OAAmD,EAAA;QAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;AACvC;;;AAGG;AACH,YAAA,sBAAsB,EAAE,OAAO,UAAoB,KAAgC;AACjF,gBAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,OAAO,EAAE;gBACX;AAEA,gBAAA,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAuB;AACpE,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE;oBAC3C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC;oBAC7E,IAAI,CAAC,YAAY,EAAE;AACjB,wBAAA,OAAO,EAAE;oBACX;AAEA,oBAAA,MAAM,kBAAkB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;oBACtG,MAAM,SAAS,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC;AAE5F,oBAAA,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1C,wBAAA,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAC/D,wBAAA,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAC/D,wBAAA,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC9D,oBAAA,CAAC,CAAC;oBAEF,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,YAAY;oBAE/D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AAC/B,wBAAA,IAAI,EAAE,CAAA,kBAAA,EAAqB,QAAQ,CAAC,EAAE,CAAA,CAAE;AACxC,wBAAA,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;AAChF,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,OAAO,EAAE;AACP,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,OAAO,EAAE;AACP,gCAAA,OAAO,EAAE;AACP,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,eAAe,EAAE,IAAI;AACrB,oCAAA,IAAI,EAAE;wCACJ,OAAO,EAAE,KAAK,CAAC,EAAE;AACjB,wCAAA,KAAK,EAAE;4CACL,EAAE,EAAE,KAAK,CAAC,EAAE;4CACZ,KAAK,EAAE,KAAK,CAAC,KAAK;4CAClB,WAAW;4CACX,SAAS,EAAE,EAAE,kBAAkB,EAAE;AAClC,yCAAA;wCACD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;wCAC7C,qBAAqB,EAAE,QAAQ,CAAC,EAAE;AAClC,wCAAA,mBAAmB,EAAE;4CACnB,EAAE,EAAE,QAAQ,CAAC,EAAE;4CACf,KAAK,EAAE,QAAQ,CAAC,KAAK;4CACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;4CACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;AACxC,yCAAA;AACD,wCAAA,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,KAAK;AAC5C,wCAAA,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,KAAK;AAChD,wCAAA,cAAc,EACZ,OAAO,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,GAAG;AAC3E,8CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gBAAgB,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG;AACvD,8CAAE,SAAS;wCACf,UAAU,EAAE,sBAAsB,CAAC,MAAM;AACzC,wCAAA,sBAAsB,EAAE,KAAK;AAC9B,qCAAA;AACF,iCAAA;AACF,6BAAA;AACF,yBAAA;AACD,wBAAA,QAAQ,EAAE,SAAS;AACnB,wBAAA,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE,qBAAqB,CAAC,SAAS;AACvC,qBAAA,CAAC,CAA6B;gBACjC;gBAAE,OAAO,KAAc,EAAE;oBACvB,OAAO,CAAC,KAAK,CACX,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,+BAAA,CAAiC,EAC1D,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAC/C;AACD,oBAAA,OAAO,EAAE;gBACX;YACF,CAAC;AACF,SAAA,CAAC;IACJ;;;IAMQ,oBAAoB,GAAA;QAC1B,OAAO;AACL,YAAA,MAAM,EAAE,OAAO,UAAU,EAAE,EAAE,KAAI;AAC/B,gBAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,CAAC;AACD,YAAA,SAAS,EAAE,YAAY,IAAI;AAC3B,YAAA,KAAK,EAAE,OAAO,UAAU,EAAE,OAAO,KAAI;AACnC,gBAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAgB,CAAC;YACrF,CAAC;SACF;IACH;AAEQ,IAAA,MAAM,2BAA2B,CAAC,OAA6B,EAAE,OAAe,EAAA;AACtF,QAAA,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAI7D;QAER,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAC9C,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,SAAS,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAEzE;QACR,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,kBAAkB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1G,QAAA,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE;YACxD,WAAW;YACX,kBAAkB;SACnB;IACH;AAGD;;AC/KD;AAIA;AAEA;AAEO,MAAM,gCAAgC,GAAoB;AAC/D,IAAA,IAAI,EAAE,4BAA4B;AAClC,IAAA,KAAK,EAAE,4BAA4B;AACnC,IAAA,WAAW,EAAE,0FAA0F;AACvG,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,MAAM,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACzC,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE;AACV,QAAA,MAAM,EAAE;AACN,YAAA,SAAS,EAAE,MACT,OAAO,0GAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAAC;AACtG,SAAA;AACF,KAAA;CACF;AAED;;ACzBA;AAIA;AAEA;AAEO,MAAM,kCAAkC,GAAoB;AACjE,IAAA,IAAI,EAAE,+BAA+B;AACrC,IAAA,KAAK,EAAE,+BAA+B;AACtC,IAAA,WAAW,EAAE,iEAAiE;AAC9E,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,MAAM,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACzC,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE;AACV,QAAA,MAAM,EAAE;AACN,YAAA,SAAS,EAAE,MACT,OAAO,6GAA2C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qCAAqC,CAAC;AAC3G,SAAA;AACF,KAAA;CACF;AAED;;ACjBA;AAEA;MAGa,wCAAwC,CAAA;IACnD,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,gCAAgC,EAAE,kCAAkC,CAAC;IAC/E;8GAHW,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxC,wCAAwC,EAAA,CAAA,CAAA;;2FAAxC,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBADpD;;;ACZD;AAIA;AAEA;AAEO,MAAM,mCAAmC,GAAoB;AAClE,IAAA,IAAI,EAAE,+BAA+B;AACrC,IAAA,KAAK,EAAE,+BAA+B;AACtC,IAAA,WAAW,EAAE,uEAAuE;AACpF,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,MAAM,EAAE,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACzC,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,UAAU,EAAE;AACV,QAAA,IAAI,EAAE;AACJ,YAAA,SAAS,EAAE,MACT,OAAO,kHAAgD,CAAC,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,CAAC,0CAA0C,CACpD;AACJ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,SAAS,EAAE,MACT,OAAO,kHAAgD,CAAC,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,CAAC,0CAA0C,CACpD;AACJ,SAAA;AACF,KAAA;CACF;AAED;;AC1BA;AAEA;MAGa,2BAA2B,CAAA;IACtC,UAAU,GAAA;QACR,OAAO,CAAC,mCAAmC,CAAC;IAC9C;8GAHW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA3B,2BAA2B,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACXD;AA4BA;AAEA;MAkKa,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA9B,8BAA8B,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,SAAA,EA7J9B;AAET,YAAA;AACE,gBAAA,OAAO,EAAE,qCAAqC;AAC9C,gBAAA,QAAQ,EAAE,sDAAsD;AAChE,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,QAAQ,EAAE,iEAAiE;AAC3E,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,QAAQ,EAAE,2BAA2B;AACrC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,QAAQ,EAAE,wCAAwC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;;YAED,mBAAmB,CAAC,kCAAkC,EAAE,MACtD,6EAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oDAAoD,CAAC,CAC/G;YACD,mBAAmB,CAAC,iBAAiB,EAAE,MACrC,6DAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,CAAC,CAC9E;YACD,mBAAmB,CAAC,mBAAmB,EAAE,MACvC,sEAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CAAC,CACjG;YACD,mBAAmB,CAAC,oBAAoB,EAAE,MACxC,OAAO,sGAA6C,CAAC,CAAC,IAAI,CACxD,CAAC,CAAC,KAAK,CAAC,CAAC,qDAAqD,CAC/D,CACF;YACD,mBAAmB,CAAC,oBAAoB,EAAE,MACxC,OAAO,gGAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,+CAA+C,CACzD,CACF;AACD,YAAA,wBAAwB,CAAC;AACvB,gBAAA;AACE,oBAAA,MAAM,EAAE,0CAA0C;AAClD,oBAAA,UAAU,EAAE,sCAAsC;AACnD,iBAAA;AACD,gBAAA;AACE,oBAAA,MAAM,EAAE,0CAA0C;AAClD,oBAAA,UAAU,EAAE,gCAAgC;AAC7C,iBAAA;aACF,CAAC;AACF,YAAA,oBAAoB,CAAC;AACnB,gBAAA;AACE,oBAAA,GAAG,EAAE,aAAa;AAClB,oBAAA,OAAO,EAAE,MAAM,OAAO,6FAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AACzG,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,SAAS,CAAC,SAAS;AAC5D,oBAAA,OAAO,EAAE,MACP,OAAO,mGAA8D,CAAC,CAAC,IAAI,CACzE,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CACnC;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,gBAAgB;AAC1E,oBAAA,OAAO,EAAE,MACP,OAAO,iGAAwE,CAAC,CAAC,IAAI,CACnF,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,mBAAmB;AAC7E,oBAAA,OAAO,EAAE,MACP,OAAO,qGAA4E,CAAC,CAAC,IAAI,CACvF,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CACrC;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,0BAA0B;AACpF,oBAAA,OAAO,EAAE,MACP,OAAO,8GAAqF,CAAC,CAAC,IAAI,CAChG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,yBAAyB;AACnF,oBAAA,OAAO,EAAE,MACP,OAAO,4GAAmF,CAAC,CAAC,IAAI,CAC9F,CAAC,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAC3C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,2BAA2B;AACrF,oBAAA,OAAO,EAAE,MACP,OAAO,6GAAoF,CAAC,CAAC,IAAI,CAC/F,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAC7C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,4BAA4B;AACtF,oBAAA,OAAO,EAAE,MACP,OAAO,+GAAsF,CAAC,CAAC,IAAI,CACjG,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,CAC9C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,0BAA0B;AACpF,oBAAA,OAAO,EAAE,MACP,OAAO,4GAAmF,CAAC,CAAC,IAAI,CAC9F,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,wBAAwB;AAClF,oBAAA,OAAO,EAAE,MACP,OAAO,0GAAiF,CAAC,CAAC,IAAI,CAC5F,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,UAAU,CAAC,cAAc;AAClE,oBAAA,OAAO,EAAE,MACP,OAAO,yGAAqE,CAAC,CAAC,IAAI,CAChF,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CACzC;AACJ,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,mCAAmC,CAAC,UAAU,CAAC,iBAAiB;AACrE,oBAAA,OAAO,EAAE,MACP,OAAO,8GAA0E,CAAC,CAAC,IAAI,CACrF,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,iBAAA;aACF,CAAC;AACF,YAAA;AACE,gBAAA,OAAO,EAAE,6BAA6B;AACtC,gBAAA,QAAQ,EAAE,qCAAqC;AAC/C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,6BAA6B;AACtC,gBAAA,QAAQ,EAAE,wCAAwC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,6BAA6B;AACtC,gBAAA,QAAQ,EAAE,wCAAwC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,6BAA6B;AACtC,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,CAAA,CAAA;;2FAEU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAhK1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,SAAS,EAAE;AAET,wBAAA;AACE,4BAAA,OAAO,EAAE,qCAAqC;AAC9C,4BAAA,QAAQ,EAAE,sDAAsD;AAChE,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,QAAQ,EAAE,iEAAiE;AAC3E,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;AACvC,4BAAA,QAAQ,EAAE,2BAA2B;AACrC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;AACvC,4BAAA,QAAQ,EAAE,wCAAwC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;;wBAED,mBAAmB,CAAC,kCAAkC,EAAE,MACtD,6EAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oDAAoD,CAAC,CAC/G;wBACD,mBAAmB,CAAC,iBAAiB,EAAE,MACrC,6DAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,CAAC,CAC9E;wBACD,mBAAmB,CAAC,mBAAmB,EAAE,MACvC,sEAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6CAA6C,CAAC,CACjG;wBACD,mBAAmB,CAAC,oBAAoB,EAAE,MACxC,OAAO,sGAA6C,CAAC,CAAC,IAAI,CACxD,CAAC,CAAC,KAAK,CAAC,CAAC,qDAAqD,CAC/D,CACF;wBACD,mBAAmB,CAAC,oBAAoB,EAAE,MACxC,OAAO,gGAAuC,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,KAAK,CAAC,CAAC,+CAA+C,CACzD,CACF;AACD,wBAAA,wBAAwB,CAAC;AACvB,4BAAA;AACE,gCAAA,MAAM,EAAE,0CAA0C;AAClD,gCAAA,UAAU,EAAE,sCAAsC;AACnD,6BAAA;AACD,4BAAA;AACE,gCAAA,MAAM,EAAE,0CAA0C;AAClD,gCAAA,UAAU,EAAE,gCAAgC;AAC7C,6BAAA;yBACF,CAAC;AACF,wBAAA,oBAAoB,CAAC;AACnB,4BAAA;AACE,gCAAA,GAAG,EAAE,aAAa;AAClB,gCAAA,OAAO,EAAE,MAAM,OAAO,6FAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AACzG,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,SAAS,CAAC,SAAS;AAC5D,gCAAA,OAAO,EAAE,MACP,OAAO,mGAA8D,CAAC,CAAC,IAAI,CACzE,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CACnC;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,gBAAgB;AAC1E,gCAAA,OAAO,EAAE,MACP,OAAO,iGAAwE,CAAC,CAAC,IAAI,CACnF,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAClC;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,mBAAmB;AAC7E,gCAAA,OAAO,EAAE,MACP,OAAO,qGAA4E,CAAC,CAAC,IAAI,CACvF,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CACrC;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,0BAA0B;AACpF,gCAAA,OAAO,EAAE,MACP,OAAO,8GAAqF,CAAC,CAAC,IAAI,CAChG,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,yBAAyB;AACnF,gCAAA,OAAO,EAAE,MACP,OAAO,4GAAmF,CAAC,CAAC,IAAI,CAC9F,CAAC,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAC3C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,2BAA2B;AACrF,gCAAA,OAAO,EAAE,MACP,OAAO,6GAAoF,CAAC,CAAC,IAAI,CAC/F,CAAC,CAAC,KAAK,CAAC,CAAC,mCAAmC,CAC7C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,4BAA4B;AACtF,gCAAA,OAAO,EAAE,MACP,OAAO,+GAAsF,CAAC,CAAC,IAAI,CACjG,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,CAC9C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,0BAA0B;AACpF,gCAAA,OAAO,EAAE,MACP,OAAO,4GAAmF,CAAC,CAAC,IAAI,CAC9F,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,gBAAgB,CAAC,wBAAwB;AAClF,gCAAA,OAAO,EAAE,MACP,OAAO,0GAAiF,CAAC,CAAC,IAAI,CAC5F,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAC1C;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,UAAU,CAAC,cAAc;AAClE,gCAAA,OAAO,EAAE,MACP,OAAO,yGAAqE,CAAC,CAAC,IAAI,CAChF,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CACzC;AACJ,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,mCAAmC,CAAC,UAAU,CAAC,iBAAiB;AACrE,gCAAA,OAAO,EAAE,MACP,OAAO,8GAA0E,CAAC,CAAC,IAAI,CACrF,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAC5C;AACJ,6BAAA;yBACF,CAAC;AACF,wBAAA;AACE,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,QAAQ,EAAE,qCAAqC;AAC/C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,QAAQ,EAAE,wCAAwC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,QAAQ,EAAE,wCAAwC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,6BAA6B;AACtC,4BAAA,QAAQ,EAAE,6BAA6B;AACvC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC/LD;AAcA;AAEA;AAEA,MAAM,uBAAuB,GAAG,mCAAmC;AAEnE;;;AAGG;MACU,oCAAoC,CAAA;AAAjD,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAiI3D;IA/HE,MAAM,OAAO,CAAC,OAA+B,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;QAChC,MAAM,IAAI,GAAG,kCAAkC;;;AAI/C,QAAA,MAAM,qBAAqB,GAAG;YAC5B,QAAQ,EAAE,CAAC,iBAAiB,CAAC;AAC7B,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;SACxC;AACD,QAAA,MAAM,gBAAgB,GAAG;YACvB,QAAQ,EAAE,CAAC,iBAAiB,CAAC;AAC7B,YAAA,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;SAC1B;QAED,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;AACtD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,gBAAgB;AACvD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1F,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,qBAAqB;AAC9B,aAAA;AACF,SAAA,CAAC;QAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC/D,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;AACrD,gBAAA;AACE,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,IAAI,EAAE,qCAAqC;oBAC3C,IAAI,EAAE,MAAM,CAAC,IAAI;AAClB,iBAAA;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC;AAC7C,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,gBAAgB;AACvD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1F,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,aAAa;AACpD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;AAClD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC3C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;AACvF,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,QAAQ;AAC/C,gBAAA,IAAI,EAAE,qDAAqD;AAC3D,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA;AACF,SAAA,CAAC;;;QAIF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AAC/D,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,YAAY;AACnD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW;AACjD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,YAAY;AACnD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW;AACjD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,iBAAiB;AACxD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW;AACtD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC3F,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,aAAa;AACpD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;AAClD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC3C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;AACvF,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,iBAAiB;AACxD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW;AACtD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC3F,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,cAAc;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;AACnD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI;AAC5C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACxF,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;gBACE,IAAI,EAAE,gCAAgC,CAAC,iBAAiB;AACxD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1F,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;AACF,SAAA,CAAC;IACJ;AACD;AAED;;;;;;;AC7IA;AAEA;AAEA;;AAEG;MAEU,oDAAoD,CAAA;IAC/D,MAAM,MAAM,CAAC,OAA+C,EAAA;QAC1D,MAAM,IAAI,GAAG,kCAAkC;QAC/C,MAAM,MAAM,GAAG,4BAA4B;QAC3C,MAAM,CAAC,GAAG,wCAAwC;QAClD,MAAM,CAAC,GAAG,2BAA2B;QAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAA,EAAG,CAAC,2BAA2B,EAAE,CAAA,EAAG,CAAC,CAAA,+BAAA,CAAiC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAEtI;AACG,aAAA,QAAQ,CACP,MAAM,CAAC,iBAAiB,CAAC,WAAW,EACpC,CAAA,EAAG,CAAC,CAAA,qCAAA,CAAuC,EAC3C,CAAA,EAAG,CAAC,CAAA,2CAAA,CAA6C,EACjD,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAErD,aAAA,aAAa,CACZ,IAAI,CAAC,mBAAmB,EACxB,CAAA,EAAG,CAAC,CAAA,2BAAA,CAA6B,EACjC,CAAA,EAAG,CAAC,CAAA,iCAAA,CAAmC;AAExC,aAAA,aAAa;AACb,aAAA,QAAQ,EAAE;IACf;8GAvBW,oDAAoD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApD,oDAAoD,EAAA,CAAA,CAAA;;2FAApD,oDAAoD,EAAA,UAAA,EAAA,CAAA;kBADhE;;;;;;;;ACtBD;AAKA;AAEA;AAEM,MAAO,6CAA8C,SAAQ,wBAAwB,CAAA;AAA3F,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,QAAQ,GAAsB;AAC5B,YAAA;AACE,gBAAA,EAAE,EAAE,yBAAyB;AAC7B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK;AAChD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;AAC5D,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EACvE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK;qBACjD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,6BAA6B;AACjC,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK;AACpD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI;AAClD,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW;AAChE,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAC3E;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI;AAClD,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK;qBACrD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,yBAAyB;AAC7B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK;AAChD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW;AAC5D,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EACvE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC9C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK;qBACjD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,oBAAoB;AACxB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;AAC3C,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AACzC,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW;AACvD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAClE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AACzC,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;qBAC5C,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,+BAA+B;AACnC,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;AACnD,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW;AACjE,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAC5E;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;AACnD,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK;qBACtD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;AAC5C,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW;AACxD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,EACnE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;qBAC7C,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,sBAAsB;AAC1B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK;AAC7C,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC3C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;AACzD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,0BAA0B,CACjC,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,EACpE,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAC/H;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK;AACjD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW;AAC7D,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,EACxE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK;qBAClD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK;AACjD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW;AAC7D,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,EACxE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC/C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK;qBAClD,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;AAC5C,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW;AACxD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,EACnE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAC1C,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;qBAC7C,CACF;AACF,iBAAA;AACF,aAAA;SACF;IACH;AAAC;AAED;;;;;;;AC9LA;AAmBA;AAEA;AAEA,MAAM,sBAAsB,GAAG,0CAA0C;AACzE,MAAM,sBAAsB,GAAG,oCAAoC;AACnE,MAAM,iBAAiB,GAAG,gCAAgC;AAC1D,MAAM,4BAA4B,GAAG,0CAA0C;AAE/E,MAAM,OAAO,GAAG,CAAC,UAAkB,KAAa,CAAA,GAAA,EAAM,UAAU,CAAA,GAAA,CAAK;AAErE,MAAM,oBAAoB,GAAG;AAC3B,IAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC5C,IAAA,WAAW,EAAE,0BAA0B;AACvC,IAAA,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACnC,IAAA,gBAAgB,EAAE,+BAA+B;AACjD,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,mBAAmB,EAAE,kCAAkC;AACvD,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,iBAAiB,EAAE,gCAAgC;AACnD,IAAA,UAAU,EAAE,yBAAyB;AACrC,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,UAAU,EAAE,iCAAiC;CAC9C;AAED,MAAM,eAAe,GAAG;AACtB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;CAChC;AAED,MAAM,kBAAkB,GAAG;AACzB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;CACnC;AAED;AAEA;;;AAGG;AACG,SAAU,0CAA0C,CACxD,MAAwC,EAAA;AAExC,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM;AAChF,IAAA,MAAM,YAAY,GAAG,mCAAmC,CAAC,gBAAgB;AACzE,IAAA,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,4BAA4B;IAEpG,OAAO;AACL,QAAA,aAAa,EAAE,6BAA6B;QAC5C,IAAI;QACJ,KAAK;QACL,WAAW;AACX,QAAA,SAAS,EAAE;AACT,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,KAAK,EAAE,8BAA8B;AACrC,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE;AAChD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,KAAK,EAAE;AACL,YAAA,eAAe,EAAE,kBAAkB;AACnC,YAAA,UAAU,EAAE;AACV,gBAAA;AACE,oBAAA,EAAE,EAAE,kBAAkB;oBACtB,IAAI,EAAE,YAAY,CAAC,gBAAgB;AACnC,oBAAA,KAAK,EAAE,oBAAoB;AAC3B,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,0BAA0B;AACvC,wBAAA,YAAY,EAAE,2BAA2B;AAC1C,qBAAA;AACD,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,gBAAgB,EAAE,cAAc;AACjC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,qBAAqB;oBACzB,IAAI,EAAE,YAAY,CAAC,mBAAmB;AACtC,oBAAA,KAAK,EAAE,uBAAuB;AAC9B,oBAAA,MAAM,EAAE;AACN,wBAAA,QAAQ,EAAE,yDAAyD;AACpE,qBAAA;AACD,oBAAA,iBAAiB,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE;AAChD,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,+BAA+B;AACnC,oBAAA,IAAI,EAAE,8BAA8B;AACpC,oBAAA,KAAK,EAAE,wBAAwB;AAC/B,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,iEAAiE;AAC1E,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,qBAAqB;AACzB,oBAAA,IAAI,EAAE,8BAA8B;AACpC,oBAAA,KAAK,EAAE,cAAc;AACrB,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,sCAAsC;AAC7C,wBAAA,WAAW,EAAE,yDAAyD;AACtE,wBAAA,eAAe,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAChD,wBAAA,OAAO,EAAE,sBAAsB;AAC/B,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;AACvC,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,2BAA2B;oBAC/B,IAAI,EAAE,YAAY,CAAC,yBAAyB;AAC5C,oBAAA,KAAK,EAAE,0BAA0B;AACjC,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC7C,qBAAA;AACD,oBAAA,iBAAiB,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE;AAClD,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,+BAA+B;AACnC,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,yCAAyC;AAChD,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACnC,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC5C,wBAAA,iBAAiB,EAAE,OAAO,CAAC,4BAA4B,CAAC;AACzD,qBAAA;AACD,oBAAA,iBAAiB,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE;AACrD,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,oBAAoB;AACxB,oBAAA,IAAI,EAAE,8BAA8B;AACpC,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,sCAAsC;AAC7C,wBAAA,WAAW,EAAE,sDAAsD;AACnE,wBAAA,eAAe,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAChD,wBAAA,OAAO,EAAE,sBAAsB;AAC/B,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE;AAC1C,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,yCAAyC;AAC7C,oBAAA,IAAI,EAAE,8BAA8B;AACpC,oBAAA,KAAK,EAAE,mCAAmC;AAC1C,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,0FAA0F;AACnG,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,wBAAwB;oBAC5B,IAAI,EAAE,YAAY,CAAC,2BAA2B;AAC9C,oBAAA,KAAK,EAAE,0BAA0B;AACjC,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC7C,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,0BAA0B;oBAC9B,IAAI,EAAE,YAAY,CAAC,wBAAwB;AAC3C,oBAAA,KAAK,EAAE,wBAAwB;AAC/B,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC7C,qBAAA;AACD,oBAAA,iBAAiB,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;AACtD,iBAAA;AACD,gBAAA;AACE,oBAAA,EAAE,EAAE,kCAAkC;AACtC,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,2CAA2C;AAClD,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC;AACnC,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC;AAC5C,wBAAA,iBAAiB,EAAE,OAAO,CAAC,4BAA4B,CAAC;AACzD,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,EAAE;AAC7G,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;AAC5D,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;AACzD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE;AAC7D,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;AACzD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;AAC/C,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,YAAY,EAAE;AAClE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE;AACrD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,EAAE;AAClE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE;AACzD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,IAAI,EAAE,MAAM,EAAE;AACtE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC9C,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE;AACpE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAClD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,MAAM,EAAE;AAC/D,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACpD,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE;AACjE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE;AACnE,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,IAAI,EAAE,MAAM,EAAE;AAChF,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;AAC9C,iBAAA;AACD,gBAAA;oBACE,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,IAAI,EAAE,MAAM,EAAE;AACjE,oBAAA,MAAM,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE;AAC5D,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;AAEO,MAAM,8BAA8B,GAAG;AAE9C;;ACrWA;AAUA;AAEA;AAEA,MAAM,CAAC,GAAG,yBAAyB;AAEnC;AAEA;AAEA;AACO,MAAM,oCAAoC,GAA0B,0CAA0C,CAAC;AACpH,IAAA,IAAI,EAAE,8BAA8B;AACpC,IAAA,KAAK,EAAE,CAAC,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;AACnD,IAAA,WAAW,EAAE,CAAC,CACZ,8GAA8G,EAC9G,kGAAkG,CACnG;AACD,IAAA,cAAc,EAAE,yBAAyB;AACzC,IAAA,mBAAmB,EAAE,4BAA4B;AAClD,CAAA;AAID;;AClCA;;AAEG;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/commands/start-work-order-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntityService,\n buildAXPRecordWorkflowInfo,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXP_WORKFLOW_ENGINE, type AXPWorkflowEngine } from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n type MaintenanceTemplateLike,\n} from '../../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface StartWorkOrderFlowContext {\n /** When set, applies the maintenance template on the work order before starting the workflow. */\n maintenanceTemplateId?: string;\n data?: Record<string, unknown>;\n options?: { maintenanceTemplateId?: string };\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n//#endregion\n\n/**\n * Starts the maintenance template workflow for a work order (execution + approval).\n */\n@Injectable({ providedIn: 'root' })\nexport class StartWorkOrderFlowCommand implements AXPCommand<StartWorkOrderFlowContext, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE) as AXPWorkflowEngine;\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly dialogService = inject(AXDialogService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartWorkOrderFlowContext): AXPCommandExecuteResultPromise<void> {\n const row = defaultTo(get(input, 'data'), {}) as Record<string, unknown>;\n const workOrderId = this.resolveText(get(row, 'id'));\n if (!workOrderId) {\n return { success: false, message: { text: 'Work order id is required.' } };\n }\n\n if (getRecordWorkflowInstanceId(row)) {\n return { success: false };\n }\n\n let workOrder = await this.loadWorkOrder(workOrderId, row);\n if (!workOrder) {\n return { success: false, message: { text: 'Work order not found.' } };\n }\n\n const explicitTemplateId = this.resolveText(get(input, 'maintenanceTemplateId'));\n const selectedTemplateId = await this.resolveMaintenanceTemplateId(workOrder, explicitTemplateId || undefined);\n if (!selectedTemplateId) {\n return { success: false };\n }\n\n const flowPrerequisites = await this.validateFlowPrerequisites(workOrder, selectedTemplateId);\n if (!flowPrerequisites) {\n return { success: false };\n }\n\n const { workflowConfig, workflowName, assignedEmployeeId } = flowPrerequisites;\n\n if (selectedTemplateId !== workOrder.maintenanceTemplateId) {\n await this.applyMaintenanceTemplate(workOrderId, selectedTemplateId);\n workOrder = (await this.loadWorkOrder(workOrderId)) ?? workOrder;\n }\n\n const assetIdentifiers = await this.resolveAssetIdentifiers(this.resolveText(workOrder.assetId));\n const workflowInputs = this.buildWorkflowInputs(\n workOrder,\n workflowConfig,\n assignedEmployeeId,\n assetIdentifiers,\n );\n const correlationId = `${RootConfig.entities.workOrder.source}:${workOrderId}:${workflowName}`;\n\n try {\n // Start via engine only — do not use AXPWorkflowManager.start() here; it auto-runs inline\n // frontend steps (e.g. checklist fill). Human tasks must stay on the task board.\n const startResponse = await this.workflowEngine.start({\n workflowId: workflowName,\n input: {\n ...workflowInputs,\n refId: workOrderId,\n refType: RootConfig.entities.workOrder.source,\n correlationId,\n },\n });\n\n const instanceId = startResponse.instanceId;\n if (!instanceId) {\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: 'Unknown error' } };\n }\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId,\n definitionId: workflowName,\n correlationId,\n }),\n } as never);\n\n this.eventService.publish('task-board.refresh', { provider: workflowName });\n\n const taskBoardHint = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.workflow-started-use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: taskBoardHint,\n closeButton: true,\n timeOut: 6000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n console.error('[StartWorkOrderFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadWorkOrder(\n workOrderId: string,\n row?: Record<string, unknown>,\n ): Promise<AXMMaintenanceManagementWorkOrderEntityModel | null> {\n if (get(row, 'id') === workOrderId) {\n return row as unknown as AXMMaintenanceManagementWorkOrderEntityModel;\n }\n\n const loaded = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n return (loaded as AXMMaintenanceManagementWorkOrderEntityModel | null) ?? null;\n }\n\n private async applyMaintenanceTemplate(workOrderId: string, templateId: string): Promise<void> {\n const template = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId)) as {\n id?: string;\n title?: unknown;\n maintenanceTypeId?: string;\n metadataIds?: string[];\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n needShutdown?: boolean;\n needPermission?: boolean;\n estimatedMinutes?: number;\n } | null;\n\n if (!template?.id) {\n throw new Error('Maintenance template not found.');\n }\n\n const estimatedHours =\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined;\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n maintenanceTemplateId: template.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplate: {\n id: template.id,\n title: template.title,\n metadataIds: template.metadataIds,\n workflowConfig: template.workflowConfig,\n },\n needShutdown: template.needShutdown ?? false,\n needPermission: template.needPermission ?? false,\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n } as never);\n }\n\n private async resolveWorkflowConfig(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n let workflowConfig = workOrder.maintenanceTemplate?.workflowConfig ?? null;\n if (!workflowConfig?.workflowDefinitionId && workOrder.maintenanceTemplateId) {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(workOrder.maintenanceTemplateId);\n workflowConfig = get(template, 'workflowConfig') ?? null;\n }\n return workflowConfig;\n }\n\n private isWorkflowEnabled(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null,\n ): boolean {\n if (!workflowConfig?.workflowDefinitionId?.trim() || !workflowConfig.workflowName?.trim()) {\n return false;\n }\n return workflowConfig.enabled !== false;\n }\n\n /**\n * Validates work-order state before starting a workflow or persisting workflowInfo.\n */\n private async validateFlowPrerequisites(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n selectedTemplateId: string,\n ): Promise<{\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig;\n workflowName: string;\n assignedEmployeeId: string;\n } | null> {\n const statusId = workOrder.statusId ?? '';\n if (!STARTABLE_STATUSES.has(statusId)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.flow-requires-startable-status',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowConfig = await this.resolveWorkflowConfigForTemplate(selectedTemplateId);\n if (!this.isWorkflowEnabled(workflowConfig)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-configured',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowName = workflowConfig!.workflowName.trim();\n const assignedToId = this.resolveText(workOrder.assignedToId);\n if (!assignedToId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-user-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n const assignedEmployeeId = await this.resolveEmployeeIdByPersonId(assignedToId);\n if (workflowName === 'work-order-approval' && !assignedEmployeeId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-employee-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n return { workflowConfig: workflowConfig!, workflowName, assignedEmployeeId };\n }\n\n private async resolveWorkflowConfigForTemplate(\n templateId: string,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId);\n return get(template, 'workflowConfig') ?? null;\n }\n\n private async resolveAssetIdentifiers(\n assetId: string,\n ): Promise<{ assetCode: string | null; assetSerialNumber: string | null }> {\n if (!assetId) {\n return { assetCode: null, assetSerialNumber: null };\n }\n\n const asset = (await this.entityService\n .withEntity('AssetManagement', 'Asset')\n .data()\n .byKey(assetId)) as { code?: string; serialNumber?: string } | null;\n\n const assetCode = this.resolveText(asset?.code);\n const assetSerialNumber = this.resolveText(asset?.serialNumber);\n\n return {\n assetCode: assetCode || null,\n assetSerialNumber: assetSerialNumber || null,\n };\n }\n\n private buildWorkflowInputs(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n assignedEmployeeId: string,\n assetIdentifiers: { assetCode: string | null; assetSerialNumber: string | null },\n ): Record<string, unknown> {\n const assetTitle = workOrder.asset?.title;\n const assetDisplayName =\n typeof assetTitle === 'string'\n ? assetTitle\n : resolveMultiLanguageString(assetTitle as never, this.translationService.getActiveLang());\n\n const templateDefaults = defaultTo(workflowConfig.defaultInput, {}) as Record<string, unknown>;\n const maintenanceTypeTitle = workOrder.maintenanceType?.title;\n const maintenanceTypeName =\n typeof maintenanceTypeTitle === 'string'\n ? maintenanceTypeTitle\n : resolveMultiLanguageString(maintenanceTypeTitle as never, this.translationService.getActiveLang());\n\n const assignedToTitle = workOrder.assignedTo?.fullName;\n\n return {\n ...templateDefaults,\n workOrderId: workOrder.id,\n workOrderNo: workOrder.workOrderNo,\n workOrderCode: workOrder.workOrderNo,\n assetId: workOrder.assetId,\n assetCode: assetIdentifiers.assetCode,\n assetSerialNumber: assetIdentifiers.assetSerialNumber,\n assetDisplayName,\n maintenanceTypeId: workOrder.maintenanceTypeId,\n maintenanceTypeName,\n maintenancePlanId: workOrder.maintenancePlanId ?? null,\n failureRegisterId: workOrder.failureRegisterId ?? null,\n assignedToId: workOrder.assignedToId ?? null,\n assignedToDisplayName:\n typeof assignedToTitle === 'string' && assignedToTitle.trim()\n ? assignedToTitle.trim()\n : workOrder.assignedToId ?? null,\n assignedEmployeeId: assignedEmployeeId || null,\n sourceType: workOrder.sourceType ?? null,\n dueDate: workOrder.scheduledEnd ?? workOrder.scheduledStart ?? null,\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n private async showWarning(content: string): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n timeOut: 10000,\n timeOutProgress: true,\n });\n }\n\n /**\n * Work-order approval flow expects `HumanCapitalManagement.Employee` id (`performedById` on WorkReport).\n * `WorkOrder.assignedToId` stores `PersonCore.Person` id.\n */\n private async resolveEmployeeIdByPersonId(personId: string): Promise<string> {\n if (!personId) {\n return '';\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async resolveMaintenanceTemplateId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n explicitTemplateId?: string,\n ): Promise<string> {\n if (explicitTemplateId) {\n return explicitTemplateId;\n }\n\n const currentTemplateId = this.resolveText(workOrder.maintenanceTemplateId);\n if (currentTemplateId) {\n const currentConfig = await this.resolveWorkflowConfig(workOrder);\n if (this.isWorkflowEnabled(currentConfig)) {\n return currentTemplateId;\n }\n }\n\n const assetId = this.resolveText(workOrder.assetId);\n if (!assetId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n if (templates.length === 0) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n if (templates.length === 1) {\n return templates[0].id;\n }\n\n return (await this.pickMaintenanceTemplate(templates)) ?? '';\n }\n\n private async pickMaintenanceTemplate(templates: MaintenanceTemplateLike[]): Promise<string | null> {\n const locale = this.translationService.getActiveLang() as 'en-US' | 'fa-IR';\n const sorted = [...templates].sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n const title = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.title',\n );\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.content',\n );\n const cancelLabel = await this.translationService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: string | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = this.dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'vertical',\n closeButton: true,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n ...sorted.map((template) => ({\n text: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n color: 'primary' as const,\n onClick: () => {\n dialog.close();\n finish(template.id);\n },\n })),\n ],\n });\n });\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().query(request as never);\n },\n };\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|