@volant-autonomy/via-sdk 1.5032.1 → 1.5045.1
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/direct.d.ts +27 -0
- package/dist/index.cjs.js +8 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +8 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/volant-schema.d.ts +73 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/composite.ts","../src/direct.ts","../node_modules/.pnpm/openapi-fetch@0.17.0/node_modules/openapi-fetch/dist/index.mjs","../src/fetch.ts","../src/client.ts","../src/utils.ts"],"sourcesContent":["import { OperationRequestBodyContent } from 'openapi-typescript-helpers'\n\nimport type { components } from './volant-schema'\n\nexport const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))\n\n/**\n * Coerces typescript into more fully evaluating a type to make it more readable\n * @example\n * type X = {\n * a: string | number\n * } & {\n * a: string\n * }\n * Expand<X> == {a: string}\n * // without expand it is not simplified by TS when being shown,\n * // even though it is equivalent to just {a: string}\n */\nexport type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never\n\n/** The raw API schemas from openapi.json */\nexport type schemas = components['schemas']\nexport type Waypoint = schemas['StartWaypoint-Input'] | schemas['GotoWaypoint-Input']\nexport type Checkpoint = schemas['GotoPathingCheckpoint'] | schemas['StartPathingCheckpoint']\nexport type PathingTaskState = schemas['PathingTaskState']\n\nexport class UnauthenticatedError extends Error {\n // Both properties are needed to allow for errors to be identified when used in scenarios such\n // as 'PromiseRejectionEvent' such as:\n // `if (errorEvent.reason.name === UnauthenticatedError.name)`\n // In the above, the first is the instance property and the latter a class property\n public override name = 'Unauthenticated'\n // FIXME: this was valid in the via codebase for some reason.\n // public static override name = 'Unauthenticated'\n}\n\n/**\n * Gets the type of the body input for an endpoint\n * @example\n * bodyOf<paths[\"/login\"][\"post\"]> = {username: string, password: string}\n */\nexport type bodyOf<T> = OperationRequestBodyContent<T>\n/** Gets the type of the query input for an endpoint */\nexport type queryOf<T> = T extends { parameters: { query?: infer P } } ? P : never\n/** Gets the type of the path input for an endpoint */\nexport type pathOf<T> = T extends { parameters: { path?: infer P } } ? P : never\n/** Gets the type of the header input for an endpoint */\nexport type headerOf<T> = T extends { parameters: { header?: infer P } } ? P : never\n","import { createPathingTask, Direct, PathingTaskEvent } from './direct'\nimport { schemas, sleep } from './types'\n\nexport type StreamError = {\n errors: {\n detail: string\n status: string\n }[]\n status: string\n}\n\nclass StreamFailedError extends Error {}\n\nclass TaskTimeoutError extends Error {}\n\nconst PathingTaskTimeout = 30_000\nconst ValidStreamTimeout = 5_000\n\nexport class Composite {\n private direct: Direct\n public constructor(direct: Direct) {\n this.direct = direct\n }\n /// flightplans\n\n public async upsertFlightplan(args: schemas['Flightplan-Input'], id: string | null | undefined) {\n if (id) {\n return this.direct.modifyDraftFlightplan(id, args)\n } else {\n return this.direct.createDraftFlightplan(args)\n }\n }\n\n public async getAllDraftFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Draft'] })\n }\n\n public async getAllClosedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Closed'] })\n }\n\n public async getAllPendingFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Pending'] })\n }\n\n public async getAllAcceptedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Accepted'] })\n }\n\n // TODO: make error 409 more obvious, as it is different\n public async attemptAcceptFlightplan(id: string) {\n return this.direct.changeFlightplanState(id, 'Accepted')\n }\n\n public async attemptTemporalDeconfliction(id: string, timeInterval: number = 60) {\n const startTimeDeconflictArgs = {\n time_interval: timeInterval\n }\n\n const { data, error } = await this.direct.getFlightplanDeconflictedStartTime(id, startTimeDeconflictArgs)\n if (error) {\n return { error }\n }\n\n return this.direct.modifyDraftFlightplan(id, data.attributes)\n }\n\n /// pathing tasks\n\n /**\n * Handles fetching a pathing task once it has reached a final state. This will be completed through one of two\n * methods:\n *\n * - Event stream (default) - Opens an event stream and optionally calls onMessage when the state changes. The\n * callback will not be called once the task is complete as the task being complete can be inferred from the stream\n * being closed.\n *\n * - Polling (fallback) - Occurs automatically if the connection to the event stream is unsuccessful or the stream\n * fails. Polls every 0.5s whilst queuing and every 0.2s whilst in progress. Note if onMessage is defined it is\n * called on every poll.\n * @param taskId - A UUID value that identifies a pathing task\n * @param onMessage - Callback that is called upon receiving details on the state of the pathing task\n * @returns - The result of the pathing task\n */\n public async getPathingTaskResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n try {\n await this.pathingTaskStreamResult(taskId, onMessage)\n } catch (error: unknown) {\n if (error instanceof StreamFailedError) {\n await this.pathingTaskPollResult(taskId, onMessage)\n }\n }\n return this.direct.getPathingTask(taskId)\n }\n\n /** Handles creating and waiting for the result of a pathing task. */\n public async doPathingTask(args: createPathingTask['requestBody']['content']['application/json']) {\n const createdTask = await this.direct.createPathingTask(args)\n if (createdTask.error) {\n return createdTask.error\n }\n\n const id = createdTask.data.id\n\n return await this.getPathingTaskResult(id)\n }\n\n private async pathingTaskStreamResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n let streamConnectionTimeout: ReturnType<typeof setTimeout>\n let streamNotSuccessfulTimeout: ReturnType<typeof setTimeout>\n\n const promise = new Promise((resolve, reject) => {\n const stream = this.direct.getPathingTaskStateStream(taskId)\n\n streamConnectionTimeout = setTimeout(() => {\n if (stream.readyState !== EventSource.OPEN) {\n stream.close()\n reject(new StreamFailedError('Timeout connecting'))\n }\n }, ValidStreamTimeout)\n\n streamNotSuccessfulTimeout = setTimeout(() => {\n stream.close()\n reject(new TaskTimeoutError('Timeout whilst waiting for successful result'))\n }, PathingTaskTimeout)\n\n stream.onmessage = async (event: MessageEvent) => {\n // TODO(Jack): Use a discriminated union\n const data = JSON.parse(event.data) as {\n payload: PathingTaskEvent\n error: boolean\n }\n\n if (data.error === true) {\n stream.close()\n reject(new Error(`Task stream returned error: ${data.payload}`))\n return\n }\n\n onMessage?.(data.payload)\n\n if (data.payload.terminated === true) {\n stream.close()\n resolve(data.payload)\n }\n }\n\n stream.onerror = (error: Event) => {\n stream.close()\n reject(new StreamFailedError(`Stream failed: ${error}`))\n }\n })\n\n return promise.finally(() => {\n clearTimeout(streamConnectionTimeout)\n clearTimeout(streamNotSuccessfulTimeout)\n })\n }\n\n private async pathingTaskPollResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ): Promise<void | StreamError> {\n let runPathing = true\n\n while (runPathing) {\n setTimeout(() => {\n runPathing = false\n }, PathingTaskTimeout)\n\n const pathingTaskResult = await this.direct.getPathingTask(taskId)\n if (pathingTaskResult.error) {\n return pathingTaskResult.error\n }\n if (pathingTaskResult.data.meta.state === 'successful' || pathingTaskResult.data.meta.state === 'failed') {\n return\n }\n\n const pathingTaskPayload = {\n state: pathingTaskResult.data.meta.state,\n terminated: false\n }\n\n // TODO: Make this only on change from previous\n onMessage?.(pathingTaskPayload)\n\n switch (pathingTaskResult.data.meta.state) {\n case 'queued':\n await sleep(500)\n break\n case 'in-progress':\n await sleep(200)\n break\n }\n }\n }\n}\n","import createFetcher from './fetch'\nimport { bodyOf, PathingTaskState, pathOf, queryOf, schemas } from './types'\nimport type { paths } from './volant-schema'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n}\n\nexport type PathingTaskEvent = {\n state: PathingTaskState\n terminated: boolean\n}\n\n// These type names must match their function names, so the docstrings\n// can be copied over from the schema\nexport type getAllFlightplans = paths['/flightplans/']['get']\nexport type createDraftFlightplan = paths['/flightplans/']['post']\nexport type modifyDraftFlightplan = paths['/flightplans/{flightplan_id}']['put']\nexport type getFlightplan = paths['/flightplans/{flightplan_id}']['get']\nexport type getFlightplanWaypointsDetailed = paths['/flightplans/{flightplan_id}/waypoints_detail']['get']\nexport type getFlightplanStatistics = paths['/flightplans/{flightplan_id}/statistics']['get']\nexport type getFlightplanVolumes = paths['/flightplans/{flightplan_id}/volumes']['get']\nexport type getFlightplanDeconflictedStartTime = paths['/flightplans/{flightplan_id}/start_time_deconflict']['get']\nexport type getFlightplanProfile = paths['/flightplans/{flightplan_id}/profile']['get']\nexport type changeFlightplanState = paths['/flightplans/{flightplan_id}/state']['post']\nexport type getFlightplanAsFile = paths['/flightplans/{flightplan_id}/content']['get']\n\nexport type createAirspaceConstraint = paths['/airspace_constraints/']['post']\nexport type getAllAirspaceConstraints = paths['/airspace_constraints/']['get']\nexport type getAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['get']\nexport type modifyAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['put']\nexport type changeAirspaceConstraintState = paths['/airspace_constraints/{airspace_constraints_id}/state']['post']\n\nexport type createPathingTask = paths['/pathing_tasks/']['post']\nexport type getPathingTask = paths['/pathing_tasks/{pathing_task_id}']['get']\nexport type getPathingTaskStateStream = paths['/pathing_tasks/{pathing_task_id}/state']['get']\n\nexport type getAllCharts = paths['/charts/']['get']\nexport type getChart = paths['/charts/{chart_id}']['get']\n\nexport type getSailV2_5 = paths['/risk_assessment/sora/v2.5/sail']['get']\nexport type calculateResidualArcV2_5 = paths['/risk_assessment/sora/v2.5/residual_arc']['post']\nexport type getAllArcsV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications']['get']\nexport type getArcV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}']['get']\nexport type generateSoraReportV2_5 = paths['/risk_assessment/sora/v2.5/report']['post']\nexport type generateSoraSemanticModelVolumesV2_5 = paths['/risk_assessment/sora/v2.5/semantic_model_volumes']['post']\n\nexport type getAllArcsUk = paths['/risk_assessment/sora/uk/air_risk_classifications']['get']\nexport type getArcUk = paths['/risk_assessment/sora/uk/air_risk_classifications/{arc_id}']['get']\nexport type getSailUk = paths['/risk_assessment/sora/uk/sail']['get']\nexport type calculateResidualArcUk = paths['/risk_assessment/sora/uk/residual_arc']['post']\nexport type createSoraReportUk = paths['/risk_assessment/sora/uk/report']['post']\nexport type createSoraSemanticModelVolumesUk = paths['/risk_assessment/sora/uk/semantic_model_volumes']['post']\n\nexport type createSoraClassification = paths['/risk_assessment/sora/classifications']['post']\nexport type updateSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['put']\nexport type getSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['get']\n\nexport type getAllControlledGroundAreas = paths['/risk_assessment/sora/controlled_ground_areas/']['get']\nexport type createControlledGroundArea = paths['/risk_assessment/sora/controlled_ground_areas/']['post']\nexport type getControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['get']\nexport type updateControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['put']\nexport type deleteControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['delete']\n\nexport type getAllAtypicalAirspaces = paths['/risk_assessment/sora/atypical_airspaces/']['get']\nexport type createAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/']['post']\nexport type getAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['get']\nexport type updateAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['put']\nexport type deleteAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['delete']\n\nexport type createRasterPattern = paths['/flight_patterns/raster']['post']\n\nexport type getGeocage = paths['/geocages/{geocage_id}']['get']\nexport type getAllGeocages = paths['/geocages/']['get']\nexport type createGeocage = paths['/geocages/']['post']\nexport type updateGeocage = paths['/geocages/{geocage_id}']['put']\nexport type deleteGeocage = paths['/geocages/{geocage_id}']['delete']\n\nexport type getCostDataset = paths['/cost_datasets/{cost_dataset_id}']['get']\nexport type getAllCostDatasets = paths['/cost_datasets/']['get']\nexport type createCostDataset = paths['/cost_datasets/']['post']\nexport type deleteCostDataset = paths['/cost_datasets/{cost_dataset_id}']['delete']\nexport type createCostDatasetShare = paths['/cost_datasets/{cost_dataset_id}/shares']['post']\nexport type getCostDatasetShare = paths['/cost_datasets/{cost_dataset_id}/shares/{share_id}']['get']\nexport type getAllCostDatasetShares = paths['/cost_datasets/{cost_dataset_id}/shares']['get']\n\nexport class Direct {\n private fetcher: ReturnType<typeof createFetcher<paths>>\n public constructor(fetcher: ReturnType<typeof createFetcher<paths>>) {\n this.fetcher = fetcher\n }\n\n /// flightplans\n\n public async getAllFlightplans<Opts extends requestOptions = {}>(\n args: queryOf<getAllFlightplans>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((flightplan) => flightplan.data) }\n } else {\n return resp\n }\n }\n\n public async createDraftFlightplan<Opts extends requestOptions = {}>(\n args: bodyOf<createDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flightplans/', { body: args }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyDraftFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<modifyDraftFlightplan>['flightplan_id'],\n args: bodyOf<modifyDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/flightplans/{flightplan_id}',\n { body: args, path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplan>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/{flightplan_id}', { path: { flightplan_id: id } }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // FIXME: this name is poor\n public async getFlightplanWaypointsDetailed<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanWaypointsDetailed>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/waypoints_detail',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanProfile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanProfile>['flightplan_id'],\n args: queryOf<getFlightplanProfile>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/profile',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanStatistics<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanStatistics>['flightplan_id'],\n args: queryOf<getFlightplanStatistics>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/statistics',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanVolumes<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanVolumes>['flightplan_id'],\n args: queryOf<getFlightplanVolumes>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/volumes',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // TODO: make a wrapper for this which updates the existing flightplan to have this new start time\n public async getFlightplanDeconflictedStartTime<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanDeconflictedStartTime>['flightplan_id'],\n args: queryOf<getFlightplanDeconflictedStartTime>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/start_time_deconflict',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeFlightplanState<Opts extends requestOptions = {}>(\n id: pathOf<changeFlightplanState>['flightplan_id'],\n state: bodyOf<changeFlightplanState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/flightplans/{flightplan_id}/state',\n { path: { flightplan_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n // TODO: use `args` instead of fileFormat\n public async getFlightplanAsFile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanAsFile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/content',\n { path: { flightplan_id: id }, header: { accept: 'application/vnd.google-earth.kml+xml' } },\n { ...(opts as Opts), parseAs: 'blob' }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: { file: resp.data, fileName: resp.response.headers.get('filename') } }\n }\n return resp\n }\n\n /// airspace constraints\n\n public async createAirspaceConstraint<Opts extends requestOptions = {}>(\n args: bodyOf<createAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/airspace_constraints/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllAirspaceConstraints<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/airspace_constraints/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((constraint) => constraint.data) }\n }\n return resp\n }\n\n public async getAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<getAirspaceConstraint>['airspace_constraint_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<modifyAirspaceConstraint>['airspace_constraint_id'],\n args: bodyOf<modifyAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id }, body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeAirspaceConstraintState<Opts extends requestOptions = {}>(\n id: pathOf<changeAirspaceConstraintState>['airspace_constraints_id'],\n state: bodyOf<changeAirspaceConstraintState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/airspace_constraints/{airspace_constraints_id}/state',\n { path: { airspace_constraints_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// pathing tasks\n\n public async createPathingTask<Opts extends requestOptions = {}>(\n args: bodyOf<createPathingTask>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/pathing_tasks/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getPathingTask<Opts extends requestOptions = {}>(\n id: pathOf<getPathingTask>['pathing_task_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/pathing_tasks/{pathing_task_id}',\n { path: { pathing_task_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public getPathingTaskStateStream(id: pathOf<getPathingTaskStateStream>['pathing_task_id']): EventSource {\n return this.fetcher.STREAM(`/pathing_tasks/{pathing_task_id}/state`, {\n path: { pathing_task_id: id }\n })\n }\n\n /// charts\n\n public async getAllCharts<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/charts/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((chart) => chart.data) }\n }\n return resp\n }\n\n public async getChart<Opts extends requestOptions = {}>(\n id: pathOf<getChart>['chart_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/charts/{chart_id}', { path: { chart_id: id } }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// risk assessment\n public async getSailV2_5<Opts extends requestOptions = {}>(args: queryOf<getSailV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsV2_5<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcV2_5<Opts extends requestOptions = {}>(args: pathOf<getArcV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraReportV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsUk<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcUk<Opts extends requestOptions = {}>(args: pathOf<getArcUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSailUk<Opts extends requestOptions = {}>(args: queryOf<getSailUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcUk<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportUk<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraReportUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesUk<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async createSoraClassification<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/classifications', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<updateSoraClassification>['classification_id'],\n args: bodyOf<updateSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/classifications/{classification_id}',\n { body: args, path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<getSoraClassification>['classification_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/classifications/{classification_id}',\n { path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// controlled ground areas\n public async getAllControlledGroundAreas<Opts extends requestOptions = {}>(\n args: queryOf<getAllControlledGroundAreas>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/controlled_ground_areas/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return {\n ...resp,\n data: resp.data.data.map((controlledGroundArea) => controlledGroundArea.data)\n }\n } else {\n return resp\n }\n }\n\n public async createControlledGroundArea<Opts extends requestOptions = {}>(\n args: bodyOf<createControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/controlled_ground_areas/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<getControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateControlledGroundArea<Opts extends requestOptions = {}>(\n id: pathOf<updateControlledGroundArea>['controlled_ground_area_id'],\n args: bodyOf<updateControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { body: args, path: { controlled_ground_area_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<deleteControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// atypical airspaces\n public async getAllAtypicalAirspaces<Opts extends requestOptions = {}>(\n args: queryOf<getAllAtypicalAirspaces>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/atypical_airspaces/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((atypicalAirspace) => atypicalAirspace.data) }\n } else {\n return resp\n }\n }\n\n public async createAtypicalAirspace<Opts extends requestOptions = {}>(\n args: bodyOf<createAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/atypical_airspaces/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<getAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateAtypicalAirspace<Opts extends requestOptions = {}>(\n id: pathOf<updateAtypicalAirspace>['atypical_airspace_id'],\n args: bodyOf<updateAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { body: args, path: { atypical_airspace_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<deleteAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// geocages\n public async createGeocage<Opts extends requestOptions = {}>(\n args: bodyOf<createGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/geocages/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getGeocage<Opts extends requestOptions = {}>(args: pathOf<getGeocage>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllGeocages<Opts extends requestOptions = {}>(\n args: queryOf<getAllGeocages>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/geocages/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n } else {\n return resp\n }\n }\n\n public async updateGeocage<Opts extends requestOptions = {}>(\n id: pathOf<updateGeocage>['geocage_id'],\n args: bodyOf<updateGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/geocages/{geocage_id}',\n { body: args, path: { geocage_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteGeocage<Opts extends requestOptions = {}>(\n args: pathOf<deleteGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// cost datasets\n\n public async getCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<getCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasets<Opts extends requestOptions = {}>(\n args: queryOf<getAllCostDatasets>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/cost_datasets/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n public async createCostDataset<Opts extends requestOptions = {}>(\n args: {\n chart_id: string\n name: schemas['CostDatasetResponse']['name']\n valid_time_ranges: schemas['RasterValidityTime'][]\n geotiff: Blob\n },\n opts?: Opts | requestOptions\n ) {\n const formData = new FormData()\n formData.append('chart_id', args.chart_id)\n formData.append('name', args.name)\n formData.append('valid_time_ranges', JSON.stringify(args.valid_time_ranges))\n formData.append('geotiff', args.geotiff)\n\n const resp = await this.fetcher.POST(\n '/cost_datasets/',\n { body: formData },\n {\n ...(opts as Opts),\n // when sending a FormData object the browser will automatically\n // set the Content-Type header to the correct value, if (and only if)\n // you don't set it yourself\n contentType: 'none'\n }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<deleteCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n public async createCostDatasetShare<Opts extends requestOptions = {}>(\n id: pathOf<createCostDatasetShare>['cost_dataset_id'],\n args: bodyOf<createCostDatasetShare>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/cost_datasets/{cost_dataset_id}/shares',\n { body: args, path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getCostDatasetShare<Opts extends requestOptions = {}>(\n cost_dataset_id: pathOf<getCostDatasetShare>['cost_dataset_id'],\n share_id: pathOf<getCostDatasetShare>['share_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}/shares/{share_id}',\n { path: { cost_dataset_id: cost_dataset_id, share_id: share_id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasetShares<Opts extends requestOptions = {}>(\n id: pathOf<getAllCostDatasetShares>['cost_dataset_id'],\n args: queryOf<getAllCostDatasetShares>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}/shares',\n { query: args, path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n /// flight patterns\n\n public async createRasterPattern<Opts extends requestOptions = {}>(\n args: bodyOf<createRasterPattern>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flight_patterns/raster', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n}\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n const contentLength = response.headers.get(\"Content-Length\");\n if (response.status === 204 || request.method === \"HEAD\" || contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\")) {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n const getResponseData = async () => {\n if (parseAs === \"stream\") {\n return response.body;\n }\n if (parseAs === \"json\" && !contentLength) {\n const raw = await response.text();\n return raw ? JSON.parse(raw) : void 0;\n }\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import { createQuerySerializer, defaultPathSerializer, ParseAs, ParseAsResponse } from 'openapi-fetch'\nimport {\n FilterKeys,\n HasRequiredKeys,\n HttpMethod,\n OkStatus,\n PathsWithMethod,\n ResponseObjectMap,\n SuccessResponse\n} from 'openapi-typescript-helpers'\n\nimport { version } from '../package.json'\nimport { bodyOf, Expand, schemas, UnauthenticatedError } from './types'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n parseAs?: ParseAs\n // if 'none' is provided, then no Content-Type will be set\n contentType?: 'application/json' | 'none'\n}\n\ntype requestData = {\n query?: Record<string, unknown>\n path?: Record<string, string>\n header?: Record<string, string>\n body?: BodyInit\n}\n\n/**\n * Get the types of the parameters of an endpoint but if it does not have any\n * typing for some reason then fallback to a reasonable default\n */\ntype ParamsOption<T> = T extends {\n parameters: any\n}\n ? T['parameters']\n : { query?: Record<string, unknown> }\n\n/**\n * Get the type of the bodyOf an endpoint but if it does not have any required keys, then\n * make it optional\n */\ntype BodyOption<Endpoint> = Endpoint extends {\n requestBody: { content: { 'application/json': any } }\n}\n ? HasRequiredKeys<bodyOf<Endpoint>> extends never\n ? { body?: bodyOf<Endpoint> | undefined }\n : { body: bodyOf<Endpoint> }\n : { body?: Record<string, unknown> | BodyInit }\n\n/**\n * Combines the body and other parameters into one type, with stuff being optional\n */\ntype MaybeOptionalParams<Params extends Record<HttpMethod, {}>, Location extends keyof Params> = ParamsOption<\n FilterKeys<Params, Location>\n> &\n BodyOption<FilterKeys<Params, Location>>\n\n/**\n * Gets the error statuses of an endpoint\n */\ntype ErrorStatusOf<T> = T extends { responses: Record<number, any> }\n ? keyof T['responses'] extends number | string\n ? `${Exclude<keyof T['responses'], OkStatus>}`\n : string\n : string\n\n/**\n * An {@link SdkErrorModel} but with narrowed status codes\n */\ntype SdkErrorModelGeneric<T = undefined> = {\n errors: Array<{\n detail: string\n /** some status code */\n status: ErrorStatusOf<T>\n }>\n status: ErrorStatusOf<T>\n}\n\n/**\n * The error model returned from the SDK\n * Will always contain at least one element!\n */\nexport type SdkErrorModel = {\n errors: Array<{\n detail: string\n /** some status code */\n status: string\n }>\n status: string\n}\n\ntype EndpointWithResponses = { responses: Record<number, any> }\n\ntype FetchResponse<T, Opts extends requestOptions> =\n | {\n data: T extends EndpointWithResponses ? ParseAsResponse<SuccessResponse<ResponseObjectMap<T>>, Opts> : unknown\n error?: never\n response: Response\n aborted: false\n }\n | {\n data?: never\n error: Expand<T extends EndpointWithResponses ? SdkErrorModelGeneric<T> : unknown>\n response: Response\n aborted: false\n }\n // If Opts is not {} and Opts[\"abortKey\"] is either\n // 'string | undefined' or 'string' but not just 'undefined'\n // then we could return `aborted: true`\n | (keyof Opts extends never\n ? never\n : Opts['abortKey'] extends undefined\n ? never\n : Opts['abortKey'] extends string | undefined\n ? {\n data?: never\n error?: never\n response?: never\n aborted: true\n }\n : never)\n\nconst querySerializer = createQuerySerializer()\n\nexport type FetcherArgs = {\n /** Base url for all fetch requests */\n url: string\n /** Override the fetch function used for requests */\n fetchFn?: typeof globalThis.fetch\n /** Override the fetch function used for auth requests */\n authFetchFn?: typeof globalThis.fetch\n /** Used for auth, needed unless ignoreAuth is true */\n username?: string\n /** Used for auth, needed unless ignoreAuth is true */\n password?: string\n /** Do not do the automatic /login requests */\n ignoreAuth: boolean\n}\n\nexport class Fetcher<Paths extends Record<string, Record<HttpMethod, {}>>> {\n private opts: FetcherArgs\n\n private aborts: Record<string, AbortController>\n private accessToken: string | undefined\n private expiry: number\n\n public constructor(args: Partial<FetcherArgs>) {\n this.opts = {\n url: args.url ?? 'https://via.volantautonomy.com/api/v1.0',\n fetchFn: args.fetchFn ?? undefined,\n authFetchFn: args.authFetchFn ?? undefined,\n username: args.username,\n password: args.password,\n ignoreAuth: args.ignoreAuth ?? false\n }\n this.aborts = {}\n this.accessToken = undefined\n this.expiry = Date.now() - 5\n }\n\n private async doAuth() {\n // NOTE: THIS REQUEST IS NOT TYPE CHECKED PROPERLY AS paths IS NOT KNOWN HERE!\n if (this.opts.username === undefined || this.opts.password === undefined) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n\n const authFetchFn = this.opts.authFetchFn ?? globalThis.fetch\n const resp = await authFetchFn(this.opts.url + '/login', {\n body: JSON.stringify({\n username: this.opts.username,\n password: this.opts.password\n }),\n redirect: 'follow',\n method: 'post',\n headers: { 'Content-Type': 'application/json', 'X-Via-Sdk-Version': version }\n })\n\n if (resp.ok) {\n const data = (await resp.json()) as schemas['LoginResponse']\n this.expiry = Date.now() + data.expires_in - 10\n this.accessToken = data.access_token\n } else {\n throw new UnauthenticatedError('Invalid credentials')\n }\n }\n\n /** Takes in an abort key to determine what abort signals should be fired and a new signal */\n private handleAbortKey(abortKey?: string) {\n if (abortKey) {\n this.aborts[abortKey]?.abort()\n\n const abortController = new AbortController()\n this.aborts[abortKey] = abortController\n return abortController.signal\n }\n return undefined\n }\n\n /** Transforms an error from the api into an {@link SdkErrorModel} */\n private async parseError(response: Response): Promise<SdkErrorModel> {\n const data = await response.text()\n let errorData: schemas['JsonApiExceptionResponse']\n // NOTE: This function does not handle the case where the API returns valid json\n // that does not fit the schema (as in the `errors` list is missing)\n\n try {\n errorData = JSON.parse(data) as schemas['JsonApiExceptionResponse']\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: data\n }\n ]\n }\n } else {\n throw err\n }\n }\n\n if (errorData.errors.length === 0) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: ''\n }\n ]\n }\n } else {\n return {\n status: String(response.status),\n errors: errorData.errors.map((err) => {\n return {\n status: String(err.status),\n detail: err.detail\n }\n })\n }\n }\n }\n\n // source: https://github.com/openapi-ts/openapi-typescript/blob/f21c05b9afcc89ee6ef73edab4045620b410eb01/packages/openapi-fetch/src/index.js#L447\n private createFinalURL(\n path: string,\n options: {\n query?: Record<string, unknown>\n path?: Record<string, unknown>\n }\n ) {\n let finalURL = `${this.opts.url}${path}`\n if (options?.path) {\n finalURL = defaultPathSerializer(finalURL, options.path)\n }\n const search = querySerializer(options.query ?? {})\n if (search) {\n finalURL += `?${search}`\n }\n return finalURL\n }\n\n /** The actual fetch wrapper. It is type inference blind, beyond the parseAs type */\n private async fetcher<Opts extends requestOptions>(\n method: HttpMethod,\n path: string,\n data?: requestData,\n opts?: Opts\n ) {\n if (!this.opts.ignoreAuth) {\n if (!this.accessToken || this.expiry <= Date.now()) {\n await this.doAuth()\n }\n }\n\n const fetchFn = opts?.fetch ?? this.opts.fetchFn ?? globalThis.fetch\n const parseAs: ParseAs = opts?.parseAs ?? 'json'\n const contentType = opts?.contentType ?? 'application/json'\n const body = contentType === 'application/json' ? JSON.stringify(data?.body) : data?.body\n\n const headers: HeadersInit = { 'X-Via-Sdk-Version': version }\n if (contentType !== 'none') {\n headers['Content-Type'] = contentType\n }\n\n const request = new Request(this.createFinalURL(path, { query: data?.query, path: data?.path }), {\n redirect: 'follow',\n signal: this.handleAbortKey(opts?.abortKey),\n body,\n headers: {\n ...headers,\n ...data?.header\n },\n method\n })\n\n if (!this.opts.ignoreAuth) {\n request.headers.set('Authorization', `Bearer ${this.accessToken}`)\n }\n\n let response: Response\n try {\n response = await fetchFn(request)\n } catch (err: any) {\n if (err.name === 'AbortError') {\n return { aborted: true as const }\n }\n throw err\n }\n\n if (response.status === 401) {\n throw new UnauthenticatedError('Unauthenticated')\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n // NOTE: this does lie to the user, as we say it is undefined\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n return response.ok\n ? { data: {}, aborted: false as const, response }\n : { error: {}, aborted: false as const, response }\n }\n\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === 'stream') {\n return { data: response.body, aborted: false as const, response }\n }\n return { data: await response[parseAs](), aborted: false as const, response }\n }\n\n return { error: await this.parseError(response), aborted: false as const }\n }\n\n public async GET<\n Path extends PathsWithMethod<Paths, 'get'>,\n Data extends MaybeOptionalParams<Paths[Path], 'get'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('get', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['get'], Opts>>\n }\n\n public async PUT<\n Path extends PathsWithMethod<Paths, 'put'>,\n Data extends MaybeOptionalParams<Paths[Path], 'put'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('put', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['put'], Opts>>\n }\n\n public async POST<\n Path extends PathsWithMethod<Paths, 'post'>,\n Data extends MaybeOptionalParams<Paths[Path], 'post'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['post'], Opts>>\n }\n\n public async DELETE<\n Path extends PathsWithMethod<Paths, 'delete'>,\n Data extends MaybeOptionalParams<Paths[Path], 'delete'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('delete', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['delete'], Opts>>\n }\n\n public async OPTIONS<\n Path extends PathsWithMethod<Paths, 'options'>,\n Data extends MaybeOptionalParams<Paths[Path], 'options'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('options', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['options'], Opts>>\n }\n\n public async HEAD<\n Path extends PathsWithMethod<Paths, 'head'>,\n Data extends MaybeOptionalParams<Paths[Path], 'head'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['head'], Opts>>\n }\n\n public STREAM<Path extends PathsWithMethod<Paths, 'get'>, Data extends MaybeOptionalParams<Paths[Path], 'get'>>(\n path: Path,\n data: HasRequiredKeys<Data> extends never ? Data | undefined : Data\n ) {\n const downcastedData = data as requestData\n const url = this.createFinalURL(path as string, {\n query: downcastedData?.query,\n path: downcastedData?.path\n })\n return new EventSource(url)\n }\n}\n\n// indirection is required to get ts to accept the type magic\n//* * `paths` MUST be passed in as a generic type arg or type inference falls apart */\nexport default function createFetcher<Paths extends {}>(...args: ConstructorParameters<typeof Fetcher>) {\n return new Fetcher<Paths>(...args)\n}\n","import { Composite } from './composite'\nimport { Direct } from './direct'\nimport createFetcher, { FetcherArgs } from './fetch'\nimport { UnauthenticatedError } from './types'\nimport type { paths } from './volant-schema'\n\nexport function createSDK(opts: Partial<FetcherArgs>) {\n if (!opts.ignoreAuth && (opts.username === undefined || opts.password === undefined)) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n const fetcher = createFetcher<paths>(opts)\n\n const newDirect = new Direct(fetcher)\n return {\n direct: newDirect,\n composite: new Composite(newDirect)\n }\n}\n","import { Checkpoint, schemas, Waypoint } from './types'\n\n/** Takes in an array of coordinates and flight options, and returns an array of checkpoints for use in the other functions */\nexport function generateCheckpointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position-Input']>\n options: schemas['PathingCheckpointParameters']\n}): Checkpoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Checkpoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n waypoints.push({\n type: 'goto',\n position,\n parameters: options\n })\n }\n\n return waypoints\n}\n\n/** Takes in an array of coordinates and flight options, and returns an array of waypoints for use in the other functions */\nexport function generateWaypointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position-Input']>\n options: {\n flight_parameters: schemas['FlightParameters']\n wind_parameters?: schemas['WindParameters']\n }\n}): Waypoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Waypoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n if (options.wind_parameters)\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters,\n wind_parameters: options.wind_parameters\n })\n else\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters\n })\n }\n\n return waypoints\n}\n\n/** Converts from seconds since epoch to a RFC3339-formatted datetime string */\nexport function rfcDateTime(secondsEpoch: EpochTimeStamp): string {\n return new Date(secondsEpoch * 1000).toISOString().slice(0, 16) + 'Z'\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[3]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/composite.ts","../src/direct.ts","../node_modules/.pnpm/openapi-fetch@0.17.0/node_modules/openapi-fetch/dist/index.mjs","../src/fetch.ts","../src/client.ts","../src/utils.ts"],"sourcesContent":["import { OperationRequestBodyContent } from 'openapi-typescript-helpers'\n\nimport type { components } from './volant-schema'\n\nexport const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))\n\n/**\n * Coerces typescript into more fully evaluating a type to make it more readable\n * @example\n * type X = {\n * a: string | number\n * } & {\n * a: string\n * }\n * Expand<X> == {a: string}\n * // without expand it is not simplified by TS when being shown,\n * // even though it is equivalent to just {a: string}\n */\nexport type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never\n\n/** The raw API schemas from openapi.json */\nexport type schemas = components['schemas']\nexport type Waypoint = schemas['StartWaypoint-Input'] | schemas['GotoWaypoint-Input']\nexport type Checkpoint = schemas['GotoPathingCheckpoint'] | schemas['StartPathingCheckpoint']\nexport type PathingTaskState = schemas['PathingTaskState']\n\nexport class UnauthenticatedError extends Error {\n // Both properties are needed to allow for errors to be identified when used in scenarios such\n // as 'PromiseRejectionEvent' such as:\n // `if (errorEvent.reason.name === UnauthenticatedError.name)`\n // In the above, the first is the instance property and the latter a class property\n public override name = 'Unauthenticated'\n // FIXME: this was valid in the via codebase for some reason.\n // public static override name = 'Unauthenticated'\n}\n\n/**\n * Gets the type of the body input for an endpoint\n * @example\n * bodyOf<paths[\"/login\"][\"post\"]> = {username: string, password: string}\n */\nexport type bodyOf<T> = OperationRequestBodyContent<T>\n/** Gets the type of the query input for an endpoint */\nexport type queryOf<T> = T extends { parameters: { query?: infer P } } ? P : never\n/** Gets the type of the path input for an endpoint */\nexport type pathOf<T> = T extends { parameters: { path?: infer P } } ? P : never\n/** Gets the type of the header input for an endpoint */\nexport type headerOf<T> = T extends { parameters: { header?: infer P } } ? P : never\n","import { createPathingTask, Direct, PathingTaskEvent } from './direct'\nimport { schemas, sleep } from './types'\n\nexport type StreamError = {\n errors: {\n detail: string\n status: string\n }[]\n status: string\n}\n\nclass StreamFailedError extends Error {}\n\nclass TaskTimeoutError extends Error {}\n\nconst PathingTaskTimeout = 30_000\nconst ValidStreamTimeout = 5_000\n\nexport class Composite {\n private direct: Direct\n public constructor(direct: Direct) {\n this.direct = direct\n }\n /// flightplans\n\n public async upsertFlightplan(args: schemas['Flightplan-Input'], id: string | null | undefined) {\n if (id) {\n return this.direct.modifyDraftFlightplan(id, args)\n } else {\n return this.direct.createDraftFlightplan(args)\n }\n }\n\n public async getAllDraftFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Draft'] })\n }\n\n public async getAllClosedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Closed'] })\n }\n\n public async getAllPendingFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Pending'] })\n }\n\n public async getAllAcceptedFlightplans() {\n return this.direct.getAllFlightplans({ 'filter[state]': ['Accepted'] })\n }\n\n // TODO: make error 409 more obvious, as it is different\n public async attemptAcceptFlightplan(id: string) {\n return this.direct.changeFlightplanState(id, 'Accepted')\n }\n\n public async attemptTemporalDeconfliction(id: string, timeInterval: number = 60) {\n const startTimeDeconflictArgs = {\n time_interval: timeInterval\n }\n\n const { data, error } = await this.direct.getFlightplanDeconflictedStartTime(id, startTimeDeconflictArgs)\n if (error) {\n return { error }\n }\n\n return this.direct.modifyDraftFlightplan(id, data.attributes)\n }\n\n /// pathing tasks\n\n /**\n * Handles fetching a pathing task once it has reached a final state. This will be completed through one of two\n * methods:\n *\n * - Event stream (default) - Opens an event stream and optionally calls onMessage when the state changes. The\n * callback will not be called once the task is complete as the task being complete can be inferred from the stream\n * being closed.\n *\n * - Polling (fallback) - Occurs automatically if the connection to the event stream is unsuccessful or the stream\n * fails. Polls every 0.5s whilst queuing and every 0.2s whilst in progress. Note if onMessage is defined it is\n * called on every poll.\n * @param taskId - A UUID value that identifies a pathing task\n * @param onMessage - Callback that is called upon receiving details on the state of the pathing task\n * @returns - The result of the pathing task\n */\n public async getPathingTaskResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n try {\n await this.pathingTaskStreamResult(taskId, onMessage)\n } catch (error: unknown) {\n if (error instanceof StreamFailedError) {\n await this.pathingTaskPollResult(taskId, onMessage)\n }\n }\n return this.direct.getPathingTask(taskId)\n }\n\n /** Handles creating and waiting for the result of a pathing task. */\n public async doPathingTask(args: createPathingTask['requestBody']['content']['application/json']) {\n const createdTask = await this.direct.createPathingTask(args)\n if (createdTask.error) {\n return createdTask.error\n }\n\n const id = createdTask.data.id\n\n return await this.getPathingTaskResult(id)\n }\n\n private async pathingTaskStreamResult(taskId: string, onMessage?: (payload: PathingTaskEvent) => void) {\n let streamConnectionTimeout: ReturnType<typeof setTimeout>\n let streamNotSuccessfulTimeout: ReturnType<typeof setTimeout>\n\n const promise = new Promise((resolve, reject) => {\n const stream = this.direct.getPathingTaskStateStream(taskId)\n\n streamConnectionTimeout = setTimeout(() => {\n if (stream.readyState !== EventSource.OPEN) {\n stream.close()\n reject(new StreamFailedError('Timeout connecting'))\n }\n }, ValidStreamTimeout)\n\n streamNotSuccessfulTimeout = setTimeout(() => {\n stream.close()\n reject(new TaskTimeoutError('Timeout whilst waiting for successful result'))\n }, PathingTaskTimeout)\n\n stream.onmessage = async (event: MessageEvent) => {\n // TODO(Jack): Use a discriminated union\n const data = JSON.parse(event.data) as {\n payload: PathingTaskEvent\n error: boolean\n }\n\n if (data.error === true) {\n stream.close()\n reject(new Error(`Task stream returned error: ${data.payload}`))\n return\n }\n\n onMessage?.(data.payload)\n\n if (data.payload.terminated === true) {\n stream.close()\n resolve(data.payload)\n }\n }\n\n stream.onerror = (error: Event) => {\n stream.close()\n reject(new StreamFailedError(`Stream failed: ${error}`))\n }\n })\n\n return promise.finally(() => {\n clearTimeout(streamConnectionTimeout)\n clearTimeout(streamNotSuccessfulTimeout)\n })\n }\n\n private async pathingTaskPollResult(\n taskId: string,\n onMessage?: (payload: PathingTaskEvent) => void\n ): Promise<void | StreamError> {\n let runPathing = true\n\n while (runPathing) {\n setTimeout(() => {\n runPathing = false\n }, PathingTaskTimeout)\n\n const pathingTaskResult = await this.direct.getPathingTask(taskId)\n if (pathingTaskResult.error) {\n return pathingTaskResult.error\n }\n if (pathingTaskResult.data.meta.state === 'successful' || pathingTaskResult.data.meta.state === 'failed') {\n return\n }\n\n const pathingTaskPayload = {\n state: pathingTaskResult.data.meta.state,\n terminated: false\n }\n\n // TODO: Make this only on change from previous\n onMessage?.(pathingTaskPayload)\n\n switch (pathingTaskResult.data.meta.state) {\n case 'queued':\n await sleep(500)\n break\n case 'in-progress':\n await sleep(200)\n break\n }\n }\n }\n}\n","import createFetcher from './fetch'\nimport { bodyOf, PathingTaskState, pathOf, queryOf, schemas } from './types'\nimport type { paths } from './volant-schema'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n}\n\nexport type PathingTaskEvent = {\n state: PathingTaskState\n terminated: boolean\n}\n\n// These type names must match their function names, so the docstrings\n// can be copied over from the schema\nexport type getAllFlightplans = paths['/flightplans/']['get']\nexport type createDraftFlightplan = paths['/flightplans/']['post']\nexport type modifyDraftFlightplan = paths['/flightplans/{flightplan_id}']['put']\nexport type getFlightplan = paths['/flightplans/{flightplan_id}']['get']\nexport type getFlightplanWaypointsDetailed = paths['/flightplans/{flightplan_id}/waypoints_detail']['get']\nexport type getFlightplanStatistics = paths['/flightplans/{flightplan_id}/statistics']['get']\nexport type getFlightplanVolumes = paths['/flightplans/{flightplan_id}/volumes']['get']\nexport type getFlightplanDeconflictedStartTime = paths['/flightplans/{flightplan_id}/start_time_deconflict']['get']\nexport type getFlightplanProfile = paths['/flightplans/{flightplan_id}/profile']['get']\nexport type changeFlightplanState = paths['/flightplans/{flightplan_id}/state']['post']\nexport type getFlightplanAsFile = paths['/flightplans/{flightplan_id}/content']['get']\n\nexport type createAirspaceConstraint = paths['/airspace_constraints/']['post']\nexport type getAllAirspaceConstraints = paths['/airspace_constraints/']['get']\nexport type getAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['get']\nexport type modifyAirspaceConstraint = paths['/airspace_constraints/{airspace_constraint_id}']['put']\nexport type changeAirspaceConstraintState = paths['/airspace_constraints/{airspace_constraints_id}/state']['post']\n\nexport type createPathingTask = paths['/pathing_tasks/']['post']\nexport type getPathingTask = paths['/pathing_tasks/{pathing_task_id}']['get']\nexport type getPathingTaskStateStream = paths['/pathing_tasks/{pathing_task_id}/state']['get']\n\nexport type getAllCharts = paths['/charts/']['get']\nexport type getChart = paths['/charts/{chart_id}']['get']\n\nexport type getSailV2_5 = paths['/risk_assessment/sora/v2.5/sail']['get']\nexport type calculateResidualArcV2_5 = paths['/risk_assessment/sora/v2.5/residual_arc']['post']\nexport type getAllArcsV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications']['get']\nexport type getArcV2_5 = paths['/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}']['get']\nexport type generateSoraReportV2_5 = paths['/risk_assessment/sora/v2.5/report']['post']\nexport type generateSoraSemanticModelVolumesV2_5 = paths['/risk_assessment/sora/v2.5/semantic_model_volumes']['post']\n\nexport type getAllArcsUk = paths['/risk_assessment/sora/uk/air_risk_classifications']['get']\nexport type getArcUk = paths['/risk_assessment/sora/uk/air_risk_classifications/{arc_id}']['get']\nexport type getSailUk = paths['/risk_assessment/sora/uk/sail']['get']\nexport type calculateResidualArcUk = paths['/risk_assessment/sora/uk/residual_arc']['post']\nexport type createSoraReportUk = paths['/risk_assessment/sora/uk/report']['post']\nexport type createSoraSemanticModelVolumesUk = paths['/risk_assessment/sora/uk/semantic_model_volumes']['post']\n\nexport type createSoraClassification = paths['/risk_assessment/sora/classifications']['post']\nexport type updateSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['put']\nexport type getSoraClassification = paths['/risk_assessment/sora/classifications/{classification_id}']['get']\n\nexport type getAllControlledGroundAreas = paths['/risk_assessment/sora/controlled_ground_areas/']['get']\nexport type createControlledGroundArea = paths['/risk_assessment/sora/controlled_ground_areas/']['post']\nexport type getControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['get']\nexport type updateControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['put']\nexport type deleteControlledGroundArea =\n paths['/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}']['delete']\n\nexport type getAllAtypicalAirspaces = paths['/risk_assessment/sora/atypical_airspaces/']['get']\nexport type createAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/']['post']\nexport type getAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['get']\nexport type updateAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['put']\nexport type deleteAtypicalAirspace = paths['/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}']['delete']\n\nexport type createRasterPattern = paths['/flight_patterns/raster']['post']\n\nexport type getGeocage = paths['/geocages/{geocage_id}']['get']\nexport type getAllGeocages = paths['/geocages/']['get']\nexport type createGeocage = paths['/geocages/']['post']\nexport type updateGeocage = paths['/geocages/{geocage_id}']['put']\nexport type deleteGeocage = paths['/geocages/{geocage_id}']['delete']\n\nexport type getCostDataset = paths['/cost_datasets/{cost_dataset_id}']['get']\nexport type getAllCostDatasets = paths['/cost_datasets/']['get']\nexport type createCostDataset = paths['/cost_datasets/']['post']\nexport type deleteCostDataset = paths['/cost_datasets/{cost_dataset_id}']['delete']\nexport type createCostDatasetShare = paths['/cost_datasets/{cost_dataset_id}/shares']['post']\nexport type getCostDatasetShare = paths['/cost_datasets/{cost_dataset_id}/shares/{share_id}']['get']\nexport type getAllCostDatasetShares = paths['/cost_datasets/{cost_dataset_id}/shares']['get']\nexport type deleteCostDatasetShare = paths['/cost_datasets/{cost_dataset_id}/shares/{share_id}']['delete']\n\nexport class Direct {\n private fetcher: ReturnType<typeof createFetcher<paths>>\n public constructor(fetcher: ReturnType<typeof createFetcher<paths>>) {\n this.fetcher = fetcher\n }\n\n /// flightplans\n\n public async getAllFlightplans<Opts extends requestOptions = {}>(\n args: queryOf<getAllFlightplans>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((flightplan) => flightplan.data) }\n } else {\n return resp\n }\n }\n\n public async createDraftFlightplan<Opts extends requestOptions = {}>(\n args: bodyOf<createDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flightplans/', { body: args }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyDraftFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<modifyDraftFlightplan>['flightplan_id'],\n args: bodyOf<modifyDraftFlightplan>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/flightplans/{flightplan_id}',\n { body: args, path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplan<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplan>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/flightplans/{flightplan_id}', { path: { flightplan_id: id } }, opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // FIXME: this name is poor\n public async getFlightplanWaypointsDetailed<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanWaypointsDetailed>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/waypoints_detail',\n { path: { flightplan_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanProfile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanProfile>['flightplan_id'],\n args: queryOf<getFlightplanProfile>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/profile',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanStatistics<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanStatistics>['flightplan_id'],\n args: queryOf<getFlightplanStatistics>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/statistics',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getFlightplanVolumes<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanVolumes>['flightplan_id'],\n args: queryOf<getFlightplanVolumes>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/volumes',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n // TODO: make a wrapper for this which updates the existing flightplan to have this new start time\n public async getFlightplanDeconflictedStartTime<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanDeconflictedStartTime>['flightplan_id'],\n args: queryOf<getFlightplanDeconflictedStartTime>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/start_time_deconflict',\n { path: { flightplan_id: id }, query: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeFlightplanState<Opts extends requestOptions = {}>(\n id: pathOf<changeFlightplanState>['flightplan_id'],\n state: bodyOf<changeFlightplanState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/flightplans/{flightplan_id}/state',\n { path: { flightplan_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n // TODO: use `args` instead of fileFormat\n public async getFlightplanAsFile<Opts extends requestOptions = {}>(\n id: pathOf<getFlightplanAsFile>['flightplan_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/flightplans/{flightplan_id}/content',\n { path: { flightplan_id: id }, header: { accept: 'application/vnd.google-earth.kml+xml' } },\n { ...(opts as Opts), parseAs: 'blob' }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: { file: resp.data, fileName: resp.response.headers.get('filename') } }\n }\n return resp\n }\n\n /// airspace constraints\n\n public async createAirspaceConstraint<Opts extends requestOptions = {}>(\n args: bodyOf<createAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/airspace_constraints/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllAirspaceConstraints<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/airspace_constraints/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((constraint) => constraint.data) }\n }\n return resp\n }\n\n public async getAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<getAirspaceConstraint>['airspace_constraint_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async modifyAirspaceConstraint<Opts extends requestOptions = {}>(\n id: pathOf<modifyAirspaceConstraint>['airspace_constraint_id'],\n args: bodyOf<modifyAirspaceConstraint>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/airspace_constraints/{airspace_constraint_id}',\n { path: { airspace_constraint_id: id }, body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async changeAirspaceConstraintState<Opts extends requestOptions = {}>(\n id: pathOf<changeAirspaceConstraintState>['airspace_constraints_id'],\n state: bodyOf<changeAirspaceConstraintState>['state'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/airspace_constraints/{airspace_constraints_id}/state',\n { path: { airspace_constraints_id: id }, body: { state } },\n opts as Opts\n )\n if (!resp.error && resp.aborted === false) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// pathing tasks\n\n public async createPathingTask<Opts extends requestOptions = {}>(\n args: bodyOf<createPathingTask>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/pathing_tasks/', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getPathingTask<Opts extends requestOptions = {}>(\n id: pathOf<getPathingTask>['pathing_task_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/pathing_tasks/{pathing_task_id}',\n { path: { pathing_task_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public getPathingTaskStateStream(id: pathOf<getPathingTaskStateStream>['pathing_task_id']): EventSource {\n return this.fetcher.STREAM(`/pathing_tasks/{pathing_task_id}/state`, {\n path: { pathing_task_id: id }\n })\n }\n\n /// charts\n\n public async getAllCharts<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/charts/', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((chart) => chart.data) }\n }\n return resp\n }\n\n public async getChart<Opts extends requestOptions = {}>(\n id: pathOf<getChart>['chart_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/charts/{chart_id}', { path: { chart_id: id } }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// risk assessment\n public async getSailV2_5<Opts extends requestOptions = {}>(args: queryOf<getSailV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsV2_5<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/v2.5/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcV2_5<Opts extends requestOptions = {}>(args: pathOf<getArcV2_5>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/v2.5/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraReportV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/v2.5/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesV2_5<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/v2.5/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllArcsUk<Opts extends requestOptions = {}>(opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/air_risk_classifications', {}, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((arc) => arc.data) }\n }\n return resp\n }\n\n public async getArcUk<Opts extends requestOptions = {}>(args: pathOf<getArcUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/uk/air_risk_classifications/{arc_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSailUk<Opts extends requestOptions = {}>(args: queryOf<getSailUk>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/uk/sail', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async calculateResidualArcUk<Opts extends requestOptions = {}>(\n args: bodyOf<calculateResidualArcUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/residual_arc', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraReportUk<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraReportUk>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/uk/report', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async generateSoraSemanticModelVolumesUk<Opts extends requestOptions = {}>(\n args: bodyOf<generateSoraSemanticModelVolumesV2_5>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/risk_assessment/sora/uk/semantic_model_volumes',\n { body: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async createSoraClassification<Opts extends requestOptions = {}>(\n args: bodyOf<createSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/classifications', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<updateSoraClassification>['classification_id'],\n args: bodyOf<updateSoraClassification>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/classifications/{classification_id}',\n { body: args, path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getSoraClassification<Opts extends requestOptions = {}>(\n id: pathOf<getSoraClassification>['classification_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/classifications/{classification_id}',\n { path: { classification_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n /// controlled ground areas\n public async getAllControlledGroundAreas<Opts extends requestOptions = {}>(\n args: queryOf<getAllControlledGroundAreas>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/controlled_ground_areas/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return {\n ...resp,\n data: resp.data.data.map((controlledGroundArea) => controlledGroundArea.data)\n }\n } else {\n return resp\n }\n }\n\n public async createControlledGroundArea<Opts extends requestOptions = {}>(\n args: bodyOf<createControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/controlled_ground_areas/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<getControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateControlledGroundArea<Opts extends requestOptions = {}>(\n id: pathOf<updateControlledGroundArea>['controlled_ground_area_id'],\n args: bodyOf<updateControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { body: args, path: { controlled_ground_area_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteControlledGroundArea<Opts extends requestOptions = {}>(\n args: pathOf<deleteControlledGroundArea>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/controlled_ground_areas/{controlled_ground_area_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// atypical airspaces\n public async getAllAtypicalAirspaces<Opts extends requestOptions = {}>(\n args: queryOf<getAllAtypicalAirspaces>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/risk_assessment/sora/atypical_airspaces/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((atypicalAirspace) => atypicalAirspace.data) }\n } else {\n return resp\n }\n }\n\n public async createAtypicalAirspace<Opts extends requestOptions = {}>(\n args: bodyOf<createAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/risk_assessment/sora/atypical_airspaces/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<getAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async updateAtypicalAirspace<Opts extends requestOptions = {}>(\n id: pathOf<updateAtypicalAirspace>['atypical_airspace_id'],\n args: bodyOf<updateAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { body: args, path: { atypical_airspace_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteAtypicalAirspace<Opts extends requestOptions = {}>(\n args: pathOf<deleteAtypicalAirspace>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/risk_assessment/sora/atypical_airspaces/{atypical_airspace_id}',\n { path: args },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// geocages\n public async createGeocage<Opts extends requestOptions = {}>(\n args: bodyOf<createGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/geocages/', { body: args }, opts as Opts)\n\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getGeocage<Opts extends requestOptions = {}>(args: pathOf<getGeocage>, opts?: Opts | requestOptions) {\n const resp = await this.fetcher.GET('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllGeocages<Opts extends requestOptions = {}>(\n args: queryOf<getAllGeocages>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/geocages/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n } else {\n return resp\n }\n }\n\n public async updateGeocage<Opts extends requestOptions = {}>(\n id: pathOf<updateGeocage>['geocage_id'],\n args: bodyOf<updateGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.PUT(\n '/geocages/{geocage_id}',\n { body: args, path: { geocage_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteGeocage<Opts extends requestOptions = {}>(\n args: pathOf<deleteGeocage>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE('/geocages/{geocage_id}', { path: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// cost datasets\n\n public async getCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<getCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasets<Opts extends requestOptions = {}>(\n args: queryOf<getAllCostDatasets>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET('/cost_datasets/', { query: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n public async createCostDataset<Opts extends requestOptions = {}>(\n args: {\n chart_id: string\n name: schemas['CostDatasetResponse']['name']\n valid_time_ranges: schemas['RasterValidityTime'][]\n geotiff: Blob\n },\n opts?: Opts | requestOptions\n ) {\n const formData = new FormData()\n formData.append('chart_id', args.chart_id)\n formData.append('name', args.name)\n formData.append('valid_time_ranges', JSON.stringify(args.valid_time_ranges))\n formData.append('geotiff', args.geotiff)\n\n const resp = await this.fetcher.POST(\n '/cost_datasets/',\n { body: formData },\n {\n ...(opts as Opts),\n // when sending a FormData object the browser will automatically\n // set the Content-Type header to the correct value, if (and only if)\n // you don't set it yourself\n contentType: 'none'\n }\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async deleteCostDataset<Opts extends requestOptions = {}>(\n id: pathOf<deleteCostDataset>['cost_dataset_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/cost_datasets/{cost_dataset_id}',\n { path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n public async createCostDatasetShare<Opts extends requestOptions = {}>(\n id: pathOf<createCostDatasetShare>['cost_dataset_id'],\n args: bodyOf<createCostDatasetShare>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST(\n '/cost_datasets/{cost_dataset_id}/shares',\n { body: args, path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getCostDatasetShare<Opts extends requestOptions = {}>(\n cost_dataset_id: pathOf<getCostDatasetShare>['cost_dataset_id'],\n share_id: pathOf<getCostDatasetShare>['share_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}/shares/{share_id}',\n { path: { cost_dataset_id: cost_dataset_id, share_id: share_id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n\n public async getAllCostDatasetShares<Opts extends requestOptions = {}>(\n id: pathOf<getAllCostDatasetShares>['cost_dataset_id'],\n args: queryOf<getAllCostDatasetShares>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.GET(\n '/cost_datasets/{cost_dataset_id}/shares',\n { query: args, path: { cost_dataset_id: id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data.map((x) => x.data) }\n }\n return resp\n }\n\n public async deleteCostDatasetShare<Opts extends requestOptions = {}>(\n cost_dataset_id: pathOf<deleteCostDatasetShare>['cost_dataset_id'],\n share_id: pathOf<deleteCostDatasetShare>['share_id'],\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.DELETE(\n '/cost_datasets/{cost_dataset_id}/shares/{share_id}',\n { path: { cost_dataset_id: cost_dataset_id, share_id: share_id } },\n opts as Opts\n )\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: true }\n }\n return resp\n }\n\n /// flight patterns\n\n public async createRasterPattern<Opts extends requestOptions = {}>(\n args: bodyOf<createRasterPattern>,\n opts?: Opts | requestOptions\n ) {\n const resp = await this.fetcher.POST('/flight_patterns/raster', { body: args }, opts as Opts)\n if (resp.error === undefined && !resp.aborted) {\n return { ...resp, data: resp.data.data }\n }\n return resp\n }\n}\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n pathSerializer: globalPathSerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n pathSerializer: requestPathSerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const pathSerializer = requestPathSerializer || globalPathSerializer || defaultPathSerializer;\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer, pathSerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer,\n pathSerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n const contentLength = response.headers.get(\"Content-Length\");\n if (response.status === 204 || request.method === \"HEAD\" || contentLength === \"0\" && !response.headers.get(\"Transfer-Encoding\")?.includes(\"chunked\")) {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n const getResponseData = async () => {\n if (parseAs === \"stream\") {\n return response.body;\n }\n if (parseAs === \"json\" && !contentLength) {\n const raw = await response.text();\n return raw ? JSON.parse(raw) : void 0;\n }\n return await response[parseAs]();\n };\n return { data: await getResponseData(), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = options.pathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import { createQuerySerializer, defaultPathSerializer, ParseAs, ParseAsResponse } from 'openapi-fetch'\nimport {\n FilterKeys,\n HasRequiredKeys,\n HttpMethod,\n OkStatus,\n PathsWithMethod,\n ResponseObjectMap,\n SuccessResponse\n} from 'openapi-typescript-helpers'\n\nimport { version } from '../package.json'\nimport { bodyOf, Expand, schemas, UnauthenticatedError } from './types'\n\ntype requestOptions = {\n abortKey?: string\n fetch?: typeof globalThis.fetch\n parseAs?: ParseAs\n // if 'none' is provided, then no Content-Type will be set\n contentType?: 'application/json' | 'none'\n}\n\ntype requestData = {\n query?: Record<string, unknown>\n path?: Record<string, string>\n header?: Record<string, string>\n body?: BodyInit\n}\n\n/**\n * Get the types of the parameters of an endpoint but if it does not have any\n * typing for some reason then fallback to a reasonable default\n */\ntype ParamsOption<T> = T extends {\n parameters: any\n}\n ? T['parameters']\n : { query?: Record<string, unknown> }\n\n/**\n * Get the type of the bodyOf an endpoint but if it does not have any required keys, then\n * make it optional\n */\ntype BodyOption<Endpoint> = Endpoint extends {\n requestBody: { content: { 'application/json': any } }\n}\n ? HasRequiredKeys<bodyOf<Endpoint>> extends never\n ? { body?: bodyOf<Endpoint> | undefined }\n : { body: bodyOf<Endpoint> }\n : { body?: Record<string, unknown> | BodyInit }\n\n/**\n * Combines the body and other parameters into one type, with stuff being optional\n */\ntype MaybeOptionalParams<Params extends Record<HttpMethod, {}>, Location extends keyof Params> = ParamsOption<\n FilterKeys<Params, Location>\n> &\n BodyOption<FilterKeys<Params, Location>>\n\n/**\n * Gets the error statuses of an endpoint\n */\ntype ErrorStatusOf<T> = T extends { responses: Record<number, any> }\n ? keyof T['responses'] extends number | string\n ? `${Exclude<keyof T['responses'], OkStatus>}`\n : string\n : string\n\n/**\n * An {@link SdkErrorModel} but with narrowed status codes\n */\ntype SdkErrorModelGeneric<T = undefined> = {\n errors: Array<{\n detail: string\n /** some status code */\n status: ErrorStatusOf<T>\n }>\n status: ErrorStatusOf<T>\n}\n\n/**\n * The error model returned from the SDK\n * Will always contain at least one element!\n */\nexport type SdkErrorModel = {\n errors: Array<{\n detail: string\n /** some status code */\n status: string\n }>\n status: string\n}\n\ntype EndpointWithResponses = { responses: Record<number, any> }\n\ntype FetchResponse<T, Opts extends requestOptions> =\n | {\n data: T extends EndpointWithResponses ? ParseAsResponse<SuccessResponse<ResponseObjectMap<T>>, Opts> : unknown\n error?: never\n response: Response\n aborted: false\n }\n | {\n data?: never\n error: Expand<T extends EndpointWithResponses ? SdkErrorModelGeneric<T> : unknown>\n response: Response\n aborted: false\n }\n // If Opts is not {} and Opts[\"abortKey\"] is either\n // 'string | undefined' or 'string' but not just 'undefined'\n // then we could return `aborted: true`\n | (keyof Opts extends never\n ? never\n : Opts['abortKey'] extends undefined\n ? never\n : Opts['abortKey'] extends string | undefined\n ? {\n data?: never\n error?: never\n response?: never\n aborted: true\n }\n : never)\n\nconst querySerializer = createQuerySerializer()\n\nexport type FetcherArgs = {\n /** Base url for all fetch requests */\n url: string\n /** Override the fetch function used for requests */\n fetchFn?: typeof globalThis.fetch\n /** Override the fetch function used for auth requests */\n authFetchFn?: typeof globalThis.fetch\n /** Used for auth, needed unless ignoreAuth is true */\n username?: string\n /** Used for auth, needed unless ignoreAuth is true */\n password?: string\n /** Do not do the automatic /login requests */\n ignoreAuth: boolean\n}\n\nexport class Fetcher<Paths extends Record<string, Record<HttpMethod, {}>>> {\n private opts: FetcherArgs\n\n private aborts: Record<string, AbortController>\n private accessToken: string | undefined\n private expiry: number\n\n public constructor(args: Partial<FetcherArgs>) {\n this.opts = {\n url: args.url ?? 'https://via.volantautonomy.com/api/v1.0',\n fetchFn: args.fetchFn ?? undefined,\n authFetchFn: args.authFetchFn ?? undefined,\n username: args.username,\n password: args.password,\n ignoreAuth: args.ignoreAuth ?? false\n }\n this.aborts = {}\n this.accessToken = undefined\n this.expiry = Date.now() - 5\n }\n\n private async doAuth() {\n // NOTE: THIS REQUEST IS NOT TYPE CHECKED PROPERLY AS paths IS NOT KNOWN HERE!\n if (this.opts.username === undefined || this.opts.password === undefined) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n\n const authFetchFn = this.opts.authFetchFn ?? globalThis.fetch\n const resp = await authFetchFn(this.opts.url + '/login', {\n body: JSON.stringify({\n username: this.opts.username,\n password: this.opts.password\n }),\n redirect: 'follow',\n method: 'post',\n headers: { 'Content-Type': 'application/json', 'X-Via-Sdk-Version': version }\n })\n\n if (resp.ok) {\n const data = (await resp.json()) as schemas['LoginResponse']\n this.expiry = Date.now() + data.expires_in - 10\n this.accessToken = data.access_token\n } else {\n throw new UnauthenticatedError('Invalid credentials')\n }\n }\n\n /** Takes in an abort key to determine what abort signals should be fired and a new signal */\n private handleAbortKey(abortKey?: string) {\n if (abortKey) {\n this.aborts[abortKey]?.abort()\n\n const abortController = new AbortController()\n this.aborts[abortKey] = abortController\n return abortController.signal\n }\n return undefined\n }\n\n /** Transforms an error from the api into an {@link SdkErrorModel} */\n private async parseError(response: Response): Promise<SdkErrorModel> {\n const data = await response.text()\n let errorData: schemas['JsonApiExceptionResponse']\n // NOTE: This function does not handle the case where the API returns valid json\n // that does not fit the schema (as in the `errors` list is missing)\n\n try {\n errorData = JSON.parse(data) as schemas['JsonApiExceptionResponse']\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: data\n }\n ]\n }\n } else {\n throw err\n }\n }\n\n if (errorData.errors.length === 0) {\n return {\n status: String(response.status),\n errors: [\n {\n status: String(response.status),\n detail: ''\n }\n ]\n }\n } else {\n return {\n status: String(response.status),\n errors: errorData.errors.map((err) => {\n return {\n status: String(err.status),\n detail: err.detail\n }\n })\n }\n }\n }\n\n // source: https://github.com/openapi-ts/openapi-typescript/blob/f21c05b9afcc89ee6ef73edab4045620b410eb01/packages/openapi-fetch/src/index.js#L447\n private createFinalURL(\n path: string,\n options: {\n query?: Record<string, unknown>\n path?: Record<string, unknown>\n }\n ) {\n let finalURL = `${this.opts.url}${path}`\n if (options?.path) {\n finalURL = defaultPathSerializer(finalURL, options.path)\n }\n const search = querySerializer(options.query ?? {})\n if (search) {\n finalURL += `?${search}`\n }\n return finalURL\n }\n\n /** The actual fetch wrapper. It is type inference blind, beyond the parseAs type */\n private async fetcher<Opts extends requestOptions>(\n method: HttpMethod,\n path: string,\n data?: requestData,\n opts?: Opts\n ) {\n if (!this.opts.ignoreAuth) {\n if (!this.accessToken || this.expiry <= Date.now()) {\n await this.doAuth()\n }\n }\n\n const fetchFn = opts?.fetch ?? this.opts.fetchFn ?? globalThis.fetch\n const parseAs: ParseAs = opts?.parseAs ?? 'json'\n const contentType = opts?.contentType ?? 'application/json'\n const body = contentType === 'application/json' ? JSON.stringify(data?.body) : data?.body\n\n const headers: HeadersInit = { 'X-Via-Sdk-Version': version }\n if (contentType !== 'none') {\n headers['Content-Type'] = contentType\n }\n\n const request = new Request(this.createFinalURL(path, { query: data?.query, path: data?.path }), {\n redirect: 'follow',\n signal: this.handleAbortKey(opts?.abortKey),\n body,\n headers: {\n ...headers,\n ...data?.header\n },\n method\n })\n\n if (!this.opts.ignoreAuth) {\n request.headers.set('Authorization', `Bearer ${this.accessToken}`)\n }\n\n let response: Response\n try {\n response = await fetchFn(request)\n } catch (err: any) {\n if (err.name === 'AbortError') {\n return { aborted: true as const }\n }\n throw err\n }\n\n if (response.status === 401) {\n throw new UnauthenticatedError('Unauthenticated')\n }\n\n // handle empty content\n // note: we return `{}` because we want user truthy checks for `.data` or `.error` to succeed\n // NOTE: this does lie to the user, as we say it is undefined\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n return response.ok\n ? { data: {}, aborted: false as const, response }\n : { error: {}, aborted: false as const, response }\n }\n\n if (response.ok) {\n // if \"stream\", skip parsing entirely\n if (parseAs === 'stream') {\n return { data: response.body, aborted: false as const, response }\n }\n return { data: await response[parseAs](), aborted: false as const, response }\n }\n\n return { error: await this.parseError(response), aborted: false as const }\n }\n\n public async GET<\n Path extends PathsWithMethod<Paths, 'get'>,\n Data extends MaybeOptionalParams<Paths[Path], 'get'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('get', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['get'], Opts>>\n }\n\n public async PUT<\n Path extends PathsWithMethod<Paths, 'put'>,\n Data extends MaybeOptionalParams<Paths[Path], 'put'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('put', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['put'], Opts>>\n }\n\n public async POST<\n Path extends PathsWithMethod<Paths, 'post'>,\n Data extends MaybeOptionalParams<Paths[Path], 'post'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['post'], Opts>>\n }\n\n public async DELETE<\n Path extends PathsWithMethod<Paths, 'delete'>,\n Data extends MaybeOptionalParams<Paths[Path], 'delete'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('delete', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['delete'], Opts>>\n }\n\n public async OPTIONS<\n Path extends PathsWithMethod<Paths, 'options'>,\n Data extends MaybeOptionalParams<Paths[Path], 'options'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('options', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['options'], Opts>>\n }\n\n public async HEAD<\n Path extends PathsWithMethod<Paths, 'head'>,\n Data extends MaybeOptionalParams<Paths[Path], 'head'>,\n Opts extends requestOptions = {}\n >(path: Path, data: HasRequiredKeys<Data> extends never ? Data | undefined : Data, opts?: Opts) {\n return this.fetcher('post', path as string, data, opts) as Promise<FetchResponse<Paths[Path]['head'], Opts>>\n }\n\n public STREAM<Path extends PathsWithMethod<Paths, 'get'>, Data extends MaybeOptionalParams<Paths[Path], 'get'>>(\n path: Path,\n data: HasRequiredKeys<Data> extends never ? Data | undefined : Data\n ) {\n const downcastedData = data as requestData\n const url = this.createFinalURL(path as string, {\n query: downcastedData?.query,\n path: downcastedData?.path\n })\n return new EventSource(url)\n }\n}\n\n// indirection is required to get ts to accept the type magic\n//* * `paths` MUST be passed in as a generic type arg or type inference falls apart */\nexport default function createFetcher<Paths extends {}>(...args: ConstructorParameters<typeof Fetcher>) {\n return new Fetcher<Paths>(...args)\n}\n","import { Composite } from './composite'\nimport { Direct } from './direct'\nimport createFetcher, { FetcherArgs } from './fetch'\nimport { UnauthenticatedError } from './types'\nimport type { paths } from './volant-schema'\n\nexport function createSDK(opts: Partial<FetcherArgs>) {\n if (!opts.ignoreAuth && (opts.username === undefined || opts.password === undefined)) {\n throw new UnauthenticatedError('ignoreAuth is not true and either username or password is missing')\n }\n const fetcher = createFetcher<paths>(opts)\n\n const newDirect = new Direct(fetcher)\n return {\n direct: newDirect,\n composite: new Composite(newDirect)\n }\n}\n","import { Checkpoint, schemas, Waypoint } from './types'\n\n/** Takes in an array of coordinates and flight options, and returns an array of checkpoints for use in the other functions */\nexport function generateCheckpointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position-Input']>\n options: schemas['PathingCheckpointParameters']\n}): Checkpoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Checkpoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n waypoints.push({\n type: 'goto',\n position,\n parameters: options\n })\n }\n\n return waypoints\n}\n\n/** Takes in an array of coordinates and flight options, and returns an array of waypoints for use in the other functions */\nexport function generateWaypointsFromCoordinates(args: {\n coordinates: Array<schemas['Wgs84Position-Input']>\n options: {\n flight_parameters: schemas['FlightParameters']\n wind_parameters?: schemas['WindParameters']\n }\n}): Waypoint[] {\n const { coordinates, options } = args\n\n if (coordinates.length <= 2) {\n throw Error('Must have at least two coordinates')\n }\n\n const waypoints: Waypoint[] = [\n {\n type: 'start',\n position: coordinates[0]! // first coord exists because of length check above\n }\n ]\n for (const position of coordinates.slice(1)) {\n if (options.wind_parameters)\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters,\n wind_parameters: options.wind_parameters\n })\n else\n waypoints.push({\n type: 'goto',\n position,\n flight_parameters: options.flight_parameters\n })\n }\n\n return waypoints\n}\n\n/** Converts from seconds since epoch to a RFC3339-formatted datetime string */\nexport function rfcDateTime(secondsEpoch: EpochTimeStamp): string {\n return new Date(secondsEpoch * 1000).toISOString().slice(0, 16) + 'Z'\n}\n"],"names":[],"mappings":";;AAIO,MAAM,KAAK,GAAG,CAAC,EAAU,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAsBpE,MAAO,oBAAqB,SAAQ,KAAK,CAAA;AAA/C,IAAA,WAAA,GAAA;;;;;;QAKkB,IAAA,CAAA,IAAI,GAAG,iBAAiB;;;IAG1C;AAAC;;ACvBD,MAAM,iBAAkB,SAAQ,KAAK,CAAA;AAAG;AAExC,MAAM,gBAAiB,SAAQ,KAAK,CAAA;AAAG;AAEvC,MAAM,kBAAkB,GAAG,KAAM;AACjC,MAAM,kBAAkB,GAAG,IAAK;MAEnB,SAAS,CAAA;AAEpB,IAAA,WAAA,CAAmB,MAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;;AAGO,IAAA,MAAM,gBAAgB,CAAC,IAAiC,EAAE,EAA6B,EAAA;QAC5F,IAAI,EAAE,EAAE;YACN,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC;QACpD;aAAO;YACL,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAChD;IACF;AAEO,IAAA,MAAM,sBAAsB,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtE;AAEO,IAAA,MAAM,uBAAuB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvE;AAEO,IAAA,MAAM,wBAAwB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;IACxE;AAEO,IAAA,MAAM,yBAAyB,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACzE;;IAGO,MAAM,uBAAuB,CAAC,EAAU,EAAA;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,UAAU,CAAC;IAC1D;AAEO,IAAA,MAAM,4BAA4B,CAAC,EAAU,EAAE,eAAuB,EAAE,EAAA;AAC7E,QAAA,MAAM,uBAAuB,GAAG;AAC9B,YAAA,aAAa,EAAE;SAChB;AAED,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAAE,EAAE,uBAAuB,CAAC;QACzG,IAAI,KAAK,EAAE;YACT,OAAO,EAAE,KAAK,EAAE;QAClB;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;IAC/D;;AAIA;;;;;;;;;;;;;;AAcG;AACI,IAAA,MAAM,oBAAoB,CAAC,MAAc,EAAE,SAA+C,EAAA;AAC/F,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC;QACvD;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;gBACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC;YACrD;QACF;QACA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAC3C;;IAGO,MAAM,aAAa,CAAC,IAAqE,EAAA;QAC9F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC7D,QAAA,IAAI,WAAW,CAAC,KAAK,EAAE;YACrB,OAAO,WAAW,CAAC,KAAK;QAC1B;AAEA,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE;AAE9B,QAAA,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;IAC5C;AAEQ,IAAA,MAAM,uBAAuB,CAAC,MAAc,EAAE,SAA+C,EAAA;AACnG,QAAA,IAAI,uBAAsD;AAC1D,QAAA,IAAI,0BAAyD;QAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC;AAE5D,YAAA,uBAAuB,GAAG,UAAU,CAAC,MAAK;gBACxC,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,EAAE;oBAC1C,MAAM,CAAC,KAAK,EAAE;AACd,oBAAA,MAAM,CAAC,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gBACrD;YACF,CAAC,EAAE,kBAAkB,CAAC;AAEtB,YAAA,0BAA0B,GAAG,UAAU,CAAC,MAAK;gBAC3C,MAAM,CAAC,KAAK,EAAE;AACd,gBAAA,MAAM,CAAC,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAC;YAC9E,CAAC,EAAE,kBAAkB,CAAC;AAEtB,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,KAAmB,KAAI;;gBAE/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAGjC;AAED,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;oBACvB,MAAM,CAAC,KAAK,EAAE;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC,CAAC;oBAChE;gBACF;gBAEA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,IAAI,CAAC,OAAO,CAAC;gBAEzB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;oBACpC,MAAM,CAAC,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvB;AACF,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,OAAO,GAAG,CAAC,KAAY,KAAI;gBAChC,MAAM,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,IAAI,iBAAiB,CAAC,kBAAkB,KAAK,CAAA,CAAE,CAAC,CAAC;AAC1D,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAK;YAC1B,YAAY,CAAC,uBAAuB,CAAC;YACrC,YAAY,CAAC,0BAA0B,CAAC;AAC1C,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,qBAAqB,CACjC,MAAc,EACd,SAA+C,EAAA;QAE/C,IAAI,UAAU,GAAG,IAAI;QAErB,OAAO,UAAU,EAAE;YACjB,UAAU,CAAC,MAAK;gBACd,UAAU,GAAG,KAAK;YACpB,CAAC,EAAE,kBAAkB,CAAC;YAEtB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;AAClE,YAAA,IAAI,iBAAiB,CAAC,KAAK,EAAE;gBAC3B,OAAO,iBAAiB,CAAC,KAAK;YAChC;YACA,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;gBACxG;YACF;AAEA,YAAA,MAAM,kBAAkB,GAAG;AACzB,gBAAA,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACxC,gBAAA,UAAU,EAAE;aACb;;AAGD,YAAA,SAAS,aAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,kBAAkB,CAAC;YAE/B,QAAQ,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACvC,gBAAA,KAAK,QAAQ;AACX,oBAAA,MAAM,KAAK,CAAC,GAAG,CAAC;oBAChB;AACF,gBAAA,KAAK,aAAa;AAChB,oBAAA,MAAM,KAAK,CAAC,GAAG,CAAC;oBAChB;;QAEN;IACF;AACD;;MCzGY,MAAM,CAAA;AAEjB,IAAA,WAAA,CAAmB,OAAgD,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;;AAIO,IAAA,MAAM,iBAAiB,CAC5B,IAAgC,EAChC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE;QAC/E;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEO,IAAA,MAAM,qBAAqB,CAChC,IAAmC,EACnC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC;QAC3E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,qBAAqB,CAChC,EAAkD,EAClD,IAAmC,EACnC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,8BAA8B,EAC9B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAC3C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,aAAa,CACxB,EAA0C,EAC1C,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;QAC1G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,8BAA8B,CACzC,EAA2D,EAC3D,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,+CAA+C,EAC/C,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,EAC/B,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,oBAAoB,CAC/B,EAAiD,EACjD,IAAmC,EACnC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,sCAAsC,EACtC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAC5C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,uBAAuB,CAClC,EAAoD,EACpD,IAAsC,EACtC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,yCAAyC,EACzC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAC5C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,oBAAoB,CAC/B,EAAiD,EACjD,IAAmC,EACnC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,sCAAsC,EACtC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAC5C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,kCAAkC,CAC7C,EAA+D,EAC/D,IAAiD,EACjD,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,oDAAoD,EACpD,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAC5C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,qBAAqB,CAChC,EAAkD,EAClD,KAA6C,EAC7C,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,oCAAoC,EACpC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAChD,IAAY,CACb;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YACzC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,mBAAmB,CAC9B,EAAgD,EAChD,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,sCAAsC,EACtC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,sCAAsC,EAAE,EAAE,EAC3F,EAAE,GAAI,IAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CACvC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE;QAChG;AACA,QAAA,OAAO,IAAI;IACb;;AAIO,IAAA,MAAM,wBAAwB,CACnC,IAAsC,EACtC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC5F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;IAEO,MAAM,yBAAyB,CAAmC,IAA4B,EAAA;AACnG,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,EAAE,IAAY,CAAC;QAC/E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,CAAC,EAAE;QAC/E;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,qBAAqB,CAChC,EAA2D,EAC3D,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,gDAAgD,EAChD,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE,EACxC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,wBAAwB,CACnC,EAA8D,EAC9D,IAAsC,EACtC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,gDAAgD,EAChD,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EACpD,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,6BAA6B,CACxC,EAAoE,EACpE,KAAqD,EACrD,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,uDAAuD,EACvD,EAAE,IAAI,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAC1D,IAAY,CACb;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YACzC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAIO,IAAA,MAAM,iBAAiB,CAC5B,IAA+B,EAC/B,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACrF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,cAAc,CACzB,EAA6C,EAC7C,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,kCAAkC,EAClC,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EACjC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,yBAAyB,CAAC,EAAwD,EAAA;AACvF,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wCAAwC,EAAE;AACnE,YAAA,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE;AAC5B,SAAA,CAAC;IACJ;;IAIO,MAAM,YAAY,CAAmC,IAA4B,EAAA;AACtF,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,IAAY,CAAC;QACjE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE;QACrE;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,QAAQ,CACnB,EAAgC,EAChC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,IAAY,CAAC;QACnG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,WAAW,CAAmC,IAA0B,EAAE,IAA4B,EAAA;AACjH,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACrG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,wBAAwB,CACnC,IAAsC,EACtC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC7G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;IAEO,MAAM,cAAc,CAAmC,IAA4B,EAAA;AACxF,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE,EAAE,EAAE,IAAY,CAAC;QAC5G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;QACjE;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,UAAU,CAAmC,IAAwB,EAAE,IAA4B,EAAA;AAC9G,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,8DAA8D,EAC9D,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,IAAoC,EACpC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACvG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,oCAAoC,CAC/C,IAAkD,EAClD,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,mDAAmD,EACnD,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;IAEO,MAAM,YAAY,CAAmC,IAA4B,EAAA;AACtF,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,EAAE,EAAE,IAAY,CAAC;QAC1G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;QACjE;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,QAAQ,CAAmC,IAAsB,EAAE,IAA4B,EAAA;AAC1G,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,4DAA4D,EAC5D,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,SAAS,CAAmC,IAAwB,EAAE,IAA4B,EAAA;AAC7G,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACnG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,IAAoC,EACpC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC3G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,oBAAoB,CAC/B,IAAgC,EAChC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACrG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,kCAAkC,CAC7C,IAAkD,EAClD,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,iDAAiD,EACjD,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,wBAAwB,CACnC,IAAsC,EACtC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC3G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,wBAAwB,CACnC,EAAyD,EACzD,IAAsC,EACtC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,2DAA2D,EAC3D,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAC/C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,qBAAqB,CAChC,EAAsD,EACtD,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,2DAA2D,EAC3D,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EACnC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,2BAA2B,CACtC,IAA0C,EAC1C,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACpH,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO;AACL,gBAAA,GAAG,IAAI;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,KAAK,oBAAoB,CAAC,IAAI;aAC7E;QACH;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEO,IAAA,MAAM,0BAA0B,CACrC,IAAwC,EACxC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAEpH,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,uBAAuB,CAClC,IAAqC,EACrC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,2EAA2E,EAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,0BAA0B,CACrC,EAAmE,EACnE,IAAwC,EACxC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,2EAA2E,EAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,yBAAyB,EAAE,EAAE,EAAE,EAAE,EACvD,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,0BAA0B,CACrC,IAAwC,EACxC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,2EAA2E,EAC3E,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,uBAAuB,CAClC,IAAsC,EACtC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC/G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,IAAI,CAAC,EAAE;QAC3F;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEO,IAAA,MAAM,sBAAsB,CACjC,IAAoC,EACpC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAE/G,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,mBAAmB,CAC9B,IAAiC,EACjC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,iEAAiE,EACjE,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,EAA0D,EAC1D,IAAoC,EACpC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,iEAAiE,EACjE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,EAClD,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,IAAoC,EACpC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,iEAAiE,EACjE,EAAE,IAAI,EAAE,IAAI,EAAE,EACd,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,MAAM,aAAa,CACxB,IAA2B,EAC3B,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAEhF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,UAAU,CAAmC,IAAwB,EAAE,IAA4B,EAAA;AAC9G,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC3F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,cAAc,CACzB,IAA6B,EAC7B,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAChF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEO,IAAA,MAAM,aAAa,CACxB,EAAuC,EACvC,IAA2B,EAC3B,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,wBAAwB,EACxB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EACxC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,aAAa,CACxB,IAA2B,EAC3B,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC9F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAIO,IAAA,MAAM,cAAc,CACzB,EAA6C,EAC7C,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,kCAAkC,EAClC,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EACjC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,kBAAkB,CAC7B,IAAiC,EACjC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QACrF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;QAC7D;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,iBAAiB,CAC5B,IAKC,EACD,IAA4B,EAAA;AAE5B,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC1C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;AAClC,QAAA,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5E,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;AAExC,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,iBAAiB,EACjB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB;AACE,YAAA,GAAI,IAAa;;;;AAIjB,YAAA,WAAW,EAAE;AACd,SAAA,CACF;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,iBAAiB,CAC5B,EAAgD,EAChD,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,kCAAkC,EAClC,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EACjC,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,EAAqD,EACrD,IAAoC,EACpC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,yCAAyC,EACzC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EAC7C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,mBAAmB,CAC9B,eAA+D,EAC/D,QAAiD,EACjD,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,oDAAoD,EACpD,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAClE,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,uBAAuB,CAClC,EAAsD,EACtD,IAAsC,EACtC,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACjC,yCAAyC,EACzC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,EAC9C,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;QAC7D;AACA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,MAAM,sBAAsB,CACjC,eAAkE,EAClE,QAAoD,EACpD,IAA4B,EAAA;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CACpC,oDAAoD,EACpD,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAClE,IAAY,CACb;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7C,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;;AAIO,IAAA,MAAM,mBAAmB,CAC9B,IAAiC,EACjC,IAA4B,EAAA;AAE5B,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAY,CAAC;QAC7F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC1C;AACA,QAAA,OAAO,IAAI;IACb;AACD;;ACl5BD,MAAM,aAAa,GAAG,aAAa;AA2TnC,SAAS,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,IAAI,MAAM,IAAI,KAAK;AACnB,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzF;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACpD,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,MAAM,EAAE;AACZ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AACzB,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACnE,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,MAAM,EAAE;AACnB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClC,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnC,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN;AACA,EAAE;AACF,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC9F;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAClG,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;AAClH,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,MAAM;AACN;AACA;AACA,MAAM,SAAS;AACf,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,MAAM;AACN;AACA,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAC/E,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE;AACjE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1H;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,EAAE,OAAO,SAAS,eAAe,CAAC,WAAW,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACxD,MAAM,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACtC,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,YAAY;AACZ,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7C,cAAc,KAAK,EAAE,MAAM;AAC3B,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,KAAK;AAC/B,cAAc,aAAa,EAA4B;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9C,cAAc,KAAK,EAAE,YAAY;AACjC,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,MAAM;AAChC,cAAc,aAAa,EAA4B;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,EAAE,CAAC;AACH;AACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;AACrD,EAAE,IAAI,OAAO,GAAG,QAAQ;AACxB,EAAE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE;AAC3D,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,KAAK,GAAG,QAAQ;AACxB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,MAAM,OAAO,GAAG,IAAI;AACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACjF,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrH,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;;;;AC9VA,MAAM,eAAe,GAAG,qBAAqB,EAAE;MAiBlC,OAAO,CAAA;AAOlB,IAAA,WAAA,CAAmB,IAA0B,EAAA;;QAC3C,IAAI,CAAC,IAAI,GAAG;AACV,YAAA,GAAG,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,mCAAI,yCAAyC;AAC1D,YAAA,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,mCAAI,SAAS;AAClC,YAAA,WAAW,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,mCAAI,SAAS;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,UAAU,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,mCAAI;SAChC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IAC9B;AAEQ,IAAA,MAAM,MAAM,GAAA;;;AAElB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxE,YAAA,MAAM,IAAI,oBAAoB,CAAC,mEAAmE,CAAC;QACrG;AAEA,QAAA,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,UAAU,CAAC,KAAK;AAC7D,QAAA,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE;AACvD,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC5B,gBAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;aACrB,CAAC;AACF,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,OAAO;AAC5E,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAA6B;AAC5D,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY;QACtC;aAAO;AACL,YAAA,MAAM,IAAI,oBAAoB,CAAC,qBAAqB,CAAC;QACvD;IACF;;AAGQ,IAAA,cAAc,CAAC,QAAiB,EAAA;;QACtC,IAAI,QAAQ,EAAE;YACZ,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;AAE9B,YAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,eAAe;YACvC,OAAO,eAAe,CAAC,MAAM;QAC/B;AACA,QAAA,OAAO,SAAS;IAClB;;IAGQ,MAAM,UAAU,CAAC,QAAkB,EAAA;AACzC,QAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,QAAA,IAAI,SAA8C;;;AAIlD,QAAA,IAAI;AACF,YAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwC;QACrE;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,IAAI,GAAG,YAAY,WAAW,EAAE;gBAC9B,OAAO;AACL,oBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B,4BAAA,MAAM,EAAE;AACT;AACF;iBACF;YACH;iBAAO;AACL,gBAAA,MAAM,GAAG;YACX;QACF;QAEA,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,OAAO;AACL,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B,gBAAA,MAAM,EAAE;AACN,oBAAA;AACE,wBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/B,wBAAA,MAAM,EAAE;AACT;AACF;aACF;QACH;aAAO;YACL,OAAO;AACL,gBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;oBACnC,OAAO;AACL,wBAAA,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC1B,MAAM,EAAE,GAAG,CAAC;qBACb;AACH,gBAAA,CAAC;aACF;QACH;IACF;;IAGQ,cAAc,CACpB,IAAY,EACZ,OAGC,EAAA;;QAED,IAAI,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA,EAAG,IAAI,CAAA,CAAE;QACxC,IAAI,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,IAAI,EAAE;YACjB,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QAC1D;QACA,MAAM,MAAM,GAAG,eAAe,CAAC,CAAA,EAAA,GAAA,OAAO,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC;QACnD,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;QAC1B;AACA,QAAA,OAAO,QAAQ;IACjB;;IAGQ,MAAM,OAAO,CACnB,MAAkB,EAClB,IAAY,EACZ,IAAkB,EAClB,IAAW,EAAA;;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AAClD,gBAAA,MAAM,IAAI,CAAC,MAAM,EAAE;YACrB;QACF;QAEA,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,CAAC,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,UAAU,CAAC,KAAK;AACpE,QAAA,MAAM,OAAO,GAAY,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM;AAChD,QAAA,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,kBAAkB;AAC3D,QAAA,MAAM,IAAI,GAAG,WAAW,KAAK,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,IAAI,CAAC,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,IAAI;AAEzF,QAAA,MAAM,OAAO,GAAgB,EAAE,mBAAmB,EAAE,OAAO,EAAE;AAC7D,QAAA,IAAI,WAAW,KAAK,MAAM,EAAE;AAC1B,YAAA,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW;QACvC;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAC,EAAE;AAC/F,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,QAAQ,CAAC;YAC3C,IAAI;AACJ,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,OAAO;AACV,gBAAA,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE;AACV,aAAA;YACD;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;QACpE;AAEA,QAAA,IAAI,QAAkB;AACtB,QAAA,IAAI;AACF,YAAA,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACnC;QAAE,OAAO,GAAQ,EAAE;AACjB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AAC7B,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAa,EAAE;YACnC;AACA,YAAA,MAAM,GAAG;QACX;AAEA,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC3B,YAAA,MAAM,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;QACnD;;;;AAKA,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE;YAC7E,OAAO,QAAQ,CAAC;kBACZ,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAc,EAAE,QAAQ;AAC/C,kBAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAc,EAAE,QAAQ,EAAE;QACtD;AAEA,QAAA,IAAI,QAAQ,CAAC,EAAE,EAAE;;AAEf,YAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,gBAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAc,EAAE,QAAQ,EAAE;YACnE;AACA,YAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAc,EAAE,QAAQ,EAAE;QAC/E;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE;IAC5E;AAEO,IAAA,MAAM,GAAG,CAId,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAqD;IAC5G;AAEO,IAAA,MAAM,GAAG,CAId,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAqD;IAC5G;AAEO,IAAA,MAAM,IAAI,CAIf,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAsD;IAC9G;AAEO,IAAA,MAAM,MAAM,CAIjB,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAwD;IAClH;AAEO,IAAA,MAAM,OAAO,CAIlB,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAyD;IACpH;AAEO,IAAA,MAAM,IAAI,CAIf,IAAU,EAAE,IAAmE,EAAE,IAAW,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAc,EAAE,IAAI,EAAE,IAAI,CAAsD;IAC9G;IAEO,MAAM,CACX,IAAU,EACV,IAAmE,EAAA;QAEnE,MAAM,cAAc,GAAG,IAAmB;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAc,EAAE;AAC9C,YAAA,KAAK,EAAE,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,CAAE,KAAK;AAC5B,YAAA,IAAI,EAAE,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,CAAE;AACvB,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC;IAC7B;AACD;AAED;AACA;AACc,SAAU,aAAa,CAAmB,GAAG,IAA2C,EAAA;AACpG,IAAA,OAAO,IAAI,OAAO,CAAQ,GAAG,IAAI,CAAC;AACpC;;AC9YM,SAAU,SAAS,CAAC,IAA0B,EAAA;AAClD,IAAA,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;AACpF,QAAA,MAAM,IAAI,oBAAoB,CAAC,mEAAmE,CAAC;IACrG;AACA,IAAA,MAAM,OAAO,GAAG,aAAa,CAAQ,IAAI,CAAC;AAE1C,IAAA,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;IACrC,OAAO;AACL,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,SAAS,EAAE,IAAI,SAAS,CAAC,SAAS;KACnC;AACH;;ACfA;AACM,SAAU,kCAAkC,CAAC,IAGlD,EAAA;AACC,IAAA,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI;AAErC,IAAA,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3B,QAAA,MAAM,KAAK,CAAC,oCAAoC,CAAC;IACnD;AAEA,IAAA,MAAM,SAAS,GAAiB;AAC9B,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAE;AAC1B;KACF;IACD,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3C,SAAS,CAAC,IAAI,CAAC;AACb,YAAA,IAAI,EAAE,MAAM;YACZ,QAAQ;AACR,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,gCAAgC,CAAC,IAMhD,EAAA;AACC,IAAA,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI;AAErC,IAAA,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3B,QAAA,MAAM,KAAK,CAAC,oCAAoC,CAAC;IACnD;AAEA,IAAA,MAAM,SAAS,GAAe;AAC5B,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAE;AAC1B;KACF;IACD,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3C,IAAI,OAAO,CAAC,eAAe;YACzB,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,eAAe,EAAE,OAAO,CAAC;AAC1B,aAAA,CAAC;;YAEF,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,iBAAiB,EAAE,OAAO,CAAC;AAC5B,aAAA,CAAC;IACN;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,WAAW,CAAC,YAA4B,EAAA;AACtD,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG;AACvE;;;;;;;","x_google_ignoreList":[3]}
|