@unite-us/app-create-referral 0.15.176 → 0.15.177
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/dist/api/ApiHooks.js +25 -1
- package/dist/api/ApiHooks.js.map +1 -1
- package/dist/hooks/__tests__/useCreateReferrals.test.js +664 -8
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +284 -72
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useCreateRecord","useUpdateRecord","coreApi","jest","mock","fn","setData","data","type","deleteRecord","deleteFile","findRecord","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","notify","error","referrals","persistedAttachments","pendingAttachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","mockDispatch","DRAFT_REFERRAL_ID","CASE_ID","NETWORK_ID","SENDING_PROVIDER_ID","SERVICE_AUTHORIZATION_ID","FUNDED_PROGRAM_ID","FEE_SCHEDULE_ID","createBaseReferral","overrides","arguments","length","setupMocks","mockReturnValue","dispatch","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","updateRecord","buildRecordResponse","queuedPersistedAttachment","filename","content_type","createDraftReferralWithRemovableAttachment","removablePersistedAttachments","service_authorization","fee_schedule_program","authorization_required","createExistingDraftReferral","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","createFundedProgram","fee_schedule","payment_type","submitDraftUpdate","draft","result","response","current","firstCallOrder","mockFn","expect","toHaveBeenCalled","invocationCallOrder","mockRecordHooks","hook","handlers","methodName","mockImplementation","defaultTo","value","fallback","createRecordMock","setupDraftContext","draftReferral","createDefaultOldCase","service_type","createDefaultOldReferrals","setupDraftCoreApiMocks","_ref","oldCase","oldReferrals","insurance","queryResponses","referral","model","Promise","resolve","status","setupDraftUpdateMocks","_ref2","updatedCase","updatedReferral","createdReferral","createdServiceAuthorization","updatedServiceAuthorization","resolvedOldCase","resolvedOldReferrals","mockCreateReferral","mockCreateServiceAuthorization","mockUpdateCase","mockUpdateReferral","mockUpdateServiceAuthorization","beforeEach","clearAllMocks","it","createReferrals","toHaveProperty","mockCreateCase","toEqual","cases","referralIndex","shippingDetail","index","sent","caseId","attachmentStatus","attachmentErrors","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","toHaveBeenCalledWith","objectContaining","person_conditions","pendingFile","name","tempId","file","preview","not","newFile","referralWithMixedAttachments","path","attachableDocuments","attached","document","title","relationshipModel","toHaveBeenCalledTimes","anything","icd10_code","requester","requested_unit_amount","clinical_modifications","toBeLessThan","requested_cents","toContain","auto_authorizes","mockRejectedValue","Error","toBe","referralWithPendingAttachment","toMatchObject","operation","message"],"sources":["../../../src/hooks/__tests__/useCreateReferrals.test.js"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-hooks';\nimport useCreateReferrals from '../useCreateReferrals';\nimport { useAppCreateReferralContext } from '../../context/AppCreateReferralProvider';\nimport { useCreateRecord, useUpdateRecord } from '../../api/ApiHooks';\nimport { coreApi } from '../../api/config';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n setData: (data) => ({ type: 'set', data }),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n deleteRecord: jest.fn(),\n deleteFile: jest.fn(),\n findRecord: jest.fn(),\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n CALLBACKS: {\n notify: {\n error: jest.fn(),\n },\n },\n}));\n\nconst referrals = [\n {\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n description: 'Test Referral',\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n },\n];\n\ndescribe('useCreateReferrals', () => {\n const mockDispatch = jest.fn();\n const DRAFT_REFERRAL_ID = 'draft-referral-1';\n const CASE_ID = 'case-1';\n const NETWORK_ID = 'network1';\n const SENDING_PROVIDER_ID = 'provider2';\n const SERVICE_AUTHORIZATION_ID = 'service-auth-1';\n const FUNDED_PROGRAM_ID = 'fee-schedule-program-1';\n const FEE_SCHEDULE_ID = 'fee-schedule-1';\n\n const createBaseReferral = (overrides = {}) => ({\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n ...overrides,\n });\n\n const setupMocks = (referrals) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n };\n\n const buildRecordResponse = (data) => ({\n data: {\n data,\n },\n });\n\n const queuedPersistedAttachment = {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n };\n\n const createDraftReferralWithRemovableAttachment = (overrides = {}) =>\n createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with removed file',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n service_authorization: {\n id: 'service-auth-1',\n },\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n ...overrides,\n });\n\n const createExistingDraftReferral = (overrides = {}) => ({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n is_grouped: false,\n receiving_program: { id: 'old-program' },\n receiving_provider: { id: 'old-provider' },\n receiving_network: { id: NETWORK_ID },\n sending_provider: { id: SENDING_PROVIDER_ID },\n sending_network: { id: NETWORK_ID },\n ...overrides,\n });\n\n const createFundedProgram = (overrides = {}) => ({\n id: 'funded-program',\n provider: { id: 'funded-provider', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n ...overrides,\n });\n\n const submitDraftUpdate = async ({ draft = false } = {}) => {\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n\n await act(async () => {\n response = await result.current({ draft });\n });\n\n return response;\n };\n\n // Jest records a global invocation counter per call, which lets us assert the ordering of\n // requests issued through separate mocks without relying on timing.\n const firstCallOrder = (mockFn) => {\n expect(mockFn).toHaveBeenCalled();\n return mockFn.mock.invocationCallOrder[0];\n };\n\n const mockRecordHooks = (hook, handlers, methodName) => {\n hook.mockImplementation((type) => ({\n [methodName]: handlers[type] || jest.fn().mockResolvedValue(buildRecordResponse({})),\n }));\n };\n\n const defaultTo = (value, fallback) => (value === undefined ? fallback : value);\n\n const createRecordMock = (data) =>\n jest.fn().mockResolvedValue(buildRecordResponse(defaultTo(data, {})));\n\n const setupDraftContext = (draftReferral) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: [draftReferral],\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n };\n\n const createDefaultOldCase = (draftReferral) => ({\n id: draftReferral.case.id,\n description: 'Original draft referral',\n service_type: { id: draftReferral.service.id },\n provider: { id: draftReferral.sendingProvider.id },\n network: { id: draftReferral.network.id },\n service_authorization: draftReferral.case.service_authorization,\n });\n\n const createDefaultOldReferrals = (draftReferral) => [\n createExistingDraftReferral({\n id: draftReferral.id,\n receiving_program: { id: draftReferral.programs[0].id },\n receiving_provider: { id: draftReferral.programs[0].provider.id },\n receiving_network: { id: draftReferral.network.id },\n sending_provider: { id: draftReferral.sendingProvider.id },\n sending_network: { id: draftReferral.network.id },\n }),\n ];\n\n const setupDraftCoreApiMocks = ({ oldCase, oldReferrals, insurance }) => {\n const queryResponses = {\n referral: oldReferrals,\n insurance: [defaultTo(insurance, { id: 'insurance-1' })],\n };\n\n coreApi.findRecord.mockResolvedValue(buildRecordResponse(oldCase));\n coreApi.query.mockImplementation((model) =>\n Promise.resolve(buildRecordResponse(defaultTo(queryResponses[model], []))),\n );\n coreApi.deleteRecord.mockResolvedValue({ status: 204 });\n };\n\n const setupDraftUpdateMocks = ({\n draftReferral,\n oldCase,\n oldReferrals,\n updatedCase,\n updatedReferral,\n createdReferral,\n createdServiceAuthorization,\n updatedServiceAuthorization,\n insurance,\n }) => {\n const resolvedOldCase = defaultTo(oldCase, createDefaultOldCase(draftReferral));\n const resolvedOldReferrals = defaultTo(oldReferrals, createDefaultOldReferrals(draftReferral));\n\n setupDraftContext(draftReferral);\n\n const mockCreateReferral = createRecordMock(createdReferral);\n const mockCreateServiceAuthorization = createRecordMock(createdServiceAuthorization);\n mockRecordHooks(\n useCreateRecord,\n {\n referral: mockCreateReferral,\n service_authorization: mockCreateServiceAuthorization,\n },\n 'createRecord',\n );\n\n const mockUpdateCase = createRecordMock(updatedCase);\n const mockUpdateReferral = createRecordMock(updatedReferral);\n const mockUpdateServiceAuthorization = createRecordMock(updatedServiceAuthorization);\n mockRecordHooks(\n useUpdateRecord,\n {\n case: mockUpdateCase,\n referral: mockUpdateReferral,\n service_authorization: mockUpdateServiceAuthorization,\n },\n 'updateRecord',\n );\n\n setupDraftCoreApiMocks({\n oldCase: resolvedOldCase,\n oldReferrals: resolvedOldReferrals,\n insurance,\n });\n\n return {\n mockCreateReferral,\n mockCreateServiceAuthorization,\n mockUpdateCase,\n mockUpdateReferral,\n mockUpdateServiceAuthorization,\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n coreApi.deleteFile.mockResolvedValue({});\n coreApi.deleteRecord.mockResolvedValue({});\n coreApi.findRecord.mockResolvedValue({ data: { data: { id: 'case-1' } } });\n coreApi.setRelationship.mockResolvedValue({});\n coreApi.uploadFile.mockResolvedValue({});\n coreApi.query.mockResolvedValue({ data: { data: [] } });\n });\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toHaveProperty('cases');\n expect(response).toHaveProperty('referrals');\n expect(response).toHaveProperty('shippingDetail');\n });\n });\n\n it('should create all referrals successfully', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n const setupCreateRecordMocks = () => {\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n };\n\n it('should create SOME referrals', async () => {\n const someReferrals = [\n createBaseReferral({ description: 'Test Referral' }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(someReferrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: someReferrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n it('should FAIL all referrals', async () => {\n const referralsFailed = [\n createBaseReferral({ description: null }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(referralsFailed);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: referralsFailed,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [],\n referrals: [],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should not create referrals to consent when nh_consent is false', async () => {\n const referrals = [\n createBaseReferral({\n description: 'Test Referral',\n network: { id: 'network1', features: { nh_consent: false } },\n }),\n ];\n\n setupMocks(referrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should include associated needs when creating draft referrals', async () => {\n const referralsWithNeeds = [\n createBaseReferral({\n description: 'Draft referral with needs',\n client_need: ['need-1', 'need-2'],\n }),\n ];\n\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: referralsWithNeeds,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Draft Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'draft' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }) };\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(mockCreateCase).toHaveBeenCalledWith(\n expect.objectContaining({\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'draft',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n });\n\n it('deletes queued persisted attachments and uploads new ones when saving an existing draft', async () => {\n const pendingFile = { name: 'new.pdf', type: 'application/pdf' };\n const draftReferral = createDraftReferralWithRemovableAttachment({\n case: {\n id: 'case-1',\n service_authorization: null,\n },\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: pendingFile,\n preview: 'blob:new-preview',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).toHaveBeenCalledWith('case', 'case-1', 'persisted-file-1');\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case-1', pendingFile);\n });\n\n it('does not delete queued persisted attachments when saving non-draft referrals', async () => {\n const referral = createBaseReferral({\n id: 'referral-1',\n state: 'open',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n });\n\n setupMocks([referral]);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ referrals: [referral], person: { id: 'person1' }, draft: false });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('does not delete draft attachments when no removable persisted attachment ids are present', async () => {\n const draftReferral = createDraftReferralWithRemovableAttachment({\n removablePersistedAttachments: [\n {\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('uploads only new attachments and skips persisted draft documents', async () => {\n const newFile = { name: 'new.pdf', type: 'application/pdf' };\n const referralWithMixedAttachments = [\n createBaseReferral({\n description: 'Referral with mixed attachments',\n persistedAttachments: [\n {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n path: '/files/existing.pdf',\n },\n ],\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: newFile,\n preview: 'blob:new-preview',\n },\n ],\n attachableDocuments: [\n {\n attached: true,\n document: {\n id: 'existing-doc-1',\n title: 'Existing Document',\n },\n },\n ],\n }),\n ];\n\n setupMocks(referralWithMixedAttachments);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({\n referrals: referralWithMixedAttachments,\n person: { id: 'person1' },\n draft: false,\n });\n });\n\n expect(coreApi.setRelationship).toHaveBeenCalledWith('case', 'case1', {\n relationshipModel: 'file_upload',\n value: ['existing-doc-1'],\n });\n expect(coreApi.uploadFile).toHaveBeenCalledTimes(1);\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case1', newFile);\n });\n\n it('should update an existing draft referral when replacing the selected program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated draft referral',\n case: { id: CASE_ID },\n programs: [\n {\n id: 'new-program',\n provider: { id: 'new-provider', licensed: true },\n },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n await submitDraftUpdate();\n\n // No authorization is involved, so the frontend still owns the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n state: 'sent',\n receiving_program: 'new-program',\n receiving_provider: 'new-provider',\n }),\n );\n expect(mockCreateServiceAuthorization).not.toHaveBeenCalled();\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('referral', expect.anything());\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('should update authorization and recipient when sending a funded draft referral', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'new-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n requester: 'employee1',\n insurance: 'insurance-1',\n person: 'person1',\n requested_unit_amount: 12,\n clinical_modifications: ['icd10-1'],\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_provider: 'new-provider',\n }),\n );\n // Core moves the referral out of draft when the authorization is requested, so the referral\n // update must not also write the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The recipient change is only accepted while the referral is still in draft.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockUpdateServiceAuthorization),\n );\n });\n\n it('should not resend draft state when saving an existing draft authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral description',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.not.objectContaining({ state: 'draft' }),\n );\n });\n\n it('should send cost-based draft authorization amounts as integer cents', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated cost-based funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 150.36,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'cost_based_reimbursement',\n },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({ requested_cents: 15036 }),\n );\n });\n\n it('should not change the service for a draft referral with an existing authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 1100,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'new-funded-program',\n provider: { id: 'new-funded-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateCase, mockUpdateReferral, mockUpdateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldCase: {\n ...createDefaultOldCase(draftReferral),\n service_type: { id: 'old-service' },\n },\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n const response = await submitDraftUpdate({ draft: true });\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateCase).not.toHaveBeenCalled();\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create authorization when a draft referral changes to a funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateServiceAuthorization, mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n expect(mockCreateServiceAuthorization).toHaveBeenCalledWith(\n expect.objectContaining({\n case: CASE_ID,\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n insurance: 'insurance-1',\n person: 'person1',\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_program: 'funded-program',\n receiving_provider: 'funded-provider',\n }),\n );\n // Core owns the transition once the authorization is requested.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The new recipient must be persisted while the referral is still updatable.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n });\n\n it('should not remove authorization when a draft referral changes to a non-funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated non-funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n programs: [\n {\n id: 'non-funded-program',\n provider: { id: 'non-funded-provider', licensed: true },\n },\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create added referrals with an explicit authorization state after requesting the authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with an added program',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 4,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({ id: 'program1', provider: { id: 'provider1', licensed: true } }),\n { id: 'program2', provider: { id: 'provider2', licensed: true } },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n createdReferral: { id: 'created-referral-1', state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n // Records created after the authorization keep their explicit state: core accepts creating a\n // referral directly in pending_authorization.\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'pending_authorization',\n receiving_program: 'program2',\n receiving_provider: 'provider2',\n }),\n );\n // The state omission applies only to the existing referral.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n expect(firstCallOrder(mockCreateServiceAuthorization)).toBeLessThan(\n firstCallOrder(mockCreateReferral),\n );\n });\n\n it('should not force a state on the existing referral for an auto-approving funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Auto approving funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 9,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n auto_authorizes: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n }),\n ],\n });\n\n const { mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n // Core sends auto-approved authorizations straight to 'sent'; hardcoding\n // pending_authorization here would conflict with that.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n });\n\n it('should leave the referral recoverable when the authorization request fails', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with a failing authorization',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n mockCreateServiceAuthorization.mockRejectedValue(new Error('Authorization request failed'));\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].sent).toBe(false);\n expect(response.shippingDetail[0].error).toContain('Authorization request failed');\n // The recipient change landed while the referral was still in draft and no state was written,\n // so the referral stays editable and the operation can be retried.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('creates the referral when a document upload fails', async () => {\n const pendingFile = { name: 'unavailable.pdf', type: 'application/pdf' };\n const referralWithPendingAttachment = [\n createBaseReferral({\n description: 'Referral with failed attachment',\n pendingAttachments: [{ tempId: 'temp-file-1', file: pendingFile }],\n }),\n ];\n setupMocks(referralWithPendingAttachment);\n setupCreateRecordMocks();\n coreApi.uploadFile.mockRejectedValue(new Error('Upload failed'));\n\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n await act(async () => {\n response = await result.current({\n referrals: referralWithPendingAttachment,\n person: { id: 'person1' },\n });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'failed',\n attachmentErrors: [\n { operation: 'upload', name: 'unavailable.pdf', message: 'Upload failed' },\n ],\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useAtomicOperations","useCreateRecord","useUpdateRecord","coreApi","FEATURE_FLAGS","jest","mock","fn","setData","data","type","deleteRecord","deleteFile","findRecord","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","notify","error","referrals","persistedAttachments","pendingAttachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","mockDispatch","DRAFT_REFERRAL_ID","CASE_ID","NETWORK_ID","SENDING_PROVIDER_ID","SERVICE_AUTHORIZATION_ID","FUNDED_PROGRAM_ID","FEE_SCHEDULE_ID","createBaseReferral","overrides","arguments","length","setupMocks","mockReturnValue","dispatch","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","updateRecord","buildRecordResponse","queuedPersistedAttachment","filename","content_type","createDraftReferralWithRemovableAttachment","removablePersistedAttachments","service_authorization","fee_schedule_program","authorization_required","createExistingDraftReferral","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","createFundedProgram","fee_schedule","payment_type","submitDraftUpdate","draft","result","response","current","firstCallOrder","mockFn","expect","toHaveBeenCalled","invocationCallOrder","mockRecordHooks","hook","handlers","methodName","mockImplementation","defaultTo","value","fallback","createRecordMock","setupDraftContext","draftReferral","createDefaultOldCase","service_type","createDefaultOldReferrals","setupDraftCoreApiMocks","_ref","oldCase","oldReferrals","insurance","queryResponses","referral","model","Promise","resolve","status","setupDraftUpdateMocks","_ref2","updatedCase","updatedReferral","createdReferral","createdServiceAuthorization","updatedServiceAuthorization","resolvedOldCase","resolvedOldReferrals","mockCreateReferral","mockCreateServiceAuthorization","mockUpdateCase","mockUpdateReferral","mockUpdateServiceAuthorization","beforeEach","clearAllMocks","Object","keys","forEach","key","atomicOperations","it","pays11587AtomicReferralCreation","toEqual","cases","referralIndex","shippingDetail","index","sent","caseId","attachmentStatus","attachmentErrors","rawAtomicErrors","referralsToConsent","programNames","serviceName","toHaveBeenCalledTimes","submittedOperations","calls","toHaveLength","caseOp","referralOp","toMatchObject","op","lid","objectContaining","referralWithExistingDocument","attachableDocuments","attached","document","title","not","relationshipOp","relationship","relationshipModel","pendingFile","name","referralWithAttachment","tempId","file","mockRejectedValue","errors","referralWithAuth","authOp","referralWithoutProgramId","groupedReferral","referralOps","idx","map","r","rawErrors","source","pointer","twoReferrals","mockRejectedValueOnce","mockResolvedValueOnce","toHaveBeenCalledWith","Error","createReferrals","toHaveProperty","mockCreateCase","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","person_conditions","preview","newFile","referralWithMixedAttachments","path","anything","icd10_code","requester","requested_unit_amount","clinical_modifications","toBeLessThan","requested_cents","toContain","auto_authorizes","toBe","referralWithPendingAttachment","operation","message"],"sources":["../../../src/hooks/__tests__/useCreateReferrals.test.js"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-hooks';\nimport useCreateReferrals from '../useCreateReferrals';\nimport { useAppCreateReferralContext } from '../../context/AppCreateReferralProvider';\nimport { useAtomicOperations, useCreateRecord, useUpdateRecord } from '../../api/ApiHooks';\nimport { coreApi, FEATURE_FLAGS } from '../../api/config';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n setData: (data) => ({ type: 'set', data }),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useAtomicOperations: jest.fn(),\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n deleteRecord: jest.fn(),\n deleteFile: jest.fn(),\n findRecord: jest.fn(),\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n FEATURE_FLAGS: {},\n CALLBACKS: {\n notify: {\n error: jest.fn(),\n },\n },\n}));\n\nconst referrals = [\n {\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n description: 'Test Referral',\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n },\n];\n\ndescribe('useCreateReferrals', () => {\n const mockDispatch = jest.fn();\n const DRAFT_REFERRAL_ID = 'draft-referral-1';\n const CASE_ID = 'case-1';\n const NETWORK_ID = 'network1';\n const SENDING_PROVIDER_ID = 'provider2';\n const SERVICE_AUTHORIZATION_ID = 'service-auth-1';\n const FUNDED_PROGRAM_ID = 'fee-schedule-program-1';\n const FEE_SCHEDULE_ID = 'fee-schedule-1';\n\n const createBaseReferral = (overrides = {}) => ({\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n description: 'Test Referral',\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n ...overrides,\n });\n\n const setupMocks = (referrals) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n };\n\n const buildRecordResponse = (data) => ({\n data: {\n data,\n },\n });\n\n const queuedPersistedAttachment = {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n };\n\n const createDraftReferralWithRemovableAttachment = (overrides = {}) =>\n createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with removed file',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n service_authorization: {\n id: 'service-auth-1',\n },\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n ...overrides,\n });\n\n const createExistingDraftReferral = (overrides = {}) => ({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n is_grouped: false,\n receiving_program: { id: 'old-program' },\n receiving_provider: { id: 'old-provider' },\n receiving_network: { id: NETWORK_ID },\n sending_provider: { id: SENDING_PROVIDER_ID },\n sending_network: { id: NETWORK_ID },\n ...overrides,\n });\n\n const createFundedProgram = (overrides = {}) => ({\n id: 'funded-program',\n provider: { id: 'funded-provider', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n ...overrides,\n });\n\n const submitDraftUpdate = async ({ draft = false } = {}) => {\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n\n await act(async () => {\n response = await result.current({ draft });\n });\n\n return response;\n };\n\n // Jest records a global invocation counter per call, which lets us assert the ordering of\n // requests issued through separate mocks without relying on timing.\n const firstCallOrder = (mockFn) => {\n expect(mockFn).toHaveBeenCalled();\n return mockFn.mock.invocationCallOrder[0];\n };\n\n const mockRecordHooks = (hook, handlers, methodName) => {\n hook.mockImplementation((type) => ({\n [methodName]: handlers[type] || jest.fn().mockResolvedValue(buildRecordResponse({})),\n }));\n };\n\n const defaultTo = (value, fallback) => (value === undefined ? fallback : value);\n\n const createRecordMock = (data) =>\n jest.fn().mockResolvedValue(buildRecordResponse(defaultTo(data, {})));\n\n const setupDraftContext = (draftReferral) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: [draftReferral],\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n };\n\n const createDefaultOldCase = (draftReferral) => ({\n id: draftReferral.case.id,\n description: 'Original draft referral',\n service_type: { id: draftReferral.service.id },\n provider: { id: draftReferral.sendingProvider.id },\n network: { id: draftReferral.network.id },\n service_authorization: draftReferral.case.service_authorization,\n });\n\n const createDefaultOldReferrals = (draftReferral) => [\n createExistingDraftReferral({\n id: draftReferral.id,\n receiving_program: { id: draftReferral.programs[0].id },\n receiving_provider: { id: draftReferral.programs[0].provider.id },\n receiving_network: { id: draftReferral.network.id },\n sending_provider: { id: draftReferral.sendingProvider.id },\n sending_network: { id: draftReferral.network.id },\n }),\n ];\n\n const setupDraftCoreApiMocks = ({ oldCase, oldReferrals, insurance }) => {\n const queryResponses = {\n referral: oldReferrals,\n insurance: [defaultTo(insurance, { id: 'insurance-1' })],\n };\n\n coreApi.findRecord.mockResolvedValue(buildRecordResponse(oldCase));\n coreApi.query.mockImplementation((model) =>\n Promise.resolve(buildRecordResponse(defaultTo(queryResponses[model], []))),\n );\n coreApi.deleteRecord.mockResolvedValue({ status: 204 });\n };\n\n const setupDraftUpdateMocks = ({\n draftReferral,\n oldCase,\n oldReferrals,\n updatedCase,\n updatedReferral,\n createdReferral,\n createdServiceAuthorization,\n updatedServiceAuthorization,\n insurance,\n }) => {\n const resolvedOldCase = defaultTo(oldCase, createDefaultOldCase(draftReferral));\n const resolvedOldReferrals = defaultTo(oldReferrals, createDefaultOldReferrals(draftReferral));\n\n setupDraftContext(draftReferral);\n\n const mockCreateReferral = createRecordMock(createdReferral);\n const mockCreateServiceAuthorization = createRecordMock(createdServiceAuthorization);\n mockRecordHooks(\n useCreateRecord,\n {\n referral: mockCreateReferral,\n service_authorization: mockCreateServiceAuthorization,\n },\n 'createRecord',\n );\n\n const mockUpdateCase = createRecordMock(updatedCase);\n const mockUpdateReferral = createRecordMock(updatedReferral);\n const mockUpdateServiceAuthorization = createRecordMock(updatedServiceAuthorization);\n mockRecordHooks(\n useUpdateRecord,\n {\n case: mockUpdateCase,\n referral: mockUpdateReferral,\n service_authorization: mockUpdateServiceAuthorization,\n },\n 'updateRecord',\n );\n\n setupDraftCoreApiMocks({\n oldCase: resolvedOldCase,\n oldReferrals: resolvedOldReferrals,\n insurance,\n });\n\n return {\n mockCreateReferral,\n mockCreateServiceAuthorization,\n mockUpdateCase,\n mockUpdateReferral,\n mockUpdateServiceAuthorization,\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n Object.keys(FEATURE_FLAGS).forEach((key) => delete FEATURE_FLAGS[key]);\n useAtomicOperations.mockReturnValue({\n atomicOperations: jest.fn().mockResolvedValue({ data: { 'atomic:results': [] } }),\n });\n coreApi.deleteFile.mockResolvedValue({});\n coreApi.deleteRecord.mockResolvedValue({});\n coreApi.findRecord.mockResolvedValue({ data: { data: { id: 'case-1' } } });\n coreApi.setRelationship.mockResolvedValue({});\n coreApi.uploadFile.mockResolvedValue({});\n coreApi.query.mockResolvedValue({ data: { data: [] } });\n });\n\n it('creates a new referral group in one atomic operation when enabled', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'referral1', state: 'sent' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referrals);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const response = await result.current({ draft: false });\n\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [{\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n }],\n referralsToConsent: [{\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n }],\n });\n });\n\n expect(atomicOperations).toHaveBeenCalledTimes(1);\n const submittedOperations = atomicOperations.mock.calls[0][0];\n expect(submittedOperations).toHaveLength(2);\n\n const [caseOp, referralOp] = submittedOperations;\n expect(caseOp).toMatchObject({ op: 'add', model: 'case', lid: 'case-0' });\n expect(referralOp).toMatchObject({\n op: 'add',\n model: 'referral',\n data: expect.objectContaining({\n case: { lid: 'case-0' },\n receiving_program: 'program1',\n }),\n });\n });\n\n it('includes existing documents in the atomic request without calling setRelationship', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const referralWithExistingDocument = [createBaseReferral({\n attachableDocuments: [\n {\n attached: true,\n document: { id: 'existing-doc-1', title: 'Existing Document' },\n },\n ],\n })];\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'referral1', state: 'sent' } },\n {},\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithExistingDocument);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: false });\n });\n\n const submittedOperations = atomicOperations.mock.calls[0][0];\n expect(submittedOperations).toHaveLength(3);\n expect(coreApi.setRelationship).not.toHaveBeenCalled();\n\n const [caseOp, referralOp, relationshipOp] = submittedOperations;\n expect(caseOp).toMatchObject({ op: 'add', model: 'case', lid: 'case-0' });\n expect(referralOp).toMatchObject({\n op: 'add',\n model: 'referral',\n data: expect.objectContaining({ case: { lid: 'case-0' } }),\n });\n expect(relationshipOp).toMatchObject({\n op: 'add',\n model: 'case',\n lid: 'case-0',\n relationship: 'file_uploads',\n relationshipModel: 'file_upload',\n value: ['existing-doc-1'],\n });\n });\n\n it('does not upload attachments when the atomic referral group fails', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const pendingFile = { name: 'pending.pdf', type: 'application/pdf' };\n const referralWithAttachment = [createBaseReferral({\n pendingAttachments: [{ tempId: 'file-1', file: pendingFile }],\n })];\n const atomicOperations = jest.fn().mockRejectedValue({\n response: {\n data: {\n errors: [{ title: 'Referral operation failed' }],\n },\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithAttachment);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(response).toMatchObject({\n cases: [],\n referrals: [],\n shippingDetail: [{\n sent: false,\n error: 'Error creating the Referral: Referral operation failed',\n caseId: null,\n attachmentStatus: 'not_requested',\n }],\n });\n expect(coreApi.uploadFile).not.toHaveBeenCalled();\n\n const submittedOperations = atomicOperations.mock.calls[0][0];\n expect(submittedOperations).toHaveLength(2);\n const [caseOp, referralOp] = submittedOperations;\n expect(caseOp).toMatchObject({ op: 'add', model: 'case', lid: 'case-0' });\n expect(referralOp).toMatchObject({\n op: 'add',\n model: 'referral',\n data: expect.objectContaining({ case: { lid: 'case-0' } }),\n });\n });\n\n it('includes service_authorization in atomic operations when authorization is required', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const referralWithAuth = [createBaseReferral({\n paymentAuthForm: {\n amount_requested: 500,\n service_start: 1724500000,\n service_end: 1727100000,\n },\n programs: [{\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n id: 'fsp-1',\n authorization_required: true,\n payment_type: 'fee_for_service',\n fee_schedule: { id: 'fee-schedule-1' },\n },\n }],\n })];\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'auth1', state: 'requested' } },\n { data: { id: 'referral1', state: 'pending_authorization' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithAuth);\n coreApi.query.mockResolvedValue({\n data: { data: [{ id: 'insurance-1' }] },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(response.referrals[0]).toMatchObject({\n id: 'referral1',\n state: 'pending_authorization',\n });\n\n expect(atomicOperations).toHaveBeenCalledTimes(1);\n const submittedOperations = atomicOperations.mock.calls[0][0];\n expect(submittedOperations).toHaveLength(3);\n\n const [caseOp, authOp, referralOp] = submittedOperations;\n expect(caseOp).toMatchObject({ op: 'add', model: 'case' });\n expect(authOp).toMatchObject({\n op: 'add',\n model: 'service_authorization',\n data: expect.objectContaining({\n case: { lid: 'case-0' },\n fee_schedule_program: 'fsp-1',\n insurance: 'insurance-1',\n state: 'requested',\n }),\n });\n expect(referralOp).toMatchObject({\n op: 'add',\n model: 'referral',\n data: expect.objectContaining({\n case: { lid: 'case-0' },\n state: 'pending_authorization',\n }),\n });\n });\n\n it('does not submit atomic operations when referral values are missing', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const atomicOperations = jest.fn();\n const referralWithoutProgramId = [createBaseReferral({\n programs: [{ provider: { id: 'provider1', licensed: true } }],\n })];\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithoutProgramId);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(atomicOperations).not.toHaveBeenCalled();\n expect(response.shippingDetail[0]).toMatchObject({\n sent: false,\n error: 'The following fields for the referral are required: receiving_program',\n caseId: null,\n });\n });\n\n it('creates multiple referrals in one atomic operation for grouped referrals', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const groupedReferral = [createBaseReferral({\n programs: [\n { id: 'program1', provider: { id: 'provider1', licensed: true } },\n { id: 'program2', provider: { id: 'provider2', licensed: true } },\n { id: 'program3', provider: { id: 'provider3', licensed: true } },\n ],\n })];\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'referral1', state: 'sent' } },\n { data: { id: 'referral2', state: 'sent' } },\n { data: { id: 'referral3', state: 'sent' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(groupedReferral);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(atomicOperations).toHaveBeenCalledTimes(1);\n const submittedOperations = atomicOperations.mock.calls[0][0];\n expect(submittedOperations).toHaveLength(4);\n\n const [caseOp, ...referralOps] = submittedOperations;\n expect(caseOp).toMatchObject({ op: 'add', model: 'case' });\n referralOps.forEach((op, idx) => {\n expect(op).toMatchObject({\n op: 'add',\n model: 'referral',\n data: expect.objectContaining({\n case: { lid: 'case-0' },\n is_grouped: true,\n receiving_program: `program${idx + 1}`,\n }),\n });\n });\n\n expect(response.referrals).toHaveLength(3);\n expect(response.referrals.map((r) => r.id)).toEqual(['referral1', 'referral2', 'referral3']);\n expect(response.cases).toHaveLength(1);\n });\n\n it('stashes the raw atomic errors on the shipping detail without changing the user-facing message', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const rawErrors = [{ title: 'Referral operation failed', source: { pointer: '/atomic:operations/1' } }];\n const atomicOperations = jest.fn().mockRejectedValue({\n response: { data: { errors: rawErrors } },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referrals);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n error: 'Error creating the Referral: Referral operation failed',\n rawAtomicErrors: rawErrors,\n });\n });\n\n it('does not corrupt later groups when an earlier atomic group fails mid-batch', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const twoReferrals = [\n createBaseReferral({ description: 'Failing referral' }),\n createBaseReferral({ description: 'Succeeding referral' }),\n ];\n const atomicOperations = jest.fn()\n .mockRejectedValueOnce({\n response: { data: { errors: [{ title: 'Referral operation failed' }] } },\n })\n .mockResolvedValueOnce({\n data: {\n 'atomic:results': [\n { data: { id: 'case2', description: 'Test Case' } },\n { data: { id: 'referral2', state: 'sent' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(twoReferrals);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(atomicOperations).toHaveBeenCalledTimes(2);\n expect(response.shippingDetail[0]).toMatchObject({\n sent: false,\n error: 'Error creating the Referral: Referral operation failed',\n caseId: null,\n });\n expect(response.shippingDetail[1]).toMatchObject({\n sent: true,\n caseId: 'case2',\n error: null,\n });\n expect(response.cases).toEqual([{ id: 'case2', description: 'Test Case' }]);\n expect(response.referrals).toEqual([{ id: 'referral2', state: 'sent', referralIndex: 1 }]);\n });\n\n it('uploads only the pending attachments on the atomic path', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const pendingFile = { name: 'pending.pdf', type: 'application/pdf' };\n const referralWithAttachment = [createBaseReferral({\n pendingAttachments: [{ tempId: 'file-1', file: pendingFile }],\n })];\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'referral1', state: 'sent' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithAttachment);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: false });\n });\n\n expect(coreApi.uploadFile).toHaveBeenCalledTimes(1);\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case1', pendingFile);\n });\n\n it('reports the upload failure separately while the referral stays successful', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const pendingFile = { name: 'pending.pdf', type: 'application/pdf' };\n const referralWithAttachment = [createBaseReferral({\n pendingAttachments: [{ tempId: 'file-1', file: pendingFile }],\n })];\n const atomicOperations = jest.fn().mockResolvedValue({\n data: {\n 'atomic:results': [\n { data: { id: 'case1', description: 'Test Case' } },\n { data: { id: 'referral1', state: 'sent' } },\n ],\n },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referralWithAttachment);\n coreApi.uploadFile.mockRejectedValue(new Error('Upload failed'));\n\n const { result } = renderHook(() => useCreateReferrals());\n\n let response;\n await act(async () => {\n response = await result.current({ draft: false });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n sent: true,\n caseId: 'case1',\n attachmentStatus: 'failed',\n });\n expect(response.referrals).toEqual([{ id: 'referral1', state: 'sent', referralIndex: 0 }]);\n });\n\n it('does not fall back to legacy create/update calls when an atomic group fails', async () => {\n FEATURE_FLAGS.pays11587AtomicReferralCreation = true;\n const atomicOperations = jest.fn().mockRejectedValue({\n response: { data: { errors: [{ title: 'Referral operation failed' }] } },\n });\n useAtomicOperations.mockReturnValue({ atomicOperations });\n setupMocks(referrals);\n const createRecord = jest.fn();\n useCreateRecord.mockReturnValue({ createRecord });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: false });\n });\n\n expect(createRecord).not.toHaveBeenCalled();\n });\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toHaveProperty('cases');\n expect(response).toHaveProperty('referrals');\n expect(response).toHaveProperty('shippingDetail');\n });\n });\n\n it('should create all referrals successfully', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n const setupCreateRecordMocks = () => {\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n };\n\n it('should create SOME referrals', async () => {\n const someReferrals = [\n createBaseReferral({ description: 'Test Referral' }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(someReferrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: someReferrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n it('should FAIL all referrals', async () => {\n const referralsFailed = [\n createBaseReferral({ description: null }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(referralsFailed);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: referralsFailed,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [],\n referrals: [],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should not create referrals to consent when nh_consent is false', async () => {\n const referrals = [\n createBaseReferral({\n description: 'Test Referral',\n network: { id: 'network1', features: { nh_consent: false } },\n }),\n ];\n\n setupMocks(referrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n rawAtomicErrors: null,\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should include associated needs when creating draft referrals', async () => {\n const referralsWithNeeds = [\n createBaseReferral({\n description: 'Draft referral with needs',\n client_need: ['need-1', 'need-2'],\n }),\n ];\n\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: referralsWithNeeds,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Draft Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'draft' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }) };\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(mockCreateCase).toHaveBeenCalledWith(\n expect.objectContaining({\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'draft',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n });\n\n it('deletes queued persisted attachments and uploads new ones when saving an existing draft', async () => {\n const pendingFile = { name: 'new.pdf', type: 'application/pdf' };\n const draftReferral = createDraftReferralWithRemovableAttachment({\n case: {\n id: 'case-1',\n service_authorization: null,\n },\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: pendingFile,\n preview: 'blob:new-preview',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).toHaveBeenCalledWith('case', 'case-1', 'persisted-file-1');\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case-1', pendingFile);\n });\n\n it('does not delete queued persisted attachments when saving non-draft referrals', async () => {\n const referral = createBaseReferral({\n id: 'referral-1',\n state: 'open',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n });\n\n setupMocks([referral]);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ referrals: [referral], person: { id: 'person1' }, draft: false });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('does not delete draft attachments when no removable persisted attachment ids are present', async () => {\n const draftReferral = createDraftReferralWithRemovableAttachment({\n removablePersistedAttachments: [\n {\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('uploads only new attachments and skips persisted draft documents', async () => {\n const newFile = { name: 'new.pdf', type: 'application/pdf' };\n const referralWithMixedAttachments = [\n createBaseReferral({\n description: 'Referral with mixed attachments',\n persistedAttachments: [\n {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n path: '/files/existing.pdf',\n },\n ],\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: newFile,\n preview: 'blob:new-preview',\n },\n ],\n attachableDocuments: [\n {\n attached: true,\n document: {\n id: 'existing-doc-1',\n title: 'Existing Document',\n },\n },\n ],\n }),\n ];\n\n setupMocks(referralWithMixedAttachments);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({\n referrals: referralWithMixedAttachments,\n person: { id: 'person1' },\n draft: false,\n });\n });\n\n expect(coreApi.setRelationship).toHaveBeenCalledWith('case', 'case1', {\n relationshipModel: 'file_upload',\n value: ['existing-doc-1'],\n });\n expect(coreApi.uploadFile).toHaveBeenCalledTimes(1);\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case1', newFile);\n });\n\n it('should update an existing draft referral when replacing the selected program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated draft referral',\n case: { id: CASE_ID },\n programs: [\n {\n id: 'new-program',\n provider: { id: 'new-provider', licensed: true },\n },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n await submitDraftUpdate();\n\n // No authorization is involved, so the frontend still owns the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n state: 'sent',\n receiving_program: 'new-program',\n receiving_provider: 'new-provider',\n }),\n );\n expect(mockCreateServiceAuthorization).not.toHaveBeenCalled();\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('referral', expect.anything());\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('should update authorization and recipient when sending a funded draft referral', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'new-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n requester: 'employee1',\n insurance: 'insurance-1',\n person: 'person1',\n requested_unit_amount: 12,\n clinical_modifications: ['icd10-1'],\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_provider: 'new-provider',\n }),\n );\n // Core moves the referral out of draft when the authorization is requested, so the referral\n // update must not also write the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The recipient change is only accepted while the referral is still in draft.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockUpdateServiceAuthorization),\n );\n });\n\n it('should not resend draft state when saving an existing draft authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral description',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.not.objectContaining({ state: 'draft' }),\n );\n });\n\n it('should send cost-based draft authorization amounts as integer cents', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated cost-based funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 150.36,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'cost_based_reimbursement',\n },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({ requested_cents: 15036 }),\n );\n });\n\n it('should not change the service for a draft referral with an existing authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 1100,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'new-funded-program',\n provider: { id: 'new-funded-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateCase, mockUpdateReferral, mockUpdateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldCase: {\n ...createDefaultOldCase(draftReferral),\n service_type: { id: 'old-service' },\n },\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n const response = await submitDraftUpdate({ draft: true });\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateCase).not.toHaveBeenCalled();\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create authorization when a draft referral changes to a funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateServiceAuthorization, mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n expect(mockCreateServiceAuthorization).toHaveBeenCalledWith(\n expect.objectContaining({\n case: CASE_ID,\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n insurance: 'insurance-1',\n person: 'person1',\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_program: 'funded-program',\n receiving_provider: 'funded-provider',\n }),\n );\n // Core owns the transition once the authorization is requested.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The new recipient must be persisted while the referral is still updatable.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n });\n\n it('should not remove authorization when a draft referral changes to a non-funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated non-funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n programs: [\n {\n id: 'non-funded-program',\n provider: { id: 'non-funded-provider', licensed: true },\n },\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create added referrals with an explicit authorization state after requesting the authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with an added program',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 4,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({ id: 'program1', provider: { id: 'provider1', licensed: true } }),\n { id: 'program2', provider: { id: 'provider2', licensed: true } },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n createdReferral: { id: 'created-referral-1', state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n // Records created after the authorization keep their explicit state: core accepts creating a\n // referral directly in pending_authorization.\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'pending_authorization',\n receiving_program: 'program2',\n receiving_provider: 'provider2',\n }),\n );\n // The state omission applies only to the existing referral.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n expect(firstCallOrder(mockCreateServiceAuthorization)).toBeLessThan(\n firstCallOrder(mockCreateReferral),\n );\n });\n\n it('should not force a state on the existing referral for an auto-approving funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Auto approving funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 9,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n auto_authorizes: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n }),\n ],\n });\n\n const { mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n // Core sends auto-approved authorizations straight to 'sent'; hardcoding\n // pending_authorization here would conflict with that.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n });\n\n it('should leave the referral recoverable when the authorization request fails', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with a failing authorization',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n mockCreateServiceAuthorization.mockRejectedValue(new Error('Authorization request failed'));\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].sent).toBe(false);\n expect(response.shippingDetail[0].error).toContain('Authorization request failed');\n // The recipient change landed while the referral was still in draft and no state was written,\n // so the referral stays editable and the operation can be retried.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('creates the referral when a document upload fails', async () => {\n const pendingFile = { name: 'unavailable.pdf', type: 'application/pdf' };\n const referralWithPendingAttachment = [\n createBaseReferral({\n description: 'Referral with failed attachment',\n pendingAttachments: [{ tempId: 'temp-file-1', file: pendingFile }],\n }),\n ];\n setupMocks(referralWithPendingAttachment);\n setupCreateRecordMocks();\n coreApi.uploadFile.mockRejectedValue(new Error('Upload failed'));\n\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n await act(async () => {\n response = await result.current({\n referrals: referralWithPendingAttachment,\n person: { id: 'person1' },\n });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'failed',\n attachmentErrors: [\n { operation: 'upload', name: 'unavailable.pdf', message: 'Upload failed' },\n ],\n });\n });\n});\n"],"mappings":"AAAA,SAASA,UAAU,EAAEC,GAAG,QAAQ,8BAA8B;AAC9D,OAAOC,kBAAkB,MAAM,uBAAuB;AACtD,SAASC,2BAA2B,QAAQ,yCAAyC;AACrF,SAASC,mBAAmB,EAAEC,eAAe,EAAEC,eAAe,QAAQ,oBAAoB;AAC1F,SAASC,OAAO,EAAEC,aAAa,QAAQ,kBAAkB;AAEzDC,IAAI,CAACC,IAAI,CAAC,yCAAyC,EAAE,OAAO;EAC1DP,2BAA2B,EAAEM,IAAI,CAACE,EAAE,CAAC,CAAC;EACtCC,OAAO,EAAGC,IAAI,KAAM;IAAEC,IAAI,EAAE,KAAK;IAAED;EAAK,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEHJ,IAAI,CAACC,IAAI,CAAC,oBAAoB,EAAE,OAAO;EACrCN,mBAAmB,EAAEK,IAAI,CAACE,EAAE,CAAC,CAAC;EAC9BN,eAAe,EAAEI,IAAI,CAACE,EAAE,CAAC,CAAC;EAC1BL,eAAe,EAAEG,IAAI,CAACE,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEHF,IAAI,CAACC,IAAI,CAAC,kBAAkB,EAAE,OAAO;EACnCH,OAAO,EAAE;IACPQ,YAAY,EAAEN,IAAI,CAACE,EAAE,CAAC,CAAC;IACvBK,UAAU,EAAEP,IAAI,CAACE,EAAE,CAAC,CAAC;IACrBM,UAAU,EAAER,IAAI,CAACE,EAAE,CAAC,CAAC;IACrBO,oBAAoB,EAAET,IAAI,CAACE,EAAE,CAAC,CAAC;IAC/BQ,eAAe,EAAEV,IAAI,CAACE,EAAE,CAAC,CAAC;IAC1BS,KAAK,EAAEX,IAAI,CAACE,EAAE,CAAC,CAAC;IAChBU,UAAU,EAAEZ,IAAI,CAACE,EAAE,CAAC;EACtB,CAAC;EACDH,aAAa,EAAE,CAAC,CAAC;EACjBc,SAAS,EAAE;IACTC,MAAM,EAAE;MACNC,KAAK,EAAEf,IAAI,CAACE,EAAE,CAAC;IACjB;EACF;AACF,CAAC,CAAC,CAAC;AAEH,MAAMc,SAAS,GAAG,CAChB;EACEC,oBAAoB,EAAE,EAAE;EACxBC,kBAAkB,EAAE,EAAE;EACtBC,IAAI,EAAEC,SAAS;EACfC,EAAE,EAAED,SAAS;EACbE,KAAK,EAAEF,SAAS;EAChBG,eAAe,EAAE;IAAEC,gBAAgB,EAAE,IAAI;IAAEC,aAAa,EAAE,IAAI;IAAEC,WAAW,EAAE;EAAK,CAAC;EACnFC,WAAW,EAAE,eAAe;EAC5BC,QAAQ,EAAE,CAAC;IAAEP,EAAE,EAAE,UAAU;IAAEQ,QAAQ,EAAE;MAAER,EAAE,EAAE,WAAW;MAAES,QAAQ,EAAE;IAAK;EAAE,CAAC,CAAC;EAC7EC,eAAe,EAAE;IAAEV,EAAE,EAAE;EAAY,CAAC;EACpCW,OAAO,EAAE;IAAEX,EAAE,EAAE,UAAU;IAAEY,QAAQ,EAAE;MAAEC,UAAU,EAAE;IAAK;EAAE,CAAC;EAC3DC,OAAO,EAAE;IAAEd,EAAE,EAAE;EAAW,CAAC;EAC3Be,aAAa,EAAE;IAAEf,EAAE,EAAE;EAAoB;AAC3C,CAAC,CACF;AAEDgB,QAAQ,CAAC,oBAAoB,EAAE,MAAM;EACnC,MAAMC,YAAY,GAAGtC,IAAI,CAACE,EAAE,CAAC,CAAC;EAC9B,MAAMqC,iBAAiB,GAAG,kBAAkB;EAC5C,MAAMC,OAAO,GAAG,QAAQ;EACxB,MAAMC,UAAU,GAAG,UAAU;EAC7B,MAAMC,mBAAmB,GAAG,WAAW;EACvC,MAAMC,wBAAwB,GAAG,gBAAgB;EACjD,MAAMC,iBAAiB,GAAG,wBAAwB;EAClD,MAAMC,eAAe,GAAG,gBAAgB;EAExC,MAAMC,kBAAkB,GAAG,SAAAA,CAAA;IAAA,IAACC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAC9C/B,oBAAoB,EAAE,EAAE;MACxBC,kBAAkB,EAAE,EAAE;MACtBC,IAAI,EAAEC,SAAS;MACfC,EAAE,EAAED,SAAS;MACbE,KAAK,EAAEF,SAAS;MAChBG,eAAe,EAAE;QAAEC,gBAAgB,EAAE,IAAI;QAAEC,aAAa,EAAE,IAAI;QAAEC,WAAW,EAAE;MAAK,CAAC;MACnFC,WAAW,EAAE,eAAe;MAC5BC,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EC,eAAe,EAAE;QAAEV,EAAE,EAAE;MAAY,CAAC;MACpCW,OAAO,EAAE;QAAEX,EAAE,EAAE,UAAU;QAAEY,QAAQ,EAAE;UAAEC,UAAU,EAAE;QAAK;MAAE,CAAC;MAC3DC,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW,CAAC;MAC3Be,aAAa,EAAE;QAAEf,EAAE,EAAE;MAAoB,CAAC;MAC1C,GAAG0B;IACL,CAAC;EAAA,CAAC;EAEF,MAAMG,UAAU,GAAIlC,SAAS,IAAK;IAChCtB,2BAA2B,CAACyD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF9D,eAAe,CAACuD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFP,eAAe,CAACsD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC;EAED,MAAM0D,mBAAmB,GAAI1D,IAAI,KAAM;IACrCA,IAAI,EAAE;MACJA;IACF;EACF,CAAC,CAAC;EAEF,MAAM2D,yBAAyB,GAAG;IAChC1C,EAAE,EAAE,kBAAkB;IACtB2C,QAAQ,EAAE,cAAc;IACxBC,YAAY,EAAE;EAChB,CAAC;EAED,MAAMC,0CAA0C,GAAG,SAAAA,CAAA;IAAA,IAACnB,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAChEF,kBAAkB,CAAC;MACjBzB,EAAE,EAAE,kBAAkB;MACtBC,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,kCAAkC;MAC/CwC,6BAA6B,EAAE,CAACJ,yBAAyB,CAAC;MAC1D5C,IAAI,EAAE;QACJE,EAAE,EAAE,QAAQ;QACZ+C,qBAAqB,EAAE;UACrB/C,EAAE,EAAE;QACN;MACF,CAAC;MACDO,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBC,sBAAsB,EAAE;QAC1B;MACF,CAAC,CACF;MACD,GAAGvB;IACL,CAAC,CAAC;EAAA;EAEJ,MAAMwB,2BAA2B,GAAG,SAAAA,CAAA;IAAA,IAACxB,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MACvD3B,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdkD,UAAU,EAAE,KAAK;MACjBC,iBAAiB,EAAE;QAAEpD,EAAE,EAAE;MAAc,CAAC;MACxCqD,kBAAkB,EAAE;QAAErD,EAAE,EAAE;MAAe,CAAC;MAC1CsD,iBAAiB,EAAE;QAAEtD,EAAE,EAAEoB;MAAW,CAAC;MACrCmC,gBAAgB,EAAE;QAAEvD,EAAE,EAAEqB;MAAoB,CAAC;MAC7CmC,eAAe,EAAE;QAAExD,EAAE,EAAEoB;MAAW,CAAC;MACnC,GAAGM;IACL,CAAC;EAAA,CAAC;EAEF,MAAM+B,mBAAmB,GAAG,SAAAA,CAAA;IAAA,IAAC/B,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAC/C3B,EAAE,EAAE,gBAAgB;MACpBQ,QAAQ,EAAE;QAAER,EAAE,EAAE,iBAAiB;QAAES,QAAQ,EAAE;MAAK,CAAC;MACnDuC,oBAAoB,EAAE;QACpBhD,EAAE,EAAEuB,iBAAiB;QACrB0B,sBAAsB,EAAE,IAAI;QAC5BS,YAAY,EAAE;UAAE1D,EAAE,EAAEwB;QAAgB,CAAC;QACrCmC,YAAY,EAAE;MAChB,CAAC;MACD,GAAGjC;IACL,CAAC;EAAA,CAAC;EAEF,MAAMkC,iBAAiB,GAAG,eAAAA,CAAA,EAAkC;IAAA,IAA3B;MAAEC,KAAK,GAAG;IAAM,CAAC,GAAAlC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IACrD,MAAM;MAAEmC;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IACzD,IAAI2F,QAAQ;IAEZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH;MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,OAAOE,QAAQ;EACjB,CAAC;;EAED;EACA;EACA,MAAME,cAAc,GAAIC,MAAM,IAAK;IACjCC,MAAM,CAACD,MAAM,CAAC,CAACE,gBAAgB,CAAC,CAAC;IACjC,OAAOF,MAAM,CAACtF,IAAI,CAACyF,mBAAmB,CAAC,CAAC,CAAC;EAC3C,CAAC;EAED,MAAMC,eAAe,GAAGA,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,KAAK;IACtDF,IAAI,CAACG,kBAAkB,CAAE1F,IAAI,KAAM;MACjC,CAACyF,UAAU,GAAGD,QAAQ,CAACxF,IAAI,CAAC,IAAIL,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAACE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;EACL,CAAC;EAED,MAAMkC,SAAS,GAAGA,CAACC,KAAK,EAAEC,QAAQ,KAAMD,KAAK,KAAK7E,SAAS,GAAG8E,QAAQ,GAAGD,KAAM;EAE/E,MAAME,gBAAgB,GAAI/F,IAAI,IAC5BJ,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAACE,mBAAmB,CAACkC,SAAS,CAAC5F,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAEvE,MAAMgG,iBAAiB,GAAIC,aAAa,IAAK;IAC3C3G,2BAA2B,CAACyD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS,EAAE,CAACqF,aAAa,CAAC;QAC1B7C,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAM4C,oBAAoB,GAAID,aAAa,KAAM;IAC/ChF,EAAE,EAAEgF,aAAa,CAAClF,IAAI,CAACE,EAAE;IACzBM,WAAW,EAAE,yBAAyB;IACtC4E,YAAY,EAAE;MAAElF,EAAE,EAAEgF,aAAa,CAAClE,OAAO,CAACd;IAAG,CAAC;IAC9CQ,QAAQ,EAAE;MAAER,EAAE,EAAEgF,aAAa,CAACtE,eAAe,CAACV;IAAG,CAAC;IAClDW,OAAO,EAAE;MAAEX,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG,CAAC;IACzC+C,qBAAqB,EAAEiC,aAAa,CAAClF,IAAI,CAACiD;EAC5C,CAAC,CAAC;EAEF,MAAMoC,yBAAyB,GAAIH,aAAa,IAAK,CACnD9B,2BAA2B,CAAC;IAC1BlD,EAAE,EAAEgF,aAAa,CAAChF,EAAE;IACpBoD,iBAAiB,EAAE;MAAEpD,EAAE,EAAEgF,aAAa,CAACzE,QAAQ,CAAC,CAAC,CAAC,CAACP;IAAG,CAAC;IACvDqD,kBAAkB,EAAE;MAAErD,EAAE,EAAEgF,aAAa,CAACzE,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACR;IAAG,CAAC;IACjEsD,iBAAiB,EAAE;MAAEtD,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG,CAAC;IACnDuD,gBAAgB,EAAE;MAAEvD,EAAE,EAAEgF,aAAa,CAACtE,eAAe,CAACV;IAAG,CAAC;IAC1DwD,eAAe,EAAE;MAAExD,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG;EAClD,CAAC,CAAC,CACH;EAED,MAAMoF,sBAAsB,GAAGC,IAAA,IAA0C;IAAA,IAAzC;MAAEC,OAAO;MAAEC,YAAY;MAAEC;IAAU,CAAC,GAAAH,IAAA;IAClE,MAAMI,cAAc,GAAG;MACrBC,QAAQ,EAAEH,YAAY;MACtBC,SAAS,EAAE,CAACb,SAAS,CAACa,SAAS,EAAE;QAAExF,EAAE,EAAE;MAAc,CAAC,CAAC;IACzD,CAAC;IAEDvB,OAAO,CAACU,UAAU,CAACoD,iBAAiB,CAACE,mBAAmB,CAAC6C,OAAO,CAAC,CAAC;IAClE7G,OAAO,CAACa,KAAK,CAACoF,kBAAkB,CAAEiB,KAAK,IACrCC,OAAO,CAACC,OAAO,CAACpD,mBAAmB,CAACkC,SAAS,CAACc,cAAc,CAACE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAC3E,CAAC;IACDlH,OAAO,CAACQ,YAAY,CAACsD,iBAAiB,CAAC;MAAEuD,MAAM,EAAE;IAAI,CAAC,CAAC;EACzD,CAAC;EAED,MAAMC,qBAAqB,GAAGC,KAAA,IAUxB;IAAA,IAVyB;MAC7BhB,aAAa;MACbM,OAAO;MACPC,YAAY;MACZU,WAAW;MACXC,eAAe;MACfC,eAAe;MACfC,2BAA2B;MAC3BC,2BAA2B;MAC3Bb;IACF,CAAC,GAAAQ,KAAA;IACC,MAAMM,eAAe,GAAG3B,SAAS,CAACW,OAAO,EAAEL,oBAAoB,CAACD,aAAa,CAAC,CAAC;IAC/E,MAAMuB,oBAAoB,GAAG5B,SAAS,CAACY,YAAY,EAAEJ,yBAAyB,CAACH,aAAa,CAAC,CAAC;IAE9FD,iBAAiB,CAACC,aAAa,CAAC;IAEhC,MAAMwB,kBAAkB,GAAG1B,gBAAgB,CAACqB,eAAe,CAAC;IAC5D,MAAMM,8BAA8B,GAAG3B,gBAAgB,CAACsB,2BAA2B,CAAC;IACpF9B,eAAe,CACb/F,eAAe,EACf;MACEmH,QAAQ,EAAEc,kBAAkB;MAC5BzD,qBAAqB,EAAE0D;IACzB,CAAC,EACD,cACF,CAAC;IAED,MAAMC,cAAc,GAAG5B,gBAAgB,CAACmB,WAAW,CAAC;IACpD,MAAMU,kBAAkB,GAAG7B,gBAAgB,CAACoB,eAAe,CAAC;IAC5D,MAAMU,8BAA8B,GAAG9B,gBAAgB,CAACuB,2BAA2B,CAAC;IACpF/B,eAAe,CACb9F,eAAe,EACf;MACEsB,IAAI,EAAE4G,cAAc;MACpBhB,QAAQ,EAAEiB,kBAAkB;MAC5B5D,qBAAqB,EAAE6D;IACzB,CAAC,EACD,cACF,CAAC;IAEDxB,sBAAsB,CAAC;MACrBE,OAAO,EAAEgB,eAAe;MACxBf,YAAY,EAAEgB,oBAAoB;MAClCf;IACF,CAAC,CAAC;IAEF,OAAO;MACLgB,kBAAkB;MAClBC,8BAA8B;MAC9BC,cAAc;MACdC,kBAAkB;MAClBC;IACF,CAAC;EACH,CAAC;EAEDC,UAAU,CAAC,MAAM;IACflI,IAAI,CAACmI,aAAa,CAAC,CAAC;IACpBC,MAAM,CAACC,IAAI,CAACtI,aAAa,CAAC,CAACuI,OAAO,CAAEC,GAAG,IAAK,OAAOxI,aAAa,CAACwI,GAAG,CAAC,CAAC;IACtE5I,mBAAmB,CAACwD,eAAe,CAAC;MAClCqF,gBAAgB,EAAExI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAE,gBAAgB,EAAE;QAAG;MAAE,CAAC;IAClF,CAAC,CAAC;IACFN,OAAO,CAACS,UAAU,CAACqD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC9D,OAAO,CAACQ,YAAY,CAACsD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC1C9D,OAAO,CAACU,UAAU,CAACoD,iBAAiB,CAAC;MAAExD,IAAI,EAAE;QAAEA,IAAI,EAAE;UAAEiB,EAAE,EAAE;QAAS;MAAE;IAAE,CAAC,CAAC;IAC1EvB,OAAO,CAACY,eAAe,CAACkD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C9D,OAAO,CAACc,UAAU,CAACgD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC9D,OAAO,CAACa,KAAK,CAACiD,iBAAiB,CAAC;MAAExD,IAAI,EAAE;QAAEA,IAAI,EAAE;MAAG;IAAE,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFqI,EAAE,CAAC,mEAAmE,EAAE,YAAY;IAClF1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMF,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC;MAEhD;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAClC,SAAS,CAAC;IAErB,MAAM;MAAEmE;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;MAEvDM,MAAM,CAACJ,QAAQ,CAAC,CAACuD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEvH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEuH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CAAC;UACfzH,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACVjI,KAAK,EAAE,IAAI;UACXkI,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,CAAC;QACFC,kBAAkB,EAAE,CAAC;UACnBC,YAAY,EAAE,CAAC,iBAAiB,CAAC;UACjCtI,SAAS,EAAE,CAAC,WAAW,CAAC;UACxBuI,WAAW,EAAE;QACf,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF/D,MAAM,CAACgD,gBAAgB,CAAC,CAACgB,qBAAqB,CAAC,CAAC,CAAC;IACjD,MAAMC,mBAAmB,GAAGjB,gBAAgB,CAACvI,IAAI,CAACyJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7DlE,MAAM,CAACiE,mBAAmB,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;IAE3C,MAAM,CAACC,MAAM,EAAEC,UAAU,CAAC,GAAGJ,mBAAmB;IAChDjE,MAAM,CAACoE,MAAM,CAAC,CAACE,aAAa,CAAC;MAAEC,EAAE,EAAE,KAAK;MAAE/C,KAAK,EAAE,MAAM;MAAEgD,GAAG,EAAE;IAAS,CAAC,CAAC;IACzExE,MAAM,CAACqE,UAAU,CAAC,CAACC,aAAa,CAAC;MAC/BC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,UAAU;MACjB5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;QAC5B9I,IAAI,EAAE;UAAE6I,GAAG,EAAE;QAAS,CAAC;QACvBvF,iBAAiB,EAAE;MACrB,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFgE,EAAE,CAAC,mFAAmF,EAAE,YAAY;IAClG1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMwB,4BAA4B,GAAG,CAACpH,kBAAkB,CAAC;MACvDqH,mBAAmB,EAAE,CACnB;QACEC,QAAQ,EAAE,IAAI;QACdC,QAAQ,EAAE;UAAEhJ,EAAE,EAAE,gBAAgB;UAAEiJ,KAAK,EAAE;QAAoB;MAC/D,CAAC;IAEL,CAAC,CAAC,CAAC;IACH,MAAM9B,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC,EAC5C,CAAC,CAAC;MAEN;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAACgH,4BAA4B,CAAC;IAExC,MAAM;MAAE/E;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAMuE,mBAAmB,GAAGjB,gBAAgB,CAACvI,IAAI,CAACyJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7DlE,MAAM,CAACiE,mBAAmB,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;IAC3CnE,MAAM,CAAC1F,OAAO,CAACY,eAAe,CAAC,CAAC6J,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAEtD,MAAM,CAACmE,MAAM,EAAEC,UAAU,EAAEW,cAAc,CAAC,GAAGf,mBAAmB;IAChEjE,MAAM,CAACoE,MAAM,CAAC,CAACE,aAAa,CAAC;MAAEC,EAAE,EAAE,KAAK;MAAE/C,KAAK,EAAE,MAAM;MAAEgD,GAAG,EAAE;IAAS,CAAC,CAAC;IACzExE,MAAM,CAACqE,UAAU,CAAC,CAACC,aAAa,CAAC;MAC/BC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,UAAU;MACjB5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;QAAE9I,IAAI,EAAE;UAAE6I,GAAG,EAAE;QAAS;MAAE,CAAC;IAC3D,CAAC,CAAC;IACFxE,MAAM,CAACgF,cAAc,CAAC,CAACV,aAAa,CAAC;MACnCC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,MAAM;MACbgD,GAAG,EAAE,QAAQ;MACbS,YAAY,EAAE,cAAc;MAC5BC,iBAAiB,EAAE,aAAa;MAChCzE,KAAK,EAAE,CAAC,gBAAgB;IAC1B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFwC,EAAE,CAAC,kEAAkE,EAAE,YAAY;IACjF1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMiC,WAAW,GAAG;MAAEC,IAAI,EAAE,aAAa;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IACpE,MAAMwK,sBAAsB,GAAG,CAAC/H,kBAAkB,CAAC;MACjD5B,kBAAkB,EAAE,CAAC;QAAE4J,MAAM,EAAE,QAAQ;QAAEC,IAAI,EAAEJ;MAAY,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,MAAMnC,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC8K,iBAAiB,CAAC;MACnD5F,QAAQ,EAAE;QACRhF,IAAI,EAAE;UACJ6K,MAAM,EAAE,CAAC;YAAEX,KAAK,EAAE;UAA4B,CAAC;QACjD;MACF;IACF,CAAC,CAAC;IACF3K,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAC2H,sBAAsB,CAAC;IAElC,MAAM;MAAE1F;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACJ,QAAQ,CAAC,CAAC0E,aAAa,CAAC;MAC7BlB,KAAK,EAAE,EAAE;MACT5H,SAAS,EAAE,EAAE;MACb8H,cAAc,EAAE,CAAC;QACfE,IAAI,EAAE,KAAK;QACXjI,KAAK,EAAE,wDAAwD;QAC/DkI,MAAM,EAAE,IAAI;QACZC,gBAAgB,EAAE;MACpB,CAAC;IACH,CAAC,CAAC;IACF1D,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAAC2J,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAEjD,MAAMgE,mBAAmB,GAAGjB,gBAAgB,CAACvI,IAAI,CAACyJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7DlE,MAAM,CAACiE,mBAAmB,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;IAC3C,MAAM,CAACC,MAAM,EAAEC,UAAU,CAAC,GAAGJ,mBAAmB;IAChDjE,MAAM,CAACoE,MAAM,CAAC,CAACE,aAAa,CAAC;MAAEC,EAAE,EAAE,KAAK;MAAE/C,KAAK,EAAE,MAAM;MAAEgD,GAAG,EAAE;IAAS,CAAC,CAAC;IACzExE,MAAM,CAACqE,UAAU,CAAC,CAACC,aAAa,CAAC;MAC/BC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,UAAU;MACjB5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;QAAE9I,IAAI,EAAE;UAAE6I,GAAG,EAAE;QAAS;MAAE,CAAC;IAC3D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvB,EAAE,CAAC,oFAAoF,EAAE,YAAY;IACnG1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMwC,gBAAgB,GAAG,CAACpI,kBAAkB,CAAC;MAC3CvB,eAAe,EAAE;QACfC,gBAAgB,EAAE,GAAG;QACrBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE;MACf,CAAC;MACDE,QAAQ,EAAE,CAAC;QACTP,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBhD,EAAE,EAAE,OAAO;UACXiD,sBAAsB,EAAE,IAAI;UAC5BU,YAAY,EAAE,iBAAiB;UAC/BD,YAAY,EAAE;YAAE1D,EAAE,EAAE;UAAiB;QACvC;MACF,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAMmH,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEC,KAAK,EAAE;UAAY;QAAE,CAAC,EAC7C;UAAElB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAwB;QAAE,CAAC;MAEjE;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAACgI,gBAAgB,CAAC;IAC5BpL,OAAO,CAACa,KAAK,CAACiD,iBAAiB,CAAC;MAC9BxD,IAAI,EAAE;QAAEA,IAAI,EAAE,CAAC;UAAEiB,EAAE,EAAE;QAAc,CAAC;MAAE;IACxC,CAAC,CAAC;IAEF,MAAM;MAAE8D;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACJ,QAAQ,CAACpE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC8I,aAAa,CAAC;MAC1CzI,EAAE,EAAE,WAAW;MACfC,KAAK,EAAE;IACT,CAAC,CAAC;IAEFkE,MAAM,CAACgD,gBAAgB,CAAC,CAACgB,qBAAqB,CAAC,CAAC,CAAC;IACjD,MAAMC,mBAAmB,GAAGjB,gBAAgB,CAACvI,IAAI,CAACyJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7DlE,MAAM,CAACiE,mBAAmB,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;IAE3C,MAAM,CAACC,MAAM,EAAEuB,MAAM,EAAEtB,UAAU,CAAC,GAAGJ,mBAAmB;IACxDjE,MAAM,CAACoE,MAAM,CAAC,CAACE,aAAa,CAAC;MAAEC,EAAE,EAAE,KAAK;MAAE/C,KAAK,EAAE;IAAO,CAAC,CAAC;IAC1DxB,MAAM,CAAC2F,MAAM,CAAC,CAACrB,aAAa,CAAC;MAC3BC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,uBAAuB;MAC9B5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;QAC5B9I,IAAI,EAAE;UAAE6I,GAAG,EAAE;QAAS,CAAC;QACvB3F,oBAAoB,EAAE,OAAO;QAC7BwC,SAAS,EAAE,aAAa;QACxBvF,KAAK,EAAE;MACT,CAAC;IACH,CAAC,CAAC;IACFkE,MAAM,CAACqE,UAAU,CAAC,CAACC,aAAa,CAAC;MAC/BC,EAAE,EAAE,KAAK;MACT/C,KAAK,EAAE,UAAU;MACjB5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;QAC5B9I,IAAI,EAAE;UAAE6I,GAAG,EAAE;QAAS,CAAC;QACvB1I,KAAK,EAAE;MACT,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFmH,EAAE,CAAC,oEAAoE,EAAE,YAAY;IACnF1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMF,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC;IAClC,MAAMkL,wBAAwB,GAAG,CAACtI,kBAAkB,CAAC;MACnDlB,QAAQ,EAAE,CAAC;QAAEC,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IACHnC,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAACkI,wBAAwB,CAAC;IAEpC,MAAM;MAAEjG;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACgD,gBAAgB,CAAC,CAAC+B,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAC/CD,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/Cd,IAAI,EAAE,KAAK;MACXjI,KAAK,EAAE,uEAAuE;MAC9EkI,MAAM,EAAE;IACV,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFR,EAAE,CAAC,0EAA0E,EAAE,YAAY;IACzF1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAM2C,eAAe,GAAG,CAACvI,kBAAkB,CAAC;MAC1ClB,QAAQ,EAAE,CACR;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,EACjE;QAAET,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,EACjE;QAAET,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC;IAErE,CAAC,CAAC,CAAC;IACH,MAAM0G,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC,EAC5C;UAAElB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC,EAC5C;UAAElB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC;MAEhD;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAACmI,eAAe,CAAC;IAE3B,MAAM;MAAElG;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACgD,gBAAgB,CAAC,CAACgB,qBAAqB,CAAC,CAAC,CAAC;IACjD,MAAMC,mBAAmB,GAAGjB,gBAAgB,CAACvI,IAAI,CAACyJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7DlE,MAAM,CAACiE,mBAAmB,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;IAE3C,MAAM,CAACC,MAAM,EAAE,GAAG0B,WAAW,CAAC,GAAG7B,mBAAmB;IACpDjE,MAAM,CAACoE,MAAM,CAAC,CAACE,aAAa,CAAC;MAAEC,EAAE,EAAE,KAAK;MAAE/C,KAAK,EAAE;IAAO,CAAC,CAAC;IAC1DsE,WAAW,CAAChD,OAAO,CAAC,CAACyB,EAAE,EAAEwB,GAAG,KAAK;MAC/B/F,MAAM,CAACuE,EAAE,CAAC,CAACD,aAAa,CAAC;QACvBC,EAAE,EAAE,KAAK;QACT/C,KAAK,EAAE,UAAU;QACjB5G,IAAI,EAAEoF,MAAM,CAACyE,gBAAgB,CAAC;UAC5B9I,IAAI,EAAE;YAAE6I,GAAG,EAAE;UAAS,CAAC;UACvBxF,UAAU,EAAE,IAAI;UAChBC,iBAAiB,EAAE,UAAU8G,GAAG,GAAG,CAAC;QACtC,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF/F,MAAM,CAACJ,QAAQ,CAACpE,SAAS,CAAC,CAAC2I,YAAY,CAAC,CAAC,CAAC;IAC1CnE,MAAM,CAACJ,QAAQ,CAACpE,SAAS,CAACwK,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACpK,EAAE,CAAC,CAAC,CAACsH,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5FnD,MAAM,CAACJ,QAAQ,CAACwD,KAAK,CAAC,CAACe,YAAY,CAAC,CAAC,CAAC;EACxC,CAAC,CAAC;EAEFlB,EAAE,CAAC,+FAA+F,EAAE,YAAY;IAC9G1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMgD,SAAS,GAAG,CAAC;MAAEpB,KAAK,EAAE,2BAA2B;MAAEqB,MAAM,EAAE;QAAEC,OAAO,EAAE;MAAuB;IAAE,CAAC,CAAC;IACvG,MAAMpD,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC8K,iBAAiB,CAAC;MACnD5F,QAAQ,EAAE;QAAEhF,IAAI,EAAE;UAAE6K,MAAM,EAAES;QAAU;MAAE;IAC1C,CAAC,CAAC;IACF/L,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAClC,SAAS,CAAC;IAErB,MAAM;MAAEmE;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/C/I,KAAK,EAAE,wDAAwD;MAC/DqI,eAAe,EAAEsC;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjD,EAAE,CAAC,4EAA4E,EAAE,YAAY;IAC3F1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMmD,YAAY,GAAG,CACnB/I,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAmB,CAAC,CAAC,EACvDmB,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAsB,CAAC,CAAC,CAC3D;IACD,MAAM6G,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAC/B4L,qBAAqB,CAAC;MACrB1G,QAAQ,EAAE;QAAEhF,IAAI,EAAE;UAAE6K,MAAM,EAAE,CAAC;YAAEX,KAAK,EAAE;UAA4B,CAAC;QAAE;MAAE;IACzE,CAAC,CAAC,CACDyB,qBAAqB,CAAC;MACrB3L,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC;MAEhD;IACF,CAAC,CAAC;IACJ3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAC2I,YAAY,CAAC;IAExB,MAAM;MAAE1G;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACgD,gBAAgB,CAAC,CAACgB,qBAAqB,CAAC,CAAC,CAAC;IACjDhE,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/Cd,IAAI,EAAE,KAAK;MACXjI,KAAK,EAAE,wDAAwD;MAC/DkI,MAAM,EAAE;IACV,CAAC,CAAC;IACFzD,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/Cd,IAAI,EAAE,IAAI;MACVC,MAAM,EAAE,OAAO;MACflI,KAAK,EAAE;IACT,CAAC,CAAC;IACFyE,MAAM,CAACJ,QAAQ,CAACwD,KAAK,CAAC,CAACD,OAAO,CAAC,CAAC;MAAEtH,EAAE,EAAE,OAAO;MAAEM,WAAW,EAAE;IAAY,CAAC,CAAC,CAAC;IAC3E6D,MAAM,CAACJ,QAAQ,CAACpE,SAAS,CAAC,CAAC2H,OAAO,CAAC,CAAC;MAAEtH,EAAE,EAAE,WAAW;MAAEC,KAAK,EAAE,MAAM;MAAEuH,aAAa,EAAE;IAAE,CAAC,CAAC,CAAC;EAC5F,CAAC,CAAC;EAEFJ,EAAE,CAAC,yDAAyD,EAAE,YAAY;IACxE1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMiC,WAAW,GAAG;MAAEC,IAAI,EAAE,aAAa;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IACpE,MAAMwK,sBAAsB,GAAG,CAAC/H,kBAAkB,CAAC;MACjD5B,kBAAkB,EAAE,CAAC;QAAE4J,MAAM,EAAE,QAAQ;QAAEC,IAAI,EAAEJ;MAAY,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,MAAMnC,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC;MAEhD;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAC2H,sBAAsB,CAAC;IAElC,MAAM;MAAE1F;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;IAEFM,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAAC4I,qBAAqB,CAAC,CAAC,CAAC;IACnDhE,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAACoL,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAErB,WAAW,CAAC;EAC/E,CAAC,CAAC;EAEFlC,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMiC,WAAW,GAAG;MAAEC,IAAI,EAAE,aAAa;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IACpE,MAAMwK,sBAAsB,GAAG,CAAC/H,kBAAkB,CAAC;MACjD5B,kBAAkB,EAAE,CAAC;QAAE4J,MAAM,EAAE,QAAQ;QAAEC,IAAI,EAAEJ;MAAY,CAAC;IAC9D,CAAC,CAAC,CAAC;IACH,MAAMnC,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACnDxD,IAAI,EAAE;QACJ,gBAAgB,EAAE,CAChB;UAAEA,IAAI,EAAE;YAAEiB,EAAE,EAAE,OAAO;YAAEM,WAAW,EAAE;UAAY;QAAE,CAAC,EACnD;UAAEvB,IAAI,EAAE;YAAEiB,EAAE,EAAE,WAAW;YAAEC,KAAK,EAAE;UAAO;QAAE,CAAC;MAEhD;IACF,CAAC,CAAC;IACF3B,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAC2H,sBAAsB,CAAC;IAClC/K,OAAO,CAACc,UAAU,CAACoK,iBAAiB,CAAC,IAAIiB,KAAK,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM;MAAE9G;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACnD,CAAC,CAAC;IAEFM,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/Cd,IAAI,EAAE,IAAI;MACVC,MAAM,EAAE,OAAO;MACfC,gBAAgB,EAAE;IACpB,CAAC,CAAC;IACF1D,MAAM,CAACJ,QAAQ,CAACpE,SAAS,CAAC,CAAC2H,OAAO,CAAC,CAAC;MAAEtH,EAAE,EAAE,WAAW;MAAEC,KAAK,EAAE,MAAM;MAAEuH,aAAa,EAAE;IAAE,CAAC,CAAC,CAAC;EAC5F,CAAC,CAAC;EAEFJ,EAAE,CAAC,6EAA6E,EAAE,YAAY;IAC5F1I,aAAa,CAAC2I,+BAA+B,GAAG,IAAI;IACpD,MAAMF,gBAAgB,GAAGxI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC8K,iBAAiB,CAAC;MACnD5F,QAAQ,EAAE;QAAEhF,IAAI,EAAE;UAAE6K,MAAM,EAAE,CAAC;YAAEX,KAAK,EAAE;UAA4B,CAAC;QAAE;MAAE;IACzE,CAAC,CAAC;IACF3K,mBAAmB,CAACwD,eAAe,CAAC;MAAEqF;IAAiB,CAAC,CAAC;IACzDtF,UAAU,CAAClC,SAAS,CAAC;IACrB,MAAM2C,YAAY,GAAG3D,IAAI,CAACE,EAAE,CAAC,CAAC;IAC9BN,eAAe,CAACuD,eAAe,CAAC;MAAEQ;IAAa,CAAC,CAAC;IAEjD,MAAM;MAAEwB;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;IAEFM,MAAM,CAAC7B,YAAY,CAAC,CAAC4G,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EAC7C,CAAC,CAAC;EAEFgD,EAAE,CAAC,0DAA0D,EAAE,YAAY;IACzE/I,2BAA2B,CAACyD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF9D,eAAe,CAACuD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFP,eAAe,CAACsD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM;MAAE+E;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM0M,eAAe,GAAG/G,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAM8G,eAAe,CAAC;QACrClL,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAAC+G,cAAc,CAAC,OAAO,CAAC;MACxC3G,MAAM,CAACJ,QAAQ,CAAC,CAAC+G,cAAc,CAAC,WAAW,CAAC;MAC5C3G,MAAM,CAACJ,QAAQ,CAAC,CAAC+G,cAAc,CAAC,gBAAgB,CAAC;IACnD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1D,EAAE,CAAC,0CAA0C,EAAE,YAAY;IACzD/I,2BAA2B,CAACyD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF9D,eAAe,CAACuD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFP,eAAe,CAACsD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAMgM,cAAc,GAAGpM,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY;MAChD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAO;MACzC;IACF,CAAC,CAAC;IAEF1B,eAAe,CAACmG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAEyI;QAAe,CAAC;MACzC,CAAC,MAAM,IAAI/L,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC;MAAE,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM;MAAEiF;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM0M,eAAe,GAAG/G,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAM8G,eAAe,CAAC;QACrClL,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACuD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEvH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEuH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEzH,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACVjI,KAAK,EAAE,IAAI;UACXkI,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,CACF;QACDC,kBAAkB,EAAE,CAClB;UACEC,YAAY,EAAE,CAAC,iBAAiB,CAAC;UACjCtI,SAAS,EAAE,CAAC,WAAW,CAAC;UACxBuI,WAAW,EAAE;QACf,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAM8C,sBAAsB,GAAGA,CAAA,KAAM;IACnC,MAAMD,cAAc,GAAGpM,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY;MAChD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAO;MACzC;IACF,CAAC,CAAC;IAEF1B,eAAe,CAACmG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAEyI;QAAe,CAAC;MACzC,CAAC,MAAM,IAAI/L,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC;MAAE,CAAC;IACpC,CAAC,CAAC;EACJ,CAAC;EAEDuI,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAM6D,aAAa,GAAG,CACpBxJ,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAgB,CAAC,CAAC,EACpDmB,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EK,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW;IAC5B,CAAC,CAAC,CACH;IAED6B,UAAU,CAACoJ,aAAa,CAAC;IACzBD,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAElH;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM0M,eAAe,GAAG/G,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAM8G,eAAe,CAAC;QACrClL,SAAS,EAAEsL,aAAa;QACxB/I,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACuD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEvH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEuH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEzH,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACVjI,KAAK,EAAE,IAAI;UACXkI,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,EACD;UACE/H,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACXjI,KAAK,EAAE,+EAA+E;UACtFkI,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,CACF;QACDC,kBAAkB,EAAE,CAClB;UACEC,YAAY,EAAE,CAAC,iBAAiB,CAAC;UACjCtI,SAAS,EAAE,CAAC,WAAW,CAAC;UACxBuI,WAAW,EAAE;QACf,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFd,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAM8D,eAAe,GAAG,CACtBzJ,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAK,CAAC,CAAC,EACzCmB,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EK,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW;IAC5B,CAAC,CAAC,CACH;IAED6B,UAAU,CAACqJ,eAAe,CAAC;IAC3BF,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAElH;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM0M,eAAe,GAAG/G,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAM8G,eAAe,CAAC;QACrClL,SAAS,EAAEuL,eAAe;QAC1BhJ,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACuD,OAAO,CAAC;QACvBC,KAAK,EAAE,EAAE;QACT5H,SAAS,EAAE,EAAE;QACb8H,cAAc,EAAE,CACd;UACEzH,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACXjI,KAAK,EAAE,+EAA+E;UACtFkI,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,EACD;UACE/H,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACXjI,KAAK,EAAE,+EAA+E;UACtFkI,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,CACF;QACDC,kBAAkB,EAAE;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,EAAE,CAAC,iEAAiE,EAAE,YAAY;IAChF,MAAMzH,SAAS,GAAG,CAChB8B,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,eAAe;MAC5BK,OAAO,EAAE;QAAEX,EAAE,EAAE,UAAU;QAAEY,QAAQ,EAAE;UAAEC,UAAU,EAAE;QAAM;MAAE;IAC7D,CAAC,CAAC,CACH;IAEDgB,UAAU,CAAClC,SAAS,CAAC;IACrBqL,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAElH;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM0M,eAAe,GAAG/G,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAM8G,eAAe,CAAC;QACrClL,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACuD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEvH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEuH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEzH,EAAE,EAAE,mBAAmB;UACvB0H,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACVjI,KAAK,EAAE,IAAI;UACXkI,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE,EAAE;UACpBC,eAAe,EAAE;QACnB,CAAC,CACF;QACDC,kBAAkB,EAAE;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFZ,EAAE,CAAC,+DAA+D,EAAE,YAAY;IAC9E,MAAM+D,kBAAkB,GAAG,CACzB1J,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,2BAA2B;MACxC8K,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ;IAClC,CAAC,CAAC,CACH;IAED/M,2BAA2B,CAACyD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS,EAAEwL,kBAAkB;QAC7BhJ,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF,MAAM0I,cAAc,GAAGpM,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAa;MACjD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAQ;MAC1C;IACF,CAAC,CAAC;IAEF1B,eAAe,CAACmG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAEyI;QAAe,CAAC;MACzC,CAAC,MAAM,IAAI/L,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;UAAExD,IAAI,EAAE;YAAEA,IAAI,EAAE,CAAC;UAAE;QAAE,CAAC;MAAE,CAAC;IAC9E,CAAC,CAAC;IAEFP,eAAe,CAACsD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM;MAAE+E;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAAC4G,cAAc,CAAC,CAACJ,oBAAoB,CACzCxG,MAAM,CAACyE,gBAAgB,CAAC;MACtByC,iBAAiB,EAAE,CACjB;QAAErL,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC,EAC1C;QAAEgB,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC;IAE9C,CAAC,CACH,CAAC;IAEDmF,MAAM,CAACqC,kBAAkB,CAAC,CAACmE,oBAAoB,CAC7CxG,MAAM,CAACyE,gBAAgB,CAAC;MACtB3I,KAAK,EAAE,OAAO;MACdoL,iBAAiB,EAAE,CACjB;QAAErL,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC,EAC1C;QAAEgB,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC;IAE9C,CAAC,CACH,CAAC;EACH,CAAC,CAAC;EAEFoI,EAAE,CAAC,yFAAyF,EAAE,YAAY;IACxG,MAAMkC,WAAW,GAAG;MAAEC,IAAI,EAAE,SAAS;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IAChE,MAAMgG,aAAa,GAAGnC,0CAA0C,CAAC;MAC/D/C,IAAI,EAAE;QACJE,EAAE,EAAE,QAAQ;QACZ+C,qBAAqB,EAAE;MACzB,CAAC;MACDlD,kBAAkB,EAAE,CAClB;QACE4J,MAAM,EAAE,aAAa;QACrBC,IAAI,EAAEJ,WAAW;QACjBgC,OAAO,EAAE;MACX,CAAC;IAEL,CAAC,CAAC;IAEFvF,qBAAqB,CAAC;MACpBf,aAAa;MACbiB,WAAW,EAAE;QAAEjG,EAAE,EAAE;MAAS,CAAC;MAC7BkG,eAAe,EAAE;QAAElG,EAAE,EAAE,kBAAkB;QAAEC,KAAK,EAAE;MAAQ;IAC5D,CAAC,CAAC;IAEF,MAAM;MAAE6D;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAAC1F,OAAO,CAACS,UAAU,CAAC,CAACyL,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC;IACrFxG,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAACoL,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAErB,WAAW,CAAC;EAChF,CAAC,CAAC;EAEFlC,EAAE,CAAC,8EAA8E,EAAE,YAAY;IAC7F,MAAM1B,QAAQ,GAAGjE,kBAAkB,CAAC;MAClCzB,EAAE,EAAE,YAAY;MAChBC,KAAK,EAAE,MAAM;MACb6C,6BAA6B,EAAE,CAACJ,yBAAyB,CAAC;MAC1D5C,IAAI,EAAE;QACJE,EAAE,EAAE;MACN,CAAC;MACDO,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBC,sBAAsB,EAAE;QAC1B;MACF,CAAC;IAEL,CAAC,CAAC;IAEFpB,UAAU,CAAC,CAAC6D,QAAQ,CAAC,CAAC;IAEtB,MAAM;MAAE5B;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAErE,SAAS,EAAE,CAAC+F,QAAQ,CAAC;QAAExD,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QAAE6D,KAAK,EAAE;MAAM,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEFM,MAAM,CAAC1F,OAAO,CAACS,UAAU,CAAC,CAACgK,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,0FAA0F,EAAE,YAAY;IACzG,MAAMpC,aAAa,GAAGnC,0CAA0C,CAAC;MAC/DC,6BAA6B,EAAE,CAC7B;QACEH,QAAQ,EAAE,cAAc;QACxBC,YAAY,EAAE;MAChB,CAAC;IAEL,CAAC,CAAC;IAEFmD,qBAAqB,CAAC;MACpBf,aAAa;MACbiB,WAAW,EAAE;QAAEjG,EAAE,EAAE;MAAS,CAAC;MAC7BkG,eAAe,EAAE;QAAElG,EAAE,EAAE,kBAAkB;QAAEC,KAAK,EAAE;MAAQ;IAC5D,CAAC,CAAC;IAEF,MAAM;MAAE6D;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAAC1F,OAAO,CAACS,UAAU,CAAC,CAACgK,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,kEAAkE,EAAE,YAAY;IACjF,MAAMmE,OAAO,GAAG;MAAEhC,IAAI,EAAE,SAAS;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IAC5D,MAAMwM,4BAA4B,GAAG,CACnC/J,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,iCAAiC;MAC9CV,oBAAoB,EAAE,CACpB;QACEI,EAAE,EAAE,kBAAkB;QACtB2C,QAAQ,EAAE,cAAc;QACxBC,YAAY,EAAE,iBAAiB;QAC/B6I,IAAI,EAAE;MACR,CAAC,CACF;MACD5L,kBAAkB,EAAE,CAClB;QACE4J,MAAM,EAAE,aAAa;QACrBC,IAAI,EAAE6B,OAAO;QACbD,OAAO,EAAE;MACX,CAAC,CACF;MACDxC,mBAAmB,EAAE,CACnB;QACEC,QAAQ,EAAE,IAAI;QACdC,QAAQ,EAAE;UACRhJ,EAAE,EAAE,gBAAgB;UACpBiJ,KAAK,EAAE;QACT;MACF,CAAC;IAEL,CAAC,CAAC,CACH;IAEDpH,UAAU,CAAC2J,4BAA4B,CAAC;IACxCR,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAElH;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2F,MAAM,CAACE,OAAO,CAAC;QACnBrE,SAAS,EAAE6L,4BAA4B;QACvCtJ,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFM,MAAM,CAAC1F,OAAO,CAACY,eAAe,CAAC,CAACsL,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;MACpEtB,iBAAiB,EAAE,aAAa;MAChCzE,KAAK,EAAE,CAAC,gBAAgB;IAC1B,CAAC,CAAC;IACFT,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAAC4I,qBAAqB,CAAC,CAAC,CAAC;IACnDhE,MAAM,CAAC1F,OAAO,CAACc,UAAU,CAAC,CAACoL,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAEY,OAAO,CAAC;EAC3E,CAAC,CAAC;EAEFnE,EAAE,CAAC,8EAA8E,EAAE,YAAY;IAC7F,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,wBAAwB;MACrCR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBZ,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,aAAa;QACjBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,cAAc;UAAES,QAAQ,EAAE;QAAK;MACjD,CAAC;IAEL,CAAC,CAAC;IAEF,MAAM;MAAE+F,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAO;IAC1D,CAAC,CAAC;IAEJ,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACAO,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAACyE,gBAAgB,CAAC;MACtB3I,KAAK,EAAE,MAAM;MACbmD,iBAAiB,EAAE,aAAa;MAChCC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACDc,MAAM,CAACsC,8BAA8B,CAAC,CAACyC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAAC1F,OAAO,CAACQ,YAAY,CAAC,CAACiK,GAAG,CAACyB,oBAAoB,CAAC,UAAU,EAAExG,MAAM,CAACuH,QAAQ,CAAC,CAAC,CAAC;IACpFvH,MAAM,CAACqC,kBAAkB,CAAC,CAAC0C,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,gFAAgF,EAAE,YAAY;IAC/F,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,EAAE;QACpBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE;UAAE3L,EAAE,EAAE;QAAU;MAC9B,CAAC;MACDO,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,cAAc;UAAES,QAAQ,EAAE;QAAK;MACjD,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEkG,kBAAkB;MAAEC;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW;MACtC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;IAEzBO,MAAM,CAACyC,8BAA8B,CAAC,CAAC+D,oBAAoB,CACzDrJ,wBAAwB,EACxB6C,MAAM,CAACyE,gBAAgB,CAAC;MACtB3I,KAAK,EAAE,WAAW;MAClB+C,oBAAoB,EAAEzB,iBAAiB;MACvCqK,SAAS,EAAE,WAAW;MACtBpG,SAAS,EAAE,aAAa;MACxBtD,MAAM,EAAE,SAAS;MACjB2J,qBAAqB,EAAE,EAAE;MACzBC,sBAAsB,EAAE,CAAC,SAAS;IACpC,CAAC,CACH,CAAC;IACD3H,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAACyE,gBAAgB,CAAC;MACtBvF,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACA;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAEkE,MAAM,CAACuH,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACD;IACAvH,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACoF,YAAY,CACrD9H,cAAc,CAAC2C,8BAA8B,CAC/C,CAAC;EACH,CAAC,CAAC;EAEFQ,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,qCAAqC;MAClDR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,EAAE;QACpBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE;UAAE3L,EAAE,EAAE;QAAU;MAC9B,CAAC;MACDO,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAC9C,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEmG;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MAC/Df,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAExCM,MAAM,CAACyC,8BAA8B,CAAC,CAAC+D,oBAAoB,CACzDrJ,wBAAwB,EACxB6C,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAE;IAAQ,CAAC,CAChD,CAAC;EACH,CAAC,CAAC;EAEFmH,EAAE,CAAC,qEAAqE,EAAE,YAAY;IACpF,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,oCAAoC;MACjDR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,MAAM;QACxBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBhD,EAAE,EAAEuB,iBAAiB;UACrB0B,sBAAsB,EAAE,IAAI;UAC5BS,YAAY,EAAE;YAAE1D,EAAE,EAAEwB;UAAgB,CAAC;UACrCmC,YAAY,EAAE;QAChB;MACF,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEiD;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MAC/Df,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAExCM,MAAM,CAACyC,8BAA8B,CAAC,CAAC+D,oBAAoB,CACzDrJ,wBAAwB,EACxB6C,MAAM,CAACyE,gBAAgB,CAAC;MAAEoD,eAAe,EAAE;IAAM,CAAC,CACpD,CAAC;EACH,CAAC,CAAC;EAEF5E,EAAE,CAAC,mFAAmF,EAAE,YAAY;IAClG,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,IAAI;QACtBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,oBAAoB;QACxBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,qBAAqB;UAAES,QAAQ,EAAE;QAAK;MACxD,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEiG,cAAc;MAAEC,kBAAkB;MAAEC;IAA+B,CAAC,GAC1Eb,qBAAqB,CAAC;MACpBf,aAAa;MACbM,OAAO,EAAE;QACP,GAAGL,oBAAoB,CAACD,aAAa,CAAC;QACtCE,YAAY,EAAE;UAAElF,EAAE,EAAE;QAAc;MACpC,CAAC;MACDuF,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAqB;MAChD,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEJ,MAAM8D,QAAQ,GAAG,MAAMH,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAEzDM,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC/H,KAAK,CAAC,CAACuM,SAAS,CAChD,+GACF,CAAC;IACD9H,MAAM,CAAC1F,OAAO,CAACQ,YAAY,CAAC,CAACiK,GAAG,CAACyB,oBAAoB,CACnD,uBAAuB,EACvBrJ,wBACF,CAAC;IACD6C,MAAM,CAACuC,cAAc,CAAC,CAACwC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAC7CD,MAAM,CAACyC,8BAA8B,CAAC,CAACsC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAACwC,kBAAkB,CAAC,CAACuC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,+EAA+E,EAAE,YAAY;IAC9F,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CAACkD,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM;MAAEgD,8BAA8B;MAAEE;IAAmB,CAAC,GAAGZ,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAwB;IAC3E,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;IAEzBO,MAAM,CAACsC,8BAA8B,CAAC,CAACkE,oBAAoB,CACzDxG,MAAM,CAACyE,gBAAgB,CAAC;MACtB9I,IAAI,EAAEqB,OAAO;MACblB,KAAK,EAAE,WAAW;MAClB+C,oBAAoB,EAAEzB,iBAAiB;MACvCiE,SAAS,EAAE,aAAa;MACxBtD,MAAM,EAAE;IACV,CAAC,CACH,CAAC;IACDiC,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAACyE,gBAAgB,CAAC;MACtBxF,iBAAiB,EAAE,gBAAgB;MACnCC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAEkE,MAAM,CAACuH,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACD;IACAvH,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACoF,YAAY,CACrD9H,cAAc,CAACwC,8BAA8B,CAC/C,CAAC;EACH,CAAC,CAAC;EAEFW,EAAE,CAAC,uFAAuF,EAAE,YAAY;IACtG,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,6BAA6B;MAC1CR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDf,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,oBAAoB;QACxBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,qBAAqB;UAAES,QAAQ,EAAE;QAAK;MACxD,CAAC;IAEL,CAAC,CAAC;IAEF,MAAM;MAAEkG,kBAAkB;MAAEC;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAqB;MAChD,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAO;IAC1D,CAAC,CAAC;IAEF,MAAM8D,QAAQ,GAAG,MAAMH,iBAAiB,CAAC,CAAC;IAE1CO,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC/H,KAAK,CAAC,CAACuM,SAAS,CAChD,+GACF,CAAC;IACD9H,MAAM,CAAC1F,OAAO,CAACQ,YAAY,CAAC,CAACiK,GAAG,CAACyB,oBAAoB,CACnD,uBAAuB,EACvBrJ,wBACF,CAAC;IACD6C,MAAM,CAACyC,8BAA8B,CAAC,CAACsC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAACwC,kBAAkB,CAAC,CAACuC,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,uGAAuG,EAAE,YAAY;IACtH,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,uCAAuC;MACpDR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAAEzD,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC,EACtF;QAAET,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC;IAErE,CAAC,CAAC;IAEF,MAAM;MAAE+F,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ,CAAC;MAC1DkG,eAAe,EAAE;QAAEnG,EAAE,EAAE,oBAAoB;QAAEC,KAAK,EAAE;MAAwB;IAC9E,CAAC,CAAC;IAEJ,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACA;IACAO,MAAM,CAACqC,kBAAkB,CAAC,CAACmE,oBAAoB,CAC7CxG,MAAM,CAACyE,gBAAgB,CAAC;MACtB3I,KAAK,EAAE,uBAAuB;MAC9BmD,iBAAiB,EAAE,UAAU;MAC7BC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAEkE,MAAM,CAACuH,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACDvH,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACoF,YAAY,CACrD9H,cAAc,CAACwC,8BAA8B,CAC/C,CAAC;IACDtC,MAAM,CAACF,cAAc,CAACwC,8BAA8B,CAAC,CAAC,CAACsF,YAAY,CACjE9H,cAAc,CAACuC,kBAAkB,CACnC,CAAC;EACH,CAAC,CAAC;EAEFY,EAAE,CAAC,wFAAwF,EAAE,YAAY;IACvG,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,gCAAgC;MAC7CR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBT,oBAAoB,EAAE;UACpBhD,EAAE,EAAEuB,iBAAiB;UACrB0B,sBAAsB,EAAE,IAAI;UAC5BiJ,eAAe,EAAE,IAAI;UACrBxI,YAAY,EAAE;YAAE1D,EAAE,EAAEwB;UAAgB,CAAC;UACrCmC,YAAY,EAAE;QAChB;MACF,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEgD;IAAmB,CAAC,GAAGZ,qBAAqB,CAAC;MACnDf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACA;IACAO,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAEkE,MAAM,CAACuH,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;EACH,CAAC,CAAC;EAEFtE,EAAE,CAAC,4EAA4E,EAAE,YAAY;IAC3F,MAAMpC,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,8CAA8C;MAC3DR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBsL,UAAU,EAAE,CAAC;MACf,CAAC;MACDpL,QAAQ,EAAE,CAACkD,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM;MAAE+C,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IACJwG,8BAA8B,CAACkD,iBAAiB,CAAC,IAAIiB,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE3F,MAAM7G,QAAQ,GAAG,MAAMH,iBAAiB,CAAC,CAAC;IAE1CO,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,CAACwE,IAAI,CAAC,KAAK,CAAC;IACnDhI,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC/H,KAAK,CAAC,CAACuM,SAAS,CAAC,8BAA8B,CAAC;IAClF;IACA;IACA9H,MAAM,CAACwC,kBAAkB,CAAC,CAACgE,oBAAoB,CAC7CzJ,iBAAiB,EACjBiD,MAAM,CAAC+E,GAAG,CAACN,gBAAgB,CAAC;MAAE3I,KAAK,EAAEkE,MAAM,CAACuH,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACDvH,MAAM,CAACqC,kBAAkB,CAAC,CAAC0C,GAAG,CAAC9E,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFgD,EAAE,CAAC,mDAAmD,EAAE,YAAY;IAClE,MAAMkC,WAAW,GAAG;MAAEC,IAAI,EAAE,iBAAiB;MAAEvK,IAAI,EAAE;IAAkB,CAAC;IACxE,MAAMoN,6BAA6B,GAAG,CACpC3K,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,iCAAiC;MAC9CT,kBAAkB,EAAE,CAAC;QAAE4J,MAAM,EAAE,aAAa;QAAEC,IAAI,EAAEJ;MAAY,CAAC;IACnE,CAAC,CAAC,CACH;IACDzH,UAAU,CAACuK,6BAA6B,CAAC;IACzCpB,sBAAsB,CAAC,CAAC;IACxBvM,OAAO,CAACc,UAAU,CAACoK,iBAAiB,CAAC,IAAIiB,KAAK,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM;MAAE9G;IAAO,CAAC,GAAG5F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IACzD,IAAI2F,QAAQ;IACZ,MAAM5F,GAAG,CAAC,YAAY;MACpB4F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAC9BrE,SAAS,EAAEyM,6BAA6B;QACxClK,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU;MAC1B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFmE,MAAM,CAACJ,QAAQ,CAAC0D,cAAc,CAAC,CAAC,CAAC,CAAC,CAACgB,aAAa,CAAC;MAC/Cd,IAAI,EAAE,IAAI;MACVjI,KAAK,EAAE,IAAI;MACXkI,MAAM,EAAE,OAAO;MACfC,gBAAgB,EAAE,QAAQ;MAC1BC,gBAAgB,EAAE,CAChB;QAAEuE,SAAS,EAAE,QAAQ;QAAE9C,IAAI,EAAE,iBAAiB;QAAE+C,OAAO,EAAE;MAAgB,CAAC;IAE9E,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|